source: main/trunk/model-cols-dev/peijones/etc/collectionConfig.xml@ 24945

Last change on this file since 24945 was 24945, checked in by papitha, 12 years ago

Build added to Text Annotations, Photo Annotations
Search functionality working well!

  • Property svn:executable set to *
File size: 29.9 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<CollectionConfig xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3<metadataList><metadata lang="en" name="creator"></metadata><metadata lang="en" name="maintainer"></metadata><metadata lang="en" name="public">true</metadata></metadataList><displayItemList><displayItem assigned="true" lang="en" name="name">Pei-Jones-Flat</displayItem></displayItemList><search type="mgpp"><level name="document"><displayItem lang="en" name="name">document</displayItem></level><level name="section"><displayItem lang="en" name="name">section</displayItem></level><defaultLevel name="document"/><index name="text"><displayItem lang="en" name="name">text</displayItem></index><index name="Title"><displayItem lang="en" name="name">titles</displayItem></index><index name="Source"><displayItem lang="en" name="name">filenames</displayItem></index><index name="Plugin"/><index name="gsimg.photoNote"><displayItem lang="en" name="name">photo annotations</displayItem></index><index name="gstext.tags"><displayItem lang="en" name="name">text annotations (tags)</displayItem></index><index name="gstext.text"><displayItem lang="en" name="name">text annotations (text)</displayItem></index><index name="gstext.user"><displayItem lang="en" name="name">text annotations (user)</displayItem></index><defaultIndex name="text"/><indexOption><option name="accentfold"/><option name="casefold"/><option name="stem"/></indexOption><searchType name="plain"/><searchType name="simpleform"/><searchType name="advancedform"/><format>
4 <gsf:template match="documentNode">
5 <td valign="top">
6 <gsf:link type="document">
7 <gsf:icon type="document"/>
8 </gsf:link>
9 </td>
10 <td>
11 <gsf:switch>
12 <gsf:metadata name="Title" select="ancestors" separator=": "/>
13 <gsf:when test="exists"><gsf:metadata name="Title" select="ancestors" separator=": "/>:</gsf:when>
14 </gsf:switch>
15 <gsf:link type="document">
16 <gsf:metadata name="Title"/>
17 </gsf:link>
18 </td>
19 </gsf:template>
20 </format></search><infodb type="gdbm"/><import><pluginList><plugin name="ZIPPlugin"/><plugin name="GreenstoneXMLPlugin"/><plugin name="TextPlugin"/><plugin name="HTMLPlugin"><option name="-process_exp" value="(timeglider.*)(?i)(\.html?)$"/><option name="-block_exp" value="(timeglider.*)(?i)(\.jpe?g|\.png|\.gif)$"/><option name="-keep_head"/></plugin><plugin name="EmailPlugin"/><plugin name="PDFPlugin"/><plugin name="RTFPlugin"/><plugin name="WordPlugin"/><plugin name="PostScriptPlugin"/><plugin name="PowerPointPlugin"/><plugin name="ExcelPlugin"/><plugin name="PagedImagePlugin"/><plugin name="ImagePlugin"/><plugin name="ISISPlugin"/><plugin name="NulPlugin"/><plugin name="OAIPlugin"/><plugin name="HTMLImagePlugin"/><plugin name="MetadataXMLPlugin"/><plugin name="ArchivesInfPlugin"/><plugin name="DirectoryPlugin"/></pluginList></import><browse><classifier name="List"><option name="-metadata" value="dc.Title;Title"/><option name="-partition_type_within_level" value="approximate_size"/><option name="-bookshelf_type" value="never"/></classifier><classifier name="AZCompactList"><option name="-metadata" value="Source"/><option name="-removesuffix" value="(?i)\\..*"/><option name="-buttonname" value="Source"/></classifier><format>
21 <gsf:template match="documentNode">
22 <td valign="top">
23 <gsf:link type="document">
24 <gsf:icon type="document"/>
25 </gsf:link>
26 </td>
27 <td valign="top">
28 <gsf:link type="source">
29 <gsf:choose-metadata>
30 <gsf:metadata name="thumbicon"/>
31 <gsf:metadata name="srcicon"/>
32 </gsf:choose-metadata>
33 </gsf:link>
34 </td>
35 <td valign="top">
36 <gsf:choose-metadata>
37 <gsf:metadata name="dc.Title"/>
38 <gsf:metadata name="exp.Title"/>
39 <gsf:metadata name="Title"/>
40 <gsf:default>Untitled</gsf:default>
41 </gsf:choose-metadata>
42 <gsf:switch>
43 <gsf:metadata name="Source"/>
44 <gsf:when test="exists">
45 <br/>
46 <i>(<gsf:metadata name="Source"/>)</i>
47 </gsf:when>
48 </gsf:switch>
49 </td>
50 </gsf:template>
51 <gsf:template match="classifierNode">
52 <td valign="top">
53 <gsf:link type="classifier">
54 <gsf:icon type="classifier"/>
55 </gsf:link>
56 </td>
57 <td valign="top">
58 <gsf:metadata name="srclink"/>
59 <gsf:choose-metadata>
60 <gsf:metadata name="thumbicon"/>
61 <gsf:metadata name="srcicon"/>
62 </gsf:choose-metadata>
63 <gsf:metadata name="/srclink"/>
64 </td>
65 <td valign="top">
66 <gsf:choose-metadata>
67 <gsf:metadata name="dc.Title"/>
68 <gsf:metadata name="exp.Title"/>
69 <gsf:metadata name="Title"/>
70 <gsf:default>Untitled</gsf:default>
71 </gsf:choose-metadata>
72 <gsf:switch>
73 <gsf:metadata name="Source"/>
74 <gsf:when test="exists">
75 <br/>
76 <i>(<gsf:metadata name="Source"/>)</i>
77 </gsf:when>
78 </gsf:switch>
79 </td>
80 </gsf:template>
81 <gsf:template match="classifierNode" mode="horizontal">
82 <gsf:link type="horizontal">
83 <gsf:metadata name="Title"/>
84 </gsf:link>
85 </gsf:template>
86 </format></browse><display><format>
87 <gsf:option name="sideBar" value="false"/>
88 <xsl:template name="additionalHeaderContent">
89 <!-- jQuery must be included before Annotator -->
90 <script src="sites/localsite/collect/peijones/js/annotator/lib/vendor/jquery.js">
91 <xsl:text> </xsl:text>
92 </script>
93 <!-- If you're sure your users will only be using browsers modern
94 enough to have their own JSON.parse and JSON.stringify
95 implementations you can skip this -->
96 <script src="sites/localsite/collect/peijones/js/annotator/lib/vendor/json2.js">
97 <xsl:text> </xsl:text>
98 </script>
99 <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator-full.min.js">
100 <xsl:text> </xsl:text>
101 </script>
102 <!-- The main Annotator script -->
103 <!--<script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.min.js"><xsl:text> </xsl:text></script> -->
104 <!-- Annotator's styling and images -->
105 <link href="sites/localsite/collect/peijones/js/annotator/pkg/annotator.min.css" rel="stylesheet" type="text/css"/>
106 <!-- The following plugins are entirely optional -->
107 <!-- The Store plugin. Saves annotations to a remote backend -->
108 <!-- <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.store.min.js"><xsl:text> </xsl:text></script> -->
109 <!-- The Auth plugin. Allows users of Annotator to authenticate themselves
110 to the remote backend -->
111 <!--<script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.auth.min.js"><xsl:text> </xsl:text></script> -->
112 <!-- The Permissions plugin. See who created which annotation and create
113 annotations as a specified user -->
114 <!--<script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.permissions.min.js"><xsl:text> </xsl:text></script> -->
115 <!-- The Tags plugin. Edit and display tag keywords on annotations -->
116 <!--<script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.tags.min.js"><xsl:text> </xsl:text></script> -->
117 <!-- The Markdown plugin. Treat annotation text as Markdown -->
118 <!-- <script src="sites/localsite/collect/peijones/js/annotator/lib/vendor/showdown.js"><xsl:text> </xsl:text></script> -->
119 <!-- <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.markdown.min.js"><xsl:text> </xsl:text></script> -->
120 <!-- Photo note scripts -->
121 <script src="sites/localsite/collect/peijones/js/documentmaker/BrowserDetect.js" type="text/javascript">
122 <xsl:text> </xsl:text>
123 </script>
124 <script src="sites/localsite/collect/peijones/js/documentmaker/PhotoNotes-1.5.js" type="text/javascript">
125 <xsl:text> </xsl:text>
126 </script>
127 <link href="sites/localsite/collect/peijones/style/PhotoNotes-1.5.css" rel="stylesheet" type="text/css"/>
128 <!-- Zoom scripts -->
129 <!--<script src="interfaces/{$interface_name}/js/jquery-1.4.2.js" type="text/javascript"><xsl:text> </xsl:text></script>-->
130 <script src="sites/localsite/collect/peijones/js/documentmaker/zoomer.jquery.js" type="text/javascript">
131 <xsl:text> </xsl:text>
132 </script>
133 <link href="sites/localsite/collect/peijones/style/style.css" rel="stylesheet" type="text/css"/>
134 <script type="text/javascript">
135 <xsl:text disable-output-escaping="yes">
136 _zoomEnabled = true;
137 function readyImagesForZoom()
138 {
139 var noZoom = document.getElementById("noZoom");
140 var wrap = document.getElementById("wrap");
141 if(!noZoom || !wrap)
142 {
143 return;
144 }
145 var smallImageDiv = document.getElementById("small");
146 var smallImage = smallImageDiv.getElementsByTagName("img")[0];
147 smallImageDiv.style.width = smallImageWidth + "px";
148 smallImageDiv.style.height = smallImageHeight + "px";
149 var multiplier = largeImageHeight / smallImageHeight;
150 $("#wrap").anythingZoomer({
151 expansionSize:50,
152 speedMultiplier:multiplier
153 });
154
155 noZoom.onclick = function(){addZoom();}
156 document.getElementById("overlay").onclick = function(){removeZoom();}
157
158 removeZoom();
159 }
160 function addZoom()
161 {
162 if(!_zoomEnabled)
163 {
164 return;
165 }
166
167 var wrapper = document.getElementById("wrap");
168 var noZoom = document.getElementById("noZoom");
169
170 if(!noZoom || !wrapper)
171 {
172 return;
173 }
174
175 noZoom.style.display = "none";
176 wrapper.style.display = "block";
177 var option = document.getElementById("zoomOption");
178 if(option)
179 {
180 option.setAttribute("onclick", "removeZoom();");
181 }
182 }
183 function removeZoom()
184 {
185 if(!_zoomEnabled)
186 {
187 return;
188 }
189
190 var wrapper = document.getElementById("wrap");
191 var noZoom = document.getElementById("noZoom");
192
193 if(!noZoom || !wrapper)
194 {
195 return;
196 }
197
198 wrapper.style.display = "none";
199 noZoom.style.display = "block";
200 var option = document.getElementById("zoomOption");
201 if(option)
202 {
203 option.setAttribute("onclick", "addZoom();");
204 }
205 }
206 </xsl:text>
207 </script>
208 <script text="text/javascript">
209 <xsl:text disable-output-escaping="yes">
210
211 var _posCount = 0;
212 var _notes;
213 function initNotes()
214 {
215 /* create the Photo Note Container */
216 _notes = new PhotoNoteContainer(document.getElementById("noZoom"));
217 getNotes();
218 }
219
220 function deleteFunction(note)
221 {
222 var callback =
223 {
224 success: function(response)
225 {
226 var updateURL = gs.siteMetadata.siteURL.replace("8080","9090") + gs.xsltParams.library_name + "?a=s&amp;sa=c";
227
228 var updateCallback =
229 {
230 success: function(response){},
231 failed: function(){alert("Failed in deleteFunction() to update Greenstone server with: " + updateURL);}
232 };
233
234
235 YAHOO.util.Connect.asyncRequest("GET", updateURL, updateCallback);
236 },
237 failed: function(){ alert("Failed in deleteFunction() with note id: " + note.id)},
238 };
239
240 var status = true;
241
242 if (note &amp;&amp; note.id &amp;&amp; note.id &gt; 0) {
243 var metaposStr = note.id - 1;
244
245 var url = gs.siteMetadata.siteURL.replace("8080","9090") + "cgi-bin/metadata-server.pl?a=remove-metadata&amp;site=localsite&amp;c=" + gs.cgiParams.c + "&amp;d=" + gs.cgiParams.d + "&amp;metaname=gsimg.photoNote&amp;metapos=" + metaposStr;
246 YAHOO.util.Connect.asyncRequest("GET", url, callback);
247 }
248 else {
249 alert("Failed to find valid note data to delete");
250 status = false;
251 }
252
253 return status;
254 }
255
256 function saveFunction(note)
257 {
258 var saveIndexCallback =
259 {
260 success: function(response){},
261 failed: function(reponse){ alert("Failed to save index metadata of note with id: " + note.id)},
262 };
263
264 var saveArchivesCallback =
265 {
266 success: function(response){buildFunction(gs.cgiParams.c);},
267 failed: function(response){ alert("Failed in save import metadata of note with id: " + note.id) }
268 };
269
270 var saveImportCallback =
271 {
272 success: function(response){},
273 failed: function(response){ alert("Failed in save import metadata of note with id: " + note.id) }
274 };
275
276 var jsonVal = '{"caption":"' + note.text + '", "area":{"x":' + note.rect.left + ', "y":' + note.rect.top + ', "width":' + note.rect.width + ', "height":' + note.rect.height + '}}';
277 var metaposStr = (note &amp;&amp; note.id &amp;&amp; note.id &gt; 0) ? note.id - 1 : _posCount;
278
279 var saveIndexURL = gs.siteMetadata.siteURL.replace("8080","9090") + "cgi-bin/metadata-server.pl?a=set-metadata&amp;site=localsite&amp;c=" + gs.cgiParams.c + "&amp;d=" + gs.cgiParams.d + "&amp;metaname=gsimg.photoNote&amp;metavalue=" + jsonVal + "&amp;metapos=" + metaposStr;
280 var saveArchivesURL = gs.siteMetadata.siteURL.replace("8080","9090") + "cgi-bin/metadata-server.pl?a=set-archives-metadata&amp;site=localsite&amp;c=" + gs.cgiParams.c + "&amp;d=" + gs.cgiParams.d + "&amp;metaname=gsimg.photoNote&amp;metavalue=" + jsonVal + "&amp;metapos=" + metaposStr;
281 var saveImportURL = gs.siteMetadata.siteURL.replace("8080","9090") + "cgi-bin/metadata-server.pl?a=set-import-metadata&amp;site=localsite&amp;c=" + gs.cgiParams.c + "&amp;d=" + gs.cgiParams.d + "&amp;metaname=gsimg.photoNote&amp;metavalue=" + jsonVal + "&amp;metapos=" + metaposStr;
282 YAHOO.util.Connect.asyncRequest("GET", saveIndexURL, saveIndexCallback);
283 YAHOO.util.Connect.asyncRequest("GET", saveArchivesURL, saveArchivesCallback);
284 YAHOO.util.Connect.asyncRequest("GET", saveImportURL, saveImportCallback);
285
286 return 1;
287 }
288
289 function getNotes()
290 {
291 if(gs.variables.photoNotes == null || gs.variables.photoNotes == undefined)
292 {
293 console.log("No photo notes");
294 return;
295 }
296
297 for(var i = 0; i &lt; gs.variables.photoNotes.length; i++)
298 {
299 var note = gs.variables.photoNotes[i];
300 if(!note)
301 {
302 continue;
303 }
304 var newNote = new PhotoNote(note.caption, i+1, new PhotoNoteRect(note.area.x,note.area.y,note.area.width,note.area.height));
305 newNote.onsave = saveFunction;
306 newNote.ondelete = deleteFunction;
307 _notes.AddNote(newNote);
308 _posCount++;
309 }
310
311 addNoteOverAndOutHandlers();
312 }
313
314 function AddNote()
315 {
316 var newNote = new PhotoNote('Add note text here...',_posCount+1,new PhotoNoteRect(10,10,50,50));
317 newNote.onsave = saveFunction;
318 newNote.ondelete = deleteFunction;
319 _notes.AddNote(newNote);
320 _posCount++;
321
322 addNoteOverAndOutHandlers();
323 newNote.Select();
324 }
325
326 function addNoteOverAndOutHandlers()
327 {
328 var divs = document.getElementsByTagName("DIV");
329 for(var i = 0; i &lt; divs.length; i++)
330 {
331 if(divs[i].getAttribute("class") &amp;&amp; divs[i].getAttribute("class").search("fn-area") != -1)
332 {
333 divs[i].onmouseover = function(){_zoomEnabled = false;}
334 divs[i].onmouseout = function(){_zoomEnabled = true;}
335 }
336 }
337 }
338
339 window.onload = function(){initNotes(); readyImagesForZoom(); initAnnotator();};
340 </xsl:text>
341 </script>
342 <script text="text/javascript">
343 <xsl:text disable-output-escaping="yes">
344
345 function checkLoop(pid, serverFunction, callback)
346 {
347 var startLoop = function()
348 {
349 var loopCallback =
350 {
351 success:function(response)
352 {
353 var checkText = response.responseText;
354 if(checkText == null || checkText == "")
355 {
356 console.log("There was an error getting the XML to check the status of " + serverFunction);
357 }
358 else
359 {
360 var checkCodeStart = checkText.indexOf("code=\"") + 6;
361 var checkCodeEnd = checkText.indexOf("\"", checkCodeStart);
362 var code = checkText.substring(checkCodeStart, checkCodeEnd);
363
364 if(code == 11 || code == 1) //11 is COMPLETED, 1 is success
365 {
366 callback();
367 }
368 else if(code == 12 || code == 3) //12 is HALTED, 3 is ERROR
369 {
370 console.log("There was an error on the server, could not check status of " + serverFunction);
371 }
372 else
373 {
374 setTimeout(startLoop, 1000);
375 }
376 }
377 },
378 failed:function()
379 {
380 console.log("There was a problem checking the status of " + serverFunction)
381 }
382 }
383 YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=g&amp;rt=s&amp;ro=1&amp;s=" + serverFunction + "&amp;s1.pid=" + pid, loopCallback);
384 }
385 startLoop();
386 }
387
388 function buildFunction(collection)
389 {
390 var buildCallback =
391 {
392 success:function(response)
393 {
394 var buildText = response.responseText;
395 if(buildText == null || buildText == "")
396 {
397 console.log("There was an error getting the xml response from the building request");
398 }
399 else
400 {
401 var buildPIDStart = buildText.indexOf("pid=\"") + 5;
402 var buildPIDEnd = buildText.indexOf("\"", buildPIDStart);
403 var buildPID = buildText.substring(buildPIDStart, buildPIDEnd);
404
405 checkLoop(buildPID, "BuildCollection", function()
406 {
407 var activateCallback =
408 {
409 success: function(response)
410 {
411 var activateText = response.responseText;
412 if(activateText == null || activateText == "")
413 {
414 console.log("There was an error getting the xml response from the activating request");
415 }
416 else
417 {
418 var activatePIDStart = activateText.indexOf("pid=\"") + 5;
419 var activatePIDEnd = activateText.indexOf("\"", activatePIDStart);
420 var activatePID = activateText.substring(activatePIDStart, activatePIDEnd);
421
422 checkLoop(activatePID, "ActivateCollection", function()
423 {
424 var updateCallback =
425 {
426 success: function(response){},
427 failed: function(reponse){ alert("Failed in saveFunction() to re-read config files");}
428 };
429 YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=s&amp;sa=c", updateCallback);
430 });
431 }
432 },
433 failed: function(response)
434 {
435 console.log("Failed to get response from activate collection request");
436 }
437 }
438 YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=g&amp;rt=r&amp;ro=1&amp;s=ActivateCollection&amp;s1.collection=" + collection, activateCallback);
439 });
440 }
441 },
442 failed: function(){console.log("Failed to get build collection response")}
443 }
444
445 YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=g&amp;rt=r&amp;ro=1&amp;s=BuildCollection&amp;s1.collection=" + collection, buildCallback);
446 }
447
448 function saveAndBuildCollection(col)
449 {
450 var json = "[";
451 for(var i = 0; i &lt; gs.annotationArray.keys.length; i++)
452 {
453 var current = gs.annotationArray[gs.annotationArray.keys[i]];
454 var metaToAdd = ["user", "text", "tags"];
455
456 for(var j = 0; j &lt; metaToAdd.length; j++)
457 {
458 if(metaToAdd[j] == "user")
459 {
460 json += '{"docid":"' + gs.cgiParams.d + '", "metaname":"gstext.' + metaToAdd[j] + '", "metavalue":"' + current.user.name + '"}';
461 }
462 else
463 {
464 json += '{"docid":"' + gs.cgiParams.d + '", "metaname":"gstext.' + metaToAdd[j] + '", "metavalue":"' + current[metaToAdd[j]] + '"}';
465 }
466
467 if(j != (metaToAdd.length - 1) || i != (gs.annotationArray.keys.length - 1))
468 {
469 json += ',';
470 }
471 }
472 }
473 json += "]";
474
475 var saveArchivesURL = "cgi-bin/metadata-server.pl?a=set-archives-metadata-array&amp;c=" + gs.cgiParams.c + "&amp;site=localsite&amp;collect=" + gs.cgiParams.c + "&amp;json=" + json;
476 var saveIndexURL = "cgi-bin/metadata-server.pl?a=set-metadata-array&amp;c=" + gs.cgiParams.c + "&amp;site=localsite&amp;collect=" + gs.cgiParams.c + "&amp;json=" + json;
477 var saveImportURL = "cgi-bin/metadata-server.pl?a=set-import-metadata-array&amp;c=" + gs.cgiParams.c + "&amp;site=localsite&amp;collect=" + gs.cgiParams.c + "&amp;json=" + json; //FIX THIS
478
479 var saveArchivesCallback =
480 {
481 success:function(){console.log("Away to build"); buildFunction(gs.cgiParams.c);},
482 failed: function(){alert("Failed to save text annotations index metadata");}
483 }
484 YAHOO.util.Connect.asyncRequest("GET", saveArchivesURL, saveArchivesCallback);
485
486 var saveIndexCallback =
487 {
488 success:function(){},
489 failed: function(){alert("Failed to save text annotations import metadata");}
490 }
491 YAHOO.util.Connect.asyncRequest("GET", saveIndexURL, saveIndexCallback);
492
493 var saveImportCallback =
494 {
495 success:function(){},
496 failed: function(){alert("Failed to save text annotations import metadata");}
497 }
498 YAHOO.util.Connect.asyncRequest("GET", saveImportURL, saveImportCallback);
499 }
500
501 function initAnnotator()
502 {
503 gs.annotationArray = new Array();
504 gs.annotationArray.keys = new Array();
505
506 var elem = document.getElementById("gs-document-text");
507 elem.innerHTML = '&lt;button id="saveButton"&gt;Save annotations&lt;/button&gt;&lt;br/&gt;' + elem.innerHTML;
508
509 var button = document.getElementById("saveButton");
510 button.onclick = function(){saveAndBuildCollection(gs.cgiParams.c);};
511
512 jQuery(function ($) {
513 if (typeof $.fn.annotator !== 'function') {
514 alert("Ooops! it looks like you haven't built the Annotator concatenation file. " + "Either download a tagged release from GitHub, or modify the Cakefile to point " + "at your copy of the YUI compressor and run `cake package`.");
515 } else {
516 /*
517 jQuery('#gs-document-text').annotator()
518 .annotator('addPlugin', 'Store', {
519 prefix: 'http://annotateit.org/api',
520 annotationData: {'uri':document.URL}
521 })
522 .annotator('addPlugin', 'Auth', {
523 userId: 'papitha', // Your AnnotateIt username
524 consumerKey: '39fc339cf058bd22176771b3e33c5dac', // Your Account Key
525 authToken: '852b7fc25396d2aedf9aeb44dd58518faa679dbf027892164bfb81900bd09741' // Your Auth Token
526 });
527 */
528
529 jQuery(function ($) {
530 // Include AnnotateIt credentials to load the store plugin.
531 $('#gs-document-text').annotator().annotator('setupPlugins', {
532 userId: 'papitha',
533 userName: 'Papitha',
534 accountId: '39fc339cf058bd22176771b3e33c5dac',
535 authToken: '852b7fc25396d2aedf9aeb44dd58518faa679dbf027892164bfb81900bd09741',
536 }, {
537 Store:
538 {
539 prefix: 'http://localhost:5000',
540 annotationData: {'uri':gs.cgiParams.c + "-" + gs.cgiParams.d},
541 loadFromSearch: {'uri':gs.cgiParams.c + "-" + gs.cgiParams.d}
542 }
543 });
544 });
545 }
546 });
547 }
548 </xsl:text>
549 </script>
550 </xsl:template>
551 <xsl:template name="documentImage">
552 <!-- Get the photo notes for this document node -->
553 <gsf:variable-struct name="photoNotes">
554 <gsf:metadata multiple="true" name="gsimg.photoNote" separator=", "/>
555 </gsf:variable-struct>
556 <!-- Get details about the image for zooming -->
557 <h3>
558 <gsf:choose-metadata>
559 <gsf:metadata name="dc.Title"/>
560 <gsf:metadata name="ex.Title"/>
561 </gsf:choose-metadata>
562 </h3>
563 <xsl:variable name="imageWidth">
564 <gsf:choose-metadata>
565 <gsf:metadata name="ImageWidth"/>
566 <gsf:default>-1</gsf:default>
567 </gsf:choose-metadata>
568 </xsl:variable>
569 <xsl:variable name="imageHeight">
570 <gsf:choose-metadata>
571 <gsf:metadata name="ImageHeight"/>
572 <gsf:default>-1</gsf:default>
573 </gsf:choose-metadata>
574 </xsl:variable>
575 <xsl:variable name="screenImageWidth">
576 <gsf:choose-metadata>
577 <gsf:metadata name="ScreenWidth"/>
578 <gsf:default>-1</gsf:default>
579 </gsf:choose-metadata>
580 </xsl:variable>
581 <xsl:variable name="screenImageHeight">
582 <gsf:choose-metadata>
583 <gsf:metadata name="ScreenHeight"/>
584 <gsf:default>-1</gsf:default>
585 </gsf:choose-metadata>
586 </xsl:variable>
587 <script type="text/javascript">
588 <xsl:text>largeImageHeight =</xsl:text>
589 <xsl:value-of select="$imageHeight"/>
590 <xsl:text>;</xsl:text>
591 <xsl:text>largeImageWidth =</xsl:text>
592 <xsl:value-of select="$imageWidth"/>
593 <xsl:text>;</xsl:text>
594 <xsl:text>smallImageHeight =</xsl:text>
595 <xsl:value-of select="$screenImageHeight"/>
596 <xsl:text>;</xsl:text>
597 <xsl:text>smallImageWidth =</xsl:text>
598 <xsl:value-of select="$screenImageWidth"/>
599 <xsl:text>;</xsl:text>
600 </script>
601 <div id="noZoom" style="display:block;">
602 <img style="width: {$screenImageWidth}; height: {$screenImageHeight};">
603 <xsl:attribute name="src"><xsl:value-of disable-output-escaping="yes" select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/>/index/assoc/<gsf:metadata name="assocfilepath" select="root"/>/<gsf:metadata name="Screen"/></xsl:attribute>
604 </img>
605 <!--
606 <gsf:metadata name="screenicon"/>
607 -->
608 </div>
609 <!--<xsl:if test="$imageHeight != -1">-->
610 <div id="wrap" style="display:none; width: {$screenImageWidth}; height: {$screenImageHeight};">
611 <div id="small" style="width: {$screenImageWidth}; height: {$screenImageHeight};">
612 <!--
613 <gsf:metadata name="screenicon"/>
614 -->
615 <img style="width: {$screenImageWidth}; height: {$screenImageHeight};">
616 <xsl:attribute name="src"><xsl:value-of disable-output-escaping="yes" select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/>/index/assoc/<gsf:metadata name="assocfilepath" select="root"/>/<gsf:metadata name="Screen"/></xsl:attribute>
617 </img>
618 </div>
619 <div id="mover">
620 <div id="overlay">
621 <xsl:text> </xsl:text>
622 </div>
623 <div id="large">
624 <img style="width: {$imageWidth}; height: {$imageHeight};">
625 <xsl:attribute name="src"><xsl:value-of disable-output-escaping="yes" select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/>/index/assoc/<gsf:metadata name="assocfilepath" select="root"/>/<gsf:metadata name="srclinkFile"/></xsl:attribute>
626 </img>
627 </div>
628 </div>
629 </div>
630 <input onclick="AddNote();" style="margin-left:30px;" type="button" value="Tag Photo!"/>
631 <!--</xsl:if>-->
632 </xsl:template>
633 </format></display><replaceListRef id="gs2-standard"/><replaceListRef id="gs2-image"/><serviceRackList>
634 <!-- comment out the following serviceRack if you want to disable OAI for this collection -->
635 <serviceRack name="OAIPMH">
636 <ListMetadataFormats>
637 <!--What metadata sets to support is collection specific. To support other metadata schema, simply add a metadataFormat element here.
638 The support of unqualified Dublin Core metadata set is mandatory in the oai specification.
639 -->
640 <metadataFormat metadataPrefix="oai_dc">
641 <metadataPrefix>oai_dc</metadataPrefix>
642 <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
643 <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
644 <!--<metadataElements>dc.Title,dc.Creator,dc.Subject,dc.Description,dc.Publisher,dc.Contributor,dc.Date,dc.Type,dc.Format,dc.Identifier,dc.Source,dc.Language,dc.Relation,dc.Coverage,dc.Rights</metadataElements>
645 -->
646 <mappingList>
647 <!--
648 The mapping is in the form: <publicly supported metadata name>,<mapped metadata name>, short as <A>,<B>
649 The first metadata name is medatory; if there is no mapped name followed, then the first name must be used by the records and
650 searchable in the database, otherwise it is the mapped name stored in the database. The number of mapping elements matches the
651 number of external metadata of the records. If only one name is present, the returned metadata will use this name plus the retrieved value;
652 if both <A>,<B> are present, the returned metadata will use <A>'s name plus <B>'s value retrieved from database.
653
654 **Bear in mind: if this mapping list is not present, the standard dc. metadata names (15 in total) will be used to retrieve metadata in the database.
655
656 **The only case when this mapping is not present is that: 1. this metadata format is oai_dc; 2. the metadata is also stored in the database by Dublin Core's names.
657 -->
658 <mapping>dc.Title,Title</mapping>
659 <!-- This mapping example means that the dc.Title is requested and the value of the metadata Title, which is used in this repository, is returned as response. -->
660 </mappingList>
661 </metadataFormat>
662 </ListMetadataFormats>
663 </serviceRack>
664 </serviceRackList></CollectionConfig>
Note: See TracBrowser for help on using the repository browser.