source: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/transform/pages/document.xsl@ 30459

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

Reindented now a spearate XSL file. Fixed up a few self-closing divs that Greenstone would otherwise transform incorrectly

File size: 11.4 KB
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
12 <xsl:template name="wrappedDocument">
13 <div id="gs-document">
14 <xsl:call-template name="documentPre"/>
15 <div id="gs-document-text" class="documenttext" collection="{/page/pageResponse/collection/@name}"><!-- *** -->
16 <xsl:call-template name="create-html-header"/>
17
18 <xsl:variable name="httpCollection">
19 <xsl:value-of select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/>
20 </xsl:variable>
21 <gsf:variable name="cgiParamPageWidth">
22 <xsl:value-of select="/page/pageRequest/paramList/param[@name = 'pageWidth']/@value"/>
23 </gsf:variable>
24 <gsf:variable name="cgiParamPageHeight">
25 <xsl:value-of select="/page/pageRequest/paramList/param[@name = 'pageHeight']/@value"/>
26 </gsf:variable>
27 <table align="center" width="{$cgiParamPageWidth}">
28 <tr>
29 <td align="left" width="20%">
30 <a href="javascript:prevPageAnim(gs.cgiParams['d'],'.png')">
31 <span id="prevpagespan" style="display: inline;">_iconprev_<span id="prevpageval"><script language="javascript" type="text/javascript">musicStand.docwritePrevPageNum()</script></span></span>
32 </a>
33 <script language="javascript" type="text/javascript">musicStand.activatePrevPageNum();</script>
34 </td>
35 <td align="center" width="60%">_document:gotoform_</td>
36 <td align="right" width="20%">
37 <a href="javascript:musicStand.nextPageAnim(gs.cgiParams['d'],'.png')">
38 <span id="nextpagespan" style="display: inline"><span id="nextpageval"><script language="javascript" type="text/javascript">musicStand.docwriteNextPageNum()</script></span>_iconnext_</span>
39 </a>
40 </td>
41 <script language="javascript" type="text/javascript">musicStand.activateNextPageNum();</script>
42 </tr>
43 </table>
44 <table width="100%">
45 <tr>
46 <td/>
47 <td>
48 <div id="thispage" style="cursor: e-resize; background: white; position: relative; left: 0px; top: 0px; width: {$cgiParamPageWidth}px; height: {gs.cgiparam.PageHeight}px;">
49 <a onClick="return false;" onContextMenu="return false;" onMouseDown="return musicStand.nextOrPrevPageEvent(event,gs.cgiParams['d'],'.png')" onMouseUp="return false;">
50 <img border="0" height="{$cgiParamPageHeight}" id="thispageimg" src="{$httpCollection}/images/blank.gif" width="{$cgiParamPageWidth}"/>
51 </a>
52 <div id="nextpagediv" style="clip : rect(0px, {$cgiParamPageWidth}px, {$cgiParamPageHeight}px, {$cgiParamPageWidth}px);">
53 <img border="0" id="nextpageimg" src=""/>
54 </div>
55 <div id="prevpagediv" style="clip : rect(0px, {$cgiParamPageWidth}px, {$cgiParamPageHeight}px, {$cgiParamPageWidth}px);">
56 <img border="0" id="prevpageimg" src=""/>
57 </div>
58 <div id="animedgebleed" style="clip : rect(0px, {$cgiParamPageWidth}px, {$cgiParamPageHeight}px, {$cgiParamPageWidth}px);"> </div> <div id="loading">
59 <table height="100%" width="100%">
60 <tr>
61 <td width="45%"> </td> <td align="left">
62 <span id="loadingdots">loading</span>
63 </td>
64 </tr>
65 </table>
66 </div>
67 </div>
68 <style>
69 div.postit {background-color: rgba(250,250,200,0.7); color: black; }
70 a.postit:link {background-color: rgba(250,250,200,0.7); color: black; text-decoration: none; }
71 a.postit:visited {background-color: rgba(250,250,200,0.7); color: black; text-decoration: none; }
72
73 a.postit:hover {color: rgba(150,110 ,0,0.7); }
74
75 div.pagemenu { background-color: rgba(250,250,200,0.7); color: black; }
76 </style>
77
78
79
80 <div id="coord"
81 style="position: absolute; left: 0px; top: 0px; z-index: 10; visibility: visible;">
82 <xsl:comment>Mouse coord debug div</xsl:comment>
83 </div>
84
85<!--
86<style>
87
88div.postit {background-color: _postitbgcol_;
89 color: black; }
90a.postit:link {background-color: _postitbgcol_;
91 color: black;
92 text-decoration: none; }
93a.postit:visited {background-color: _postitbgcol_;
94 color: black;
95 text-decoration: none; }
96
97a.postit:hover {color: _postitselcol_; }
98
99</style>
100
101<div id="expediteee"
102 style="position: absolute; right: 4px; top: 2px; z-index: 10; visibility: visible;">
103 <a id="expediteemode" class="postit" href=""></a>
104
105 <script type="text/javascript">
106 var href=document.getElementById("expediteemode");
107 var url = document.location.toString();
108
109 var expediteeVal = (expeditee) ? 1 : 0;
110 var toggleExpediteeVal = (expeditee) ? 0 : 1;
111
112 var replaceRE;
113 var withStr = "&expeditee="+toggleExpediteeVal;
114
115 var cutpos = url.indexOf("&expeditee=");
116
117 if (cutpos>=0) {
118 replaceRE = new RegExp("&expeditee="+expediteeVal);
119 }
120 else {
121 replaceRE = new RegExp("$");
122 }
123
124 url = url.replace(replaceRE,withStr);
125 href.setAttribute("href",url);
126
127 if (expeditee) {
128 // toggle
129 href.innerHTML = '<span style="font-size: 9pt;"><i>Switch to standard mode</i></span>';
130 }
131 else {
132 href.innerHTML = '<span style="font-size: 9pt;"><i>Switch to Expeditee mode</i></span>';
133 }
134
135 </script>
136
137
138</div>
139
140-->
141
142
143
144 <div class="editable-menu" id="pagemenu" onmouseout="javascript:return musicStand.hidePageMenu(this,event);" style="position: absolute; right: 4px; bottom: 2px; z-index: 10; visibility: hidden;">
145 <font size="-1">
146 <div class="pagemenu" id="pagemenu1">Cancel turn</div>
147 <div class="pagemenu" id="pagemenu2">Next page</div>
148 <div class="pagemenu" id="pagemenu3">Previous page</div>
149 </font>
150 </div>
151
152 <div id="annotateCanvas" style="position: absolute; left: 0px; top: 0px; visibility: visible; z-index: 2;" >
153 <!-- filler -->
154 </div>
155 </td>
156 <td>
157 <div id="slidercontainer" style="background: white; position: relative; left: 0px; top: 0px; width: 40px; height: {$cgiParamPageHeight}px;">
158 <div id="sliderbg">
159 <div id="slidertrackabove" style="position: absolute; left: 8px; top: 0px; width: 4px; height: 500px; z-index:4; background-color:#606060;">
160 <!-- filler -->
161 </div>
162 <div id="slidertrackbelow" style="position: absolute; left: 10px; top: 500px; width: 1px; height: 100px; z-index:4; background-color:#606060;">
163 <!-- filler -->
164 </div>
165 </div>
166
167 <div id="sliderpos" style="width:30px; height:11px;">
168 <img height="11" src="{$httpCollection}/images/brown2-slider.png" width="30"/>
169 </div>
170 <script language="javascript" type="text/javascript">
171 <xsl:text disable-output-escaping="yes">var username = musicStand.getUsername();
172 var metaval;
173
174 if (username != null) {
175 var metaname = username + "-sliderposTop";
176 metaval = 700; // ***** major hack ****
177 //metaval = gsapi.getLiveMetadata(gs.cgiParams["d"],metaname);
178 //if (metaval == "") {
179 // // fallback to looking up non-user specific one
180 // metaval = gsapi.getLiveMetadata(gs.cgiParams["d"],"sliderposTop");
181 //}
182 }
183 else {
184 //metaval = gsapi.getLiveMetadata(gs.cgiParams["d"],"sliderposTop");
185 metaval = 700; // ***** major hack ****
186 }
187 var sliderposTop = parseInt(metaval);
188
189 var speedBreak = musicStand.getSpeedBreak();
190
191 if (sliderposTop &gt; 0) {
192 sliderposTop *= musicStand.getScaleFactor();
193 speedBreak = sliderposTop;
194 musicStand.setSpeedBreak(speedBreak);
195 }
196
197 var sliderpos = document.getElementById('sliderpos');
198 sliderpos.style.top = speedBreak + "px";
199 sliderpos.style.left = "-8px";
200 sliderpos.onmousedown = dragSlider;
201 var sliderbg = document.getElementById('sliderbg');
202 sliderbg.onmousedown = dragSlider;
203
204
205 var trackabove = document.getElementById('slidertrackabove');
206 trackabove.style.height = speedBreak + "px";
207
208 var trackbelow = document.getElementById('slidertrackbelow');
209 trackbelow.style.top = speedBreak + "px";
210 trackbelow.style.height = (gs.cgiParams["pageHeight"] - speedBreak) + "px";
211 </xsl:text>
212 </script>
213 </div>
214 </td>
215 </tr>
216 </table>
217
218 </div>
219 </div>
220 </xsl:template>
221
222
223
224
225
226
227
228 <xsl:template name="wrappedDocumentXXX">
229 <xsl:choose>
230 <!-- NOTE: alb = ajax load bypass -->
231 <!--
232 If the docType is hierarchy and we want to bypass the ajax load then do this
233 OR If the docType is hierarchy and we have asked for the expanded document OR we have asked for the top level document then do this
234 -->
235 <xsl:when test="/page/pageResponse/document/@docType = 'hierarchy' and (/page/pageRequest/paramList/param[@name = 'alb']/@value = '1' or (string-length(/page/pageRequest/paramList/param[@name = 'd']/@value) > 0 and (/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or not(util:contains(/page/pageResponse/document/@selectedNode, '.')))))">
236 <div id="gs-document">
237 <xsl:call-template name="documentPre"/>
238 <div id="gs-document-text" class="documenttext" collection="{/page/pageResponse/collection/@name}"><!-- *** -->
239 <xsl:for-each select="documentNode">
240 <xsl:call-template name="wrapDocumentNodes"/>
241 </xsl:for-each>
242 </div>
243 </div>
244 </xsl:when>
245 <xsl:when test="/page/pageResponse/document/@docType = 'paged' or /page/pageResponse/document/@docType = 'pagedhierarchy'">
246 <div id="gs-document">
247 <div id="tocLoadingImage" style="text-align:center;">
248 <img src="{util:getInterfaceText($interface_name, /page/@lang, 'loading_image')}"/><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.loading')"/><xsl:text>...</xsl:text>
249 </div>
250 </div>
251 <script type="text/javascript">
252 <xsl:text disable-output-escaping="yes">
253 $(window).load(function()
254 {
255 var sectionID = gs.cgiParams.d;
256 var callbackFunction = null;
257 if(sectionID.indexOf("\\.") == -1)
258 {
259 callbackFunction = function()
260 {
261 focusSection(sectionID);
262 };
263 }
264
265 var docID = sectionID.replace(/([^.]*)\..*/, "$1");
266 var url = gs.xsltParams.library_name + "?a=d&amp;c=" + gs.cgiParams.c + "&amp;excerptid=gs-document&amp;dt=hierarchy&amp;d=" + docID;
267 loadTopLevelPage(callbackFunction, url);
268 });
269 </xsl:text>
270 </script>
271 </xsl:when>
272 <xsl:otherwise>
273 <div id="gs-document">
274 <div id="tocLoadingImage" style="text-align:center;">
275 <img src="{util:getInterfaceText($interface_name, /page/@lang, 'loading_image')}"/><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.loading')"/><xsl:text>...</xsl:text>
276 </div>
277 </div>
278 <script type="text/javascript">
279 <xsl:text disable-output-escaping="yes">
280 $(window).load(function()
281 {
282 loadTopLevelPage(function()
283 {
284 //Don't focus the section until the table of contents is loaded
285 var tocCheck = function()
286 {
287 if(gs.variables.tocLoaded)
288 {
289 focusSection("</xsl:text><xsl:value-of select="/page/pageResponse/document/@selectedNode"/><xsl:text disable-output-escaping="yes">");
290 }
291 else
292 {
293 setTimeout(tocCheck, 500);
294 }
295 }
296 tocCheck();
297 });
298 });
299 </xsl:text>
300 </script>
301 </xsl:otherwise>
302 </xsl:choose>
303
304 <div class="clear"><xsl:text> </xsl:text></div>
305 </xsl:template>
306
307</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.