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

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

1) Changed Photo Annotation to Image Annotation
2) Included Navigate functionality
3) Included Social Links

  • Property svn:executable set to *
File size: 52.3 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
4 <metadataList>
5 <metadata lang="en" name="creator"></metadata>
6 <metadata lang="en" name="maintainer"></metadata>
7 <metadata lang="en" name="public">true</metadata>
8 </metadataList>
9 <displayItemList>
10 <displayItem assigned="true" lang="en" name="name">Pei-Jones-Flat</displayItem>
11 </displayItemList>
12 <search type="mgpp">
13 <level name="document">
14 <displayItem lang="en" name="name">document</displayItem>
15 </level>
16 <level name="section">
17 <displayItem lang="en" name="name">section</displayItem>
18 </level>
19 <defaultLevel name="document"/>
20 <index name="text">
21 <displayItem lang="en" name="name">text</displayItem>
22 </index>
23 <index name="Title">
24 <displayItem lang="en" name="name">titles</displayItem>
25 </index>
26 <index name="Source">
27 <displayItem lang="en" name="name">filenames</displayItem>
28 </index>
29 <index name="Plugin"/>
30 <index name="gsimg.photoNote">
31 <displayItem lang="en" name="name">photo annotations</displayItem>
32 </index>
33 <index name="gstext.tags">
34 <displayItem lang="en" name="name">text annotations (tags)</displayItem>
35 </index>
36 <index name="gstext.text">
37 <displayItem lang="en" name="name">text annotations (text)</displayItem>
38 </index>
39 <index name="gstext.user">
40 <displayItem lang="en" name="name">text annotations (user)</displayItem>
41 </index>
42 <index name="SourceFile"/>
43 <defaultIndex name="text"/>
44 <indexOption>
45 <option name="accentfold"/>
46 <option name="casefold"/>
47 <option name="stem"/>
48 </indexOption>
49 <searchType name="plain"/>
50 <searchType name="simpleform"/>
51 <searchType name="advancedform"/>
52 <format>
53 <gsf:template match="documentNode">
54 <td valign="top">
55 <gsf:link type="document">
56 <gsf:icon type="document"/>
57 </gsf:link>
58 </td>
59 <td>
60 <gsf:switch>
61 <gsf:metadata name="Title" select="ancestors" separator=": "/>
62 <gsf:when test="exists"><gsf:metadata name="Title" select="ancestors" separator=": "/>:</gsf:when>
63 </gsf:switch>
64 <gsf:link type="document">
65 <gsf:metadata name="Title"/>
66 </gsf:link>
67 </td>
68 </gsf:template>
69 </format>
70 </search>
71 <infodb type="gdbm"/>
72 <import>
73 <pluginList>
74 <plugin name="ZIPPlugin"/>
75 <plugin name="GreenstoneXMLPlugin"/>
76 <plugin name="TextPlugin">
77 <option name="-extract_language"/>
78 <option name="-default_language" value="undefined"/>
79 </plugin>
80 <plugin name="HTMLPlugin">
81 <option name="-process_exp" value="(timeglider.*)(?i)(\.html?)$"/>
82 <option name="-block_exp" value="(timeglider.*)(?i)(\.jpe?g|\.png|\.gif)$"/>
83 <option name="-keep_head"/>
84 <option name="-extract_language"/>
85 <option name="-default_language" value="undefined"/>
86 </plugin>
87 <plugin name="EmailPlugin"/>
88 <plugin name="PDFPlugin"/>
89 <plugin name="RTFPlugin"/>
90 <plugin name="WordPlugin"/>
91 <plugin name="PostScriptPlugin"/>
92 <plugin name="PowerPointPlugin"/>
93 <plugin name="ExcelPlugin"/>
94 <plugin name="PagedImagePlugin"/>
95 <plugin name="ImagePlugin"/>
96 <plugin name="ISISPlugin"/>
97 <plugin name="NulPlugin"/>
98 <plugin name="OAIPlugin"/>
99 <plugin name="HTMLImagePlugin"/>
100 <plugin name="MetadataXMLPlugin"/>
101 <plugin name="ArchivesInfPlugin"/>
102 <plugin name="DirectoryPlugin"/>
103 </pluginList>
104 </import>
105 <browse>
106 <classifier name="List">
107 <option name="-metadata" value="dc.Title;Title"/>
108 <option name="-partition_type_within_level" value="approximate_size"/>
109 <option name="-bookshelf_type" value="never"/>
110 </classifier>
111 <classifier name="AZCompactList">
112 <option name="-metadata" value="Source"/>
113 <option name="-removesuffix" value="(?i)\\..*"/>
114 <option name="-buttonname" value="Source"/>
115 </classifier>
116 <format>
117 <gsf:template match="documentNode">
118 <td valign="top">
119 <gsf:link type="document">
120 <gsf:icon type="document"/>
121 </gsf:link>
122 </td>
123 <td valign="top">
124 <gsf:link type="source">
125 <gsf:choose-metadata>
126 <gsf:metadata name="thumbicon"/>
127 <gsf:metadata name="srcicon"/>
128 </gsf:choose-metadata>
129 </gsf:link>
130 </td>
131 <td valign="top">
132 <gsf:link type="document">
133 <gsf:choose-metadata>
134 <gsf:metadata name="dc.Title"/>
135 <gsf:metadata name="exp.Title"/>
136 <gsf:metadata name="Title"/>
137 <gsf:default>Untitled</gsf:default>
138 </gsf:choose-metadata>
139 </gsf:link>
140 <gsf:switch>
141 <gsf:metadata name="Source"/>
142 <gsf:when test="exists">
143 <br/>
144 <i>(<gsf:metadata name="Source"/>)</i>
145 </gsf:when>
146 </gsf:switch>
147 </td>
148 </gsf:template>
149 <gsf:template match="classifierNode">
150 <td valign="top">
151 <gsf:link type="classifier">
152 <gsf:icon type="classifier"/>
153 </gsf:link>
154 </td>
155 <td valign="top">
156 <gsf:metadata name="srclink"/>
157 <gsf:choose-metadata>
158 <gsf:metadata name="thumbicon"/>
159 <gsf:metadata name="srcicon"/>
160 </gsf:choose-metadata>
161 <gsf:metadata name="/srclink"/>
162 </td>
163 <td valign="top">
164 <gsf:choose-metadata>
165 <gsf:metadata name="dc.Title"/>
166 <gsf:metadata name="exp.Title"/>
167 <gsf:metadata name="Title"/>
168 <gsf:default>Untitled</gsf:default>
169 </gsf:choose-metadata>
170 <gsf:switch>
171 <gsf:metadata name="Source"/>
172 <gsf:when test="exists">
173 <br/>
174 <i>(<gsf:metadata name="Source"/>)</i>
175 </gsf:when>
176 </gsf:switch>
177 </td>
178 </gsf:template>
179 <gsf:template match="classifierNode" mode="horizontal">
180 <gsf:link type="horizontal">
181 <gsf:metadata name="Title"/>
182 </gsf:link>
183 </gsf:template>
184 </format>
185 </browse>
186 <display>
187 <format>
188 <gsf:option name="sideBar" value="false"/>
189 <xsl:template name="additionalHeaderContent">
190<!--
191 <link rel="stylesheet" href="http://twitter.github.com/bootstrap/1.4.0/bootstrap.min.css"/>
192 <link rel="stylesheet" href="http://blueimp.github.com/Bootstrap-Image-Gallery/bootstrap-image-gallery.min.css"/> --><!--[if lt IE 7]><link rel="stylesheet" href="http://blueimp.github.com/Bootstrap-Image-Gallery/bootstrap-ie6.min.css"><![endif]--><!--
193 <link rel="stylesheet" href="sites/localsite/collect/peijones/js/jQuery-File-Upload/jquery.fileupload-ui.css"/>
194
195 <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/jquery.fileupload.js">
196 <xsl:text> </xsl:text>
197 </script>
198 <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/jquery.fileupload-ui.js">
199 <xsl:text> </xsl:text>
200 </script>
201 <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/jquery.iframe-transport.js">
202 <xsl:text> </xsl:text>
203 </script>
204 <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/application.js">
205 <xsl:text> </xsl:text>
206 </script>
207
208 <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/tmpl.min.js"><xsl:text> </xsl:text></script>
209 <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/load-image.min.js"><xsl:text> </xsl:text></script>
210 --><!-- jQuery must be included before Annotator --><!-- <script src="sites/localsite/collect/peijones/js/annotator/lib/vendor/jquery.js">--><!--<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"><xsl:text> </xsl:text></script>--><!-- If you're sure your users will only be using browsers modern
211 enough to have their own JSON.parse and JSON.stringify
212 implementations you can skip this --> <xsl:if test="not(/page/pageRequest/paramList/param[@name ='p.docEdit'])">
213 <script src="sites/localsite/collect/peijones/js/annotator/lib/vendor/json2.js">
214 <xsl:text> </xsl:text> </script>
215 <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator-full.min.js">
216 <xsl:text> </xsl:text> </script>
217 <link href="sites/localsite/collect/peijones/js/annotator/pkg/annotator.min.css" rel="stylesheet" type="text/css"/>
218 </xsl:if>
219<!-- The main Annotator script --><!--<script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.min.js"><xsl:text> </xsl:text></script> --><!-- Annotator's styling and images --><!-- The following plugins are entirely optional --><!-- The Store plugin. Saves annotations to a remote backend --><!-- <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.store.min.js"><xsl:text> </xsl:text></script> --><!-- The Auth plugin. Allows users of Annotator to authenticate themselves
220 to the remote backend --><!--<script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.auth.min.js"><xsl:text> </xsl:text></script> --><!-- The Permissions plugin. See who created which annotation and create
221 annotations as a specified user --><!--<script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.permissions.min.js"><xsl:text> </xsl:text></script> --><!-- The Tags plugin. Edit and display tag keywords on annotations --><!--<script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.tags.min.js"><xsl:text> </xsl:text></script> --><!-- The Markdown plugin. Treat annotation text as Markdown --><!-- <script src="sites/localsite/collect/peijones/js/annotator/lib/vendor/showdown.js"><xsl:text> </xsl:text></script> --><!-- <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.markdown.min.js"><xsl:text> </xsl:text></script> --><!-- Photo note scripts --> <xsl:if test="not(/page/pageRequest/paramList/param[@name ='p.docEdit'])">
222 <script src="sites/localsite/collect/peijones/js/documentmaker/BrowserDetect.js" type="text/javascript">
223 <xsl:text> </xsl:text> </script>
224 <script src="sites/localsite/collect/peijones/js/documentmaker/PhotoNotes-1.5.js" type="text/javascript">
225 <xsl:text> </xsl:text> </script>
226 <link href="sites/localsite/collect/peijones/style/PhotoNotes-1.5.css" rel="stylesheet" type="text/css"/>
227 </xsl:if>
228<!-- Zoom scripts --><!--<script src="interfaces/{$interface_name}/js/jquery-1.4.2.js" type="text/javascript"><xsl:text> </xsl:text></script>--> <script src="sites/localsite/collect/peijones/js/documentmaker/zoomer.jquery.js" type="text/javascript">
229 <xsl:text> </xsl:text> </script>
230 <link href="sites/localsite/collect/peijones/style/style.css" rel="stylesheet" type="text/css"/>
231 <script type="text/javascript">
232 <xsl:text disable-output-escaping="yes">_zoomEnabled = true;
233
234 function readyImagesForZoom()
235 {
236 var noZoom = document.getElementById("noZoomImage");
237 var wrap = document.getElementById("wrap");
238 if(!noZoom || !wrap)
239 {
240 return;
241 }
242
243 var smallImageDiv = document.getElementById("small");
244 var smallImage = smallImageDiv.getElementsByTagName("img")[0];
245 smallImageDiv.style.width = smallImageWidth + "px";
246 smallImageDiv.style.height = smallImageHeight + "px";
247 var multiplier = largeImageHeight / smallImageHeight;
248
249 $("#wrap").anythingZoomer({
250 expansionSize:50,
251 speedMultiplier:multiplier
252 });
253
254 noZoom.onclick = addZoom;
255 document.getElementById("overlay").onclick = removeZoom;
256
257 removeZoom();
258 }
259 function addZoom()
260 {
261 if(!_zoomEnabled)
262 {
263 return;
264 }
265
266 var wrapper = document.getElementById("wrap");
267 var noZoom = document.getElementById("noZoom");
268
269 if(!noZoom || !wrapper)
270 {
271 return;
272 }
273
274 noZoom.style.display = "none";
275 wrapper.style.display = "block";
276 var option = document.getElementById("zoomOption");
277 if(option)
278 {
279 option.setAttribute("onclick", "removeZoom();");
280 }
281 }
282 function removeZoom()
283 {
284 if(!_zoomEnabled)
285 {
286 return;
287 }
288
289 var wrapper = document.getElementById("wrap");
290 var noZoom = document.getElementById("noZoom");
291
292 if(!noZoom || !wrapper)
293 {
294 return;
295 }
296
297 wrapper.style.display = "none";
298 noZoom.style.display = "block";
299 var option = document.getElementById("zoomOption");
300 if(option)
301 {
302 option.setAttribute("onclick", "addZoom();");
303 }
304 }
305 </xsl:text> </script>
306 <script text="text/javascript">
307 <xsl:text disable-output-escaping="yes">var _posCount = 0;
308 var _notes;
309 function initNotes()
310 {
311 /* create the Photo Note Container */
312 _notes = new PhotoNoteContainer(document.getElementById("noZoom"));
313 getNotes();
314 }
315
316 function deleteFunction(note)
317 {
318 var status = true;
319
320 if (note &amp;&amp; note.id &amp;&amp; note.id &gt; 0) {
321 var metaposStr = note.id - 1;
322
323 var jsonVal = '{"caption":"' + note.text + '", "area":{"x":' + note.rect.left + ', "y":' + note.rect.top + ', "width":' + note.rect.width + ', "height":' + note.rect.height + '}}';
324
325 var removeFromIndexURL = "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;
326 var removeFromArchivesURL = "cgi-bin/metadata-server.pl?a=remove-archives-metadata&amp;site=localsite&amp;c=" + gs.cgiParams.c + "&amp;d=" + gs.cgiParams.d + "&amp;metaname=gsimg.photoNote&amp;metapos=" + metaposStr;
327 var removeFromImportURL = "cgi-bin/metadata-server.pl?a=remove-import-metadata&amp;site=localsite&amp;c=" + gs.cgiParams.c + "&amp;d=" + gs.cgiParams.d + "&amp;metaname=gsimg.photoNote&amp;metavalue=" + jsonVal;
328
329 var indexCallback =
330 {
331 success: function(response)
332 {
333 for(var i = 0; i &lt; _notes.length; i++)
334 {
335 var currentNote = _notes[i];
336 if(currentNote.id &gt; note.id)
337 {
338 currentNote.id--;
339 }
340 }
341 _posCount--;
342 },
343 failed: function(){alert("Failed to delete index metadata of note with id: " + note.id);},
344 };
345
346 var archiveCallback =
347 {
348 success: function(){buildFunction(gs.cgiParams.c);},
349 failed: function(){alert("Failed to delete archive metadata of note with id: " + note.id);}
350 }
351
352 var importCallback =
353 {
354 success: function(){},
355 failed: function(){alert("Failed to delete import metadata of note with id: " + note.id);}
356 }
357
358 YAHOO.util.Connect.asyncRequest("GET", removeFromIndexURL, indexCallback);
359 YAHOO.util.Connect.asyncRequest("GET", removeFromArchivesURL, archiveCallback);
360 YAHOO.util.Connect.asyncRequest("GET", removeFromImportURL, importCallback);
361 }
362 else {
363 alert("Failed to find valid note data to delete");
364 status = false;
365 }
366
367 return status;
368 }
369
370 function saveFunction(note)
371 {
372 var saveIndexCallback =
373 {
374 success: function(response){},
375 failed: function(reponse){ alert("Failed to save index metadata of note with id: " + note.id)},
376 };
377
378 var saveArchivesCallback =
379 {
380 success: function(response){buildFunction(gs.cgiParams.c);},
381 failed: function(response){ alert("Failed in save import metadata of note with id: " + note.id) }
382 };
383
384 var saveImportCallback =
385 {
386 success: function(response){},
387 failed: function(response){ alert("Failed in save import metadata of note with id: " + note.id) }
388 };
389
390 var jsonVal = '{"caption":"' + note.text + '", "area":{"x":' + note.rect.left + ', "y":' + note.rect.top + ', "width":' + note.rect.width + ', "height":' + note.rect.height + '}}';
391 var metaposStr = (note &amp;&amp; note.id &amp;&amp; note.id &gt; 0) ? note.id - 1 : _posCount;
392
393 var saveIndexURL = "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;metamode=override&amp;metavalue=" + jsonVal + "&amp;metapos=" + metaposStr;
394 var saveArchivesURL = "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;metamode=override&amp;metavalue=" + jsonVal + "&amp;metapos=" + metaposStr;
395 var saveImportURL = "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;metamode=override&amp;metavalue=" + jsonVal + "&amp;metapos=" + metaposStr;
396 YAHOO.util.Connect.asyncRequest("GET", saveIndexURL, saveIndexCallback);
397 YAHOO.util.Connect.asyncRequest("GET", saveArchivesURL, saveArchivesCallback);
398 YAHOO.util.Connect.asyncRequest("GET", saveImportURL, saveImportCallback);
399
400 return 1;
401 }
402
403 function getNotes()
404 {
405 if(gs.variables.photoNotes == null || gs.variables.photoNotes == undefined)
406 {
407 console.log("No photo notes");
408 return;
409 }
410
411 for(var i = 0; i &lt; gs.variables.photoNotes.length; i++)
412 {
413 var note = gs.variables.photoNotes[i];
414 if(!note)
415 {
416 continue;
417 }
418 var newNote = new PhotoNote(note.caption, i+1, new PhotoNoteRect(note.area.x,note.area.y,note.area.width,note.area.height));
419 newNote.onsave = saveFunction;
420 newNote.ondelete = deleteFunction;
421 _notes.AddNote(newNote);
422 _posCount++;
423 }
424
425 addNoteOverAndOutHandlers();
426 }
427
428 function AddNote()
429 {
430 var photoPos = $("#noZoom").offset();
431 var newNote = new PhotoNote('Add note text here...',_posCount+1,new PhotoNoteRect(20,20,50,50));
432 newNote.onsave = saveFunction;
433 newNote.ondelete = deleteFunction;
434 _notes.AddNote(newNote);
435 _posCount++;
436
437 addNoteOverAndOutHandlers();
438 newNote.Select();
439 }
440
441 function addNoteOverAndOutHandlers()
442 {
443 var divs = document.getElementsByTagName("DIV");
444 for(var i = 0; i &lt; divs.length; i++)
445 {
446 if(divs[i].getAttribute("class") &amp;&amp; divs[i].getAttribute("class").search("fn-area") != -1)
447 {
448 divs[i].onmouseover = function(){_zoomEnabled = false;}
449 divs[i].onmouseout = function(){_zoomEnabled = true;}
450 }
451 }
452 }
453
454 function addStatusBar()
455 {
456 var textDiv = document.getElementById("gs-document");
457 var buildStatusBar = document.createElement("div");
458 buildStatusBar.setAttribute("id", "buildStatusBar");
459 buildStatusBar.setAttribute("class", "ui-state-default ui-corner-all");
460 buildStatusBar.setAttribute("style", "visibility:hidden; width:100%");
461 var buildingMessage = document.createElement("div");
462 buildingMessage.setAttribute("id", "buildMessage");
463 buildingMessage.setAttribute("style", "width:50%; padding:3px; margin:5px auto; text-align:center;");
464 buildStatusBar.appendChild(buildingMessage);
465
466 textDiv.insertBefore(buildStatusBar, textDiv.firstChild);
467 }
468
469 function prepopulateAnnotatorSearchBar()
470 {
471 if(gs.cgiParams.s1_query &amp;&amp; gs.cgiParams.s1_index == "GE")
472 {
473 $("#annotator-filter-text").val(gs.cgiParams.s1_query).keyup().blur();
474 console.log("AAA");
475 }
476
477 if(gs.cgiParams.s1_query &amp;&amp; gs.cgiParams.s1_index == "GT")
478 {
479 $("#annotator-filter-tags").val(gs.cgiParams.s1_query).keyup().blur();
480 console.log("BBB");
481 }
482
483 if(gs.cgiParams.s1_query &amp;&amp; gs.cgiParams.s1_index == "GX")
484 {
485 $("#annotator-filter-user").val(gs.cgiParams.s1_query).keyup().blur();
486 console.log("CCC");
487 }
488 }
489
490 function addPrevNextPageButtons()
491 {
492 var buttonDiv = document.createElement("DIV");
493 var buttonTable = document.createElement("TABLE");
494 var buttonRow = document.createElement("TR");
495 var buttonPrevCell = document.createElement("TD");
496 var buttonNextCell = document.createElement("TD");
497 buttonRow.appendChild(buttonPrevCell);
498 buttonRow.appendChild(buttonNextCell);
499 buttonTable.appendChild(buttonRow);
500 buttonDiv.appendChild(buttonTable);
501
502 buttonDiv.setAttribute("style", "width:100%");
503 buttonTable.setAttribute("style", "margin:auto;");
504 buttonPrevCell.setAttribute("style", "padding:10px;");
505 buttonNextCell.setAttribute("style", "padding:10px;");
506
507 document.getElementById("gs-document-text").appendChild(buttonDiv);
508
509 gs.functions.getArchivesMetadata(gs.cgiParams.c, "localsite", gs.cgiParams.d, "SourceFile", null, function(meta)
510 {
511 var sourceFilename = meta.getValue();
512 var fileNameSegments = sourceFilename.split("-");
513 var finalSegment = fileNameSegments[fileNameSegments.length-1];
514
515 var extIndex = finalSegment.indexOf(".");
516 var ext = "";
517 if(extIndex != -1)
518 {
519 ext = finalSegment.substring(extIndex);
520 finalSegment = finalSegment.substring(0, extIndex);
521 }
522 var finalNumber = parseInt(finalSegment);
523
524 var prevFilename = "";
525 var nextFilename = "";
526 for(var i = 0; i &lt; fileNameSegments.length - 1; i++)
527 {
528 prevFilename += fileNameSegments[i] + "-";
529 nextFilename += fileNameSegments[i] + "-";
530 }
531
532 if(finalNumber - 1 >= 0)
533 {
534 var prevFinalNumber = "" + (finalNumber - 1);
535 while(prevFinalNumber.length &lt; finalSegment.length)
536 {
537 prevFinalNumber = "0" + prevFinalNumber;
538 }
539 prevFilename += prevFinalNumber + ext;
540
541 prevButtonCallback =
542 {
543 success:function(response)
544 {
545 var text = response.responseText;
546 var startIndex = text.indexOf("nodeID=\"");
547 if(startIndex == -1)
548 {
549 return;
550 }
551 startIndex += 8;
552 endIndex = text.indexOf("\"", startIndex + 1);
553
554 var id = text.substring(startIndex, endIndex);
555
556 var prevLink = document.createElement("A");
557 prevLink.innerHTML = "Previous Page";
558 prevLink.setAttribute("href", gs.xsltParams.library_name + "?a=d&amp;d=" + id + "&amp;c=" + gs.cgiParams.c + "&amp;dt=hierarchy&amp;ed=1");
559 buttonPrevCell.appendChild(prevLink);
560 },
561 failed:function(response){console.log("Search for previous document failed");}
562 }
563 YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=q&amp;sa=&amp;rt=rd&amp;s=TextQuery&amp;c=peijones&amp;startPage=1&amp;s1.query=" + prevFilename.replace(/-/g, " ") + "&amp;s1.index=SO&amp;o=xml", prevButtonCallback);
564 }
565
566 var nextFinalNumber = "" + (finalNumber + 1);
567 while(nextFinalNumber.length &lt; finalSegment.length)
568 {
569 nextFinalNumber = "0" + nextFinalNumber;
570 }
571 nextFilename += nextFinalNumber + ext;
572
573 nextButtonCallback =
574 {
575 success:function(response)
576 {
577 var text = response.responseText;
578 var startIndex = text.indexOf("nodeID=\"");
579 if(startIndex == -1)
580 {
581 return;
582 }
583 startIndex += 8;
584 endIndex = text.indexOf("\"", startIndex + 1);
585
586 var id = text.substring(startIndex, endIndex);
587
588 var nextLink = document.createElement("A");
589 nextLink.innerHTML = "Next Page";
590 nextLink.setAttribute("href", gs.xsltParams.library_name + "?a=d&amp;d=" + id + "&amp;c=" + gs.cgiParams.c + "&amp;dt=hierarchy&amp;ed=1");
591 buttonNextCell.appendChild(nextLink);
592 },
593 failed:function(response){console.log("Search for next document failed");}
594 }
595
596 YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=q&amp;sa=&amp;rt=rd&amp;s=TextQuery&amp;c=peijones&amp;startPage=1&amp;s1.query=" + nextFilename.replace(/-/g, " ") + "&amp;s1.index=SO&amp;o=xml", nextButtonCallback);
597 });
598 }
599
600 function addSocialLinks()
601 {
602 var socialLinksDiv = document.createElement("DIV");
603 socialLinksDiv.setAttribute("class", "addthis_toolbox addthis_default_style");
604
605 var facebookLink = document.createElement("A");
606 facebookLink.setAttribute("class", "addthis_button_facebook_like");
607 facebookLink.setAttribute("fb:like:layout", "button_count");
608 socialLinksDiv.appendChild(facebookLink);
609
610 var twitterLink = document.createElement("A");
611 twitterLink.setAttribute("class", "addthis_button_tweet");
612 socialLinksDiv.appendChild(twitterLink);
613
614 var gplusLink = document.createElement("A");
615 gplusLink.setAttribute("class", "addthis_button_google_plusone");
616 gplusLink.setAttribute("g:plusone:size", "medium");
617 socialLinksDiv.appendChild(gplusLink);
618
619 var addThisLink = document.createElement("A");
620 addThisLink.setAttribute("class", "addthis_counter addthis_pill_style");
621 socialLinksDiv.appendChild(addThisLink);
622
623 var script = document.createElement("SCRIPT");
624 script.setAttribute("type", "text/javascript");
625 script.setAttribute("src", "http://s7.addthis.com/js/250/addthis_widget.js#pubid=xa-4f5fe0cf41940d54");
626 socialLinksDiv.appendChild(script);
627
628 document.getElementById("gs-document-text").appendChild(socialLinksDiv);
629 }
630
631 </xsl:text>
632 <xsl:if test="not(/page/pageRequest/paramList/param[@name ='p.docEdit'])">
633 <xsl:text disable-output-escaping="yes">
634 $(window).load(function(){readyImagesForZoom(); initAnnotator(); addStatusBar(); initNotes(); addPrevNextPageButtons(); addSocialLinks(); });
635 </xsl:text>
636 </xsl:if>
637 </script>
638 <script text="text/javascript">
639 <xsl:text disable-output-escaping="yes">function checkLoop(pid, serverFunction, callback)
640 {
641 var startLoop = function()
642 {
643 var loopCallback =
644 {
645 success:function(response)
646 {
647 var checkText = response.responseText;
648 if(checkText == null || checkText == "")
649 {
650 console.log("There was an error getting the XML to check the status of " + serverFunction);
651 }
652 else
653 {
654 var checkCodeStart = checkText.indexOf("code=\"") + 6;
655 var checkCodeEnd = checkText.indexOf("\"", checkCodeStart);
656 var code = checkText.substring(checkCodeStart, checkCodeEnd);
657
658 if(code == 11 || code == 1) //11 is COMPLETED, 1 is success
659 {
660 callback();
661 }
662 else if(code == 12 || code == 3) //12 is HALTED, 3 is ERROR
663 {
664 console.log("There was an error on the server, could not check status of " + serverFunction);
665 }
666 else
667 {
668 setTimeout(startLoop, 1000);
669 }
670 }
671 },
672 failed:function()
673 {
674 console.log("There was a problem checking the status of " + serverFunction)
675 }
676 }
677 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);
678 }
679 startLoop();
680 }
681
682 function buildFunction(collection)
683 {
684 var buildCallback =
685 {
686 success:function(response)
687 {
688 var buildText = response.responseText;
689 if(buildText == null || buildText == "")
690 {
691 console.log("There was an error getting the xml response from the building request");
692 }
693 else
694 {
695 var buildPIDStart = buildText.indexOf("pid=\"") + 5;
696 var buildPIDEnd = buildText.indexOf("\"", buildPIDStart);
697 var buildPID = buildText.substring(buildPIDStart, buildPIDEnd);
698
699 checkLoop(buildPID, "BuildCollection", function()
700 {
701 var activateCallback =
702 {
703 success: function(response)
704 {
705 var activateText = response.responseText;
706 if(activateText == null || activateText == "")
707 {
708 console.log("There was an error getting the xml response from the activating request");
709 }
710 else
711 {
712 var activatePIDStart = activateText.indexOf("pid=\"") + 5;
713 var activatePIDEnd = activateText.indexOf("\"", activatePIDStart);
714 var activatePID = activateText.substring(activatePIDStart, activatePIDEnd);
715
716 checkLoop(activatePID, "ActivateCollection", function()
717 {
718 var updateCallback =
719 {
720 success: function(response){document.getElementById("buildStatusBar").style.visibility = "hidden";},
721 failed: function(reponse){ alert("Failed in saveFunction() to re-read config files"); document.getElementById("buildStatusBar").style.visibility = "hidden";}
722 };
723 YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=s&amp;sa=c", updateCallback);
724 });
725 }
726 },
727 failed: function(response)
728 {
729 document.getElementById("buildStatusBar").style.visibility = "hidden";
730 console.log("Failed to get response from activate collection request");
731 }
732 }
733 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);
734 });
735 }
736 },
737 failed: function(){console.log("Failed to get build collection response"); document.getElementById("buildStatusBar").style.visibility = "hidden";}
738 }
739
740 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);
741 showBuildingMessage();
742 }
743
744 function saveAndBuildCollection(col)
745 {
746 for(var j = 0; j &lt; gs.toDeleteArray.keys.length; j++)
747 {
748 var current = gs.toDeleteArray[gs.toDeleteArray.keys[j]];
749 if(current == null){continue;}
750 var metaToDelete = ["user", "text", "tags"];
751 for(var l = 0; l &lt; metaToDelete.length; l++)
752 {
753 var deleteArchivesURL = "cgi-bin/metadata-server.pl?\
754 a=remove-archives-metadata&amp;\
755 c=" + gs.cgiParams.c + "&amp;\
756 site=localsite&amp;\
757 d=" + gs.cgiParams.d + "&amp;\
758 metaname=gstext." + metaToDelete[l] + "&amp;\
759 metavalue=" + ((l == 0) ? (current.user.name) : (current[metaToDelete[l]]));
760
761 var deleteIndexURL = "cgi-bin/metadata-server.pl?\
762 a=remove-metadata&amp;\
763 c=" + gs.cgiParams.c + "&amp;\
764 site=localsite&amp;\
765 d=" + gs.cgiParams.d + "&amp;\
766 metaname=gstext." + metaToDelete[l] + "&amp;\
767 metavalue=" + ((l == 0) ? (current.user.name) : (current[metaToDelete[l]]));
768
769 var deleteImportURL = "cgi-bin/metadata-server.pl?\
770 a=remove-import-metadata&amp;\
771 c=" + gs.cgiParams.c + "&amp;\
772 site=localsite&amp;\
773 d=" + gs.cgiParams.d + "&amp;\
774 metaname=gstext." + metaToDelete[l] + "&amp;\
775 metavalue=" + ((l == 0) ? (current.user.name) : (current[metaToDelete[l]]));
776 var deleteArchivesCallback =
777 {
778 success:function(){},
779 failed: function(){alert("Failed to save text annotations archives metadata");}
780 }
781 YAHOO.util.Connect.asyncRequest("GET", deleteArchivesURL, deleteArchivesCallback);
782
783 var deleteIndexCallback =
784 {
785 success:function(){},
786 failed: function(){alert("Failed to save text annotations index metadata");}
787 }
788 YAHOO.util.Connect.asyncRequest("GET", deleteIndexURL, deleteIndexCallback);
789
790 var deleteImportCallback =
791 {
792 success:function(){},
793 failed: function(){alert("Failed to save text annotations import metadata");}
794 }
795 YAHOO.util.Connect.asyncRequest("GET", deleteImportURL, deleteImportCallback);
796 }
797 }
798 gs.toDeleteArray = new Array();
799 gs.toDeleteArray.keys = new Array();
800
801 if(gs.annotationArray.keys.length &gt; 0)
802 {
803 var json = "[";
804 for(var i = 0; i &lt; gs.annotationArray.keys.length; i++)
805 {
806 var current = gs.annotationArray[gs.annotationArray.keys[i]];
807 if(current == null){continue;}
808 var metaToAdd = ["user", "text", "tags"];
809
810 for(var j = 0; j &lt; metaToAdd.length; j++)
811 {
812 if(metaToAdd[j] == "user")
813 {
814 json += '{"docid":"' + gs.cgiParams.d + '", "metaname":"gstext.' + metaToAdd[j] + '", "metavalue":"' + current.user.name + '"}';
815 }
816 else
817 {
818 json += '{"docid":"' + gs.cgiParams.d + '", "metaname":"gstext.' + metaToAdd[j] + '", "metavalue":"' + current[metaToAdd[j]] + '"}';
819 }
820
821 if(j != (metaToAdd.length - 1) || i != (gs.annotationArray.keys.length - 1))
822 {
823 json += ',';
824 }
825 }
826 }
827 json += "]";
828
829 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;
830 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;
831 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;
832
833 var saveArchivesCallback =
834 {
835 success:function(){console.log("Away to build"); buildFunction(gs.cgiParams.c);},
836 failed: function(){alert("Failed to save text annotations index metadata");}
837 }
838 YAHOO.util.Connect.asyncRequest("GET", saveArchivesURL, saveArchivesCallback);
839
840 var saveIndexCallback =
841 {
842 success:function(){},
843 failed: function(){alert("Failed to save text annotations import metadata");}
844 }
845 YAHOO.util.Connect.asyncRequest("GET", saveIndexURL, saveIndexCallback);
846
847 var saveImportCallback =
848 {
849 success:function(){},
850 failed: function(){alert("Failed to save text annotations import metadata");}
851 }
852 YAHOO.util.Connect.asyncRequest("GET", saveImportURL, saveImportCallback);
853 }
854
855 gs.annotationArray = new Array();
856 gs.annotationArray.keys = new Array();
857 }
858
859 function showRebuildOption()
860 {
861 var buildStatusBar = document.getElementById("buildStatusBar");
862 buildStatusBar.style.visibility = "visible";
863
864 var buildMessage = document.getElementById("buildMessage");
865 buildMessage.innerHTML = 'Please rebuild to index annotations (make annotations searchable): &lt;span id="rebuildButton" style="cursor:pointer; padding:2px;" class="ui-state-default ui-corner-all"&gt;Rebuild&lt;/span&gt;';
866
867 var rebuildButton = document.getElementById("rebuildButton");
868 rebuildButton.onclick = function(){saveAndBuildCollection("peijones");}
869 }
870
871 function showBuildingMessage()
872 {
873 var buildStatusBar = document.getElementById("buildStatusBar");
874 buildStatusBar.style.visibility = "visible";
875
876 var buildMessage = document.getElementById("buildMessage");
877 buildMessage.innerHTML = '&lt;img src="' + gs.imageURLs.loading + '"/&gt; Building...';
878 }
879
880 function initAnnotator()
881 {
882 gs.annotationArray = new Array();
883 gs.annotationArray.keys = new Array();
884
885 gs.toDeleteArray = new Array();
886 gs.toDeleteArray.keys = new Array();
887
888 var elem = document.getElementById("gs-document-text");
889 elem.innerHTML = '&lt;div&gt;&lt;span style="visibility:hidden; padding: 3px;" class="ui-state-default ui-corner-all" id="saveButton"&gt;Reindex annotations&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;' + elem.innerHTML;
890
891 if (typeof $.fn.annotator !== 'function')
892 {
893 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`.");
894 }
895 else
896 {
897 // Include AnnotateIt credentials to load the store plugin.
898 $('#gs-document-text').annotator().annotator('setupPlugins', {
899 userId: 'papitha',
900 userName: 'Papitha',
901 accountId: '39fc339cf058bd22176771b3e33c5dac',
902 authToken: '852b7fc25396d2aedf9aeb44dd58518faa679dbf027892164bfb81900bd09741',
903 // $('#gs-document-text').annotator().annotator('setupPlugins', {
904 // userId: 'david',
905 // userName: 'David',
906 // accountId: 'eb096fae65f6377160ffc0eb6c000951',
907 // authToken: '92b3279a6b6edbaa2ed7bc4d895ef55c8f1368877bb69987985aa47195d517e7',
908 }, {
909 Store:
910 {
911 prefix: 'http://localhost:5000',
912 annotationData: {'uri':gs.cgiParams.c + "-" + gs.cgiParams.d},
913 loadFromSearch: {'uri':gs.cgiParams.c + "-" + gs.cgiParams.d}
914 }
915 });
916 }
917 }
918 </xsl:text> </script>
919 </xsl:template>
920 <xsl:template name="documentImage">
921<!-- Get the photo notes for this document node --> <gsf:variable-struct name="photoNotes">
922 <gsf:metadata multiple="true" name="gsimg.photoNote" separator=", "/>
923 </gsf:variable-struct>
924<!-- Get details about the image for zooming --> <h3>
925 <gsf:choose-metadata>
926 <gsf:metadata name="dc.Title"/>
927 <gsf:metadata name="ex.Title"/>
928 </gsf:choose-metadata>
929 </h3>
930 <xsl:variable name="imageWidth">
931 <gsf:choose-metadata>
932 <gsf:metadata name="ImageWidth"/>
933 <gsf:default>-1</gsf:default>
934 </gsf:choose-metadata>
935 </xsl:variable>
936 <xsl:variable name="imageHeight">
937 <gsf:choose-metadata>
938 <gsf:metadata name="ImageHeight"/>
939 <gsf:default>-1</gsf:default>
940 </gsf:choose-metadata>
941 </xsl:variable>
942 <xsl:variable name="screenImageWidth">
943 <gsf:choose-metadata>
944 <gsf:metadata name="ScreenWidth"/>
945 <gsf:default>-1</gsf:default>
946 </gsf:choose-metadata>
947 </xsl:variable>
948 <xsl:variable name="screenImageHeight">
949 <gsf:choose-metadata>
950 <gsf:metadata name="ScreenHeight"/>
951 <gsf:default>-1</gsf:default>
952 </gsf:choose-metadata>
953 </xsl:variable>
954 <script type="text/javascript">
955 <xsl:text>largeImageHeight = </xsl:text> <xsl:value-of select="$imageHeight"/>
956 <xsl:text>;</xsl:text>
957 <xsl:text>largeImageWidth = </xsl:text> <xsl:value-of select="$imageWidth"/>
958 <xsl:text>;</xsl:text>
959 <xsl:text>smallImageHeight = </xsl:text> <xsl:value-of select="$screenImageHeight"/>
960 <xsl:text>;</xsl:text>
961 <xsl:text>smallImageWidth = </xsl:text> <xsl:value-of select="$screenImageWidth"/>
962 <xsl:text>;</xsl:text>
963 </script>
964 <span class="ui-state-default ui-corner-top" onclick="AddNote();" style="font-size:90%; padding: 3px; cursor:pointer;">New Image Annotation </span> <div id="noZoom" style="display:block;">
965 <img id="noZoomImage" style="width: {$screenImageWidth}px; height: {$screenImageHeight}px;">
966 <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>
967 </img>
968<!--
969 <gsf:metadata name="screenicon"/>
970 --> </div>
971<!--<xsl:if test="$imageHeight != -1">--> <div id="wrap" style="display:none; width: {$screenImageWidth}px; height: {$screenImageHeight}px;">
972 <div id="small" style="width: {$screenImageWidth}px; height: {$screenImageHeight}px;">
973<!--
974 <gsf:metadata name="screenicon"/>
975 --> <img id="smallImage" style="width: {$screenImageWidth}px; height: {$screenImageHeight}px;">
976 <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>
977 </img>
978 </div>
979 <div id="mover">
980 <div id="overlay">
981 <xsl:text> </xsl:text> </div>
982 <div id="large" style="width: {$imageWidth}px; height: {$imageHeight}px;">
983 <img id="largeImage" style="width: {$imageWidth}px; height: {$imageHeight}px;">
984 <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>
985 </img>
986 </div>
987 </div>
988 </div>
989 <div class="btn btn-primary start" style="margin-bottom:5px;">
990 <a style="color:white;">
991 <xsl:attribute name="href">
992 <xsl:value-of select="$library_name"/>
993 <xsl:text>?downloadFile=</xsl:text>
994 <xsl:text>sites/localsite/collect/</xsl:text>
995 <xsl:value-of select="/page/pageResponse/collection/@name"/>
996 <xsl:text>/index/assoc/</xsl:text>
997 <gsf:metadata name="assocfilepath"/>
998 <xsl:text>/</xsl:text>
999 <gsf:metadata name="SourceFile"/>
1000 </xsl:attribute>
1001 <xsl:text>Download Image </xsl:text> </a>
1002 </div>
1003 <xsl:choose>
1004 <xsl:when test="/page/pageRequest/paramList/param[@name = 'p.oldUpload']/@value = 'true'"><!-- <form action="dev?a=d&c={/page/pageResponse/collection/@name}&d={/page/pageResponse/document/documentNode/@nodeID}&dt=simple&ed=1" enctype="multipart/form-data" method="post">
1005 <input name="fl" type="hidden">
1006 <xsl:attribute name="value">
1007 <xsl:text>/sites/localsite/collect/</xsl:text>
1008 <xsl:value-of select="/page/pageResponse/collection/@name"/>
1009 <xsl:text>/index/assoc/</xsl:text>
1010 <gsf:metadata name="assocfilepath"/>
1011 <xsl:text>/</xsl:text>
1012 <gsf:metadata name="SourceFile"/>
1013 <xsl:text>:</xsl:text>
1014 <xsl:text>/sites/localsite/collect/</xsl:text>
1015 <xsl:value-of select="/page/pageResponse/collection/@name"/>
1016 <xsl:text>/index/assoc/</xsl:text>
1017 <gsf:metadata name="assocfilepath"/>
1018 <xsl:text>/</xsl:text>
1019 <gsf:metadata name="Screen"/>
1020 <xsl:text>:</xsl:text>
1021 <xsl:text>/sites/localsite/collect/</xsl:text>
1022 <xsl:value-of select="/page/pageResponse/collection/@name"/>
1023 <xsl:text>/index/assoc/</xsl:text>
1024 <gsf:metadata name="assocfilepath"/>
1025 <xsl:text>/</xsl:text>
1026 <gsf:metadata name="Thumb"/>
1027 </xsl:attribute>
1028 </input>
1029
1030 <div>
1031 Upload replacement file:<br/>
1032 <input name="datafile" size="40" type="file"/><br/>
1033 <input type="submit" value="Send"/>
1034 </div>
1035 </form>--> </xsl:when> <xsl:otherwise>
1036 <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/tmpl.min.js">
1037 <xsl:text> </xsl:text> </script>
1038 <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/load-image.min.js">
1039 <xsl:text> </xsl:text> </script>
1040 <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/jquery.iframe-transport.js">
1041 <xsl:text> </xsl:text> </script>
1042 <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/jquery.fileupload.js">
1043 <xsl:text> </xsl:text> </script>
1044 <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/jquery.fileupload-ui.js">
1045 <xsl:text> </xsl:text> </script>
1046<!--<script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/application.js"><xsl:text> </xsl:text></script>--> <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/bootstrap.min.js">
1047 <xsl:text> </xsl:text> </script>
1048 <script src="sites/localsite/collect/peijones/js/jQuery-File-Upload/bootstrap-image-gallery.min.js">
1049 <xsl:text> </xsl:text> </script>
1050 <link href="sites/localsite/collect/peijones/js/jQuery-File-Upload/jquery.fileupload-ui.css" rel="stylesheet"/>
1051 <link href="sites/localsite/collect/peijones/js/jQuery-File-Upload/bootstrap.min.css" rel="stylesheet"/>
1052 <link href="sites/localsite/collect/peijones/js/jQuery-File-Upload/bootstrap-responsive.min.css" rel="stylesheet"/>
1053<!--[if lt IE 7]><link rel="stylesheet" href="http://blueimp.github.com/cdn/css/bootstrap-ie6.min.css"><![endif]--> <link href="sites/localsite/collect/peijones/js/jQuery-File-Upload/cors/bootstrap-image-gallery.min.css" rel="stylesheet"/>
1054 <script type="text/javascript">
1055 <xsl:text disable-output-escaping="yes">$(window).load(function()
1056 {
1057 $('#fileupload').fileupload();
1058 $('#fileupload').bind('fileuploaddone', function (e, data)
1059 {
1060 var nzImg = document.getElementById("noZoomImage");
1061 nzImg.setAttribute("src", nzImg.getAttribute("src") + "?" + (new Date()).getTime());
1062
1063 var smallImg = document.getElementById("smallImage");
1064 smallImg.setAttribute("src", smallImg.getAttribute("src") + "?" + (new Date()).getTime());
1065
1066 var largeImg = document.getElementById("largeImage");
1067 largeImg.setAttribute("src", largeImg.getAttribute("src") + "?" + (new Date()).getTime());
1068
1069 readyImagesForZoom();
1070 });
1071 });
1072 </xsl:text> </script>
1073 <script id="template-upload" type="text/html">
1074 <xsl:text disable-output-escaping="yes">{% for (var i=0, files=o.files, l=files.length, file=files[0]; i&lt;l; file=files[++i]) { %}
1075 &lt;tr class="template-upload fade"&gt;
1076 &lt;td class="preview"&gt;&lt;span class="fade"&gt;&lt;/span&gt;&lt;/td&gt;
1077 &lt;td class="name"&gt;{%=file.name%}&lt;/td&gt;
1078 &lt;td class="size"&gt;{%=o.formatFileSize(file.size)%}&lt;/td&gt;
1079 {% if (file.error) { %}
1080 &lt;td class="error" colspan="2"&gt;&lt;span class="label label-important"&gt;Error&lt;/span&gt; {%=fileUploadErrors[file.error] || file.error%}&lt;/td&gt;
1081 {% } else if (o.files.valid &amp;&amp; !i) { %}
1082 &lt;td&gt;
1083 &lt;div class="progress progress-success progress-striped active"&gt;&lt;div class="bar" style="width:0%;"&gt;&lt;/div&gt;&lt;/div&gt;
1084 &lt;/td&gt;
1085 &lt;td class="start"&gt;{% if (!o.options.autoUpload) { %}
1086 &lt;button class="btn btn-primary"&gt;
1087 &lt;i class="icon-upload icon-white"&gt;&lt;/i&gt; Start
1088 &lt;/button&gt;
1089 {% } %}&lt;/td&gt;
1090 {% } else { %}
1091 &lt;td colspan="2"&gt;&lt;/td&gt;
1092 {% } %}
1093 &lt;td class="cancel"&gt;{% if (!i) { %}
1094 &lt;button class="btn btn-warning"&gt;
1095 &lt;i class="icon-ban-circle icon-white"&gt;&lt;/i&gt; Cancel
1096 &lt;/button&gt;
1097 {% } %}&lt;/td&gt;
1098 &lt;/tr&gt;
1099 {% } %}
1100 </xsl:text> </script>
1101 <script id="template-download" type="text/html">
1102 <xsl:text disable-output-escaping="yes">{% for (var i=0, files=o.files, l=files.length, file=files[0]; i&lt;l; file=files[++i]) { %}
1103 &lt;tr class="template-download fade"&gt;
1104 {% if (file.error) { %}
1105 &lt;td&gt;&lt;/td&gt;
1106 &lt;td class="name"&gt;{%=file.name%}&lt;/td&gt;
1107 &lt;td class="size"&gt;{%=o.formatFileSize(file.size)%}&lt;/td&gt;
1108 &lt;td class="error" colspan="2"&gt;&lt;span class="label label-important"&gt;Error&lt;/span&gt; {%=fileUploadErrors[file.error] || file.error%}&lt;/td&gt;
1109 {% } else { %}
1110 &lt;td class="preview"&gt;{% if (file.thumbnail_url) { %}
1111 &lt;a href="{%=file.url%}" title="{%=file.name%}" rel="gallery"&gt;&lt;img src="{%=file.thumbnail_url%}" style="height:100px;"/&gt;&lt;/a&gt;
1112 {% } %}&lt;/td&gt;
1113 &lt;td class="name"&gt;
1114 &lt;a href="{%=file.url%}" title="{%=file.name%}" rel="{%=file.thumbnail_url&amp;&amp;'gallery'%}"&gt;{%=file.name%}&lt;/a&gt;
1115 &lt;/td&gt;
1116 &lt;td class="size"&gt;{%=o.formatFileSize(file.size)%}&lt;/td&gt;
1117 &lt;td colspan="2"&gt;&lt;/td&gt;
1118 {% } %}
1119 &lt;/tr&gt;
1120 {% } %}
1121 </xsl:text> </script>
1122 <form action="dev" enctype="multipart/form-data" id="fileupload" method="POST">
1123 <input name="ajaxUpload" type="hidden" value="true"/>
1124 <input name="fl" type="hidden">
1125 <xsl:attribute name="value">
1126 <xsl:text>/sites/localsite/collect/</xsl:text>
1127 <xsl:value-of select="/page/pageResponse/collection/@name"/>
1128 <xsl:text>/index/assoc/</xsl:text>
1129 <gsf:metadata name="assocfilepath"/>
1130 <xsl:text>/</xsl:text>
1131 <gsf:metadata name="SourceFile"/>
1132 <xsl:text>:</xsl:text>
1133 <xsl:text>/sites/localsite/collect/</xsl:text>
1134 <xsl:value-of select="/page/pageResponse/collection/@name"/>
1135 <xsl:text>/index/assoc/</xsl:text>
1136 <gsf:metadata name="assocfilepath"/>
1137 <xsl:text>/</xsl:text>
1138 <gsf:metadata name="Screen"/>
1139 <xsl:text>:</xsl:text>
1140 <xsl:text>/sites/localsite/collect/</xsl:text>
1141 <xsl:value-of select="/page/pageResponse/collection/@name"/>
1142 <xsl:text>/index/assoc/</xsl:text>
1143 <gsf:metadata name="assocfilepath"/>
1144 <xsl:text>/</xsl:text>
1145 <gsf:metadata name="Thumb"/>
1146 </xsl:attribute>
1147 </input>
1148 <div class="row fileupload-buttonbar">
1149 <div class="span6" style="margin-left:30px;">
1150 <span class="btn btn-success fileinput-button">
1151 <span>
1152 <i class="icon-plus icon-white">
1153 <xsl:text> </xsl:text> </i>
1154Add files... </span>
1155 <input multiple="" name="files[]" type="file"/>
1156 </span>
1157 <button class="btn btn-primary start" type="submit">
1158 <i class="icon-upload icon-white">
1159 <xsl:text> </xsl:text> </i>
1160Start upload
1161 </button>
1162 <button class="btn btn-warning cancel" type="reset">
1163 <i class="icon-ban-circle icon-white">
1164 <xsl:text> </xsl:text> </i>
1165Cancel upload
1166 </button>
1167 </div>
1168 <div class="span6">
1169 <div class="progress progress-success progress-striped active fade">
1170 <div class="bar" style="width:0%;">
1171 <xsl:text> </xsl:text> </div>
1172 </div>
1173 </div>
1174 </div>
1175 <br/>
1176 <table class="table table-striped">
1177 <tbody class="files" data-target="#modal-gallery" data-toggle="modal-gallery">
1178 <xsl:text> </xsl:text> </tbody>
1179 </table>
1180 </form>
1181 </xsl:otherwise>
1182 </xsl:choose>
1183<!--</xsl:if>--> </xsl:template>
1184 </format>
1185 </display>
1186 <replaceListRef id="gs2-standard"/>
1187 <replaceListRef id="gs2-image"/>
1188 <serviceRackList>
1189 <!-- comment out the following serviceRack if you want to disable OAI for this collection -->
1190
1191 <serviceRack name="OAIPMH">
1192
1193 <ListMetadataFormats>
1194 <!--What metadata sets to support is collection specific. To support other metadata schema, simply add a metadataFormat element here.
1195 The support of unqualified Dublin Core metadata set is mandatory in the oai specification.
1196 -->
1197
1198 <metadataFormat metadataPrefix="oai_dc">
1199
1200 <metadataPrefix>oai_dc</metadataPrefix>
1201
1202 <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
1203
1204 <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
1205 <!--<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>
1206 -->
1207
1208 <mappingList>
1209 <!--
1210 The mapping is in the form: <publicly supported metadata name>,<mapped metadata name>, short as <A>,<B>
1211 The first metadata name is medatory; if there is no mapped name followed, then the first name must be used by the records and
1212 searchable in the database, otherwise it is the mapped name stored in the database. The number of mapping elements matches the
1213 number of external metadata of the records. If only one name is present, the returned metadata will use this name plus the retrieved value;
1214 if both <A>,<B> are present, the returned metadata will use <A>'s name plus <B>'s value retrieved from database.
1215
1216 **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.
1217
1218 **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.
1219 -->
1220
1221 <mapping>dc.Title,Title</mapping>
1222 <!-- 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. -->
1223
1224 </mappingList>
1225
1226 </metadataFormat>
1227
1228 </ListMetadataFormats>
1229
1230 </serviceRack>
1231
1232 </serviceRackList>
1233</CollectionConfig>
Note: See TracBrowser for help on using the repository browser.