source: main/trunk/greenstone3/web/interfaces/default/transform/javascript-global-setup.xsl@ 30478

Last change on this file since 30478 was 30478, checked in by davidb, 8 years ago

Changes in the XSL and JS code to support the new approach taken to client-side XSLT (using Saxon-CE JS library in the browser). Also the reintroduction of the DirectEdit (Seaweed) template. Not on by default but a simple matter to call the re-instated template for projects that would like to make use of it, such as the digital music stand DL collection. Some white-space changes also occured. This was not deliberate, but would have been quite fiddly to tease out from other changes in the file, so consequently left in.

  • Property svn:executable set to *
File size: 13.8 KB
Line 
1<xsl:stylesheet version="1.0"
2 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 xmlns:java="http://xml.apache.org/xslt/java"
4 xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
5 xmlns:gslib="http://www.greenstone.org/skinning"
6 extension-element-prefixes="java util"
7 exclude-result-prefixes="java util">
8
9 <xsl:template name="setup-gs-variable">
10 <script type="text/javascript">
11 gs = new Array();
12 gs.cgiParams = new Array();
13 gs.xsltParams = new Array();
14 gs.siteMetadata = new Array();
15 gs.collectionMetadata = new Array();
16 gs.documentMetadata = new Array();
17 gs.imageURLs = new Array();
18 gs.variables = new Array();
19 gs.requestInformation = new Array();
20 </script>
21 <xsl:call-template name="populate-cgi-param-values"/>
22 <xsl:call-template name="populate-xslt-param-values"/>
23 <xsl:call-template name="populate-image-url-values"/>
24 <xsl:call-template name="populate-metadata-values"/>
25 <xsl:call-template name="populate-request-information-values"/>
26 <xsl:call-template name="populate-user-information-values"/>
27 <xsl:call-template name="include-global-javascript-functions"/>
28 </xsl:template>
29
30 <xsl:template name="populate-cgi-param-values">
31 <script type="text/javascript">
32 var name;
33 var value;
34 <xsl:for-each select="/page/pageRequest/paramList/param">
35 <xsl:text disable-output-escaping="yes">name = "</xsl:text><xsl:value-of select="@name"/><xsl:text disable-output-escaping="yes">";</xsl:text>
36 <xsl:text disable-output-escaping="yes">value = "</xsl:text><xsl:value-of select="util:escapeNewLinesAndQuotes(@value)"/><xsl:text disable-output-escaping="yes">";</xsl:text>
37 <xsl:text disable-output-escaping="yes">name = name.replace(".", "_");</xsl:text>
38 gs.cgiParams[name] = value;
39 </xsl:for-each>
40 </script>
41 </xsl:template>
42
43 <xsl:template name="populate-xslt-param-values">
44 <script type="text/javascript">
45 <xsl:text disable-output-escaping="yes">gs.xsltParams.library_name = "</xsl:text><xsl:value-of select="$library_name"/><xsl:text disable-output-escaping="yes">";</xsl:text>
46 <xsl:text disable-output-escaping="yes">gs.xsltParams.interface_name = "</xsl:text><xsl:value-of select="$interface_name"/><xsl:text disable-output-escaping="yes">";</xsl:text>
47 <xsl:text disable-output-escaping="yes">gs.xsltParams.site_name = "</xsl:text><xsl:value-of select="$site_name"/><xsl:text disable-output-escaping="yes">";</xsl:text>
48 <xsl:text disable-output-escaping="yes">gs.xsltParams.use_client_side_xslt = "</xsl:text><xsl:value-of select="$use_client_side_xslt"/><xsl:text disable-output-escaping="yes">";</xsl:text>
49 </script>
50 </xsl:template>
51
52 <xsl:template name="populate-metadata-values">
53 <script type="text/javascript">
54 <xsl:text disable-output-escaping="yes">
55 function addMetadataToList(name, value, list, lang)
56 {
57 name = name.replace(".", "_");
58 if(lang == "" || lang == "en")
59 {
60 list[name] = value;
61 }
62 else
63 {
64 if (list[lang] == undefined)
65 {
66 list[lang] = new Array();
67 }
68 var langList = list[lang];
69 langList[name] = value;
70 }
71 }
72 var name;
73 var value;
74 var lang;
75 </xsl:text>
76 <xsl:for-each select="/page/pageResponse/metadataList/metadata">
77 <xsl:text disable-output-escaping="yes">name = "</xsl:text><xsl:value-of select="@name"/><xsl:text disable-output-escaping="yes">";</xsl:text>
78 <xsl:text disable-output-escaping="yes">value = "</xsl:text><xsl:value-of disable-output-escaping="yes" select="util:escapeNewLinesAndQuotes(.)"/><xsl:text disable-output-escaping="yes">";</xsl:text>
79 <xsl:text disable-output-escaping="yes">lang = "</xsl:text><xsl:value-of select="@lang"/><xsl:text disable-output-escaping="yes">";</xsl:text>
80 addMetadataToList(name, value, gs.siteMetadata, lang);
81 </xsl:for-each>
82
83 <xsl:for-each select="/page/pageResponse/collection/metadataList/metadata">
84 <xsl:text disable-output-escaping="yes">name = "</xsl:text><xsl:value-of select="@name"/><xsl:text disable-output-escaping="yes">";</xsl:text>
85 <xsl:text disable-output-escaping="yes">value = "</xsl:text><xsl:value-of disable-output-escaping="yes" select="util:escapeNewLinesAndQuotes(.)"/><xsl:text disable-output-escaping="yes">";</xsl:text>
86 <xsl:text disable-output-escaping="yes">lang = "</xsl:text><xsl:value-of select="@lang"/><xsl:text disable-output-escaping="yes">";</xsl:text>
87 addMetadataToList(name, value, gs.collectionMetadata, lang);
88 </xsl:for-each>
89
90 <xsl:for-each select="/page/pageResponse/document/metadataList/metadata">
91 <xsl:text disable-output-escaping="yes">name = "</xsl:text><xsl:value-of select="@name"/><xsl:text disable-output-escaping="yes">";</xsl:text>
92 <xsl:text disable-output-escaping="yes">value = "</xsl:text><xsl:value-of disable-output-escaping="yes" select="util:escapeNewLinesAndQuotes(.)"/><xsl:text disable-output-escaping="yes">";</xsl:text>
93 <xsl:text disable-output-escaping="yes">lang = "</xsl:text><xsl:value-of select="@lang"/><xsl:text disable-output-escaping="yes">";</xsl:text>
94 addMetadataToList(name, value, gs.documentMetadata, lang);
95 </xsl:for-each>
96
97 <xsl:for-each select="/page/pageResponse/classifier/documentNode">
98 {
99 <xsl:text disable-output-escaping="yes">var nodeID = "</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">";</xsl:text>
100 <xsl:text disable-output-escaping="yes">var emptyLang = "";</xsl:text>
101 <xsl:text disable-output-escaping="yes">var metaList = new Array();</xsl:text>
102 <xsl:for-each select="metadataList/metadata">
103 <xsl:text disable-output-escaping="yes">name = "</xsl:text><xsl:value-of select="@name"/><xsl:text disable-output-escaping="yes">";</xsl:text>
104 <xsl:text disable-output-escaping="yes">value = "</xsl:text><xsl:value-of disable-output-escaping="yes" select="util:escapeNewLinesAndQuotes(.)"/><xsl:text disable-output-escaping="yes">";</xsl:text>
105 <xsl:text disable-output-escaping="yes">lang = "</xsl:text><xsl:value-of select="@lang"/><xsl:text disable-output-escaping="yes">";</xsl:text>
106 addMetadataToList(name, value, metaList, lang);
107 </xsl:for-each>
108 addMetadataToList(nodeID, metaList, gs.documentMetadata, emptyLang);
109 }
110 </xsl:for-each>
111
112 <xsl:text disable-output-escaping="yes">addMetadataToList("docType", "</xsl:text><xsl:value-of select="/page/pageResponse/document/@docType"/><xsl:text disable-output-escaping="yes">", gs.documentMetadata, "</xsl:text><xsl:value-of select="@lang"/><xsl:text disable-output-escaping="yes">");</xsl:text>
113 </script>
114 </xsl:template>
115
116 <xsl:template name="populate-image-url-values">
117 <script type="text/javascript">
118 <xsl:text disable-output-escaping="yes">gs.imageURLs.expand = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
119 <xsl:text disable-output-escaping="yes">gs.imageURLs.collapse = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
120 <xsl:text disable-output-escaping="yes">gs.imageURLs.page = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'page_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
121 <xsl:text disable-output-escaping="yes">gs.imageURLs.chapter = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'chapter_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
122 <xsl:text disable-output-escaping="yes">gs.imageURLs.realisticBook = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'realistic_books_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
123 <xsl:text disable-output-escaping="yes">gs.imageURLs.highlight = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'highlight_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
124 <xsl:text disable-output-escaping="yes">gs.imageURLs.bookshelf = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'bookshelf_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
125 <xsl:text disable-output-escaping="yes">gs.imageURLs.book = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'book_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
126 <xsl:text disable-output-escaping="yes">gs.imageURLs.loading = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'loading_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
127 <xsl:text disable-output-escaping="yes">gs.imageURLs.pageIcon = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'page_icon_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
128 <xsl:text disable-output-escaping="yes">gs.imageURLs.trashFull = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'trash_full_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
129 <xsl:text disable-output-escaping="yes">gs.imageURLs.blank = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'blank_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
130 <xsl:text disable-output-escaping="yes">gs.imageURLs.next = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'next_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
131 <xsl:text disable-output-escaping="yes">gs.imageURLs.prev = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'prev_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
132 <xsl:text disable-output-escaping="yes">gs.imageURLs.trashEmpty = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'trash_empty_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
133 <xsl:text disable-output-escaping="yes">gs.imageURLs.trashFull = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'trash_full_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
134 <xsl:text disable-output-escaping="yes">gs.imageURLs.greenBug = "</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'green_bug_image')"/><xsl:text disable-output-escaping="yes">";</xsl:text>
135 </script>
136 </xsl:template>
137
138 <xsl:template name="populate-request-information-values">
139 <script type="text/javascript">
140 <xsl:text disable-output-escaping="yes">
141 gs.requestInformation.fullURL = "</xsl:text><xsl:value-of select="/page/pageRequest/@fullURL"/><xsl:text disable-output-escaping="yes">";
142 </xsl:text>
143 </script>
144 </xsl:template>
145
146 <xsl:template name="populate-user-information-values">
147 <xsl:if test="/page/pageRequest/userInformation">
148 <script type="text/javascript">
149 <xsl:text disable-output-escaping="yes">
150 gs.userInformation = new Array();
151 gs.userInformation.username = "</xsl:text><xsl:value-of select="/page/pageRequest/userInformation/@username"/><xsl:text disable-output-escaping="yes">";
152 gs.userInformation.groups = "</xsl:text><xsl:value-of select="/page/pageRequest/userInformation/@groups"/><xsl:text disable-output-escaping="yes">";
153 gs.userInformation.editEnabled = "</xsl:text><xsl:value-of select="/page/pageRequest/userInformation/@editEnabled"/><xsl:text disable-output-escaping="yes">";
154 </xsl:text>
155 </script>
156 </xsl:if>
157 </xsl:template>
158
159 <xsl:template name="include-global-javascript-functions">
160 <script type="text/javascript" src="interfaces/default/js/javascript-global-functions.js"><xsl:text> </xsl:text></script>
161 <script type="text/javascript" src="interfaces/default/js/GSMetadata.js"><xsl:text> </xsl:text></script>
162 </xsl:template>
163</xsl:stylesheet>
164
165 <!-- CAN WE FIND SOME WAY TO MAKE THIS WORK?
166 <xsl:call-template name="populate-metadata-values">
167 <xsl:with-param name="path">/page/pageResponse/metadataList/metadata</xsl:with-param>
168 <xsl:with-param name="metadataListName">siteMetadata</xsl:with-param>
169 </xsl:call-template>
170
171 <xsl:call-template name="populate-metadata-values">
172 <xsl:with-param name="path">/page/pageResponse/collection/metadataList/metadata</xsl:with-param>
173 <xsl:with-param name="metadataListName">collectionMetadata</xsl:with-param>
174 </xsl:call-template>
175
176 <xsl:call-template name="populate-metadata-values">
177 <xsl:with-param name="path">/page/pageResponse/document/metadataList/metadata</xsl:with-param>
178 <xsl:with-param name="metadataListName">documentMetadata</xsl:with-param>
179 </xsl:call-template>
180 -->
181
182 <!-- NOT WORKING BUT IT WOULD BE TIDIER IF IT DID
183 <xsl:template name="populate-metadata-values">
184 <xsl:param name="path"/>
185 <xsl:param name="metadataListName"/>
186
187 <xsl:for-each select="$path">
188 <script type="text/javascript">
189 <xsl:text disable-output-escaping="yes">var name = "</xsl:text><xsl:value-of select="@name"/><xsl:text disable-output-escaping="yes">";</xsl:text>
190 <xsl:text disable-output-escaping="yes">var value = "</xsl:text><xsl:value-of select="."/><xsl:text disable-output-escaping="yes">";</xsl:text>
191 <xsl:text disable-output-escaping="yes">var lang = "</xsl:text><xsl:value-of select="@lang"/><xsl:text disable-output-escaping="yes">";</xsl:text>
192 <xsl:text disable-output-escaping="yes">var metadataListName = "</xsl:text><xsl:value-of select="$metadataListName"/><xsl:text disable-output-escaping="yes">";</xsl:text>
193 var list = gs[metadataListName];
194 if(lang == "")
195 {
196 list[name] = value;
197 }
198 else
199 {
200 if (list[lang] == undefined)
201 {
202 list[lang] = new Array();
203 }
204 var langList = list[lang];
205 langList[name] = value;
206 }
207 </script>
208 </xsl:for-each>
209 </xsl:template>
210 -->
Note: See TracBrowser for help on using the repository browser.