root/other-projects/tipple-android/i-greenstone-server-files/greenstone/webapps/greenstone3/interfaces/default/transform/pages/classifier.xsl @ 26899

Revision 26899, 10.8 KB (checked in by davidb, 7 years ago)

Tipple reborn after Chris's Summer of Code 2013

  • Property svn:mime-type set to application/xml
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xsl:stylesheet version="1.0"
3    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4    xmlns:java="http://xml.apache.org/xslt/java"
5    xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
6    xmlns:gslib="http://www.greenstone.org/skinning"
7    xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
8    extension-element-prefixes="java util"
9    exclude-result-prefixes="java util gsf">
10   
11    <!-- use the 'main' layout -->
12    <xsl:import href="layouts/main.xsl"/>
13    <xsl:import href="classifiertools.xsl"/>
14
15    <!-- set page title -->
16    <xsl:template name="pageTitle"><gslib:serviceName/></xsl:template>
17
18    <!-- set page breadcrumbs -->
19    <xsl:template name="breadcrumbs"><gslib:siteLink/><gslib:rightArrow/><gslib:collectionNameLinked/><gslib:rightArrow/></xsl:template>
20
21    <!-- optional cgi-params for links to document pages -->
22    <xsl:variable name="opt-doc-link-args"></xsl:variable>
23    <!-- the page content -->
24    <xsl:template match="/page/pageResponse">
25        <xsl:call-template name="classifierPre"/>
26       
27        <script type="text/javascript" src="interfaces/{$interface_name}/js/classifier_scripts.js"><xsl:text> </xsl:text></script>
28        <script type="text/javascript">$(window).load(openStoredClassifiers);</script>
29       
30        <!-- this right sidebar -->
31        <xsl:if test="$berryBasketOn or ($documentBasketOn and (util:contains(/page/pageRequest/userInformation/@groups, 'administrator') or util:contains(/page/pageRequest/userInformation/@groups, 'all-collections-editor') or util:contains(/page/pageRequest/userInformation/@groups, $thisCollectionEditor)))">
32            <div id="rightSidebar">
33                <xsl:if test="$berryBasketOn">
34                    <!-- show the berry basket if it's turned on -->
35                    <gslib:berryBasket/>
36                    <xsl:text> </xsl:text>
37                </xsl:if>
38
39                <xsl:if test="$documentBasketOn">
40                    <gslib:documentBasket/>
41                    <xsl:text> </xsl:text>
42                </xsl:if>
43            </div>
44        </xsl:if>
45   
46        <!--
47            show the clasifier results -
48            you can change the appearance of the results by editing
49            the two templates at the bottom of this file
50        -->
51        <div id="results">
52            <xsl:variable name="collName"><xsl:value-of select="/page/pageRequest/paramList/param[@name='c']/@value"/></xsl:variable>
53            <xsl:variable name="serviceName"><xsl:value-of select="service/@name"/></xsl:variable>
54
55            <xsl:call-template name="classifierResultsPre"/>
56           
57            <xsl:apply-templates select="classifier">
58                <xsl:with-param name="collName" select="$collName"/>
59                <xsl:with-param name="serviceName" select="$serviceName"/>
60            </xsl:apply-templates>
61        </div>
62
63        <div class="clear"><xsl:text> </xsl:text></div>
64    </xsl:template>
65
66    <!--
67    TEMPLATE FOR DOCUMENTS
68    -->
69    <xsl:template match="documentNode"><!-- priority="3"-->
70        <!-- The book icon -->
71        <td>
72            <img>           
73                <xsl:attribute name="src">
74                    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'book_image')"/>
75                </xsl:attribute>
76            </img>
77        </td>
78        <!-- The document link -->
79        <td>
80            <a>
81                <xsl:choose>
82                    <xsl:when test="@docType = 'paged'">
83                        <xsl:attribute name="href"><xsl:value-of select="$library_name"/>?a=d&amp;c=<xsl:value-of select="/page/pageResponse/collection/@name"/>&amp;d=<xsl:value-of select="@nodeID"/>&amp;dt=<xsl:value-of select="@docType"/>&amp;p.a=b&amp;p.s=<xsl:value-of select="/page/pageResponse/service/@name"/></xsl:attribute>
84                    </xsl:when>
85                    <xsl:otherwise>
86                        <xsl:attribute name="href"><xsl:value-of select="$library_name"/>?a=d&amp;c=<xsl:value-of select="/page/pageResponse/collection/@name"/>&amp;d=<xsl:value-of select="@nodeID"/>&amp;dt=<xsl:value-of select="@docType"/>&amp;p.a=b&amp;p.s=<xsl:value-of select="/page/pageResponse/service/@name"/>&amp;ed=1</xsl:attribute>
87                    </xsl:otherwise>
88                </xsl:choose>
89                <xsl:value-of disable-output-escaping="yes"  select="metadataList/metadata[@name='Title']"/>
90            </a>
91        </td>
92        <!-- The berry (optional) -->
93        <td>
94            <xsl:call-template name="documentBerryForClassifierOrSearchPage"/>
95        </td>
96    </xsl:template>
97
98    <!--
99    TEMPLATE FOR GROUPS OF DOCUMENTS
100    -->
101    <xsl:template match="classifierNode"><!-- priority="3"-->
102
103        <table id="title{@nodeID}"><tbody><tr>
104            <!-- Bookshelf icon -->
105            <td>
106                <img>
107                    <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'bookshelf_image')"/></xsl:attribute>
108                </img>
109            </td>
110            <!-- Link title -->
111            <td>
112                <a href="javascript:toggleSection('{@nodeID}');">
113                    <xsl:value-of disable-output-escaping="yes"  select="metadataList/metadata[@name='Title']"/>
114                </a>
115            </td>
116        </tr></tbody></table>
117       
118        <!-- Show any documents or sub-groups in this group -->
119        <xsl:if test="documentNode|classifierNode">
120            <div id="div{@nodeID}" class="classifierContainer">
121                <table>
122                    <xsl:for-each select="documentNode|classifierNode">
123                        <tr>
124                            <xsl:apply-templates select="."/>
125                        </tr>
126                    </xsl:for-each>
127                </table>
128            </div>
129        </xsl:if>
130    </xsl:template>
131   
132    <xsl:template name="classifierPre">
133        <xsl:if test="/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='mapEnabled']/@value = 'true'">
134            <xsl:call-template name="mapFeaturesJSONNodes"/>
135        </xsl:if>
136       
137        <xsl:if test="/page/pageResponse/format/gsf:option[@name='panoramaViewerEnabled']/@value = 'true'">
138            <xsl:call-template name="panoramaViewerFeaturesJSONNodes"/>
139        </xsl:if>
140       
141    </xsl:template>
142   
143    <xsl:template name="classifierResultsPre">
144        <xsl:if test="/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='mapEnabled']/@value = 'true'">
145          <xsl:call-template name="mapFeaturesMap"/>
146        </xsl:if>
147        <xsl:if test="/page/pageResponse/format/gsf:option[@name='panoramaViewerEnabled']/@value = 'true'">
148          <xsl:call-template name="panoramaViewerFeatures"/>
149        </xsl:if>
150    </xsl:template>
151   
152    <xsl:template name="mapFeaturesJSONNodes">
153        <div id="jsonNodes" style="display:none;">
154            <xsl:text>[</xsl:text>
155            <xsl:for-each select="//documentNode">
156                <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">
157                    <xsl:text>{</xsl:text>
158                    <xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">",</xsl:text>
159                    <xsl:text disable-output-escaping="yes">"title":"</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Title']"/><xsl:text disable-output-escaping="yes">",</xsl:text>
160                    <xsl:text disable-output-escaping="yes">"lat":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Latitude']"/><xsl:text>,</xsl:text>
161                    <xsl:text disable-output-escaping="yes">"lng":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/>
162                    <xsl:text>}</xsl:text>
163                    <xsl:if test="not(position() = count(//documentNode))">
164                        <xsl:text>,</xsl:text>
165                    </xsl:if>
166                </xsl:if>
167            </xsl:for-each>
168            <xsl:text>]</xsl:text>
169        </div>
170       
171        <!-- Although these aren't visible, they are necessary because it forces Greenstone to include this metadata in the page xml -->
172        <gsf:metadata name="Latitude" hidden="true"/>
173        <gsf:metadata name="Longitude" hidden="true"/>
174    </xsl:template>
175   
176    <xsl:template name="mapFeaturesMap">
177      <div id="map_canvas" class="map_canvas_half"><xsl:text> </xsl:text></div>
178    </xsl:template>
179
180    <xsl:template name="panoramaViewerFeaturesJSONNodes">
181                <div id="jsonPanoNodes" style="display:none;">
182                        <xsl:text>[</xsl:text>
183                        <xsl:for-each select="//documentNode">
184                                <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude'] and metadataList/metadata[@name = 'PhotoType']='Panorama'">
185                                        <xsl:text>{</xsl:text>
186                                        <xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">",</xsl:text>
187                                        <xsl:text disable-output-escaping="yes">"source":"</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Source']"/>"<xsl:text>,</xsl:text>
188                                        <xsl:text disable-output-escaping="yes">"lat":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Latitude']"/><xsl:text>,</xsl:text>
189                                        <xsl:text disable-output-escaping="yes">"lng":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/>
190                                        <xsl:text>}</xsl:text>
191                                        <xsl:if test="not(position() = count(//documentNode))">
192                                                <xsl:text>,</xsl:text>
193                                        </xsl:if>
194                                </xsl:if>
195                        </xsl:for-each>
196                        <xsl:text>]</xsl:text>
197                </div>
198                <!-- Although these aren't visible, they are necessary because it forces Greenstone to include this metadata in the page xml -->
199                <gsf:metadata name="Latitude" hidden="true"/>
200                <gsf:metadata name="Longitude" hidden="true"/>
201                <gsf:metadata name="SourceFile" hidden="true"/>
202                <gsf:metadata name="assocfilepath" hidden="true"/>
203        <gsf:metadata name="PhotoType" hidden="true"/>
204        <gsf:metadata name="cv.rotation" hidden="true"/>
205        </xsl:template>
206   
207    <xsl:template name="panoramaViewerFeatures">
208
209
210      <div id="asdf">
211        <div id="pano-container" class="pano_canvas_half" style="position: relative">
212          <div style="position: absolute; top: 0px; right: 0px;"><a id="gofullscreen" style="background-color: #008000;" href="">Go Fullscreen</a></div>
213          <xsl:text> </xsl:text>
214        </div>
215      </div>
216
217
218
219
220      <gsf:script>
221<![CDATA[
222        var cgiargs = '<xsl:template name="mainTemplate"> \
223        <html> \
224            <head> \
225                <xsl:call-template name="create-html-header"/> \
226            </head> \
227            \
228            <body><xsl:call-template name="textDirectionAttribute"/><xsl:call-template name="actionClass"/> \
229                <div id="containerXX"> \
230                    <div id="gs_contentXX"> \
231                        <xsl:apply-templates select="/page"/> \
232                    </div> \
233                </div> \
234            </body> \
235        </html> \
236          </xsl:template> \
237          \
238          <xsl:template match="/page/pageResponse"> \
239        <xsl:call-template name="panoramaViewerFeaturesJSONNodes"/> \
240        <div id="asdf"> \
241              <div id="pano-container" class="pano_canvas_fullscreen"> \
242                <xsl:text> </xsl:text> \
243             </div> \
244           </div> \
245          </xsl:template>';
246
247          // encodeURIComponent(cgiargs);
248          // cgiargs.replace(/ /g,"%20")
249
250          var full_url = document.location + "?ilt=" + escape(cgiargs);
251          $('#gofullscreen').attr('href',full_url);
252]]>
253      </gsf:script>
254
255
256    </xsl:template>
257
258</xsl:stylesheet>
259
Note: See TracBrowser for help on using the browser.