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

Revision 24963, 32.7 KB (checked in by sjm84, 8 years ago)

Added the ability to replace images (only replaces the original image at the moment (not the screen or thumbnail images))

  • 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 status = true;
223                           
224                            if (note &amp;&amp; note.id &amp;&amp; note.id &gt; 0) {
225                                var metaposStr =  note.id - 1;
226                               
227                                var jsonVal = '{"caption":"' + note.text + '", "area":{"x":' + note.rect.left + ', "y":' + note.rect.top + ', "width":' + note.rect.width + ', "height":' + note.rect.height + '}}';
228                           
229                                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;
230                                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;
231                                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;
232                               
233                                var indexCallback =
234                                {
235                                    success: function(response)
236                                    {
237                                        for(var i = 0; i &lt; _notes.length; i++)
238                                        {
239                                            var currentNote = _notes[i];
240                                            if(currentNote.id &gt; note.id)
241                                            {
242                                                currentNote.id--;
243                                            }
244                                        }
245                                        _posCount--;
246                                    },
247                                    failed: function(){alert("Failed to delete index metadata of note with id: " + note.id);},
248                                };
249                               
250                                var archiveCallback =
251                                {
252                                    success: function(){buildFunction(gs.cgiParams.c);},
253                                    failed: function(){alert("Failed to delete archive metadata of note with id: " + note.id);}
254                                }
255                               
256                                var importCallback =
257                                {
258                                    success: function(){},
259                                    failed: function(){alert("Failed to delete import metadata of note with id: " + note.id);}
260                                }
261                               
262                                YAHOO.util.Connect.asyncRequest("GET", removeFromIndexURL, indexCallback);
263                                YAHOO.util.Connect.asyncRequest("GET", removeFromArchivesURL, archiveCallback);
264                                YAHOO.util.Connect.asyncRequest("GET", removeFromImportURL, importCallback);
265                            }
266                            else {
267                                alert("Failed to find valid note data to delete");
268                                status = false;
269                            }
270                           
271                            return status;
272                        }
273                       
274                        function saveFunction(note)
275                        {
276                            var saveIndexCallback =
277                            {
278                                success: function(response){},
279                                failed: function(reponse){ alert("Failed to save index metadata of note with id: " + note.id)},
280                            };
281                           
282                            var saveArchivesCallback =
283                            {
284                                success: function(response){buildFunction(gs.cgiParams.c);},
285                                failed: function(response){ alert("Failed in save import metadata of note with id: " + note.id) }
286                            };
287                           
288                            var saveImportCallback =
289                            {
290                                success: function(response){},
291                                failed: function(response){ alert("Failed in save import metadata of note with id: " + note.id) }
292                            };
293                           
294                            var jsonVal = '{"caption":"' + note.text + '", "area":{"x":' + note.rect.left + ', "y":' + note.rect.top + ', "width":' + note.rect.width + ', "height":' + note.rect.height + '}}';
295                            var metaposStr = (note &amp;&amp; note.id &amp;&amp; note.id &gt; 0) ? note.id - 1 : _posCount;
296                           
297                            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;metavalue=" + jsonVal + "&amp;metapos=" + metaposStr;
298                            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;metavalue=" + jsonVal + "&amp;metapos=" + metaposStr;
299                            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;metavalue=" + jsonVal + "&amp;metapos=" + metaposStr;
300                            YAHOO.util.Connect.asyncRequest("GET", saveIndexURL, saveIndexCallback);
301                            YAHOO.util.Connect.asyncRequest("GET", saveArchivesURL, saveArchivesCallback);
302                            YAHOO.util.Connect.asyncRequest("GET", saveImportURL, saveImportCallback);
303                           
304                            return 1;
305                        }               
306                       
307                        function getNotes()
308                        {
309                            if(gs.variables.photoNotes == null || gs.variables.photoNotes == undefined)
310                            {
311                                console.log("No photo notes");
312                                return;
313                            }
314                           
315                            for(var i = 0; i &lt; gs.variables.photoNotes.length; i++)
316                            {
317                                var note = gs.variables.photoNotes[i];
318                                if(!note)
319                                {
320                                    continue;
321                                }
322                                var newNote = new PhotoNote(note.caption, i+1, new PhotoNoteRect(note.area.x,note.area.y,note.area.width,note.area.height));
323                                newNote.onsave = saveFunction;
324                                newNote.ondelete = deleteFunction;
325                                _notes.AddNote(newNote);
326                                _posCount++;
327                            }
328                           
329                            addNoteOverAndOutHandlers();
330                        }
331                       
332                        function AddNote()
333                        {
334                            var newNote = new PhotoNote('Add note text here...',_posCount+1,new PhotoNoteRect(10,10,50,50));
335                            newNote.onsave = saveFunction;
336                            newNote.ondelete = deleteFunction;
337                            _notes.AddNote(newNote);
338                            _posCount++;
339                           
340                            addNoteOverAndOutHandlers();
341                            newNote.Select();
342                        }
343                       
344                        function addNoteOverAndOutHandlers()
345                        {
346                            var divs = document.getElementsByTagName("DIV");
347                            for(var i = 0; i &lt; divs.length; i++)
348                            {
349                                if(divs[i].getAttribute("class") &amp;&amp; divs[i].getAttribute("class").search("fn-area") != -1)
350                                {
351                                    divs[i].onmouseover = function(){_zoomEnabled = false;}
352                                    divs[i].onmouseout = function(){_zoomEnabled = true;}
353                                }
354                            }
355                        }
356                       
357                        window.onload = function(){initNotes(); readyImagesForZoom(); initAnnotator();};
358                    </xsl:text>
359        </script>
360        <script text="text/javascript">
361            <xsl:text disable-output-escaping="yes">
362           
363            function checkLoop(pid, serverFunction, callback)
364            {
365                var startLoop = function()
366                {
367                    var loopCallback =
368                    {
369                        success:function(response)
370                        {
371                            var checkText = response.responseText;
372                            if(checkText == null || checkText == "")
373                            {
374                                console.log("There was an error getting the XML to check the status of " + serverFunction);
375                            }
376                            else
377                            {
378                                var checkCodeStart = checkText.indexOf("code=\"") + 6;
379                                var checkCodeEnd = checkText.indexOf("\"", checkCodeStart);
380                                var code = checkText.substring(checkCodeStart, checkCodeEnd);
381                               
382                                if(code == 11 || code == 1) //11 is COMPLETED, 1 is success
383                                {
384                                    callback();
385                                }
386                                else if(code == 12 || code == 3) //12 is HALTED, 3 is ERROR
387                                {
388                                    console.log("There was an error on the server, could not check status of " + serverFunction);
389                                }
390                                else
391                                {
392                                    setTimeout(startLoop, 1000);
393                                }
394                            }
395                        },
396                        failed:function()
397                        {
398                            console.log("There was a problem checking the status of " + serverFunction)
399                        }
400                    }
401                    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);
402                }
403                startLoop();
404            }
405       
406            function buildFunction(collection)
407            {
408                var buildCallback =
409                {
410                    success:function(response)
411                    {
412                        var buildText = response.responseText;
413                        if(buildText == null || buildText == "")
414                        {
415                            console.log("There was an error getting the xml response from the building request");
416                        }
417                        else
418                        {
419                            var buildPIDStart = buildText.indexOf("pid=\"") + 5;
420                            var buildPIDEnd = buildText.indexOf("\"", buildPIDStart);
421                            var buildPID = buildText.substring(buildPIDStart, buildPIDEnd);
422                           
423                            checkLoop(buildPID, "BuildCollection", function()
424                            {
425                                var activateCallback =
426                                {
427                                    success: function(response)
428                                    {
429                                        var activateText = response.responseText;
430                                        if(activateText == null || activateText == "")
431                                        {
432                                            console.log("There was an error getting the xml response from the activating request");
433                                        }
434                                        else
435                                        {
436                                            var activatePIDStart = activateText.indexOf("pid=\"") + 5;
437                                            var activatePIDEnd = activateText.indexOf("\"", activatePIDStart);
438                                            var activatePID = activateText.substring(activatePIDStart, activatePIDEnd);
439                                           
440                                            checkLoop(activatePID, "ActivateCollection", function()
441                                            {
442                                                var updateCallback =
443                                                {
444                                                    success: function(response){},
445                                                    failed: function(reponse){ alert("Failed in saveFunction() to re-read config files");}
446                                                };
447                                                YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=s&amp;sa=c", updateCallback);
448                                            });
449                                        }
450                                    },
451                                    failed: function(response)
452                                    {
453                                        console.log("Failed to get response from activate collection request");
454                                    }
455                                }
456                                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);
457                            });
458                        }
459                    },
460                    failed: function(){console.log("Failed to get build collection response")}
461                }
462               
463                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);
464            }
465           
466            function saveAndBuildCollection(col)
467            {           
468                for(var j = 0; j &lt; gs.toDeleteArray.keys.length; j++)
469                {
470                    var current = gs.toDeleteArray[gs.toDeleteArray.keys[j]];
471                    if(current == null){continue;}
472                    var metaToDelete = ["user", "text", "tags"];
473                    for(var l = 0; l &lt; metaToDelete.length; l++)
474                    {
475                        var deleteArchivesURL = "cgi-bin/metadata-server.pl?\
476                            a=remove-archives-metadata&amp;\
477                            c=" + gs.cgiParams.c + "&amp;\
478                            site=localsite&amp;\
479                            d=" + gs.cgiParams.d + "&amp;\
480                            metaname=gstext." + metaToDelete[l] + "&amp;\
481                            metavalue=" + ((l == 0) ? (current.user.name) : (current[metaToDelete[l]]));
482                           
483                        var deleteIndexURL = "cgi-bin/metadata-server.pl?\
484                            a=remove-metadata&amp;\
485                            c=" + gs.cgiParams.c + "&amp;\
486                            site=localsite&amp;\
487                            d=" + gs.cgiParams.d + "&amp;\
488                            metaname=gstext." + metaToDelete[l] + "&amp;\
489                            metavalue=" + ((l == 0) ? (current.user.name) : (current[metaToDelete[l]]));
490                           
491                        var deleteImportURL = "cgi-bin/metadata-server.pl?\
492                            a=remove-import-metadata&amp;\
493                            c=" + gs.cgiParams.c + "&amp;\
494                            site=localsite&amp;\
495                            d=" + gs.cgiParams.d + "&amp;\
496                            metaname=gstext." + metaToDelete[l] + "&amp;\
497                            metavalue=" + ((l == 0) ? (current.user.name) : (current[metaToDelete[l]]));
498                        var deleteArchivesCallback =
499                        {
500                            success:function(){},
501                            failed: function(){alert("Failed to save text annotations archives metadata");}
502                        }
503                        YAHOO.util.Connect.asyncRequest("GET", deleteArchivesURL, deleteArchivesCallback);
504
505                        var deleteIndexCallback =
506                        {
507                            success:function(){},
508                            failed: function(){alert("Failed to save text annotations index metadata");}
509                        }
510                        YAHOO.util.Connect.asyncRequest("GET", deleteIndexURL, deleteIndexCallback);
511
512                        var deleteImportCallback =
513                        {
514                            success:function(){},
515                            failed: function(){alert("Failed to save text annotations import metadata");}
516                        }
517                        YAHOO.util.Connect.asyncRequest("GET", deleteImportURL, deleteImportCallback);
518                    }
519                }
520                gs.toDeleteArray = new Array();
521                gs.toDeleteArray.keys = new Array();
522               
523                if(gs.annotationArray.keys.length > 0)
524                {
525                    var json = "[";
526                    for(var i = 0; i &lt; gs.annotationArray.keys.length; i++)
527                    {
528                        var current = gs.annotationArray[gs.annotationArray.keys[i]];
529                        if(current == null){continue;}                 
530                        var metaToAdd = ["user", "text", "tags"];
531                       
532                        for(var j = 0; j &lt; metaToAdd.length; j++)
533                        {
534                            if(metaToAdd[j] == "user")
535                            {
536                                json += '{"docid":"' + gs.cgiParams.d + '", "metaname":"gstext.' + metaToAdd[j] + '", "metavalue":"' + current.user.name + '"}';
537                            }
538                            else
539                            {
540                                json += '{"docid":"' + gs.cgiParams.d + '", "metaname":"gstext.' + metaToAdd[j] + '", "metavalue":"' + current[metaToAdd[j]] + '"}';
541                            }
542
543                            if(j != (metaToAdd.length - 1) || i != (gs.annotationArray.keys.length - 1))
544                            {
545                                json += ',';
546                            }
547                        }
548                    }
549                    json += "]";
550
551                    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;
552                    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;
553                    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;
554
555                    var saveArchivesCallback =
556                    {
557                        success:function(){console.log("Away to build"); buildFunction(gs.cgiParams.c);},
558                        failed: function(){alert("Failed to save text annotations index metadata");}
559                    }
560                    YAHOO.util.Connect.asyncRequest("GET", saveArchivesURL, saveArchivesCallback);
561
562                    var saveIndexCallback =
563                    {
564                        success:function(){},
565                        failed: function(){alert("Failed to save text annotations import metadata");}
566                    }
567                    YAHOO.util.Connect.asyncRequest("GET", saveIndexURL, saveIndexCallback);
568
569                    var saveImportCallback =
570                    {
571                        success:function(){},
572                        failed: function(){alert("Failed to save text annotations import metadata");}
573                    }
574                    YAHOO.util.Connect.asyncRequest("GET", saveImportURL, saveImportCallback);
575                }
576               
577                gs.annotationArray = new Array();
578                gs.annotationArray.keys = new Array();
579            }
580                   
581            function initAnnotator()
582            {       
583                gs.annotationArray = new Array();
584                gs.annotationArray.keys = new Array();
585               
586                gs.toDeleteArray = new Array();
587                gs.toDeleteArray.keys = new Array();
588               
589                var elem = document.getElementById("gs-document-text");
590                elem.innerHTML = '&lt;button id="saveButton"&gt;Save annotations&lt;/button&gt;&lt;br/&gt;' + elem.innerHTML;
591               
592                var button = document.getElementById("saveButton");
593                button.onclick = function(){saveAndBuildCollection(gs.cgiParams.c);};
594               
595                jQuery(function ($) {
596                    if (typeof $.fn.annotator !== 'function') {
597                        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`.");
598                    } else {
599                        jQuery(function ($) {
600                            // Include AnnotateIt credentials to load the store plugin.
601                            $('#gs-document-text').annotator().annotator('setupPlugins', {
602                                userId:    'papitha',
603                                userName:  'Papitha',
604                                accountId: '39fc339cf058bd22176771b3e33c5dac',
605                                authToken: '852b7fc25396d2aedf9aeb44dd58518faa679dbf027892164bfb81900bd09741', 
606                            }, {
607                                Store:
608                                {
609                                    prefix: 'http://localhost:5000',
610                                    annotationData: {'uri':gs.cgiParams.c + "-" + gs.cgiParams.d},
611                                    loadFromSearch: {'uri':gs.cgiParams.c + "-" + gs.cgiParams.d}
612                                }
613                            });
614                        });
615                    }
616                });
617            }
618        </xsl:text>
619        </script>
620    </xsl:template>
621    <xsl:template name="documentImage">
622        <!-- Get the photo notes for this document node -->
623        <gsf:variable-struct name="photoNotes">
624            <gsf:metadata multiple="true" name="gsimg.photoNote" separator=", "/>
625        </gsf:variable-struct>
626        <!-- Get details about the image for zooming -->
627        <h3>
628            <gsf:choose-metadata>
629                <gsf:metadata name="dc.Title"/>
630                <gsf:metadata name="ex.Title"/>
631            </gsf:choose-metadata>
632        </h3>
633        <xsl:variable name="imageWidth">
634            <gsf:choose-metadata>
635                <gsf:metadata name="ImageWidth"/>
636                <gsf:default>-1</gsf:default>
637            </gsf:choose-metadata>
638        </xsl:variable>
639        <xsl:variable name="imageHeight">
640            <gsf:choose-metadata>
641                <gsf:metadata name="ImageHeight"/>
642                <gsf:default>-1</gsf:default>
643            </gsf:choose-metadata>
644        </xsl:variable>
645        <xsl:variable name="screenImageWidth">
646            <gsf:choose-metadata>
647                <gsf:metadata name="ScreenWidth"/>
648                <gsf:default>-1</gsf:default>
649            </gsf:choose-metadata>
650        </xsl:variable>
651        <xsl:variable name="screenImageHeight">
652            <gsf:choose-metadata>
653                <gsf:metadata name="ScreenHeight"/>
654                <gsf:default>-1</gsf:default>
655            </gsf:choose-metadata>
656        </xsl:variable>
657        <script type="text/javascript">
658            <xsl:text>largeImageHeight =</xsl:text>
659            <xsl:value-of select="$imageHeight"/>
660            <xsl:text>;</xsl:text>
661            <xsl:text>largeImageWidth =</xsl:text>
662            <xsl:value-of select="$imageWidth"/>
663            <xsl:text>;</xsl:text>
664            <xsl:text>smallImageHeight =</xsl:text>
665            <xsl:value-of select="$screenImageHeight"/>
666            <xsl:text>;</xsl:text>
667            <xsl:text>smallImageWidth =</xsl:text>
668            <xsl:value-of select="$screenImageWidth"/>
669            <xsl:text>;</xsl:text>
670        </script>
671        <div id="noZoom" style="display:block;">
672            <img style="width: {$screenImageWidth}; height: {$screenImageHeight};">
673                <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>
674            </img>
675            <!--       
676            <gsf:metadata name="screenicon"/>
677            -->
678        </div>
679        <!--<xsl:if test="$imageHeight != -1">-->
680        <div id="wrap" style="display:none; width: {$screenImageWidth}; height: {$screenImageHeight};">
681            <div id="small" style="width: {$screenImageWidth}; height: {$screenImageHeight};">
682                <!--
683                <gsf:metadata name="screenicon"/>
684                -->
685                <img style="width: {$screenImageWidth}; height: {$screenImageHeight};">
686                    <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>
687                </img>
688            </div>
689            <div id="mover">
690                <div id="overlay">
691                    <xsl:text> </xsl:text>
692                </div>
693                <div id="large">
694                    <img style="width: {$imageWidth}; height: {$imageHeight};">
695                        <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>
696                    </img>
697                </div>
698            </div>
699        </div>
700        <input onclick="AddNote();" style="margin-left:30px;" type="button" value="Tag Photo!"/>   
701       
702        <form action="dev" enctype="multipart/form-data" method="post">
703            <input type="hidden" name="fl">
704                <xsl:attribute name="value">
705                    <xsl:text>/sites/localsite/collect/</xsl:text>
706                    <xsl:value-of select="/page/pageResponse/collection/@name"/>
707                    <xsl:text>/index/assoc/</xsl:text>
708                    <gsf:metadata name="assocfilepath"/>
709                    <xsl:text>/</xsl:text>
710                    <gsf:metadata name="SourceFile"/>
711                </xsl:attribute>
712            </input>
713
714            <div>
715                Upload replacement file:<br/>
716                <input type="file" name="datafile" size="40"/><br/>
717                <input type="submit" value="Send"/>
718            </div>
719        </form>
720
721        <!--</xsl:if>-->
722      </xsl:template>
723    </format></display><replaceListRef id="gs2-standard"/><replaceListRef id="gs2-image"/><serviceRackList>
724    <!-- comment out the following serviceRack if you want to disable OAI for this collection -->
725    <serviceRack name="OAIPMH">
726      <ListMetadataFormats>
727        <!--What metadata sets to support is collection specific. To support other metadata schema, simply add a metadataFormat element here.
728    The support of unqualified Dublin Core metadata set is mandatory in the oai specification.
729    -->
730        <metadataFormat metadataPrefix="oai_dc">
731          <metadataPrefix>oai_dc</metadataPrefix>
732          <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
733          <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
734          <!--<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>             
735      -->
736          <mappingList>
737            <!--
738        The mapping is in the form: <publicly supported metadata name>,<mapped metadata name>, short as <A>,<B>
739        The first metadata name is medatory; if there is no mapped name followed, then the first name must be used by the records and
740        searchable in the database, otherwise it is the mapped name stored in the database. The number of mapping elements matches the
741        number of external metadata of the records. If only one name is present, the returned metadata will use this name plus the retrieved value;
742        if both <A>,<B> are present, the returned metadata will use <A>'s name plus <B>'s value retrieved from database.
743       
744        **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.
745       
746        **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.
747        -->
748            <mapping>dc.Title,Title</mapping>
749            <!-- 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. -->
750          </mappingList>
751        </metadataFormat>
752      </ListMetadataFormats>
753    </serviceRack>
754  </serviceRackList></CollectionConfig>
Note: See TracBrowser for help on using the browser.