source: main/branches/2.1/src/main/webapps/ibisph-view/xslt/html/SelectionTree.xslt @ 3612

Last change on this file since 3612 was 3612, checked in by Garth Braithwaite, 10 years ago

view webapp - few changes to help test siteminder.

File size: 7.5 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xsl:stylesheet version="2.0" 
3        xmlns:xsl ="http://www.w3.org/1999/XSL/Transform" 
4        xmlns:ibis="http://www.ibisph.org"
5
6        exclude-result-prefixes="ibis"
7>
8
9        <ibis:doc>
10                <name>html/SelectionTree</name>
11                <summary>templates that transform a SELECTIONS/SELECTION type structure
12                        into an expandable selection tree HTML definition.  This tree's
13                        selection structure can be controlled if a userAuthorities struct
14                        is supplied to the template.  If the SELECTION has an AUTHORITY
15                        then a matching userAuthorities/AUTHORITY is required for the
16                        selection to be included in the output.
17                </summary>
18                <description>
19                        USAGE NOTE: These templates can build the approp HTML structure but
20                        to make the HTML exaandable and collapsable the following are required:
21                        1) Javascript is needed.  include this file: src='js/ShowHideBlockControl.js'
22                        2) Define this vairable exactly like this:
23                                var treeControl = new ShowHideBlockControl('control', 'Open', 'container');
24                        3) The tree container element MUST have an 'ExpandableTree' css class.  This
25                                is not an issue if you use the SelectionTree.expandableTree template.
26                        4) The 'ExpandableTree.css' definitions are needed - so include as approp.
27                </description>
28
29                <author>Garth Braithwaite</author>
30                <company>Software Technology Group/CDC/Utah Department of Health</company>
31        </ibis:doc>
32
33
34        <!-- SOURCE:
35                <SELECTIONS>
36                        <TITLE>Select from this list to query births from 1989 and later by county and health district. For small areas and race parameters, use Advanced Selection below.</TITLE>
37                        <SELECTION>
38                                <TITLE>Count, Birth and Fertility Rates</TITLE>
39                                <DESCRIPTION>Birth measures that use population data in the denominator by county and health district</DESCRIPTION>
40
41                                <SELECTIONS>
42                                        <SELECTION>
43                                                <TITLE>Count</TITLE>
44                                                <LOCAL_URL>birth/BirthBirthCnty/Count.html</LOCAL_URL>
45                                                <DESCRIPTION>Count of all live births in a given population and time period</DESCRIPTION>
46                                                <ibis:include href="help/BirthCount.xml"/>
47
48                                                [<AUTHORITIES>
49                                                        <AUTHORITY>someAuthValue</AUTHORITY>
50                                                        [<AUTHORITY>anotherAuthValue</AUTHORITY>]
51                                                </AUTHORITIES>]
52                                        </SELECTION>
53
54                                        <SELECTION>
55                                                <SELECTIONS>
56                                                        ...
57
58                OUTPUT:
59                <div class="Item [End]"> (item container, provides left most border)  SELECTION
60                        <span class="Icon Missing"/>  (icon - adjust left)
61                                <div class="Title">Missing Indicator or Folder</div>  (padding left so misses icon)
62                        -or-
63                                <a class="Folder [Open]" id="control#.#.#" href="tree.toggleExpandCollapse('#.#.#')">  SELECTIONS
64                                        <span class="Icon"/>
65                                        <div class="Title">    (adds left border for open folders which are script enabled)
66                                                Title (balance of left padding)
67                                        </div>
68                                </a>
69                                <div class="Container" id="container#.#.#">  (indenturing of sub items)
70                                        RECURSE ITEMS...
71                                        <div class="Item"...
72        -->
73
74        <xsl:template name="SelectionTree.expandableTree"
75                ibis:doc="container and kick off template for a selections ExpandableTree strut."
76        >
77                <xsl:param name="title"/>
78                <xsl:param name="description"/>
79                <xsl:param name="selections"/>
80                <xsl:param name="parentID" select="position()"/>
81                <xsl:param name="userAuthorities"/>
82
83                <div class="ExpandableTree">
84                        <xsl:if test="exists($title)">
85                                <h2 title="{if(string-length($description) = 0)then $title else $description}"><span class="Icon"/><xsl:value-of select="$title"/></h2>
86                        </xsl:if>
87                        <xsl:apply-templates select="$selections" mode="SelectionTree">
88                                <xsl:with-param name="parentID" select="$parentID"/>
89                                <xsl:with-param name="userAuthorities" select="$userAuthorities"/>
90                        </xsl:apply-templates>
91                </div>
92        </xsl:template>
93
94
95
96        <xsl:template match="SELECTIONS" mode="SelectionTree" 
97                ibis:doc="Main SELECTIONS element driver template which is recusively called
98                        and calls the processIndexItem template to build the approriate HTML.
99                        USAGE NOTE: This template code can build the approp HTML structure but
100                        to make the HTML exaandable and collapsable the following are required:
101                        1) Javascript is needed.  include this file: src='js/ShowHideBlockControl.js'
102                        2) Define this vairable exactly like this:
103                                var treeControl = new ShowHideBlockControl('control', 'Open', 'container');
104                        3) The tree container element MUST have an 'ExpandableTree' css class.
105                        4) The 'ExpandableTree.css' definitions are needed - so include as approp.
106                "
107        >
108                <xsl:param name="parentID"/>
109                <xsl:param name="userAuthorities"/>
110
111<xsl:message select="'userAuthorities:'"/>
112<xsl:message select="$userAuthorities"/>
113<!--
114-->
115                <xsl:for-each select="SELECTION[ not(exists(.//AUTHORITIES)) or (.//AUTHORITIES/AUTHORITY = $userAuthorities/AUTHORITIES/AUTHORITY) ]">
116                        <div class="Item{if(position()=last()) then ' End' else ''}">
117                                <xsl:apply-templates select="." mode="SelectionTree">
118                                        <xsl:with-param name="id" select="concat($parentID, '.', position())"/>
119                                        <xsl:with-param name="userAuthorities" select="$userAuthorities"/>
120                                </xsl:apply-templates>
121                        </div>
122                </xsl:for-each>
123        </xsl:template>
124
125
126
127        <xsl:template match="SELECTIONS/SELECTION" mode="SelectionTree" 
128                ibis:doc="Creates the appropriate HTML clickable sub SELECTION tree type
129                        elements or the end node 'a' selection element."
130        >
131                <xsl:param name="id"/>
132                <xsl:param name="userAuthorities"/>
133
134                <xsl:choose>
135                        <xsl:when test="exists(HELP)">
136                                <xsl:apply-templates select="HELP" mode="Page.helpButton"/>
137                        </xsl:when>
138
139                        <xsl:when test="string-length(DESCRIPTION) &gt; 40 ">
140                                <xsl:apply-templates select="HELP" mode="Page.helpButton"/>
141                        </xsl:when>
142                </xsl:choose>
143
144                <!-- If module and configuration name specified - then link to the query builder
145                        page.  Else if One or the other then do the broken link.  Else it's an
146                        intermediate tree step.  Build the container and process sub selections.
147                -->
148                <xsl:choose>
149
150                        <xsl:when test="exists(SELECTIONS)">
151                                <a class="Folder" title="Toggle the folder to show/hide the selections.">
152                                        <xsl:attribute name="id"   select="concat('control', $id)"/>
153                                        <xsl:attribute name="name" select="concat('control', $id)"/>
154                                        <xsl:attribute name="href">javascript:treeControl.toggle('<xsl:value-of select="$id"/>')</xsl:attribute>
155                                        <span class="Icon"/>
156                                        <div class="Title"><xsl:value-of select="TITLE"/></div>
157                                </a>
158
159                                <!-- recurse the items to process the children -->
160                                <div id="container{$id}" class="Container">
161                                        <xsl:apply-templates select="SELECTIONS" mode="SelectionTree">
162                                                <xsl:with-param name="parentID" select="$id"/>
163                                                <xsl:with-param name="userAuthorities" select="$userAuthorities"/>
164                                        </xsl:apply-templates>
165                                </div>
166                        </xsl:when>
167
168                        <xsl:when test="exists(LOCAL_URL) or exists(URL)">
169                                <xsl:if test="current()[ not(exists(AUTHORITIES)) or (AUTHORITIES/AUTHORITY = $userAuthorities/AUTHORITIES/AUTHORITY) ]">
170                                        <a  href ="{if(exists(LOCAL_URL)) then concat($ibis.urlPrefix, LOCAL_URL) else URL}"
171                                                title="{if(string-length(DESCRIPTION) &lt; 41) then DESCRIPTION else 'Go to page'}"
172                                                class="Document"
173                                        >
174                                                <span class="Icon"/>
175                                                <div class="Title"><xsl:value-of select="TITLE"/></div>
176                                        </a>
177                                </xsl:if>
178                        </xsl:when>
179
180                        <xsl:otherwise>
181                                <span class="Icon"/>
182                                <div class="Title" title="Definition is incomplete."><xsl:value-of select="TITLE"/></div>
183                        </xsl:otherwise>
184                </xsl:choose>
185
186        </xsl:template>
187
188</xsl:stylesheet>
189<!-- ============================= End of File ============================= -->
190
Note: See TracBrowser for help on using the repository browser.