source: main/trunk/greenstone2/macros/document.dm@ 27293

Last change on this file since 27293 was 27293, checked in by ak19, 11 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
File size: 26.1 KB
RevLine 
[7343]1# this file must be UTF-8 encoded
2
[258]3package document
4
5#######################################################################
6# macros set from within the server
7#######################################################################
8
9_imagethispage_ {}
10_httpprevarrow_ {}
11_httpnextarrow_ {}
[283]12_pagetitle_ {}
[1804]13_phindclassifier_ {}
[6813]14_collageclassifier_ {}
[13427]15
[12944]16# custom header for individual document
17_documentheader_ {}
[13370]18
[13427]19#custom css links for individual document
20_csslink_{
21 <link rel="stylesheet" href="_cssfilelink_" type="text/css"
22 charset="UTF-8" _linktagend_
[19129]23 <link rel="alternate stylesheet" href="_httpstyle_/preview-document.css"
[13450]24 type="text/css"
[13427]25 title="Preview Document" charset="UTF-8" media="screen" _linktagend_
[19129]26 <link rel="stylesheet" href="_httpstyle_/print-document.css" type="text/css"
[13427]27 charset="UTF-8" media="print" _linktagend_
28}
[13370]29
[258]30#######################################################################
31# page content
32#######################################################################
33
[14181]34_tocopen_ {<div class="top" _tocopenextra_>}
35_tocclose_ {</div>}
36
[13534]37_nextsearchresult_ {_If_("_cgiargsrn_" ne "0",<li id="nextresult"><a href="_httpquery_&amp;ifl=1&amp;ifln=_cgiargsrn_">_textnextsearchresult_</a></li>)}
[12944]38
[13534]39_prevsearchresult_ {_If_("_cgiargsrp_" ne "0",<li id="prevresult"><a href="_httpquery_&amp;ifl=1&amp;ifln=_cgiargsrp_">_textprevsearchresult_</a></li>)}
[13370]40
[258]41_content_ {
[7503]42_optnavigationbar_
[11094]43
[10872]44_If_(_phindclassifier__collageclassifier_,
45<p style="text-align: center;">
[1804]46_phindclassifier_
[6813]47_collageclassifier_
[10872]48</p>
49)
[13370]50
[13528]51_If_("_cgiargcl_" eq "search",
[13534]52<ul id="searchresults">
[13528]53_prevsearchresult_
54_nextsearchresult_
[14776]55</ul>)
[13370]56
[10872]57<div class="document">
[13370]58
59
[258]60}
61
[8106]62# Dublin Core Metadata Element Set, Version 1.1
[2802]63_textTitlepage_ {_texticonhtitle_}
[8106]64_textCreatorpage_ {_texticonhcreat_}
[2802]65_textSubjectpage_ {_texticonhsubj_}
[8106]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
[2802]79_textTopage_ {_texticonhto_}
80_textFrompage_ {_texticonhfrom_}
81_textSeriespage_ {_texticonhser_}
82_textHowtopage_ {_texticonhhow_}
83_textOrganizationpage_ {_texticonhorg_}
84_textBrowsepage_ {_texticonhbrwse_}
[6813]85_textCollagepage_ {_texticonhcoll_}
[2802]86_textPeoplepage_ {_texticonhpeople_}
87_textAcronympage_ {_texticonhacronym_}
88_textPhrasepage_ {_texticonhphrases_}
89_textArtistpage_ {_texticonhartist_}
[3105]90_textKeywordpage_ {_texticonhkw_}
[3534]91_textVolumepage_ {_texticonhvol_}
[5622]92_textCaptionspage_ {_texticonhcapt_}
[5517]93_textCountriespage_ {_texticonhcount_}
[2802]94
[258]95#######################################################################
96# navigation arrows
97#
98#######################################################################
99
[4868]100# these two may be reset to "" by the server
101_navarrowsbottom_ {_navarrows_}
102_navarrowstop_ {_navarrows_}
103
[258]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
[548]117_navarrows_ [v=1] {<p>
[258]118_prevarrow_<br>
119_nextarrow_
120}
121
122#######################################################################
[27257]123# section for adding user comments: consists of form and its javascript
124#######################################################################
125
[27281]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
[27258]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
[27257]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
[27281]141_addusercomment_ {
[27257]142
[27258]143_If_(_cgiargd_,
144
[27257]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
[27259]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>
[27257]155</form>
[27258]156)
[27259]157
[27257]158<script type="text/javascript">
[27259]159
[27277]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
[27259]162 function safeHTML(str) \{
163 return str.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;").replace('"',"&quot;").replace("'","&#x27;").replace("/", "&#x2F;"); //"\\""
164 \}
165
[27277]166
[27259]167 function addUserComment(_username, _comment, _docid, doc) \{
[27293]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
[27258]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 \}
[27257]188
[27277]189
[27257]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
[27277]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
[27257]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 = \{
[27260]231 metaname: "usertimestamp",
[27257]232 metavals: [_timestamp]
233 \};
234
235 var comment_rec = \{
[27258]236 metaname: "usercomment",
[27257]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
[27277]251 gsapi.setMetadataArray(docArray, "accumulate", "import|archives|index");
252 doc.AddUserCommentForm.comment.value = "";
253 doc.AddUserCommentForm.username.value = "";
254 doc.getElementById("usercommentfeedback").innerHTML = "_textcommentsubmitted_";
[27281]255
256 // update display of existing user comments to show the newly added comment
[27293]257 var usercommentdiv = document.getElementById("usercomments");
258 if(usercommentdiv != undefined) \{
259 displayInUserCommentList(usercommentdiv, _username, _timestamp, _comment);
260 \}
[27257]261 \}
262</script>
263}
264
[27258]265
[27257]266#######################################################################
[258]267# the goto form
268#######################################################################
269
270_gotoform_ {
271<form name="GotoForm" method="get" action="_gwcgi_">
[876]272<input type=hidden name="e" value="_decodedcompressedoptions_">
[258]273<input type=hidden name="d" value="_cgiargd_">
274<input type=hidden name="cl" value="_cgiargcl_">
[666]275<input type="text" name="gp" size="3" maxlength="4">
[944]276<input type="submit" value="_textgoto_">
[258]277</form>
278}
279
[944]280_textnumpages_ {&nbsp;<i>(_1_ _pages_)</i>}
[666]281_parentarrow_ {}
[19048]282_prevtitle_ {}
283_nexttitle_ {}
[666]284
[258]285#######################################################################
[1804]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_ {
[19149]295<APPLET CODEBASE="_httpjava_" CODE="org.nzdl.gsdl.Phind.Phind.class" ARCHIVE="Phind.jar" WIDTH=500 HEIGHT=400>
[3084]296 <PARAM NAME=library VALUE="_gwcgi_?e=_compressedoptions_">
[2487]297 <PARAM NAME=phindcgi VALUE="_gwcgi_?a=phind">
[1804]298 <PARAM NAME=collection VALUE="_cgiargc_">
[2021]299 <PARAM NAME=classifier VALUE="_phindnumber_">
300
[1804]301 <PARAM NAME=orientation VALUE="vertical">
302 <PARAM NAME=depth VALUE="2">
[2021]303 <PARAM NAME=resultorder VALUE="L,l,E,e,D,d">
[22383]304 <PARAM NAME=textorientation VALUE="_textorientation_">
[2021]305 <PARAM NAME=backdrop VALUE="_httpimg_/phindbg1.jpg">
306 <PARAM NAME=fontsize VALUE="10">
[1804]307 <PARAM NAME=blocksize VALUE="10">
[2021]308
[1804]309 The Phind java applet.
310</APPLET>
311}
312
[6813]313_collageapplet_ {
[19149]314 <applet CODEBASE="_httpjava_"
[7332]315 code="org.nzdl.gsdl.GsdlCollageApplet.GsdlCollageApplet.class"
316 archive="GsdlCollageApplet.jar"
317 width="_collagexdim_" height="_collageydim_">
[1804]318
[7332]319 <param name="gwcgi" value="_gwcgi_">
320 <param name="collection" value="_cgiargc_">
321 <param name="classifier" value="_cgiargcl_.1">
[6813]322
[7332]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_">
[11421]333 <param name="documentroot" value="_httpimg_">
[6813]334 </applet>
[7332]335
336<center>
337_collagecaption_
338</center>
[13971]339}
[7332]340
[13971]341
342_flashbook_ {
343 <div id="bookdiv">
344 </div>
345
346 <script type="text/javascript">
[14082]347 var myWidth = "100%";
348 myHeight = 800;
349
[19149]350 var img_cover = '_httpassocdir_/_thisOID_/cover.jpg';
[13971]351 var doc_url = document.URL;
352 doc_url = doc_url.replace(/(&|\\?)book=[a-z]+/gi,'');
[14082]353 doc_url += '&book=flashxml';
[18168]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
[13971]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="';
[18168]370 flash_plug_html += myHeight + '" id="Book" swLiveConnect="true" align="middle"\\n';
[13971]371 flash_plug_html += ' width="';
372 flash_plug_html += myWidth + '">\\n';
[18168]373
[13971]374 flash_plug_html += ' <PARAM name="allowScriptAccess" value="always" />\\n';
[19130]375 flash_plug_html += ' <PARAM name="movie" value="_httpflash_/Book.swf';
[18168]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 \}
[13971]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';
[19130]390 flash_plug_html += ' src=\\'_httpflash_/Book.swf';
[18168]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';
[13971]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>
[6813]404}
405
[1804]406#######################################################################
[283]407# icons
[258]408#######################################################################
409
[10872]410_iconsmalltext_ {<img src="_httpiconsmtext_" class="icon" width=_widthsmtext_ height=_heightsmtext_ alt="_texticonsmalltext_" title="_texticonsmalltext_">}
[548]411_iconsmalltext_ [v=1] {<small><b>_texticonsmalltext2_</b></small>}
[283]412
[10872]413_iconarrowsmalltext_ {<img src="_httpiconasmtext_" class="icon" width=_widthasmtext_ height=_heightasmtext_ alt="_texticonsmalltext_" title="_texticonsmalltext_">}
[548]414_iconarrowsmalltext_ [v=1] {<small><b>->_texticonsmalltext2_</b></small>}
[454]415
[10872]416_iconclosedfolder_ {<img src="_httpiconclsdfldr_" class="icon" width=_widthclsdfldr_ height=_heightclsdfldr_ alt="_texticonclosedfolder_" title="_texticonclosedfolder_">}
[548]417_iconclosedfolder_ [v=1] {<small><b>_texticonclosedfolder2_</b></small>}
[283]418
[10872]419_iconarrowclosedfolder_ {<img src=_httpiconaclsdfdr_" class="icon" width=_widthaclsdfdr_ height=_heightaclsdfdr_ alt="_texticonclosedfolder_" title="_texticonclosedfolder_">}
[548]420_iconarrowclosedfolder_ [v=1] {<small><b>->_texticonclosedfolder2_</b></small>}
[454]421
[10872]422_iconopenfolder_ {<img src="_httpiconopenfldr_" class="icon" width=_widthopenfldr_ height=_heightopenfldr_ alt="_texticonopenfolder_" title="_texticonopenfolder_">}
[548]423_iconopenfolder_ [v=1] {<small><b>_texticonopenfolder2_</b></small>}
[283]424
[10872]425_iconarrowopenfolder_ {<img src="_httpiconaopenfdr_" class="icon" width=_widthaopenfdr_ height=_heightaopenfdr_ alt="_texticonopenfolder_" title="_texticonopenfolder_">}
[548]426_iconarrowopenfolder_ [v=1] {<small><b>->_texticonopenfolder2_</b></small>}
[454]427
[10872]428_iconarrowclosedbook_ {<img src="_httpiconabook_" width=_widthabook_ height=_heightabook_ class="icon" alt="_texticonclosedbook_" title="_texticonclosedbook_">}
[548]429_iconarrowclosedbook_ [v=1] {<small><b>->_texticonclosedbook_: </b></small>}
[454]430
[10872]431_iconopenbook_ {<img src="_httpiconopenbook_" width=_widthopenbook_ height=_heightopenbook_ class="icon" alt="_texticonopenbook_" title="_texticonopenbook_">}
[548]432_iconopenbook_ [v=1] {<small><b>_texticonopenbook_: </b></small>}
[283]433
[10872]434_iconarrowopenbook_ {<img src="_httpiconaopenbk_" width=_widthaopenbk_ height=_heightaopenbk_ class="icon" alt="_texticonopenbook_" title="_texticonopenbook_">}
[548]435_iconarrowopenbook_ [v=1] {<small><b>->_texticonopenbook_: </b></small>}
[454]436
[10872]437_iconopenbookshelf_ {<img src="_httpiconbshelf_" class="icon" width=_widthbshelf_ height=_heightbshelf_ alt="_texticonopenbookshelf_" title="_texticonopenbookshelf_">}
[548]438_iconopenbookshelf_ [v=1] {<small><b>_texticonopenbookshelf_: </b></small>}
[283]439
[10872]440_iconarrowopenbookshelf_ {<img src="_httpiconabshelf_" class="icon" width=_widthabshelf_ height=_heightabshelf_ alt="_texticonopenbookshelf_" title="_texticonopenbookshelf_">}
[548]441_iconarrowopenbookshelf_ [v=1] {<small><b>->_texticonopenbookshelf_: </b></small>}
[454]442
[10872]443_iconclosedbookshelf_ {<img src="_httpiconbshelf_" class="icon" width=_widthbshelf_ height=_heightbshelf_ alt="_texticonclosedbookshelf_" title="_texticonclosedbookshelf_">}
[548]444_iconclosedbookshelf_ [v=1] {<small><b>_texticonclosedbookshelf_: </b></small>}
[283]445
[10872]446_iconarrowclosedbookshelf_ {<img src="_httpiconabshelf_" class="icon" width=_widthabshelf_ height=_heightabshelf_ alt="_texticonclosedbookshelf_" title="_texticonclosedbookshelf_">}
[548]447_iconarrowclosedbookshelf_ [v=1] {<small><b>->_texticonclosedbookshelf_: </b></small>}
[454]448
[10872]449_iconpointer_ {<img src="_httpiconarrrght_" class="icon" width=_widtharrrght_ height=_heightarrrght_>}
[548]450_iconpointer_ [v=1] {<small><b>_texticonpointer_-> </b></small>}
[283]451
[11132]452_iconwarning_ {<img src="_httpiconwarning_" width="_widthwarning_" height="_heightwarning_" class="icon" align="left">}
[548]453_iconwarning_ [v=1] {_texticonwarning_}
[283]454
455
[258]456#######################################################################
[283]457# images
458#######################################################################
459
[19149]460_coverimage_ {<img alt="Cover Image" onError="src='_httpimg_/blank.gif'" src="_httpassocdir_/_thisOID_/cover.jpg">}
[14072]461
[11132]462_docbutton_ {<div class="button"><span class="button" title="_3_"><a href="_1_">_2_</a></span></div>
463}
[283]464
[11132]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>}
[283]467
[13427]468_imageprint_{<div class="button"><span class="button"><a href="javascript:print_preview()">_textPRINT_</a></span></div>}
469
470
[11132]471_imagehighlight_ {_docbutton_(_httpcurrentdocument_&amp;hl=1&amp;gc=_cgiarggc_&amp;gt=_cgiarggt_,_textHIGHLIGHT_,_texticonhighlight_)}
[283]472
[11132]473_imagenohighlight_ {_docbutton_(_httpcurrentdocument_&amp;hl=0&amp;gc=_cgiarggc_&amp;gt=_cgiarggt_,_document:textNOHIGHLIGHT_,_document:texticonnohighlight_)}
[283]474
[11132]475_imagecontracttoc_ {_docbutton_(_httpcurrentdocument_&amp;gc=0,_textCONTRACTCONTENTS_,_texticoncontracttoc_)}
[283]476
[11132]477_imageexpandtoc_ {_docbutton_(_httpcurrentdocument_&amp;gc=1,_textEXPANDCONTENTS_,_texticonexpandtoc_)}
[283]478
[11132]479_imagecontracttext_ {_docbutton_(_httpcurrentdocument_&amp;gt=0,_textCONTRACT_,_texticoncontracttext_)}
[283]480
[11132]481_imageexpandtext_ {_docbutton_(_httpcurrentdocument_&amp;gt=1,_textEXPANDTEXT_,_texticonexpandtext_)}
[283]482
[11132]483_imagecont_ {_docbutton_(_httpcurrentdocument_&amp;gt=2,_textCONTINUE_,_texticoncont_)}
[283]484
[11132]485
[13427]486#######################################################################
487# print preview script
488#######################################################################
[11132]489
[13427]490
491_pagescriptextra_{
492
493 var style_display_old;
494 var show = true;
[13452]495 var toc_top;
[13427]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;
[13452]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";
[13427]521 \};
522 \}
523
524 \}
525
[13452]526
[13427]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;
[13452]535 if (toc_top)
536 div_node.insertBefore(toc_top,div_node.firstChild);
537 \};
[13427]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)\{
[13450]549 toc_link.appendChild(document.createTextNode('_textshowcontents_'));
[13427]550 show = false;
551 hide_toc();
552 \}
553 else\{
[13450]554 toc_link.appendChild(document.createTextNode('_texthidecontents_'));
[13427]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;\};
[13450]576 cancel_print_link.appendChild(document.createTextNode('_textreturnoriginal_'));
[13427]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;\};
[13450]582 print_link.appendChild(document.createTextNode('_textprintpage_'));
[13427]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;\};
[13450]589 toc_link.appendChild(document.createTextNode('_texthidecontents_'));
[13427]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 \}
[25396]626 \}
[13427]627 \}
628
629}
630
631
[283]632#######################################################################
[258]633# headers/footers
634#######################################################################
635
636
637# header overridden for text pages
638_textheader_ {_cgihead_
[454]639_htmlhead_
[10872]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>
[11779]647<div class="bannerextra">_pagebannerextra_</div>
[258]648}
[10872]649
[548]650_textheader_ [v=1] {_cgihead_
651_htmlhead_
[10872]652_globallinks_
[548]653}
[258]654
655_footer_ {
[10872]656</div> <!-- document:footer -->
657
[13427]658<div class="navarrowsbottom">
[4868]659_navarrowsbottom_
[13427]660</div>
[27281]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
[258]672_endspacer__htmlfooter_
[23804]673}
674
675
[23812]676
677
[23804]678package Global
[23812]679
[23804]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_";
[23812]692
693 _If_(_2_,
[23804]694 var srclink = \'_2_\';
[23812]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.
[23804]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 repository browser.