Show
Ignore:
Timestamp:
13.01.2012 11:27:52 (8 years ago)
Author:
papitha
Message:

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

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/model-cols-dev/peijones/etc/collectionConfig.xml

    r24893 r24945  
    11<?xml version="1.0" encoding="UTF-8"?> 
    22<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="section"/><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"/><defaultIndex name="text"/><indexOption><option name="accentfold"/><option name="casefold"/><option name="stem"/></indexOption><searchType name="plain"/><searchType name="simpleform"/><searchType name="advancedform"/><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></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> 
    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 valign="top"> 
    11                     <gsf:link type="source"> 
    12                         <gsf:choose-metadata> 
    13                             <gsf:metadata name="thumbicon"/> 
    14                             <gsf:metadata name="srcicon"/> 
    15                         </gsf:choose-metadata> 
    16                     </gsf:link> 
    17                 </td> 
    18                 <td valign="top"> 
    19                     <gsf:choose-metadata> 
    20                         <gsf:metadata name="dc.Title"/> 
    21                         <gsf:metadata name="exp.Title"/> 
    22                         <gsf:metadata name="Title"/> 
    23                         <gsf:default>Untitled</gsf:default> 
    24                     </gsf:choose-metadata> 
    25                     <gsf:switch> 
    26                         <gsf:metadata name="Source"/> 
    27                         <gsf:when test="exists"> 
    28                             <br/><i>(<gsf:metadata name="Source"/>)</i> 
    29                         </gsf:when> 
    30                     </gsf:switch> 
    31                 </td> 
    32             </gsf:template> 
    33              
    34             <gsf:template match="classifierNode"> 
    35                 <td valign="top"> 
    36                     <gsf:link type="classifier"> 
    37                         <gsf:icon type="classifier"/> 
    38                     </gsf:link> 
    39                 </td> 
    40                 <td valign="top"> 
    41                     <gsf:metadata name="srclink"/> 
    42                     <gsf:choose-metadata> 
    43                         <gsf:metadata name="thumbicon"/> 
    44                         <gsf:metadata name="srcicon"/> 
    45                     </gsf:choose-metadata> 
    46                     <gsf:metadata name="/srclink"/> 
    47                 </td> 
    48                 <td valign="top"> 
    49                     <gsf:choose-metadata> 
    50                         <gsf:metadata name="dc.Title"/> 
    51                         <gsf:metadata name="exp.Title"/> 
    52                         <gsf:metadata name="Title"/> 
    53                         <gsf:default>Untitled</gsf:default> 
    54                     </gsf:choose-metadata> 
    55                     <gsf:switch> 
    56                         <gsf:metadata name="Source"/> 
    57                         <gsf:when test="exists"> 
    58                             <br/><i>(<gsf:metadata name="Source"/>)</i> 
    59                         </gsf:when> 
    60                     </gsf:switch> 
    61                 </td> 
    62             </gsf:template> 
    63              
    64             <gsf:template match="classifierNode" mode="horizontal"> 
    65                 <gsf:link type="horizontal"> 
    66                     <gsf:metadata name="Title"/> 
    67                 </gsf:link> 
    68             </gsf:template> 
    69         </format></browse><display><format> 
    70             <gsf:option name="sideBar" value="false"/> 
    71             <xsl:template name="additionalHeaderContent"> 
    72                 <!-- jQuery must be included before Annotator --> 
    73                 <script src="sites/localsite/collect/peijones/js/annotator/lib/vendor/jquery.js"><xsl:text> </xsl:text></script> 
    74  
    75                 <!-- If you're sure your users will only be using browsers modern 
     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 
    7694                     enough to have their own JSON.parse and JSON.stringify 
    7795                     implementations you can skip this --> 
    78                 <script src="sites/localsite/collect/peijones/js/annotator/lib/vendor/json2.js"><xsl:text> </xsl:text></script> 
    79  
    80                 <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator-full.min.js"><xsl:text> </xsl:text></script> 
    81                 <!-- The main Annotator script --> 
    82                 <!--<script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.min.js"><xsl:text> </xsl:text></script> --> 
    83  
    84                 <!-- Annotator's styling and images --> 
    85                 <link href="sites/localsite/collect/peijones/js/annotator/pkg/annotator.min.css" rel="stylesheet" type="text/css"/> 
    86  
    87                 <!-- The following plugins are entirely optional --> 
    88  
    89                 <!-- The Store plugin. Saves annotations to a remote backend --> 
    90                 <!-- <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.store.min.js"><xsl:text> </xsl:text></script> --> 
    91  
    92                 <!-- The Auth plugin. Allows users of Annotator to authenticate themselves 
     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 
    93110                     to the remote backend --> 
    94                 <!--<script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.auth.min.js"><xsl:text> </xsl:text></script> --> 
    95                 <!-- The Permissions plugin. See who created which annotation and create 
     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 
    96113                     annotations as a specified user --> 
    97                 <!--<script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.permissions.min.js"><xsl:text> </xsl:text></script> --> 
    98  
    99                 <!-- The Tags plugin. Edit and display tag keywords on annotations --> 
    100                 <!--<script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.tags.min.js"><xsl:text> </xsl:text></script> --> 
    101  
    102                 <!-- The Markdown plugin. Treat annotation text as Markdown --> 
    103                 <!-- <script src="sites/localsite/collect/peijones/js/annotator/lib/vendor/showdown.js"><xsl:text> </xsl:text></script> --> 
    104                 <!-- <script src="sites/localsite/collect/peijones/js/annotator/pkg/annotator.markdown.min.js"><xsl:text> </xsl:text></script> -->  
    105                  
    106                 <!-- Photo note scripts --> 
    107                 <script src="sites/localsite/collect/peijones/js/documentmaker/BrowserDetect.js" type="text/javascript"><xsl:text> </xsl:text></script> 
    108                 <script src="sites/localsite/collect/peijones/js/documentmaker/PhotoNotes-1.5.js" type="text/javascript"><xsl:text> </xsl:text></script> 
    109                 <link href="sites/localsite/collect/peijones/style/PhotoNotes-1.5.css" rel="stylesheet" type="text/css"/> 
    110                  
    111                 <!-- Zoom scripts --> 
    112                 <!--<script src="interfaces/{$interface_name}/js/jquery-1.4.2.js" type="text/javascript"><xsl:text> </xsl:text></script>--> 
    113                 <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"/> 
    114                 <script type="text/javascript"> 
    115                     <xsl:text disable-output-escaping="yes"> 
     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"> 
    116136                        _zoomEnabled = true; 
    117137                        function readyImagesForZoom()       
     
    184204                            } 
    185205                        }     
    186                     </xsl:text>     
    187                 </script> 
    188                 <script text="text/javascript"> 
    189                     <xsl:text disable-output-escaping="yes"> 
     206                    </xsl:text> 
     207        </script> 
     208        <script text="text/javascript"> 
     209          <xsl:text disable-output-escaping="yes"> 
    190210                         
    191211                        var _posCount = 0; 
     
    236256                        function saveFunction(note) 
    237257                        { 
    238                             var callback =  
    239                             { 
    240                                 success: function(response) 
    241                                 { 
    242                                     var updateURL = gs.siteMetadata.siteURL.replace("8080","9090") + gs.xsltParams.library_name + "?a=s&amp;sa=c"; 
    243                                  
    244                                     var updateCallback =  
    245                                     { 
    246                                         success: function(response){}, 
    247                                         failed: function(reponse){ alert("Failed in saveFunction() to update Greenstone server with: " + updateURL);} 
    248                                     }; 
    249                                      
    250                                      
    251                                     YAHOO.util.Connect.asyncRequest("GET", updateURL, updateCallback); 
    252                                 }, 
    253                                 failed: function(reponse){ alert("Failed in saveFunction() with note id: " + note.id)}, 
     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) } 
    254274                            }; 
    255275                             
     
    257277                            var metaposStr = (note &amp;&amp; note.id &amp;&amp; note.id &gt; 0) ? note.id - 1 : _posCount; 
    258278                             
    259                             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; 
    260                             YAHOO.util.Connect.asyncRequest("GET", saveURL, callback); 
     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); 
    261285                             
    262286                            return 1; 
     
    315339                        window.onload = function(){initNotes(); readyImagesForZoom(); initAnnotator();}; 
    316340                    </xsl:text> 
    317                 </script> 
     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                } 
    318444                 
    319                 <script text="text/javascript"> 
    320                     <xsl:text disable-output-escaping="yes"> 
     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                     
    321501                        function initAnnotator() 
    322502                        {        
     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                             
    323512                            jQuery(function ($) { 
    324513                                if (typeof $.fn.annotator !== 'function') { 
     
    358547                        } 
    359548                    </xsl:text> 
    360                 </script> 
    361             </xsl:template> 
    362              
    363             <xsl:template name="documentImage"> 
    364                 <!-- Get the photo notes for this document node --> 
    365                 <gsf:variable-struct name="photoNotes"> 
    366                     <gsf:metadata multiple="true" name="gsimg.photoNote" separator=", "/> 
    367                 </gsf:variable-struct> 
    368                  
    369                 <!-- Get details about the image for zooming --> 
    370                 <h3>    
    371                     <gsf:choose-metadata> 
    372                         <gsf:metadata name="dc.Title"/> 
    373                         <gsf:metadata name="ex.Title"/> 
    374                     </gsf:choose-metadata> 
    375                 </h3> 
    376                 <xsl:variable name="imageWidth"> 
    377                     <gsf:choose-metadata> 
    378                         <gsf:metadata name="ImageWidth"/>  
    379                         <gsf:default>-1</gsf:default>                        
    380                     </gsf:choose-metadata> 
    381                 </xsl:variable> 
    382                 <xsl:variable name="imageHeight"> 
    383                     <gsf:choose-metadata> 
    384                         <gsf:metadata name="ImageHeight"/>  
    385                         <gsf:default>-1</gsf:default>                        
    386                     </gsf:choose-metadata> 
    387                 </xsl:variable> 
    388                 <xsl:variable name="screenImageWidth"> 
    389                     <gsf:choose-metadata> 
    390                         <gsf:metadata name="ScreenWidth"/>  
    391                         <gsf:default>-1</gsf:default>                        
    392                     </gsf:choose-metadata> 
    393                 </xsl:variable> 
    394                 <xsl:variable name="screenImageHeight"> 
    395                     <gsf:choose-metadata> 
    396                         <gsf:metadata name="ScreenHeight"/>  
    397                         <gsf:default>-1</gsf:default>                        
    398                     </gsf:choose-metadata> 
    399                 </xsl:variable> 
    400                 <script type="text/javascript"> 
    401                     <xsl:text>largeImageHeight =</xsl:text><xsl:value-of select="$imageHeight"/><xsl:text>;</xsl:text> 
    402                     <xsl:text>largeImageWidth =</xsl:text><xsl:value-of select="$imageWidth"/><xsl:text>;</xsl:text> 
    403                     <xsl:text>smallImageHeight =</xsl:text><xsl:value-of select="$screenImageHeight"/><xsl:text>;</xsl:text> 
    404                     <xsl:text>smallImageWidth =</xsl:text><xsl:value-of select="$screenImageWidth"/><xsl:text>;</xsl:text> 
    405                 </script> 
    406                 <div id="noZoom" style="display:block;"> 
    407                     <img style="width: {$screenImageWidth}; height: {$screenImageHeight};"> 
    408                                     <xsl:attribute name="src"> 
    409                                         <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"/> 
    410                                     </xsl:attribute> 
    411                     </img> 
    412                         <!--         
     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          <!--       
    413606                    <gsf:metadata name="screenicon"/> 
    414607                    --> 
    415                 </div> 
    416                 <!--<xsl:if test="$imageHeight != -1">--> 
    417                     <div id="wrap" style="display:none; width: {$screenImageWidth}; height: {$screenImageHeight};"> 
    418                         <div id="small" style="width: {$screenImageWidth}; height: {$screenImageHeight};"> 
    419                         <!-- 
     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            <!-- 
    420613                            <gsf:metadata name="screenicon"/> 
    421614                            --> 
    422                             <img style="width: {$screenImageWidth}; height: {$screenImageHeight};"> 
    423                                     <xsl:attribute name="src"> 
    424                                         <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"/> 
    425                                     </xsl:attribute> 
    426                             </img>   
    427                         </div> 
    428                         <div id="mover"> 
    429                             <div id="overlay"><xsl:text> </xsl:text></div> 
    430                             <div id="large"> 
    431                                 <img style="width: {$imageWidth}; height: {$imageHeight};"> 
    432                                     <xsl:attribute name="src"> 
    433                                         <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"/> 
    434                                     </xsl:attribute> 
    435                                 </img> 
    436                             </div> 
    437                         </div> 
    438                     </div> 
    439                     <input onclick="AddNote();" style="margin-left:30px;" type="button" value="Tag Photo!"/> 
    440                 <!--</xsl:if>--> 
    441             </xsl:template> 
    442              
    443         </format></display><replaceListRef id="gs2-standard"/><replaceListRef id="gs2-image"/><serviceRackList> 
    444         <!-- comment out the following serviceRack if you want to disable OAI for this collection --> 
    445         <serviceRack name="OAIPMH"> 
    446             <ListMetadataFormats> 
    447                 <!--What metadata sets to support is collection specific. To support other metadata schema, simply add a metadataFormat element here. 
     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. 
    448638    The support of unqualified Dublin Core metadata set is mandatory in the oai specification. 
    449639    --> 
    450                 <metadataFormat metadataPrefix="oai_dc"> 
    451                     <metadataPrefix>oai_dc</metadataPrefix> 
    452                     <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema> 
    453                     <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace> 
    454                     <!--<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>               
     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>               
    455645      --> 
    456                     <mappingList> 
    457                         <!--  
     646          <mappingList> 
     647            <!--  
    458648        The mapping is in the form: <publicly supported metadata name>,<mapped metadata name>, short as <A>,<B>  
    459649        The first metadata name is medatory; if there is no mapped name followed, then the first name must be used by the records and 
     
    466656        **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. 
    467657        --> 
    468                         <mapping>dc.Title,Title</mapping> 
    469                         <!-- 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. --> 
    470                     </mappingList> 
    471                 </metadataFormat> 
    472             </ListMetadataFormats> 
    473         </serviceRack> 
    474     </serviceRackList></CollectionConfig> 
     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>