root/main/trunk/greenstone2/macros/document.dm @ 27293

Revision 27293, 26.1 KB (checked in by ak19, 7 years ago)

Some bugfixes and improvements to the existing Add User Comment form before committing changes for the authentication. Fixes like checking for empty strings entered for the comment which shouldn't go in the database. And after a comment is submitted, it needs to be added to the existing list of displayed user comments, instead of reloading them all.

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
Line 
1# this file must be UTF-8 encoded
2
3package document
4
5#######################################################################
6# macros set from within the server
7#######################################################################
8
9_imagethispage_ {}
10_httpprevarrow_ {}
11_httpnextarrow_ {}
12_pagetitle_ {}
13_phindclassifier_ {}
14_collageclassifier_ {}
15
16# custom header for individual document
17_documentheader_ {}
18
19#custom css links for individual document
20_csslink_{
21   <link rel="stylesheet" href="_cssfilelink_" type="text/css"
22    charset="UTF-8"   _linktagend_
23  <link rel="alternate stylesheet" href="_httpstyle_/preview-document.css"
24    type="text/css"
25    title="Preview Document" charset="UTF-8" media="screen"  _linktagend_
26   <link rel="stylesheet" href="_httpstyle_/print-document.css" type="text/css"
27    charset="UTF-8" media="print"  _linktagend_
28}
29
30#######################################################################
31# page content
32#######################################################################
33
34_tocopen_ {<div class="top" _tocopenextra_>}
35_tocclose_ {</div>}
36
37_nextsearchresult_ {_If_("_cgiargsrn_" ne "0",<li id="nextresult"><a href="_httpquery_&amp;ifl=1&amp;ifln=_cgiargsrn_">_textnextsearchresult_</a></li>)}
38
39_prevsearchresult_ {_If_("_cgiargsrp_" ne "0",<li id="prevresult"><a href="_httpquery_&amp;ifl=1&amp;ifln=_cgiargsrp_">_textprevsearchresult_</a></li>)}
40
41_content_ {
42_optnavigationbar_
43
44_If_(_phindclassifier__collageclassifier_,
45<p style="text-align: center;">
46_phindclassifier_
47_collageclassifier_
48</p>
49)
50
51_If_("_cgiargcl_" eq "search",
52<ul id="searchresults">
53_prevsearchresult_
54_nextsearchresult_
55</ul>)
56
57<div class="document">
58
59
60}
61
62# Dublin Core Metadata Element Set, Version 1.1
63_textTitlepage_ {_texticonhtitle_}
64_textCreatorpage_ {_texticonhcreat_}
65_textSubjectpage_ {_texticonhsubj_}
66_textDescriptionpage_ {_texticonhdesc_}
67_textPublisherpage_ {_texticonhpubl_}
68_textContributorpage_ {_texticonhcontr_}
69_textDatepage_ {_texticonhdate_}
70_textTypepage_ {_texticonhtype_}
71_textFormatpage_ {_texticonhform_}
72_textIdentifierpage_ {_texticonhident_}
73_textSourcepage_ {_texticonhsrc_}
74_textLanguagepage_ {_texticonhlang_}
75_textRelationpage_ {_texticonhrel_}
76_textCoveragepage_ {_texticonhcover_}
77_textRightspage_ {_texticonhright_}
78
79_textTopage_ {_texticonhto_}
80_textFrompage_ {_texticonhfrom_}
81_textSeriespage_ {_texticonhser_}
82_textHowtopage_ {_texticonhhow_}
83_textOrganizationpage_ {_texticonhorg_}
84_textBrowsepage_ {_texticonhbrwse_}
85_textCollagepage_ {_texticonhcoll_}
86_textPeoplepage_ {_texticonhpeople_}
87_textAcronympage_ {_texticonhacronym_}
88_textPhrasepage_ {_texticonhphrases_}
89_textArtistpage_ {_texticonhartist_}
90_textKeywordpage_ {_texticonhkw_}
91_textVolumepage_ {_texticonhvol_}
92_textCaptionspage_ {_texticonhcapt_}
93_textCountriespage_ {_texticonhcount_}
94
95#######################################################################
96# navigation arrows
97#
98#######################################################################
99
100# these two may be reset to "" by the server
101_navarrowsbottom_ {_navarrows_}
102_navarrowstop_ {_navarrows_}
103
104_navarrows_ {<center>
105<table width=_pagewidth_ cellpadding=0 cellspacing=0 border=0>
106<tr><td align=left valign=top>
107_prevarrow_
108</td><td align=right valign=top>
109_nextarrow_
110</td></tr></table>
111</center>
112}
113
114_prevarrow_ {_If_(_httpprevarrow_,<a href="_httpprevarrow_">_iconprev_</a>)}
115_nextarrow_ {_If_(_httpnextarrow_,<a href="_httpnextarrow_">_iconnext_</a>)}
116
117_navarrows_ [v=1] {<p>
118_prevarrow_<br>
119_nextarrow_
120}
121
122#######################################################################
123# section for adding user comments: consists of form and its javascript
124#######################################################################
125
126# associated javascript function loadUserComments is in style.dm's _globalscripts_ macro
127_usercomments_ {
128_If_(_cgiargd_,
129<div id="usercomments"></div>
130)
131}
132
133
134# Display the add-user-comment form on actual document pages and not when browsing/searching
135# This means the form should only be displayed on pages where the _cgiargd_ (the docid) is set
136
137# For getting the submitbutton to make Ajax calls, see
138# http://stackoverflow.com/questions/4264091/input-type-submit-instead-of-input-type-button-with-ajax
139# http://stackoverflow.com/questions/8869341/ajax-form-submit-with-submit-button
140
141_addusercomment_ {
142
143_If_(_cgiargd_,
144
145<form name="AddUserCommentForm">
146<p>_textcommentusername_ <input type="text" name="username"></p>
147<p>
148_textaddusercomment_
149<textarea name="comment" rows="10" cols="70"></textarea>
150<input type=hidden name="d" value="_cgiargd_">
151</p>
152
153<input type="submit" value="_textaddcomment_" onclick="addUserComment(document.AddUserCommentForm.username.value, document.AddUserCommentForm.comment.value, document.AddUserCommentForm.d.value, document); return false;">
154<label id="usercommentfeedback"></label>
155</form>
156)
157
158<script type="text/javascript"> 
159
160    // Unused. Replaced in favour of call to escape() in setMetaArray function that calls urlPostSync
161    // http://stackoverflow.com/questions/6020714/escape-html-using-jquery
162    function safeHTML(str) \{
163         return str.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;").replace('"',"&quot;").replace("'","&#x27;").replace("/", "&#x2F;"); //"\\""
164    \}
165
166
167    function addUserComment(_username, _comment, _docid, doc) \{
168
169        // don't add empty strings for name/comment     
170
171        // http://stackoverflow.com/questions/498970/how-do-i-trim-a-string-in-javascript
172        var trimmed_username=_username.replace(/^\s+|\s+$/g, '');
173        var trimmed_comment = _comment.replace(/^\s+|\s+$/g, '');
174       
175        if(!trimmed_username || !trimmed_comment) \{
176              doc.AddUserCommentForm.comment.value = "";
177              doc.AddUserCommentForm.username.value = "";
178              doc.getElementById("usercommentfeedback").innerHTML = "_text-is-empty_";
179              return;
180        \}
181
182        // Need to the add user comment meta of username, timestamp and comment to the
183        // topmost section of the document. So only get the docId up to any period mark:
184        var period = _docid.indexOf(".");
185        if(period != -1) \{
186            _docid = _docid.substring(0, period);
187        \}
188
189
190        // Want to store username, timestamp and comment in import/metadata.xml, archives/doc.xml
191        // and index/col.gdb.
192
193        // For getting the current time, see
194        // http://stackoverflow.com/questions/3830244/get-current-date-time-in-seconds
195        var _timestamp = new Date().getTime(); // div by 1000 to get seconds. valueOf() may return string
196
197        //alert("username:" + _username
198        //+ "\\ncomment: " + _comment
199        //+ "\\ncollection: " + collection
200        //+ "\\ndocid: " + _docid
201        //+ "\\ntimestamp: " + _timestamp);
202
203
204        // Entity encode the values before storing (at least <, >, /. And single and double quote, ampersand)
205        // http://stackoverflow.com/questions/6020714/escape-html-using-jquery
206        // setMetadataArray escapes the entire JSON, is that better than escaping individually here?
207        //_docid = escape(_docid);
208        //_timestamp = escape(_timestamp);
209        //_username = escape(_username); //safeHTML(_username);
210        //_comment = escape(_comment); //safeHTML(_comment);
211
212        // Use this if making individual api calls to set username meta, then timestamp then comment meta
213        // GSAPI already knows the collection
214        //gsapi.setMetadata(_docid, "username", null, _username, "accumulate", "import|archives|index");
215        //gsapi.setMetadata(_docid, "usertimestamp", null, _timestamp, "accumulate", "import|archives|index");
216        //gsapi.setMetadata(_docid, "usercomment", null, _comment, "accumulate", "import|archives|index");
217
218
219        // Use the new JSON metatable format to set username, timestamp and comment meta for docid in one go
220
221        // For creating the JSON object that gets turned into a string, see
222        // http://msdn.microsoft.com/en-us/library/ie/cc836459%28v=vs.94%29.aspx
223        // http://jsfiddle.net/qmacro/W54hy/
224       
225        var username_rec = \{
226            metaname: "username",
227            metavals: [_username]
228        \};
229
230        var timestamp_rec = \{
231            metaname: "usertimestamp",
232            metavals: [_timestamp]
233        \};
234
235        var comment_rec = \{
236            metaname: "usercomment",
237            metavals: [_comment]
238        \};
239
240        var doc_rec = \{
241            docid: _docid,
242            metatable: [username_rec, timestamp_rec, comment_rec],
243            metamode: "accumulate"
244        \};
245
246        var docArray = [doc_rec];
247
248        //alert(JSON.stringify(docArray));
249
250        // GSAPI already knows the collection
251        gsapi.setMetadataArray(docArray, "accumulate", "import|archives|index");       
252        doc.AddUserCommentForm.comment.value = "";
253        doc.AddUserCommentForm.username.value = "";
254        doc.getElementById("usercommentfeedback").innerHTML = "_textcommentsubmitted_";
255
256        // update display of existing user comments to show the newly added comment
257        var usercommentdiv = document.getElementById("usercomments");
258        if(usercommentdiv != undefined) \{
259             displayInUserCommentList(usercommentdiv, _username, _timestamp, _comment);
260        \}
261    \}
262</script>
263}
264
265
266#######################################################################
267# the goto form
268#######################################################################
269
270_gotoform_ {
271<form name="GotoForm" method="get" action="_gwcgi_">
272<input type=hidden name="e" value="_decodedcompressedoptions_">
273<input type=hidden name="d" value="_cgiargd_">
274<input type=hidden name="cl" value="_cgiargcl_">
275<input type="text" name="gp" size="3" maxlength="4">
276<input type="submit" value="_textgoto_">
277</form>
278}
279
280_textnumpages_ {&nbsp;<i>(_1_ _pages_)</i>}
281_parentarrow_ {}
282_prevtitle_ {}
283_nexttitle_ {}
284
285#######################################################################
286# the phind applet
287#
288# The phind applet is only required on phind classifier pages.
289# Consequently, the _phindclassifier_ macro is not usually set.  On screens
290# where it is required, _phindclassifier_ resolves to _phindapplet_, and
291# the following macro is loaded into the web page.
292#######################################################################
293
294_phindapplet_ {
295<APPLET CODEBASE="_httpjava_" CODE="org.nzdl.gsdl.Phind.Phind.class" ARCHIVE="Phind.jar" WIDTH=500 HEIGHT=400>
296  <PARAM NAME=library      VALUE="_gwcgi_?e=_compressedoptions_">
297  <PARAM NAME=phindcgi     VALUE="_gwcgi_?a=phind">
298  <PARAM NAME=collection   VALUE="_cgiargc_">
299  <PARAM NAME=classifier   VALUE="_phindnumber_">
300
301  <PARAM NAME=orientation  VALUE="vertical">
302  <PARAM NAME=depth        VALUE="2">
303  <PARAM NAME=resultorder VALUE="L,l,E,e,D,d">
304  <PARAM NAME=textorientation VALUE="_textorientation_">
305  <PARAM NAME=backdrop     VALUE="_httpimg_/phindbg1.jpg">
306  <PARAM NAME=fontsize     VALUE="10">
307  <PARAM NAME=blocksize    VALUE="10">
308
309  The Phind java applet.
310</APPLET>
311}
312
313_collageapplet_ {
314 <applet CODEBASE="_httpjava_"
315     code="org.nzdl.gsdl.GsdlCollageApplet.GsdlCollageApplet.class"
316     archive="GsdlCollageApplet.jar"
317     width="_collagexdim_" height="_collageydim_">
318
319        <param name="gwcgi" value="_gwcgi_">
320        <param name="collection" value="_cgiargc_">
321        <param name="classifier" value="_cgiargcl_.1">
322
323        <param name="hrefMustHave" value="cl=_cgiargcl_.1">
324        <param name="imageMustNotHave" value="hl=\%x=\%gt=\%gc=\%.pr">
325
326        <param name="imageType" value="_collageimageType_">
327        <param name="verbosity" value="_collageverbosity_">
328        <param name="maxDepth" value="_collagemaxDepth_">
329        <param name="maxDisplay" value="_collagemaxDisplay_">
330        <param name="refreshDelay" value="_collagerefreshDelay_">
331        <param name="isJava2" value="_collageisJava2_">
332        <param name="bgcolor" value="_collagebgcolor_">
333        <param name="documentroot" value="_httpimg_">   
334 </applet>
335
336<center>
337_collagecaption_
338</center>
339}
340
341
342_flashbook_ {
343 <div id="bookdiv">
344 </div>
345
346 <script type="text/javascript">
347 var myWidth = "100%";
348 myHeight = 800;
349 
350 var img_cover = '_httpassocdir_/_thisOID_/cover.jpg';
351 var doc_url = document.URL;
352 doc_url = doc_url.replace(/(&|\\?)book=[a-z]+/gi,'');
353 doc_url += '&book=flashxml';
354 
355 var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;//get windows or not
356 //Only for Windows computers because Greenstone webserver doesn't allow us to pass parameters to Flash.
357 //These methods is called by the Flash program to get all the necessary parameters for the book
358 //However, it will only work for IE 5.0 and later, Firefox 1.0 and later, Mozilla 1.7.5 and later
359 //Netscape 8.0 and later, Safari 1.3 and later
360 function getDocURL() \{ return doc_url; \}
361 function getImgCover() \{ return img_cover; \}
362 function getStageW() \{ return -1; \}
363 function getStageH() \{ return -1; \}
364
365
366 var flash_plug_html = "";
367 flash_plug_html += '<OBJECT align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" \\n';
368 flash_plug_html += '  codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" \\n';
369 flash_plug_html += '  height="';
370 flash_plug_html += myHeight + '" id="Book" swLiveConnect="true" align="middle"\\n';
371 flash_plug_html += '  width="';
372 flash_plug_html += myWidth + '">\\n';
373 
374 flash_plug_html += '    <PARAM name="allowScriptAccess" value="always" />\\n';
375 flash_plug_html += '    <PARAM name="movie" value="_httpflash_/Book.swf';
376 if (isWin == false)
377 \{
378    flash_plug_html += '?src_image=' + escape(img_cover);
379    flash_plug_html += '&amp;doc_url=' + escape(doc_url);
380 \}
381 flash_plug_html += '" />\\n';
382 flash_plug_html += '    <PARAM name="quality" value="high" />\\n';
383 flash_plug_html += '    <PARAM name="bgcolor" value="#FFFFFF" />\\n';
384 flash_plug_html += '    <EMBED align="middle" \\n';
385 flash_plug_html += '      allowScriptAccess="always" swLiveConnect="true" \\n';
386 flash_plug_html += '      bgcolor="#FFFFFF" height="';
387 flash_plug_html += myHeight + '" name="Book" \\n';
388 flash_plug_html += '      pluginspage="http://www.macromedia.com/go/getflashplayer" \\n';
389 flash_plug_html += '      quality="high" \\n';
390 flash_plug_html += '      src=\\'_httpflash_/Book.swf';
391 if (isWin == false)
392 \{
393    flash_plug_html += '?src_image=' + escape(img_cover);
394    flash_plug_html += '&amp;doc_url=' + escape(doc_url);
395 \}
396 flash_plug_html += '\\'\\n';
397 flash_plug_html += '      type="application/x-shockwave-flash" width="';
398 flash_plug_html += myWidth + '" />\\n';
399 flash_plug_html += '</OBJECT>\\n';
400
401 var flash_div = document.getElementById("bookdiv");
402 flash_div.innerHTML = flash_plug_html;
403 </script>
404}
405
406#######################################################################
407# icons
408#######################################################################
409
410_iconsmalltext_ {<img src="_httpiconsmtext_" class="icon" width=_widthsmtext_ height=_heightsmtext_ alt="_texticonsmalltext_" title="_texticonsmalltext_">}
411_iconsmalltext_ [v=1] {<small><b>_texticonsmalltext2_</b></small>}
412
413_iconarrowsmalltext_ {<img src="_httpiconasmtext_" class="icon" width=_widthasmtext_ height=_heightasmtext_ alt="_texticonsmalltext_" title="_texticonsmalltext_">}
414_iconarrowsmalltext_ [v=1] {<small><b>->_texticonsmalltext2_</b></small>}
415
416_iconclosedfolder_ {<img src="_httpiconclsdfldr_" class="icon" width=_widthclsdfldr_ height=_heightclsdfldr_ alt="_texticonclosedfolder_" title="_texticonclosedfolder_">}
417_iconclosedfolder_ [v=1] {<small><b>_texticonclosedfolder2_</b></small>}
418
419_iconarrowclosedfolder_ {<img src=_httpiconaclsdfdr_" class="icon" width=_widthaclsdfdr_ height=_heightaclsdfdr_ alt="_texticonclosedfolder_" title="_texticonclosedfolder_">}
420_iconarrowclosedfolder_ [v=1] {<small><b>->_texticonclosedfolder2_</b></small>}
421
422_iconopenfolder_ {<img src="_httpiconopenfldr_" class="icon" width=_widthopenfldr_ height=_heightopenfldr_ alt="_texticonopenfolder_" title="_texticonopenfolder_">}
423_iconopenfolder_ [v=1] {<small><b>_texticonopenfolder2_</b></small>}
424
425_iconarrowopenfolder_ {<img src="_httpiconaopenfdr_" class="icon" width=_widthaopenfdr_ height=_heightaopenfdr_ alt="_texticonopenfolder_" title="_texticonopenfolder_">}
426_iconarrowopenfolder_ [v=1] {<small><b>->_texticonopenfolder2_</b></small>}
427
428_iconarrowclosedbook_ {<img src="_httpiconabook_" width=_widthabook_ height=_heightabook_ class="icon" alt="_texticonclosedbook_" title="_texticonclosedbook_">}
429_iconarrowclosedbook_ [v=1] {<small><b>->_texticonclosedbook_: </b></small>}
430
431_iconopenbook_ {<img src="_httpiconopenbook_" width=_widthopenbook_ height=_heightopenbook_ class="icon" alt="_texticonopenbook_" title="_texticonopenbook_">}
432_iconopenbook_ [v=1] {<small><b>_texticonopenbook_: </b></small>}
433
434_iconarrowopenbook_ {<img src="_httpiconaopenbk_" width=_widthaopenbk_ height=_heightaopenbk_ class="icon" alt="_texticonopenbook_" title="_texticonopenbook_">}
435_iconarrowopenbook_ [v=1] {<small><b>->_texticonopenbook_: </b></small>}
436
437_iconopenbookshelf_ {<img src="_httpiconbshelf_" class="icon" width=_widthbshelf_ height=_heightbshelf_ alt="_texticonopenbookshelf_" title="_texticonopenbookshelf_">}
438_iconopenbookshelf_ [v=1] {<small><b>_texticonopenbookshelf_: </b></small>}
439
440_iconarrowopenbookshelf_ {<img src="_httpiconabshelf_" class="icon" width=_widthabshelf_ height=_heightabshelf_ alt="_texticonopenbookshelf_" title="_texticonopenbookshelf_">}
441_iconarrowopenbookshelf_ [v=1] {<small><b>->_texticonopenbookshelf_: </b></small>}
442
443_iconclosedbookshelf_ {<img src="_httpiconbshelf_" class="icon" width=_widthbshelf_ height=_heightbshelf_ alt="_texticonclosedbookshelf_" title="_texticonclosedbookshelf_">}
444_iconclosedbookshelf_ [v=1] {<small><b>_texticonclosedbookshelf_: </b></small>}
445
446_iconarrowclosedbookshelf_ {<img src="_httpiconabshelf_" class="icon" width=_widthabshelf_ height=_heightabshelf_ alt="_texticonclosedbookshelf_" title="_texticonclosedbookshelf_">}
447_iconarrowclosedbookshelf_ [v=1] {<small><b>->_texticonclosedbookshelf_: </b></small>}
448
449_iconpointer_ {<img src="_httpiconarrrght_" class="icon" width=_widtharrrght_ height=_heightarrrght_>}
450_iconpointer_ [v=1] {<small><b>_texticonpointer_-> </b></small>}
451
452_iconwarning_ {<img src="_httpiconwarning_" width="_widthwarning_" height="_heightwarning_" class="icon" align="left">}
453_iconwarning_ [v=1] {_texticonwarning_}
454
455
456#######################################################################
457# images
458#######################################################################
459
460_coverimage_ {<img alt="Cover Image" onError="src='_httpimg_/blank.gif'" src="_httpassocdir_/_thisOID_/cover.jpg">}
461
462_docbutton_ {<div class="button"><span class="button" title="_3_"><a href="_1_">_2_</a></span></div>
463}
464
465# can't use _docbutton_ macro for detach button as we need to include target
466_imagedetach_ {<div class="button"><span class="button"><a href="_httpcurrentdocument_&amp;x=1" target="\_blank" title="_texticondetach_">_textDETACH_</a></span></div>}
467
468_imageprint_{<div class="button"><span class="button"><a href="javascript:print_preview()">_textPRINT_</a></span></div>}
469
470
471_imagehighlight_ {_docbutton_(_httpcurrentdocument_&amp;hl=1&amp;gc=_cgiarggc_&amp;gt=_cgiarggt_,_textHIGHLIGHT_,_texticonhighlight_)}
472
473_imagenohighlight_ {_docbutton_(_httpcurrentdocument_&amp;hl=0&amp;gc=_cgiarggc_&amp;gt=_cgiarggt_,_document:textNOHIGHLIGHT_,_document:texticonnohighlight_)}
474
475_imagecontracttoc_ {_docbutton_(_httpcurrentdocument_&amp;gc=0,_textCONTRACTCONTENTS_,_texticoncontracttoc_)}
476
477_imageexpandtoc_ {_docbutton_(_httpcurrentdocument_&amp;gc=1,_textEXPANDCONTENTS_,_texticonexpandtoc_)}
478
479_imagecontracttext_ {_docbutton_(_httpcurrentdocument_&amp;gt=0,_textCONTRACT_,_texticoncontracttext_)}
480
481_imageexpandtext_ {_docbutton_(_httpcurrentdocument_&amp;gt=1,_textEXPANDTEXT_,_texticonexpandtext_)}
482
483_imagecont_ {_docbutton_(_httpcurrentdocument_&amp;gt=2,_textCONTINUE_,_texticoncont_)}
484
485
486#######################################################################
487# print preview script
488#######################################################################
489
490
491_pagescriptextra_{
492
493 var style_display_old;
494 var show = true;
495 var toc_top;
496
497 function has_toc(){
498     var div_nodes = document.getElementsByTagName("div");   
499     for (var i=0;i < div_nodes.length ; i++ )\{
500          var div_node = div_nodes[i];
501          if (div_node.className =="toc" && div_node.childNodes.length > 1)
502             \{
503                 return true;
504             \}
505      \}
506   
507    return false;
508 \}
509
510 function hide_toc()\{
511     var div_nodes = document.getElementsByTagName("div");   
512     for (var i=0;i < div_nodes.length ; i++ )\{
513          var div_node = div_nodes[i];
514          if (div_node.className =="toc")
515             \{
516               style_display_old = div_node.style.display;
517               toc_top = document.getElementById("toc_top");
518               if (toc_top)
519                div_node.parentNode.insertBefore(toc_top,div_node);
520                div_node.style.display = "none";
521             \};
522      \} 
523
524 \} 
525
526
527 function show_toc()\{
528 
529     var div_nodes = document.getElementsByTagName("div");   
530     for (var i=0;i < div_nodes.length ; i++ )\{
531          var div_node = div_nodes[i];
532          if (div_node.className =="toc")
533             \{
534               div_node.style.display = style_display_old;
535               if (toc_top)
536                  div_node.insertBefore(toc_top,div_node.firstChild);   
537              \};
538      \}
539
540 \} 
541
542 
543  function switch_toc()\{
544     var toc_link =  document.getElementById("toc_link");
545       while (toc_link.hasChildNodes()) \{
546          toc_link.removeChild(toc_link.firstChild);
547    \} 
548    if (show)\{
549        toc_link.appendChild(document.createTextNode('_textshowcontents_'));
550        show = false;
551        hide_toc();
552    \}
553  else\{
554       toc_link.appendChild(document.createTextNode('_texthidecontents_'));
555      show = true;
556      show_toc();
557    \}
558
559  \}
560   
561  function print_preview() \{
562   // Switch the stylesheet
563    setActiveStyleSheet("Preview Document");
564    add_print_message();
565  \}
566
567  function add_print_message()\{
568     if (document.getElementById)\{
569        var print_message = document.createElement('ul');
570        print_message.id = 'print-message';
571            print_message.className = "printmessage"; 
572       
573         var cancel_print_link = document.createElement('li');
574         cancel_print_link.className = "cancelprint"
575         cancel_print_link.onclick = function()\{ cancel_print(); return false;\};
576         cancel_print_link.appendChild(document.createTextNode('_textreturnoriginal_'));
577          print_message.appendChild(cancel_print_link); 
578
579         
580           var print_link = document.createElement('li');
581           print_link.onclick = function()\{ window.print(); return false;\};
582           print_link.appendChild(document.createTextNode('_textprintpage_'));
583           print_message.appendChild(print_link);
584
585    if (has_toc())\{ 
586      var toc_link = document.createElement('li');
587          toc_link.id = "toc_link";
588          toc_link.onclick = function()\{ switch_toc(); return false;\};
589          toc_link.appendChild(document.createTextNode('_texthidecontents_'));                 
590          print_message.appendChild(toc_link);   
591         \}
592
593         //insert the print message node
594         var div_nodes = document.getElementsByTagName("div");   
595         for (var i=0;i < div_nodes.length ; i++ )\{
596            var div_node = div_nodes[i];
597             if (div_node.className =="document")\{         
598                 var parent = div_node.parentNode;
599                 parent.insertBefore(print_message,div_node);
600           \}
601        \}
602     \}
603
604  \}
605 
606 
607 function cancel_print() \{
608    // Destroy the preview message
609   var print_message = document.getElementById('print-message');
610   var parent = print_message.parentNode;
611   parent.removeChild(print_message);
612   
613    show_toc();
614    // Switch back stylesheet
615    setActiveStyleSheet("default");
616  \}
617
618 function setActiveStyleSheet(title) \{
619    var i, a, main;
620    for(i=0; (a = document.getElementsByTagName("link")[i]); i++) \{
621      if(a.getAttribute("rel").indexOf("style") != -1
622         && a.getAttribute("title")) \{
623        a.disabled = true;
624        if(a.getAttribute("title") == title) a.disabled = false;
625    \}
626   \}
627  \}
628
629}
630
631
632#######################################################################
633# headers/footers
634#######################################################################
635
636
637# header overridden for text pages
638_textheader_ {_cgihead_
639_htmlhead_
640_startspacer_
641
642<!-- document:textheader -->
643<div id="banner">
644<div class="pageinfo"><p class="bannerlinks">_globallinks_</p></div>
645<div class="collectimage">_imagecollection_</div>
646</div>
647<div class="bannerextra">_pagebannerextra_</div>
648}
649
650_textheader_ [v=1] {_cgihead_
651_htmlhead_
652_globallinks_
653}
654
655_footer_ {
656</div> <!-- document:footer -->
657
658<div class="navarrowsbottom">
659_navarrowsbottom_
660</div>
661
662<center>
663<table width=_pagewidth_ cellpadding=0 cellspacing=0 border=0>
664<tr><td align=left valign=top>
665<div class="commentssection">
666_usercomments_
667_addusercomment_
668</div>
669</td></tr></table>
670</center>
671
672_endspacer__htmlfooter_
673}
674
675
676
677
678package Global
679   
680# Social network support
681# Defined here in document, as the most likely place this will be used in
682# within a document view, however its package is 'Global' because you
683# might equally want this in a search or browse list
684
685# _1_ = e.g. title
686# _2_ = [srclink] or left empty.  If left empty, then it will share the internal GS document
687
688_sharemescript_ {
689  <script type="text/javascript">
690    var a2a_config = a2a_config || \{ \};
691    a2a_config.linkname = "_1_";
692
693    _If_(_2_,
694    var srclink = \'_2_\';
695   
696    //If metadata value is a valid URL that starts with xxx://
697    // (e.g. any protocol\, http, https\, ftp ...) then that will be the link to share
698    if (srclink.match(/^[^:]+:\\\/\\\//i)) \{
699          a2a_config.linkurl = srclink;
700     \}
701    else \{
702    //if metadata value is [srclink] then we have to cut off the 'href' tag label
703        var href = srclink.match(/href=\"([^\"]*)\"/);
704        a2a_config.linkurl = gsapi.fullDomainURL(href[1]);
705    \}
706    ,
707    //if no metadata was passed as link\, then the GS version of the document will be used.
708    a2a_config.linkurl = gsapi.fullDomainURL("_gwcgi_")+ "?c=_cgiargc_&a=d&d=_cgiargd_";
709)
710
711  </script>
712}
713
714_shareme_ {
715
716<div style=\'padding-left:50px;\' class=\'a2a_kit a2a_default_style\'>
717  _sharemescript_(_1_,_2_)
718  <center>
719    <a class=\'a2a_dd\' href=\'http://www.addtoany.com/share_save\'>Share</a>
720      <span class=\"a2a_divider\"></span>
721      <a class=\'a2a_button_facebook\'></a>
722      <a class=\'a2a_button_twitter\'></a>
723      <a class=\'a2a_button_email\'></a>
724      <a class=\'a2a_button_linkedin\'></a>
725    </center>
726  <script type=\"text/javascript\" src=\"http://static.addtoany.com/menu/page.js\"></script>
727</div>
728
729}
730
731_sharemesmall_ {
732
733<span style=\'padding-left:8px;\' class=\'a2a_kit a2a_default_style\'>
734  _sharemescript_(_1_,_2_)
735    <a class=\'a2a_dd\' href=\'http://www.addtoany.com/share_save\'>Share</a>
736  <script type=\"text/javascript\" src=\"http://static.addtoany.com/menu/page.js\"></script>
737</span>
738
739}
Note: See TracBrowser for help on using the browser.