Changeset 2417

Show
Ignore:
Timestamp:
11/27/09 22:35:49
Author:
bleibson
Message:

list-json.xsl (was json-list.xsl) supports filtering by a group (creator) and a list of categories.

Lots of clean-up.

Added strings.xsl back. Needed to html skin.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/deployment/feeder/webapp/resources/demoskins/MainCampus/default/default/list-json.xsl

    r2409 r2417  
    2222       parameter "setappvar=filter(somekey:somevalue)".  Group (creator) and 
    2323       location filters are included here, but you can add more under line 82. 
    24  
    25        The next ten days filtered by a group (creator): 
    26        <script src="http://localhost:8080/cal/main/listEvents.do?days=10&setappvar=filter(creator:agrp_Library)&skinName=json-list-src" type="text/javascript"></script> 
    2724 
    2825       Object name: The json object name can be passed by adding 
     
    6461  --> 
    6562  <xsl:include href="../../../bedework-common/default/default/util.xsl"/> 
    66  
    6763  <xsl:variable name="urlprefix" select="/bedework/urlprefix"/> 
    6864  <xsl:variable name="eventView" select="/bedework/urlPrefixes/event/eventView"/> 
     65   
    6966  <xsl:template match='/'> 
    7067    <xsl:choose> 
     
    8380              <!-- Define filters here: --> 
    8481              <xsl:choose> 
    85                 <xsl:when test="$filterName = 'creator'"> 
    86                   <xsl:apply-templates select="/bedework/events//event[creator = $filterVal]"/> 
    87                 </xsl:when> 
    88                 <xsl:when test="$filterName = 'location'"> 
    89                   <xsl:apply-templates select="/bedework/events//event[location/address = $filterVal]"/> 
     82                <xsl:when test="$filterName = 'grpAndCats'"> 
     83                      <xsl:call-template name="processGrpAndCats"><xsl:with-param name="list" select="$filterVal"/></xsl:call-template> 
     84                  <xsl:apply-templates select="/bedework/events/event[creator = $filterVal]"/> 
    9085                </xsl:when> 
    9186                <xsl:otherwise> 
    9287                  <!-- Filter name not defined? Turn off filtering. --> 
    93                   <xsl:apply-templates select="/bedework/events//event"/> 
     88                  <xsl:apply-templates select="/bedework/events/event"/> 
    9489                </xsl:otherwise> 
    9590              </xsl:choose> 
    9691            </xsl:when> 
    9792            <xsl:otherwise> 
    98               <xsl:apply-templates select="/bedework/events//event"/> 
     93              <xsl:apply-templates select="/bedework/events/event"/> 
    9994            </xsl:otherwise> 
    10095          </xsl:choose> 
    10196        ] 
    10297    }} 
     98  </xsl:template> 
     99 
     100  <xsl:template name="processGrpAndCats"> 
     101    <xsl:param name="list" />  
     102    <xsl:variable name="group" select="substring-before($list, '~')" />  
     103    <xsl:variable name="remaining" select="substring-after($list, '~')" /> 
     104    <xsl:call-template name="processCategories"> 
     105          <xsl:with-param name="group" select="$group" /> 
     106      <xsl:with-param name="list" select="$remaining" />  
     107    </xsl:call-template> 
     108  </xsl:template> 
     109 
     110  <xsl:template name="processCategories"> 
     111        <xsl:param name="group" /> 
     112    <xsl:param name="list" />  
     113    <xsl:choose> 
     114          <xsl:when test="contains($list, '~')"> 
     115                <!-- Grab the first off the list and process --> 
     116                <xsl:variable name="catid" select="substring-before($list, '~')" />  
     117            <xsl:variable name="remaining" select="substring-after($list, '~')" /> 
     118            <xsl:choose> 
     119                  <xsl:when test="$group = 'all'"> 
     120                <xsl:apply-templates select="/bedework/events/event[categories/category/id = $catid]" /> 
     121              </xsl:when> 
     122              <xsl:otherwise> 
     123                <xsl:apply-templates select="/bedework/events/event[categories/category/id = $catid]" /> 
     124              </xsl:otherwise> 
     125            </xsl:choose> 
     126         
     127                <!-- now use recursion to process the remaining categories --> 
     128            <xsl:call-template name="processCategories"> 
     129              <xsl:with-param name="list" select="$remaining" />  
     130            </xsl:call-template> 
     131          </xsl:when> 
     132          <xsl:otherwise> 
     133            <!-- No more tildes, so this is the last category.  Process it --> 
     134                <xsl:choose> 
     135                  <xsl:when test="$group = 'all'"> 
     136                        <xsl:choose> 
     137                          <xsl:when test="$list = 'all'"> 
     138                    <xsl:apply-templates select="/bedework/events/event" /> 
     139                  </xsl:when> 
     140                  <xsl:otherwise> 
     141                        <xsl:apply-templates select="/bedework/events/event[categories/category/id = $list]" /> 
     142                      </xsl:otherwise> 
     143                </xsl:choose> 
     144              </xsl:when> 
     145              <xsl:otherwise> 
     146                    <xsl:choose> 
     147                          <xsl:when test="$list = 'all'"> 
     148                    <xsl:apply-templates select="/bedework/events/event[creator = $group]" /> 
     149                  </xsl:when> 
     150                  <xsl:otherwise> 
     151                        <xsl:choose> 
     152                          <xsl:when test="/bedework/events/events/creator = $group"> 
     153                            <xsl:apply-templates select="/bedework/events/event[categories/category/id = $list]" /> 
     154                          </xsl:when> 
     155                        </xsl:choose> 
     156                      </xsl:otherwise> 
     157                        </xsl:choose> 
     158              </xsl:otherwise> 
     159            </xsl:choose> 
     160          </xsl:otherwise> 
     161        </xsl:choose> 
    103162  </xsl:template> 
    104163