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

Last change on this file since 24790 was 24790, checked in by sjm84, 12 years ago

More Peijones changes

  • Property svn:executable set to *
File size: 20.6 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>
4 <metadata lang="en" name="creator"/>
5 <metadata lang="en" name="maintainer"/>
6 <metadata lang="en" name="public">true</metadata>
7 </metadataList>
8 <displayItemList>
9 <displayItem assigned="true" lang="en" name="name">Pei-Jones-Flat</displayItem>
10 </displayItemList>
11 <search type="mgpp">
12 <level name="document">
13 <displayItem lang="en" name="name">document</displayItem>
14 </level>
15 <level name="section">
16 <displayItem lang="en" name="name">section</displayItem>
17 </level>
18 <defaultLevel name="section"/>
19 <index name="text">
20 <displayItem lang="en" name="name">text</displayItem>
21 </index>
22 <index name="Title">
23 <displayItem lang="en" name="name">titles</displayItem>
24 </index>
25 <index name="Source">
26 <displayItem lang="en" name="name">filenames</displayItem>
27 </index>
28 <index name="Plugin"/>
29 <defaultIndex name="text"/>
30 <indexOption>
31 <option name="accentfold"/>
32 <option name="casefold"/>
33 <option name="stem"/>
34 </indexOption>
35 <searchType name="plain"/>
36 <searchType name="simpleform"/>
37 <searchType name="advancedform"/>
38 <format><gsf:template match="documentNode"><td valign="top"><gsf:link type="document"><gsf:icon type="document"/></gsf:link></td><td><gsf:switch><gsf:metadata name="Title" select="ancestors" separator=": "/><gsf:when test="exists"><gsf:metadata name="Title" select="ancestors" separator=": "/>:</gsf:when></gsf:switch><gsf:link type="document"><gsf:metadata name="Title"/></gsf:link></td></gsf:template> </format>
39 </search>
40 <infodb type="gdbm"/>
41 <import>
42 <pluginList>
43 <plugin name="ZIPPlugin"/>
44 <plugin name="GreenstoneXMLPlugin"/>
45 <plugin name="TextPlugin"/>
46 <plugin name="HTMLPlugin"/>
47 <plugin name="EmailPlugin"/>
48 <plugin name="PDFPlugin"/>
49 <plugin name="RTFPlugin"/>
50 <plugin name="WordPlugin"/>
51 <plugin name="PostScriptPlugin"/>
52 <plugin name="PowerPointPlugin"/>
53 <plugin name="ExcelPlugin"/>
54 <plugin name="ImagePlugin"/>
55 <plugin name="ISISPlugin"/>
56 <plugin name="NulPlugin"/>
57 <plugin name="OAIPlugin"/>
58 <plugin name="HTMLImagePlugin"/>
59 <plugin name="MetadataXMLPlugin"/>
60 <plugin name="ArchivesInfPlugin"/>
61 <plugin name="DirectoryPlugin"/>
62 </pluginList>
63 </import>
64 <browse>
65 <classifier name="List">
66 <option name="-metadata" value="dc.Title;Title"/>
67 <option name="-partition_type_within_level" value="approximate_size"/>
68 <option name="-bookshelf_type" value="never"/>
69 </classifier>
70 <classifier name="AZCompactList">
71 <option name="-metadata" value="Source"/>
72 <option name="-removesuffix" value="(?i)\\..*"/>
73 <option name="-buttonname" value="Source"/>
74 </classifier>
75 <format>
76 <gsf:template match="documentNode">
77 <td valign="top">
78 <gsf:link type="document">
79 <gsf:icon type="document"/>
80 </gsf:link>
81 </td>
82 <td valign="top">
83 <gsf:link type="source">
84 <gsf:choose-metadata>
85 <gsf:metadata name="thumbicon"/>
86 <gsf:metadata name="srcicon"/>
87 </gsf:choose-metadata>
88 </gsf:link>
89 </td>
90 <td valign="top">
91 <gsf:choose-metadata>
92 <gsf:metadata name="dc.Title"/>
93 <gsf:metadata name="exp.Title"/>
94 <gsf:metadata name="Title"/>
95 <gsf:default>Untitled</gsf:default>
96 </gsf:choose-metadata>
97 <gsf:switch>
98 <gsf:metadata name="Source"/>
99 <gsf:when test="exists">
100 <br/><i>(<gsf:metadata name="Source"/>)</i>
101 </gsf:when>
102 </gsf:switch>
103 </td>
104 </gsf:template>
105
106 <gsf:template match="classifierNode">
107 <td valign="top">
108 <gsf:link type="classifier">
109 <gsf:icon type="classifier"/>
110 </gsf:link>
111 </td>
112 <td valign="top">
113 <gsf:metadata name="srclink"/>
114 <gsf:choose-metadata>
115 <gsf:metadata name="thumbicon"/>
116 <gsf:metadata name="srcicon"/>
117 </gsf:choose-metadata>
118 <gsf:metadata name="/srclink"/>
119 </td>
120 <td valign="top">
121 <gsf:choose-metadata>
122 <gsf:metadata name="dc.Title"/>
123 <gsf:metadata name="exp.Title"/>
124 <gsf:metadata name="Title"/>
125 <gsf:default>Untitled</gsf:default>
126 </gsf:choose-metadata>
127 <gsf:switch>
128 <gsf:metadata name="Source"/>
129 <gsf:when test="exists">
130 <br/><i>(<gsf:metadata name="Source"/>)</i>
131 </gsf:when>
132 </gsf:switch>
133 </td>
134 </gsf:template>
135
136 <gsf:template match="classifierNode" mode="horizontal">
137 <gsf:link type="horizontal">
138 <gsf:metadata name="Title"/>
139 </gsf:link>
140 </gsf:template>
141 </format>
142 </browse>
143 <display>
144 <format>
145 <gsf:option name="sideBar" value="false"/>
146 <xsl:template name="additionalHeaderContent">
147 <!-- jQuery must be included before Annotator -->
148 <script src="sites/localsite/collect/peijones/js/annotator/lib/vendor/jquery.js"><xsl:text> </xsl:text></script>
149
150 <!-- If you're sure your users will only be using browsers modern
151 enough to have their own JSON.parse and JSON.stringify
152 implementations you can skip this -->
153 <script src="sites/localsite/collect/peijones/js/annotator/lib/vendor/json2.js"><xsl:text> </xsl:text></script>
154
155 <!-- The main Annotator script -->
156 <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.min.js"><xsl:text> </xsl:text></script>
157
158 <!-- Annotator's styling and images -->
159 <link rel="stylesheet" type="text/css" href="sites/localsite/collect/peijones/js/annotator/pkg/annotator.min.css"/>
160
161 <!-- The following plugins are entirely optional -->
162
163 <!-- The Store plugin. Saves annotations to a remote backend -->
164 <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.store.min.js"><xsl:text> </xsl:text></script>
165
166 <!-- The Auth plugin. Allows users of Annotator to authenticate themselves
167 to the remote backend -->
168 <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.auth.min.js"><xsl:text> </xsl:text></script>
169
170 <!-- The Permissions plugin. See who created which annotation and create
171 annotations as a specified user -->
172 <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.permissions.min.js"><xsl:text> </xsl:text></script>
173
174 <!-- The Tags plugin. Edit and display tag keywords on annotations -->
175 <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.tags.min.js"><xsl:text> </xsl:text></script>
176
177 <!-- The Markdown plugin. Treat annotation text as Markdown -->
178 <script src="sites/localsite/collect/peijones/js/annotator/lib/vendor/showdown.js"><xsl:text> </xsl:text></script>
179 <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.markdown.min.js"><xsl:text> </xsl:text></script>
180
181 <!-- Photo note scripts -->
182 <script type="text/javascript" src="sites/localsite/collect/peijones/js/documentmaker/BrowserDetect.js"><xsl:text> </xsl:text></script>
183 <script type="text/javascript" src="sites/localsite/collect/peijones/js/documentmaker/PhotoNotes-1.5.js"><xsl:text> </xsl:text></script>
184 <link rel="stylesheet" type="text/css" href="sites/localsite/collect/peijones/style/PhotoNotes-1.5.css"/>
185
186 <!-- Zoom scripts -->
187 <!--<script src="interfaces/{$interface_name}/js/jquery-1.4.2.js" type="text/javascript"><xsl:text> </xsl:text></script>-->
188 <script src="sites/localsite/collect/peijones/js/documentmaker/zoomer.jquery.js" type="text/javascript"><xsl:text> </xsl:text></script> <link href="sites/localsite/collect/peijones/style/style.css" rel="stylesheet" type="text/css"/>
189 <script type="text/javascript">
190 <xsl:text disable-output-escaping="yes">
191 _zoomEnabled = true;
192 function readyImagesForZoom()
193 {
194 var noZoom = document.getElementById("noZoom");
195 var wrap = document.getElementById("wrap");
196 if(!noZoom || !wrap)
197 {
198 return;
199 }
200 var smallImageDiv = document.getElementById("small");
201 var smallImage = smallImageDiv.getElementsByTagName("img")[0];
202 smallImageDiv.style.width = smallImageWidth + "px";
203 smallImageDiv.style.height = smallImageHeight + "px";
204 var multiplier = largeImageHeight / smallImageHeight;
205 $("#wrap").anythingZoomer({
206 expansionSize:50,
207 speedMultiplier:multiplier
208 });
209
210 noZoom.onclick = function(){addZoom();}
211 document.getElementById("overlay").onclick = function(){removeZoom();}
212
213 removeZoom();
214 }
215 function addZoom()
216 {
217 if(!_zoomEnabled)
218 {
219 return;
220 }
221
222 var wrapper = document.getElementById("wrap");
223 var noZoom = document.getElementById("noZoom");
224
225 if(!noZoom || !wrapper)
226 {
227 return;
228 }
229
230 noZoom.style.display = "none";
231 wrapper.style.display = "block";
232 var option = document.getElementById("zoomOption");
233 if(option)
234 {
235 option.setAttribute("onclick", "removeZoom();");
236 }
237 }
238 function removeZoom()
239 {
240 if(!_zoomEnabled)
241 {
242 return;
243 }
244
245 var wrapper = document.getElementById("wrap");
246 var noZoom = document.getElementById("noZoom");
247
248 if(!noZoom || !wrapper)
249 {
250 return;
251 }
252
253 wrapper.style.display = "none";
254 noZoom.style.display = "block";
255 var option = document.getElementById("zoomOption");
256 if(option)
257 {
258 option.setAttribute("onclick", "addZoom();");
259 }
260 }
261 </xsl:text>
262 </script>
263 <script text="text/javascript">
264 <xsl:text disable-output-escaping="yes">
265
266 var _posCount = 0;
267 var _notes;
268 function initNotes()
269 {
270 /* create the Photo Note Container */
271 _notes = new PhotoNoteContainer(document.getElementById("noZoom"));
272 getNotes();
273 }
274
275 function deleteFunction(note)
276 {
277 var callback =
278 {
279 success: function(response)
280 {
281 var updateURL = gs.siteMetadata.siteURL.replace("8080","9090") + gs.xsltParams.library_name + "?a=s&amp;sa=c";
282
283 var updateCallback =
284 {
285 success: function(response){},
286 failed: function(){alert("Failed in deleteFunction() to update Greenstone server with: " + updateURL);}
287 };
288
289
290 YAHOO.util.Connect.asyncRequest("GET", updateURL, updateCallback);
291 },
292 failed: function(){ alert("Failed in deleteFunction() with note id: " + note.id)},
293 };
294
295 var status = true;
296
297 if (note &amp;&amp; note.id &amp;&amp; note.id &gt; 0) {
298 var metaposStr = note.id - 1;
299
300 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;
301 YAHOO.util.Connect.asyncRequest("GET", url, callback);
302 }
303 else {
304 alert("Failed to find valid note data to delete");
305 status = false;
306 }
307
308 return status;
309 }
310
311 function saveFunction(note)
312 {
313 var callback =
314 {
315 success: function(response)
316 {
317 var updateURL = gs.siteMetadata.siteURL.replace("8080","9090") + gs.xsltParams.library_name + "?a=s&amp;sa=c";
318
319 var updateCallback =
320 {
321 success: function(response){},
322 failed: function(reponse){ alert("Failed in saveFunction() to update Greenstone server with: " + updateURL);}
323 };
324
325
326 YAHOO.util.Connect.asyncRequest("GET", updateURL, updateCallback);
327 },
328 failed: function(reponse){ alert("Failed in saveFunction() with note id: " + note.id)},
329 };
330
331 var jsonVal = '{"caption":"' + note.text + '", "area":{"x":' + note.rect.left + ', "y":' + note.rect.top + ', "width":' + note.rect.width + ', "height":' + note.rect.height + '}}';
332 var metaposStr = (note &amp;&amp; note.id &amp;&amp; note.id &gt; 0) ? note.id - 1 : _posCount;
333
334 var saveURL = 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;
335 YAHOO.util.Connect.asyncRequest("GET", saveURL, callback);
336
337 return 1;
338 }
339
340 function getNotes()
341 {
342 if(gs.variables.photoNotes == null || gs.variables.photoNotes == undefined)
343 {
344 console.log("No photo notes");
345 return;
346 }
347
348 for(var i = 0; i &lt; gs.variables.photoNotes.length; i++)
349 {
350 var note = gs.variables.photoNotes[i];
351 if(!note)
352 {
353 continue;
354 }
355 var newNote = new PhotoNote(note.caption, i+1, new PhotoNoteRect(note.area.x,note.area.y,note.area.width,note.area.height));
356 newNote.onsave = saveFunction;
357 newNote.ondelete = deleteFunction;
358 _notes.AddNote(newNote);
359 _posCount++;
360 }
361
362 addNoteOverAndOutHandlers();
363 }
364
365 function AddNote()
366 {
367 var newNote = new PhotoNote('Add note text here...',_posCount+1,new PhotoNoteRect(10,10,50,50));
368 newNote.onsave = saveFunction;
369 newNote.ondelete = deleteFunction;
370 _notes.AddNote(newNote);
371 _posCount++;
372
373 addNoteOverAndOutHandlers();
374 newNote.Select();
375 }
376
377 function addNoteOverAndOutHandlers()
378 {
379 var divs = document.getElementsByTagName("DIV");
380 for(var i = 0; i &lt; divs.length; i++)
381 {
382 if(divs[i].getAttribute("class") &amp;&amp; divs[i].getAttribute("class").search("fn-area") != -1)
383 {
384 divs[i].onmouseover = function(){_zoomEnabled = false;}
385 divs[i].onmouseout = function(){_zoomEnabled = true;}
386 }
387 }
388 }
389
390 window.onload = function(){initNotes(); readyImagesForZoom(); initAnnotator();};
391 </xsl:text>
392 </script>
393 <script text="text/javascript">
394 <xsl:text disable-output-escaping="yes">
395 function initAnnotator()
396 {
397 jQuery(function ($) {
398 //alert(typeof $.fn.annotator);
399 if (typeof $.fn.annotator !== 'function') {
400 alert("Ooops! it looks like you haven't built the Annotator concatenation file. " +
401 "Either download a tagged release from GitHub, or modify the Cakefile to point " +
402 "at your copy of the YUI compressor and run `cake package`.");
403 } else {
404 // This is the important bit: how to create the annotator and add
405 // plugins
406 $('#gs-document-text').annotator()
407 .annotator('addPlugin', 'Permissions')
408 .annotator('addPlugin', 'Markdown')
409 //.annotator('addPlugin', 'Auth')
410 .annotator('addPlugin', 'Tags');
411
412 $('#gs-document-text').data('annotator').plugins['Permissions'].setUser("");
413 }
414 });
415 }
416 </xsl:text>
417 </script>
418 </xsl:template>
419
420 <xsl:template name="documentImage">
421 <!-- Get the photo notes for this document node -->
422 <gsf:variable-struct name="photoNotes">
423 <gsf:metadata multiple="true" name="gsimg.photoNote" separator=", "/>
424 </gsf:variable-struct>
425
426 <!-- Get details about the image for zooming -->
427 <h3>
428 <gsf:choose-metadata>
429 <gsf:metadata name="dc.Title"/>
430 <gsf:metadata name="ex.Title"/>
431 </gsf:choose-metadata>
432 </h3>
433 <xsl:variable name="imageWidth">
434 <gsf:choose-metadata>
435 <gsf:metadata name="ImageWidth"/>
436 <gsf:default>-1</gsf:default>
437 </gsf:choose-metadata>
438 </xsl:variable>
439 <xsl:variable name="imageHeight">
440 <gsf:choose-metadata>
441 <gsf:metadata name="ImageHeight"/>
442 <gsf:default>-1</gsf:default>
443 </gsf:choose-metadata>
444 </xsl:variable>
445 <xsl:variable name="screenImageWidth">
446 <gsf:choose-metadata>
447 <gsf:metadata name="ScreenWidth"/>
448 <gsf:default>-1</gsf:default>
449 </gsf:choose-metadata>
450 </xsl:variable>
451 <xsl:variable name="screenImageHeight">
452 <gsf:choose-metadata>
453 <gsf:metadata name="ScreenHeight"/>
454 <gsf:default>-1</gsf:default>
455 </gsf:choose-metadata>
456 </xsl:variable>
457 <script type="text/javascript">
458 <xsl:text>largeImageHeight =</xsl:text><xsl:value-of select="$imageHeight"/><xsl:text>;</xsl:text>
459 <xsl:text>largeImageWidth =</xsl:text><xsl:value-of select="$imageWidth"/><xsl:text>;</xsl:text>
460 <xsl:text>smallImageHeight =</xsl:text><xsl:value-of select="$screenImageHeight"/><xsl:text>;</xsl:text>
461 <xsl:text>smallImageWidth =</xsl:text><xsl:value-of select="$screenImageWidth"/><xsl:text>;</xsl:text>
462 </script>
463 <div id="noZoom" style="display:block;">
464 <gsf:metadata name="screenicon"/>
465 </div>
466 <xsl:if test="$imageHeight != -1">
467 <div id="wrap" style="display:none; width: {$screenImageWidth}; height: {$screenImageHeight};">
468 <div id="small" style="width: {$screenImageWidth}; height: {$screenImageHeight};"><gsf:metadata name="screenicon"/></div>
469 <div id="mover">
470 <div id="overlay"><xsl:text> </xsl:text></div>
471 <div id="large">
472 <img style="width: {$imageWidth}; height: {$imageHeight};">
473 <xsl:attribute name="src">
474 <xsl:value-of disable-output-escaping="yes" select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/>/index/assoc/<gsf:metadata name="assocfilepath"/>/<gsf:metadata name="srclinkFile"/>
475 </xsl:attribute>
476 </img>
477 </div>
478 </div>
479 </div>
480 <input type="button" value="Tag Photo!" style="margin-left:30px;" onclick="AddNote();" />
481 </xsl:if>
482 </xsl:template>
483
484 </format>
485 </display>
486 <replaceListRef id="gs2-standard"/>
487 <replaceListRef id="gs2-image"/>
488 <serviceRackList>
489 <!-- comment out the following serviceRack if you want to disable OAI for this collection -->
490 <serviceRack name="OAIPMH">
491 <ListMetadataFormats>
492 <!--What metadata sets to support is collection specific. To support other metadata schema, simply add a metadataFormat element here.
493 The support of unqualified Dublin Core metadata set is mandatory in the oai specification.
494 -->
495 <metadataFormat metadataPrefix="oai_dc">
496 <metadataPrefix>oai_dc</metadataPrefix>
497 <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
498 <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
499 <!--<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>
500 -->
501 <mappingList>
502 <!--
503 The mapping is in the form: <publicly supported metadata name>,<mapped metadata name>, short as <A>,<B>
504 The first metadata name is medatory; if there is no mapped name followed, then the first name must be used by the records and
505 searchable in the database, otherwise it is the mapped name stored in the database. The number of mapping elements matches the
506 number of external metadata of the records. If only one name is present, the returned metadata will use this name plus the retrieved value;
507 if both <A>,<B> are present, the returned metadata will use <A>'s name plus <B>'s value retrieved from database.
508
509 **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.
510
511 **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.
512 -->
513 <mapping>dc.Title,Title</mapping>
514 <!-- 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. -->
515 </mappingList>
516 </metadataFormat>
517 </ListMetadataFormats>
518 </serviceRack>
519 </serviceRackList>
520</CollectionConfig>
Note: See TracBrowser for help on using the repository browser.