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

Revision 24945, 29.9 KB (checked in by papitha, 8 years ago)

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

  • Property svn:executable set to *
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 browser.