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

Last change on this file since 23804 was 23804, checked in by davidb, 13 years ago

Diego's excellent macro (shareme) for allowing documents in Greenstone to be shared in any social network (e.g. facebook, twitter, ...)

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 20.4 KB
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# the goto form
124#######################################################################
125
126_gotoform_ {
127<form name="GotoForm" method="get" action="_gwcgi_">
128<input type=hidden name="e" value="_decodedcompressedoptions_">
129<input type=hidden name="d" value="_cgiargd_">
130<input type=hidden name="cl" value="_cgiargcl_">
131<input type="text" name="gp" size="3" maxlength="4">
132<input type="submit" value="_textgoto_">
133</form>
134}
135
136_textnumpages_ {&nbsp;<i>(_1_ _pages_)</i>}
137_parentarrow_ {}
138_prevtitle_ {}
139_nexttitle_ {}
140
141#######################################################################
142# the phind applet
143#
144# The phind applet is only required on phind classifier pages.
145# Consequently, the _phindclassifier_ macro is not usually set. On screens
146# where it is required, _phindclassifier_ resolves to _phindapplet_, and
147# the following macro is loaded into the web page.
148#######################################################################
149
150_phindapplet_ {
151<APPLET CODEBASE="_httpjava_" CODE="org.nzdl.gsdl.Phind.Phind.class" ARCHIVE="Phind.jar" WIDTH=500 HEIGHT=400>
152 <PARAM NAME=library VALUE="_gwcgi_?e=_compressedoptions_">
153 <PARAM NAME=phindcgi VALUE="_gwcgi_?a=phind">
154 <PARAM NAME=collection VALUE="_cgiargc_">
155 <PARAM NAME=classifier VALUE="_phindnumber_">
156
157 <PARAM NAME=orientation VALUE="vertical">
158 <PARAM NAME=depth VALUE="2">
159 <PARAM NAME=resultorder VALUE="L,l,E,e,D,d">
160 <PARAM NAME=textorientation VALUE="_textorientation_">
161 <PARAM NAME=backdrop VALUE="_httpimg_/phindbg1.jpg">
162 <PARAM NAME=fontsize VALUE="10">
163 <PARAM NAME=blocksize VALUE="10">
164
165 The Phind java applet.
166</APPLET>
167}
168
169_collageapplet_ {
170 <applet CODEBASE="_httpjava_"
171 code="org.nzdl.gsdl.GsdlCollageApplet.GsdlCollageApplet.class"
172 archive="GsdlCollageApplet.jar"
173 width="_collagexdim_" height="_collageydim_">
174
175 <param name="gwcgi" value="_gwcgi_">
176 <param name="collection" value="_cgiargc_">
177 <param name="classifier" value="_cgiargcl_.1">
178
179 <param name="hrefMustHave" value="cl=_cgiargcl_.1">
180 <param name="imageMustNotHave" value="hl=\%x=\%gt=\%gc=\%.pr">
181
182 <param name="imageType" value="_collageimageType_">
183 <param name="verbosity" value="_collageverbosity_">
184 <param name="maxDepth" value="_collagemaxDepth_">
185 <param name="maxDisplay" value="_collagemaxDisplay_">
186 <param name="refreshDelay" value="_collagerefreshDelay_">
187 <param name="isJava2" value="_collageisJava2_">
188 <param name="bgcolor" value="_collagebgcolor_">
189 <param name="documentroot" value="_httpimg_">
190 </applet>
191
192<center>
193_collagecaption_
194</center>
195}
196
197
198_flashbook_ {
199 <div id="bookdiv">
200 </div>
201
202 <script type="text/javascript">
203 var myWidth = "100%";
204 myHeight = 800;
205
206 var img_cover = '_httpassocdir_/_thisOID_/cover.jpg';
207 var doc_url = document.URL;
208 doc_url = doc_url.replace(/(&|\\?)book=[a-z]+/gi,'');
209 doc_url += '&book=flashxml';
210
211 var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;//get windows or not
212 //Only for Windows computers because Greenstone webserver doesn't allow us to pass parameters to Flash.
213 //These methods is called by the Flash program to get all the necessary parameters for the book
214 //However, it will only work for IE 5.0 and later, Firefox 1.0 and later, Mozilla 1.7.5 and later
215 //Netscape 8.0 and later, Safari 1.3 and later
216 function getDocURL() \{ return doc_url; \}
217 function getImgCover() \{ return img_cover; \}
218 function getStageW() \{ return -1; \}
219 function getStageH() \{ return -1; \}
220
221
222 var flash_plug_html = "";
223 flash_plug_html += '<OBJECT align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" \\n';
224 flash_plug_html += ' codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" \\n';
225 flash_plug_html += ' height="';
226 flash_plug_html += myHeight + '" id="Book" swLiveConnect="true" align="middle"\\n';
227 flash_plug_html += ' width="';
228 flash_plug_html += myWidth + '">\\n';
229
230 flash_plug_html += ' <PARAM name="allowScriptAccess" value="always" />\\n';
231 flash_plug_html += ' <PARAM name="movie" value="_httpflash_/Book.swf';
232 if (isWin == false)
233 \{
234 flash_plug_html += '?src_image=' + escape(img_cover);
235 flash_plug_html += '&amp;doc_url=' + escape(doc_url);
236 \}
237 flash_plug_html += '" />\\n';
238 flash_plug_html += ' <PARAM name="quality" value="high" />\\n';
239 flash_plug_html += ' <PARAM name="bgcolor" value="#FFFFFF" />\\n';
240 flash_plug_html += ' <EMBED align="middle" \\n';
241 flash_plug_html += ' allowScriptAccess="always" swLiveConnect="true" \\n';
242 flash_plug_html += ' bgcolor="#FFFFFF" height="';
243 flash_plug_html += myHeight + '" name="Book" \\n';
244 flash_plug_html += ' pluginspage="http://www.macromedia.com/go/getflashplayer" \\n';
245 flash_plug_html += ' quality="high" \\n';
246 flash_plug_html += ' src=\\'_httpflash_/Book.swf';
247 if (isWin == false)
248 \{
249 flash_plug_html += '?src_image=' + escape(img_cover);
250 flash_plug_html += '&amp;doc_url=' + escape(doc_url);
251 \}
252 flash_plug_html += '\\'\\n';
253 flash_plug_html += ' type="application/x-shockwave-flash" width="';
254 flash_plug_html += myWidth + '" />\\n';
255 flash_plug_html += '</OBJECT>\\n';
256
257 var flash_div = document.getElementById("bookdiv");
258 flash_div.innerHTML = flash_plug_html;
259 </script>
260}
261
262#######################################################################
263# icons
264#######################################################################
265
266_iconsmalltext_ {<img src="_httpiconsmtext_" class="icon" width=_widthsmtext_ height=_heightsmtext_ alt="_texticonsmalltext_" title="_texticonsmalltext_">}
267_iconsmalltext_ [v=1] {<small><b>_texticonsmalltext2_</b></small>}
268
269_iconarrowsmalltext_ {<img src="_httpiconasmtext_" class="icon" width=_widthasmtext_ height=_heightasmtext_ alt="_texticonsmalltext_" title="_texticonsmalltext_">}
270_iconarrowsmalltext_ [v=1] {<small><b>->_texticonsmalltext2_</b></small>}
271
272_iconclosedfolder_ {<img src="_httpiconclsdfldr_" class="icon" width=_widthclsdfldr_ height=_heightclsdfldr_ alt="_texticonclosedfolder_" title="_texticonclosedfolder_">}
273_iconclosedfolder_ [v=1] {<small><b>_texticonclosedfolder2_</b></small>}
274
275_iconarrowclosedfolder_ {<img src=_httpiconaclsdfdr_" class="icon" width=_widthaclsdfdr_ height=_heightaclsdfdr_ alt="_texticonclosedfolder_" title="_texticonclosedfolder_">}
276_iconarrowclosedfolder_ [v=1] {<small><b>->_texticonclosedfolder2_</b></small>}
277
278_iconopenfolder_ {<img src="_httpiconopenfldr_" class="icon" width=_widthopenfldr_ height=_heightopenfldr_ alt="_texticonopenfolder_" title="_texticonopenfolder_">}
279_iconopenfolder_ [v=1] {<small><b>_texticonopenfolder2_</b></small>}
280
281_iconarrowopenfolder_ {<img src="_httpiconaopenfdr_" class="icon" width=_widthaopenfdr_ height=_heightaopenfdr_ alt="_texticonopenfolder_" title="_texticonopenfolder_">}
282_iconarrowopenfolder_ [v=1] {<small><b>->_texticonopenfolder2_</b></small>}
283
284_iconarrowclosedbook_ {<img src="_httpiconabook_" width=_widthabook_ height=_heightabook_ class="icon" alt="_texticonclosedbook_" title="_texticonclosedbook_">}
285_iconarrowclosedbook_ [v=1] {<small><b>->_texticonclosedbook_: </b></small>}
286
287_iconopenbook_ {<img src="_httpiconopenbook_" width=_widthopenbook_ height=_heightopenbook_ class="icon" alt="_texticonopenbook_" title="_texticonopenbook_">}
288_iconopenbook_ [v=1] {<small><b>_texticonopenbook_: </b></small>}
289
290_iconarrowopenbook_ {<img src="_httpiconaopenbk_" width=_widthaopenbk_ height=_heightaopenbk_ class="icon" alt="_texticonopenbook_" title="_texticonopenbook_">}
291_iconarrowopenbook_ [v=1] {<small><b>->_texticonopenbook_: </b></small>}
292
293_iconopenbookshelf_ {<img src="_httpiconbshelf_" class="icon" width=_widthbshelf_ height=_heightbshelf_ alt="_texticonopenbookshelf_" title="_texticonopenbookshelf_">}
294_iconopenbookshelf_ [v=1] {<small><b>_texticonopenbookshelf_: </b></small>}
295
296_iconarrowopenbookshelf_ {<img src="_httpiconabshelf_" class="icon" width=_widthabshelf_ height=_heightabshelf_ alt="_texticonopenbookshelf_" title="_texticonopenbookshelf_">}
297_iconarrowopenbookshelf_ [v=1] {<small><b>->_texticonopenbookshelf_: </b></small>}
298
299_iconclosedbookshelf_ {<img src="_httpiconbshelf_" class="icon" width=_widthbshelf_ height=_heightbshelf_ alt="_texticonclosedbookshelf_" title="_texticonclosedbookshelf_">}
300_iconclosedbookshelf_ [v=1] {<small><b>_texticonclosedbookshelf_: </b></small>}
301
302_iconarrowclosedbookshelf_ {<img src="_httpiconabshelf_" class="icon" width=_widthabshelf_ height=_heightabshelf_ alt="_texticonclosedbookshelf_" title="_texticonclosedbookshelf_">}
303_iconarrowclosedbookshelf_ [v=1] {<small><b>->_texticonclosedbookshelf_: </b></small>}
304
305_iconpointer_ {<img src="_httpiconarrrght_" class="icon" width=_widtharrrght_ height=_heightarrrght_>}
306_iconpointer_ [v=1] {<small><b>_texticonpointer_-> </b></small>}
307
308_iconwarning_ {<img src="_httpiconwarning_" width="_widthwarning_" height="_heightwarning_" class="icon" align="left">}
309_iconwarning_ [v=1] {_texticonwarning_}
310
311
312#######################################################################
313# images
314#######################################################################
315
316_coverimage_ {<img alt="Cover Image" onError="src='_httpimg_/blank.gif'" src="_httpassocdir_/_thisOID_/cover.jpg">}
317
318_docbutton_ {<div class="button"><span class="button" title="_3_"><a href="_1_">_2_</a></span></div>
319}
320
321# can't use _docbutton_ macro for detach button as we need to include target
322_imagedetach_ {<div class="button"><span class="button"><a href="_httpcurrentdocument_&amp;x=1" target="\_blank" title="_texticondetach_">_textDETACH_</a></span></div>}
323
324_imageprint_{<div class="button"><span class="button"><a href="javascript:print_preview()">_textPRINT_</a></span></div>}
325
326
327_imagehighlight_ {_docbutton_(_httpcurrentdocument_&amp;hl=1&amp;gc=_cgiarggc_&amp;gt=_cgiarggt_,_textHIGHLIGHT_,_texticonhighlight_)}
328
329_imagenohighlight_ {_docbutton_(_httpcurrentdocument_&amp;hl=0&amp;gc=_cgiarggc_&amp;gt=_cgiarggt_,_document:textNOHIGHLIGHT_,_document:texticonnohighlight_)}
330
331_imagecontracttoc_ {_docbutton_(_httpcurrentdocument_&amp;gc=0,_textCONTRACTCONTENTS_,_texticoncontracttoc_)}
332
333_imageexpandtoc_ {_docbutton_(_httpcurrentdocument_&amp;gc=1,_textEXPANDCONTENTS_,_texticonexpandtoc_)}
334
335_imagecontracttext_ {_docbutton_(_httpcurrentdocument_&amp;gt=0,_textCONTRACT_,_texticoncontracttext_)}
336
337_imageexpandtext_ {_docbutton_(_httpcurrentdocument_&amp;gt=1,_textEXPANDTEXT_,_texticonexpandtext_)}
338
339_imagecont_ {_docbutton_(_httpcurrentdocument_&amp;gt=2,_textCONTINUE_,_texticoncont_)}
340
341
342#######################################################################
343# print preview script
344#######################################################################
345
346
347_pagescriptextra_{
348
349 var style_display_old;
350 var show = true;
351 var toc_top;
352
353 function has_toc(){
354 var div_nodes = document.getElementsByTagName("div");
355 for (var i=0;i < div_nodes.length ; i++ )\{
356 var div_node = div_nodes[i];
357 if (div_node.className =="toc" && div_node.childNodes.length > 1)
358 \{
359 return true;
360 \}
361 \}
362
363 return false;
364 \}
365
366 function hide_toc()\{
367 var div_nodes = document.getElementsByTagName("div");
368 for (var i=0;i < div_nodes.length ; i++ )\{
369 var div_node = div_nodes[i];
370 if (div_node.className =="toc")
371 \{
372 style_display_old = div_node.style.display;
373 toc_top = document.getElementById("toc_top");
374 if (toc_top)
375 div_node.parentNode.insertBefore(toc_top,div_node);
376 div_node.style.display = "none";
377 \};
378 \}
379
380 \}
381
382
383 function show_toc()\{
384
385 var div_nodes = document.getElementsByTagName("div");
386 for (var i=0;i < div_nodes.length ; i++ )\{
387 var div_node = div_nodes[i];
388 if (div_node.className =="toc")
389 \{
390 div_node.style.display = style_display_old;
391 if (toc_top)
392 div_node.insertBefore(toc_top,div_node.firstChild);
393 \};
394 \}
395
396 \}
397
398
399 function switch_toc()\{
400 var toc_link = document.getElementById("toc_link");
401 while (toc_link.hasChildNodes()) \{
402 toc_link.removeChild(toc_link.firstChild);
403 \}
404 if (show)\{
405 toc_link.appendChild(document.createTextNode('_textshowcontents_'));
406 show = false;
407 hide_toc();
408 \}
409 else\{
410 toc_link.appendChild(document.createTextNode('_texthidecontents_'));
411 show = true;
412 show_toc();
413 \}
414
415 \}
416
417 function print_preview() \{
418 // Switch the stylesheet
419 setActiveStyleSheet("Preview Document");
420 add_print_message();
421 \}
422
423 function add_print_message()\{
424 if (document.getElementById)\{
425 var print_message = document.createElement('ul');
426 print_message.id = 'print-message';
427 print_message.className = "printmessage";
428
429 var cancel_print_link = document.createElement('li');
430 cancel_print_link.className = "cancelprint"
431 cancel_print_link.onclick = function()\{ cancel_print(); return false;\};
432 cancel_print_link.appendChild(document.createTextNode('_textreturnoriginal_'));
433 print_message.appendChild(cancel_print_link);
434
435
436 var print_link = document.createElement('li');
437 print_link.onclick = function()\{ window.print(); return false;\};
438 print_link.appendChild(document.createTextNode('_textprintpage_'));
439 print_message.appendChild(print_link);
440
441 if (has_toc())\{
442 var toc_link = document.createElement('li');
443 toc_link.id = "toc_link";
444 toc_link.onclick = function()\{ switch_toc(); return false;\};
445 toc_link.appendChild(document.createTextNode('_texthidecontents_'));
446 print_message.appendChild(toc_link);
447 \}
448
449 //insert the print message node
450 var div_nodes = document.getElementsByTagName("div");
451 for (var i=0;i < div_nodes.length ; i++ )\{
452 var div_node = div_nodes[i];
453 if (div_node.className =="document")\{
454 var parent = div_node.parentNode;
455 parent.insertBefore(print_message,div_node);
456 \}
457 \}
458 \}
459
460 \}
461
462
463 function cancel_print() \{
464 // Destroy the preview message
465 var print_message = document.getElementById('print-message');
466 var parent = print_message.parentNode;
467 parent.removeChild(print_message);
468
469 show_toc();
470 // Switch back stylesheet
471 setActiveStyleSheet("default");
472 \}
473
474 function setActiveStyleSheet(title) \{
475 var i, a, main;
476 for(i=0; (a = document.getElementsByTagName("link")[i]); i++) \{
477 if(a.getAttribute("rel").indexOf("style") != -1
478 && a.getAttribute("title")) \{
479 a.disabled = true;
480 if(a.getAttribute("title") == title) a.disabled = false;
481 \}
482 \ }
483 \}
484
485}
486
487
488#######################################################################
489# headers/footers
490#######################################################################
491
492
493# header overridden for text pages
494_textheader_ {_cgihead_
495_htmlhead_
496_startspacer_
497
498<!-- document:textheader -->
499<div id="banner">
500<div class="pageinfo"><p class="bannerlinks">_globallinks_</p></div>
501<div class="collectimage">_imagecollection_</div>
502</div>
503<div class="bannerextra">_pagebannerextra_</div>
504}
505
506_textheader_ [v=1] {_cgihead_
507_htmlhead_
508_globallinks_
509}
510
511_footer_ {
512</div> <!-- document:footer -->
513
514<div class="navarrowsbottom">
515_navarrowsbottom_
516</div>
517_endspacer__htmlfooter_
518}
519
520
521package Global
522
523# Social network support
524# Defined here in document, as the most likely place this will be used in
525# within a document view, however its package is 'Global' because you
526# might equally want this in a search or browse list
527
528# _1_ = e.g. title
529# _2_ = [srclink] or left empty. If left empty, then it will share the internal GS document
530
531
532_sharemescript_ {
533 <script type="text/javascript">
534
535 var a2a_config = a2a_config || \{ \};
536 a2a_config.linkname = "_1_";
537_If_(_2_,
538 var srclink = \'_2_\';
539 console.log("srclink = " + srclink);
540 var href = srclink.match(/href=\"([^\"]*)\"/);
541 console.log("href = " + href[1]);
542 a2a_config.linkurl = gsapi.fullDomainURL(href[1]);
543,
544 a2a_config.linkurl = gsapi.fullDomainURL("_gwcgi_")+ "?c=_cgiargc_&a=d&d=_cgiargd_";
545)
546
547 </script>
548}
549
550_shareme_ {
551
552<div style=\'padding-left:50px;\' class=\'a2a_kit a2a_default_style\'>
553 _sharemescript_(_1_,_2_)
554 <center>
555 <a class=\'a2a_dd\' href=\'http://www.addtoany.com/share_save\'>Share</a>
556 <span class=\"a2a_divider\"></span>
557 <a class=\'a2a_button_facebook\'></a>
558 <a class=\'a2a_button_twitter\'></a>
559 <a class=\'a2a_button_email\'></a>
560 <a class=\'a2a_button_linkedin\'></a>
561 </center>
562 <script type=\"text/javascript\" src=\"http://static.addtoany.com/menu/page.js\"></script>
563</div>
564
565}
566
567_sharemesmall_ {
568
569<span style=\'padding-left:8px;\' class=\'a2a_kit a2a_default_style\'>
570 _sharemescript_(_1_,_2_)
571 <a class=\'a2a_dd\' href=\'http://www.addtoany.com/share_save\'>Share</a>
572 <script type=\"text/javascript\" src=\"http://static.addtoany.com/menu/page.js\"></script>
573</span>
574
575}
Note: See TracBrowser for help on using the repository browser.