Changeset 36858


Ignore:
Timestamp:
2022-10-22T10:10:41+13:00 (18 months ago)
Author:
davidb
Message:

Changes as the result of rolling out a fresh install

Location:
gs3-installations/mars/trunk/sites/mars
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • gs3-installations/mars/trunk/sites/mars/README.txt

    r35220 r36858  
    7272    Note: there is no need to build this collection
    7373
    74 5. Generate the Arousal-Valence prediction values for the 'amc-essential' collection
     745. Generate the Arousal-Valence prediction values for the 'amc-essentia' collection
    7575
    7676   At the 'mars site' level:
  • gs3-installations/mars/trunk/sites/mars/collect/amc-essentia/RECONFIGURE.sh

    r36817 r36858  
    11#!/bin/bash
    22
    3 wget -O - http://localhost:7373/greenstone3/library?a=s&sa=c&c=amc-essentia
     3wget -O - "http://localhost:7373/greenstone3/library?a=s&sa=c&c=amc-essentia" >/dev/null
     4
     5
  • gs3-installations/mars/trunk/sites/mars/collect/amc-essentia/etc/collectionConfig.xml

    r36823 r36858  
    1010    <displayItem assigned="true" lang="en" name="description">
    1111      <p>
     12    This conent analysis enhanced digital library collection is
     13    based around 9960 audio files from
     14    <a href="https://www.australianmusiccentre.com.au/">
     15      Australian Muisc Centre </a>, which exhibits the country's
     16      best contemporary classical, improvisatory and experimental
     17      music and sound art.
     18      </p>
     19     
     20      <p>
     21    Using the <a href="https://essentia.upf.edu/documentation/">Essentia</a>
     22    DSP library, a range of audio features are computed. This is
     23    combined with the
     24    <a href="http://cvml.unige.ch/databases/DEAM/">media-eval
     25    Database for Emotional Analysis of Music (DEAM)</a> dataset to
     26    produced a Machine Learning model to predict levels of arousal
     27    and valence that a section of music evokes.  We have chosen
     28    REPTree for the predictive modeling, a fast decision tree
     29    learner that explots gain/variance and pruning (with
     30    backfitting) to build a regression tree.
     31      </p> 
     32
     33      <p>
     34    Next, we have taken this modeling capability and woven it
     35    into the <a href="https://greenstone.org">Greenstone3</a>
     36    Digital Library software architecture.  The act of building
     37    the digital library triggers the computation of the audio
     38    features, which are then used to predict arousal and valence
     39    features throughout each audio file, currently set to using
     40    a window of 6 seconds and an overal of 50%.  This is stored
     41    as metadata within the built digital library, alongside
     42    the more regular metadata values for title and artist.
     43      </p>
     44     
     45      <p>Finally, using
     46      Greenstone3's <a href="https://files.greenstone.org/technical/gs3design.pdf">extensible
     47      service-based architecture</a> we have enriched the user's experience
     48      of listening to a work in the digital library collection.  The most prominent
     49      feature is a frequency specogram of the work, with a timeline bar that
     50      moves through the work as it is play.  The timeline bar visually shows the
     51      computed level of arousal by broadening the width the timeline bar as the
     52      level of arousal rises.  The timeline bar is rendered in white, varying
     53      the brightness used to reflect the computed level of valence.       
     54      </p>
     55
     56      <p>
     57    Below the AV frequecy visualizer, is a <i>Recommend</i>
     58    button.  If a user clicks on this, then—again leveraging
     59    the service-based architecture to the digital library
     60    software—for the passage of work being played its values
     61    of arousal and valence are used to select other works
     62    in the digital library collection that
     63    share similar features.  This are added at the bottom of
     64    the page as recommendations that the user might also like
     65    to listen to.         
     66      </p>
     67     
     68      <!--
     69      <p>
    1270        This collection shows the capabilities of the
    1371        <a href="https://essentia.upf.edu/documentation/">Essentia</a> DSP library
    1472        in combination with Greenstone3, based on the
    15         253 MP3 files from
    16         <a href="https://www.australianmusiccentre.com.au/">AMC</a>
     73        9960 MP3 files from
     74        <a href="https://www.australianmusiccentre.com.au/">Australian Music Centre</a>
    1775      </p>
    1876
     
    2381    the document in the digital library correspondig to the source MP3 file.
    2482      </p>
    25 
     83      -->
     84     
    2685    </displayItem>
    2786  </displayItemList>
     
    3695-->
    3796    <defaultLevel name="document"/>
    38     <index name="dc.Title,dc.Creator,LastFM.LastFMArtistWikiSummary">
     97    <index name="dc.Title,dc.Creator,amc.title,amc.artist">
    3998      <displayItem lang="en" name="name">all fields</displayItem>
    4099    </index>
    41     <index name="dc.Title">
     100    <index name="dc.Title,amc.title">
    42101      <displayItem lang="en" name="name">titles</displayItem>
    43102    </index>
    44     <index name="dc.Creator">
     103    <index name="dc.Creator,amc.artist">
    45104      <displayItem lang="en" name="name">artists</displayItem>
    46105    </index>
    47     <defaultIndex name="dc.Title,dc.Creator,LastFM.LastFMArtistWikiSummary"/>
     106    <defaultIndex name="dc.Title,dc.Creator,amc.title,amc.artist"/>
    48107    <searchType name="plain"/>
    49108    <searchType name="simpleform"/>
     
    57116    </td>
    58117    <td>
    59       <gsf:switch>
    60         <gsf:metadata name="Title" select="ancestors" separator=": "/>
    61         <gsf:when test="exists">
    62           <gsf:metadata name="Title" select="ancestors" separator=": "/>:
    63         </gsf:when>
    64       </gsf:switch>
    65       <gsf:link type="document">
    66         <gsf:metadata name="Title"/>
    67       </gsf:link>
     118
     119      <xsl:choose>
     120        <xsl:when test="/page/pageResponse/service/@name = 'AudioQuery'">
     121          <a>
     122        <xsl:choose>
     123          <xsl:when test="/page/pageResponse/collection/@name">
     124            <xsl:attribute name="href"><xsl:value-of select="$library_name"/>?a=d&amp;c=<xsl:value-of select="/page/pageResponse/collection/@name"/>&amp;d=<xsl:value-of select="@nodeID"/>&amp;dt=<xsl:value-of select="@docType"/>&amp;p.frameOffset=<xsl:value-of select="@frameOffset"/>&amp;p.a=q&amp;p.s=<xsl:value-of select="/page/pageResponse/service/@name"/>&amp;hl=on&amp;ed=1#<xsl:value-of select="@nodeID"/></xsl:attribute>
     125          </xsl:when>
     126          <xsl:when test="@collection">
     127            <xsl:attribute name="href"><xsl:value-of select="$library_name"/>?a=d&amp;c=<xsl:value-of select="@collection"/>&amp;d=<xsl:value-of select="@nodeID"/>&amp;dt=<xsl:value-of select="@docType"/>p.frameOffset=<xsl:value-of select="@frameOffset"/>&amp;p.a=q&amp;p.s=<xsl:value-of select="/page/pageResponse/service/@name"/>&amp;hl=on&amp;ed=1#<xsl:value-of select="@nodeID"/></xsl:attribute>
     128          </xsl:when>
     129        </xsl:choose>
     130        <gsf:metadata name="amc.title"/>
     131        by <gsf:metadata name="amc.artist"/>
     132          </a>     
     133        </xsl:when>
     134        <xsl:otherwise>
     135          <gsf:link type="document">
     136            <gsf:metadata name="amc.title"/>
     137        by <gsf:metadata name="amc.artist"/>
     138          </gsf:link>
     139          <!--
     140          <gsf:switch>
     141        <gsf:metadata name="Title" select="ancestors" separator=": "/>
     142        <gsf:when test="exists">
     143          <gsf:metadata name="Title" select="ancestors" separator=": "/>:
     144        </gsf:when>
     145          </gsf:switch>
     146          <gsf:link type="document">
     147        <gsf:metadata name="Title"/>
     148          </gsf:link>
     149          -->
     150        </xsl:otherwise>
     151        </xsl:choose>
     152
     153      <!--
     154      <xsl:if test="/page/pageResponse/service/@name = 'AudioQuery'">
     155        <span style="font-style: italics; font-size: 90%" >
     156          Matching offset @
     157          <script>
     158        <xsl:text disable-output-escaping="yes">
     159          var frameOffsetStr="</xsl:text><xsl:value-of select="@frameOffset"/><xsl:text disable-output-escaping="yes">";
     160          var frameOffsetList = frameOffsetStr.split(",");
     161          for(i=0; i &lt; frameOffsetList.length; i++) {
     162              var frameOffset = frameOffsetList[i];
     163              var offsetInSecs=(250*frameOffset)/1000.0;
     164              if (i &gt; 0) { document.write(", "); }
     165              document.write(offsetInSecs.toFixed(2));
     166              }
     167        </xsl:text>
     168        </script> secs
     169        </span>
     170          </xsl:if>
     171
     172      -->
     173     
    68174    </td>
    69175      </gsf:template>
     
    71177  </search>
    72178
    73   <search type="wekaDB" orthogonal="true"/>
    74 
     179  <!--
     180  <search type="wekaDB" orthogonal="true" />
     181  -->
     182
     183  <search type="wekaDB" orthogonal="true" serviceRack="GS2WekaDBSearch" />
     184 
     185  <!--
     186  <search type="wekaDB" orthogonal="true" serviceRack="GS2WekaAVRecommender" />
     187
     188  <search type="wekaAVFeatures" orthogonal="true" serviceRack="GS2WekaAVRecommender" />
     189  -->
     190 
    75191  <infodb type="jdbm"/>
    76192
     
    400516                  .doc-metadata td { padding: 7px; }
    401517                </style>
    402                 <table class="doc-metadata">
     518                <table class="doc-metadata" style="width: 100%;">
    403519                  <tbody>
    404520                <tr style="background-color:#C4CBA1">
    405                   <td>
    406                     Title
     521                  <td style="width: 4rem;">
     522                    Title:
    407523                  </td>
    408524                  <td>
     
    412528               
    413529                <tr style="background-color:#fff">
    414                   <td>Artist</td>
     530                  <td>Artist:</td>
    415531                  <td><gsf:metadata name="amc.artist"/></td>
    416532                </tr>
    417                
     533
     534                <!--
    418535                <tr style="background-color:#C4CBA1">
    419536                  <td>Essentia MFCC Features:</td><td><a href="{$httpCollection}/index/assoc/{$assocFilePath}/pessentia.json">Download</a></td>
     
    423540                  <td>Weka Predicted Arousal-Valence Features:</td><td><a href="{$httpCollection}/index/assoc/{$assocFilePath}/av.json">Download</a></td>
    424541                </tr>
    425 
     542                -->
     543               
    426544                  </tbody>
    427545                </table>
     
    480598        // Load audio from URL
    481599        wavesurfer.load(gs.variables.mp3url);
     600
     601        wavesurfer.on('audioprocess', function () {
     602          var current_time = wavesurfer.getCurrentTime();
     603          var current_time_rounded = Math.round(current_time * 10) / 10
     604          var current_time_rounded = current_time.toFixed(1);
     605          $('#audioCurrentPos').html(current_time_rounded + " secs");
     606        });     
    482607      });
    483608    </gsf:script>
    484609              </div>
     610
     611
     612
     613              <gsf:variable name="docID"><xsl:value-of select="@nodeID"/></gsf:variable>
     614
     615              <hr/>
     616              <form action="{$library_name}" method="get" name="QueryForm">
     617                <input name="a" type="hidden" value="q"/>
     618                <input name="sa" type="hidden">
     619                  <xsl:attribute name="value">
     620                <xsl:value-of select="/page/pageRequest/@subaction"/>
     621                  </xsl:attribute>
     622                </input>
     623                <input name="rt" type="hidden" value="rd"/>
     624                <input name="s" type="hidden" value="AudioQuery"/>
     625                <input name="c" type="hidden" value="{$collName}"/>
     626                <xsl:if test="not(paramList/param[@name='startPage'])">
     627                  <input name="startPage" type="hidden" value="1"/>
     628                </xsl:if>
     629                <xsl:choose>
     630                  <xsl:when test="/page/pageRequest/paramList/param[@name = 's1.maxDocs']">
     631                <input name="s1.maxDocs" type="hidden">
     632                  <xsl:attribute name="value">
     633                    <xsl:value-of select="/page/pageRequest/paramList/param[@name = 's1.maxDocs']/@value"/>
     634                  </xsl:attribute>
     635                </input>
     636                  </xsl:when>
     637                  <xsl:otherwise>
     638                <input name="s1.maxDocs" type="hidden" value="100"/>
     639                  </xsl:otherwise>
     640                </xsl:choose>
     641                <xsl:choose>
     642                  <xsl:when test="/page/pageRequest/paramList/param[@name = 's1.hitsPerPage']">
     643                <input name="s1.hitsPerPage" type="hidden">
     644                  <xsl:attribute name="value">
     645                    <xsl:value-of select="/page/pageRequest/paramList/param[@name = 's1.hitsPerPage']/@value"/>
     646                  </xsl:attribute>
     647                </input>
     648                  </xsl:when>
     649                  <xsl:otherwise>
     650                <input name="s1.hitsPerPage" type="hidden" value="20"/>
     651                  </xsl:otherwise>
     652                </xsl:choose>
     653
     654                <!--
     655                <input name="q" type="hidden" value="{$assocFilePath}" />
     656                -->
     657                <input name="q" type="hidden" value="{$docID}" />
     658                <input name="s1.query" type="hidden" value="{$docID}" />
     659               
     660                <input name="s1.offset" type="hidden" value="0"/>
     661                <input name="s1.length" type="hidden" value="200"/>
     662                <div style="font-style: italics;">Make arousal-valence music recommendation based on content  @ <span id="audioCurrentPos">0 secs</span>:
     663                <!--,
     664                with excerpt lasting <span class="editable-offset" id="audioWindowDuration" style="cursor: pointer; border: 1px solid black; padding: 3px; width: 200px; min-width: 200px;">3.0</span> secs
     665                -->
     666                <input onclick="preSubmit(this.form);" type="submit" value="Recommend"/></div>
     667              </form>
     668              <hr/>
     669              <script>
     670                <xsl:text disable-output-escaping="yes">
     671
     672/*               
     673    function playFromOffset(id,frameOffset)
     674    {
     675      var msecOffset = 250 * frameOffset;
     676      idElem = document.getElementById(id);
     677      pagePlayer.handleClick({target:idElem}); /* fake a click */
     678      soundManager.stopAll();
     679      /* soundManager.setPosition(id,5000); */
     680      soundManager.play(id,{position: msecOffset});
     681    }
     682    */
     683   
     684    function preSubmit(form)
     685    {
     686      // Note, the Arousal and Valence feature window values used is:
     687      //   6 secs + 50% overlap
     688      // So the Weka computed AV values are spaced out:
     689      //   6s, 9s, 12s, ...
     690
     691      // clamp to ensure >= 6.0 secs
     692      var current_time = Math.max(6.0,wavesurfer.getCurrentTime());
     693
     694      weka_segment = Math.round(current_time/3) * 3;
     695      form.elements["s1.length"].value = weka_segment;
     696
     697    /*
     698      var currentPosElem = document.getElementById("audioCurrentPos");
     699      var offsetInMSecs = currentPosElem.getAttribute("offsetInMSecs");
     700      var frameOffset = Math.round(offsetInMSecs/250.0);
     701      form.elements["s1.offset"].value = frameOffset;
     702
     703      var lengthInSecs = document.getElementById("audioWindowDuration").innerHTML;
     704
     705      var frameLength = Math.round(lengthInSecs*1000/250.0);
     706      form.elements["s1.length"].value = frameLength;
     707      */
     708      return true;
     709    }
     710                </xsl:text>
     711              </script>             
     712
     713             
    485714            </xsl:template>
    486715
     
    490719  <replaceListRef id="gs2-standard"/>
    491720  <serviceRackList>
     721    <!--
     722    <serviceRack name="GS2WekaDBSearch">
     723    </serviceRack>
     724    -->
     725    <!--
     726    <serviceRack name="GS2WekaAVRecommender">
     727    </serviceRack>
     728    -->
     729
    492730    <!-- comment out the following serviceRack if you want to disable OAI for this collection -->
    493731    <serviceRack name="OAIPMH">
  • gs3-installations/mars/trunk/sites/mars/siteConfig.xml

    r34777 r36858  
    11<siteConfig xmlns:gsf='http://www.greenstone.org/greenstone3/schema/ConfigFormat' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
    2     <siteList/>
    3     <serviceRackList>
    4         <!-- uncomment to provide the GATE tagging service --> 
    5         <!--<serviceRack name="GATEServices"/>-->
    6         <!-- uncomment to provide the Authentication service -->
    7         <serviceRack name='Authentication'>
    8             <!-- Go to https://www.google.com/recaptcha/admin/create and replace these keys when you deploy your site -->
    9             <recaptcha name="public_key" value="6LckI88SAAAAACUYjj97WMcnz5HPjVp3lI-x-ue8"/>
    10             <recaptcha name="private_key" value="6LckI88SAAAAAGnGy1PwuXYZzIMXZYoPxN51bWWG"/>
    11         </serviceRack>
    12        
    13         <serviceRack name="ArchiveIO"/>
    14         <serviceRack name="DocumentMaker"/>
    15         <serviceRack name="DocXMLUtil"/>
    16         <serviceRack name="DocumentBasket"/>
    17         <serviceRack name="BerryBasket"/>
    18         <serviceRack name="GS2Construct"/>
    19         <serviceRack name="DebugService"/>
    20         <serviceRack name="UserTracker"/>
    21         <serviceRack name="CrossCollectionSearch">
    22             <format>
    23                 <!-- this format is used for the search results -->
    24                 <gsf:template match="documentNode">
     2  <metadataList xmlns:gsf="http://www.greenstone.org/greenstone3/schema/MetadataFormat" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     3    <metadata name="siteAdmin">[email protected]</metadata>
     4    <!--<metadata name="siteURL">http://www.greenstone.org/greenstone3/</metadata>-->
     5  </metadataList>
     6  <displayItemList>
     7    <displayItem name="siteName" lang="en">My Greenstone Library</displayItem>
     8    <displayItem name="siteName" key="siteName" dictionary="siteConfig"/>
     9    <displayItem name="siteDescription" lang="en">This is a digital library built using the open-source Greenstone Digital Library software, version 3. Edit the site name and description in web/sites/localsite/siteConfig.xml or web/sites/localsite/resources/siteConfig_xx.properties.</displayItem>
     10    <displayItem name="siteDescription" key="siteDescription" dictionary="siteConfig"/>
     11  </displayItemList>
     12  <siteList/>
     13  <format>
     14    <paramDefault name="favouritebasket" value="on"/>
     15  </format>
     16  <serviceRackList>
     17   <!--Provides the Authentication service -->
     18    <serviceRack name='Authentication'>
     19      <!-- Go to https://www.google.com/recaptcha/admin and replace these testing keys when you deploy your site -->
     20    <recaptcha name="site_key" value="6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"/>
     21    <recaptcha name="secret_key" value="6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe"/>
     22    <!-- this determines which operations to add recaptcha to. Choose from Register, AddUser, EditUser, AccountSettings -->
     23    <recaptcha name="operations" value="Register,AddUser"/>
     24    </serviceRack>
     25    <serviceRack name="ArchiveIO"/>
     26    <serviceRack name="CollectionGroups"/>
     27    <serviceRack name="DocumentMaker"/>
     28    <serviceRack name="DocXMLUtil"/>
     29    <serviceRack name="DocumentBasket"/>
     30    <!-- This provides the functionality for 'favourites' - the ability to store a list of documents you are interested in. This is activated for a servlet by setting the 'favouritebasket' servlet init-param to 'true'-->
     31    <serviceRack name="FavouriteBasket"/>
     32    <serviceRack name="GS2Construct"/>
     33    <serviceRack name="DebugService"/>
     34    <serviceRack name="UserTracker"/>
     35    <serviceRack name="CrossCollectionSearch">
     36      <format>
     37    <!-- this format is used for the search results -->
     38    <gsf:template match="documentNode">
    2539      <xsl:variable name="collname" select="@collection"/>
    26                     <td><a><xsl:attribute name='href'><xsl:value-of select="$library_name"/>/collection/<xsl:value-of select='@collection'/>/document/<xsl:value-of select='@nodeID'/></xsl:attribute><gsf:icon/></a></td>
    27                     <td><gsf:metadata name='Title'/></td>
    28                     <td><a href='{$library_name}/collection/{$collname}/page/about'><xsl:value-of select="/page/pageResponse/service/paramList/param[@name='collection']/option[@name=$collname]/displayItem[@name='name']"/> </a></td>
    29                 </gsf:template>
    30             </format>
    31         </serviceRack>
    32     </serviceRackList>
    33     <serviceClusterList/>
    34     <!-- this is a global replace list for all collections. At this stage it only applies to greenstone 2 collections. It will attempt to resolve most of the common macros that appear in metadata. You can add more items here if you want them to apply to all collections. To turn this on/off for a particular collection, add <replaceListRef id='xx'/> into the collectionConfig for each set that you want to use -->
     40      <td><gsf:if-metadata-exists><gsf:metadata name="srclinkFile"/><gsf:if><a><xsl:attribute name='href'><xsl:value-of select="$library_name"/>/sites/localsite/collect/<xsl:value-of select='@collection'/>/index/assoc/<gsf:metadata name="root_assocfilepath"/>/<gsf:metadata name="srclinkFile"/></xsl:attribute><gsf:choose-metadata><gsf:metadata name="thumbicon"/><gsf:metadata name="srcicon"/></gsf:choose-metadata></a></gsf:if></gsf:if-metadata-exists></td>
     41      <td><a><xsl:attribute name='href'><xsl:value-of select="$library_name"/>/collection/<xsl:value-of select='@collection'/>/document/<xsl:value-of select='@nodeID'/><xsl:if test="$opt-doc-link-args">?<xsl:value-of select="$opt-doc-link-args"/></xsl:if></xsl:attribute><gsf:icon/></a></td>
     42      <td><gsf:metadata name='Title'/></td>
     43      <td><a href='{$library_name}/collection/{$collname}/page/about'><xsl:value-of select="/page/pageResponse/service/paramList/param[@name='collection']/option[@name=$collname]/displayItem[@name='name']"/> </a></td>
     44    </gsf:template>
     45      </format>
     46    <!-- uncomment to provide the GATE tagging service --> 
     47    <!--<serviceRack name="GATEServices"/>-->
     48     </serviceRack>
     49  </serviceRackList>
     50  <serviceClusterList/>
     51  <!-- this is a global replace list for all collections. At this stage it only applies to greenstone 2 collections. It will attempt to resolve most of the common macros that appear in metadata. You can add more items here if you want them to apply to all collections. To turn this on/off for a particular collection, add <replaceListRef id='xx'/> into the collectionConfig for each set that you want to use -->
    3552  <!-- replace elements can look like:
    36   <replace macro="original text" scope="text|metadata|all" text="replacement text"/>
    37   <replace macro="original text" scope="text|metadata|all" metadata="metadata element value to replace with"/>
    38   <replace macro="original text" scope="text|metadata|all" key="dictionary key" bundle="dictionary name"/> -->
    39     <replaceList  id="gs2-standard">
    40         <replace macro="_iconpdf_" scope="metadata" text="&lt;img src='interfaces/default/images/ipdf.gif' border='0'/&gt;" resolve="false"/>
    41         <replace macro="_icondoc_" scope="metadata" text="&lt;img src='interfaces/default/images/imsword.gif' border='0'/&gt;" resolve="false"/>
    42         <replace macro="_iconps_" scope="metadata" text="&lt;img src='interfaces/default/images/ips.gif' border='0'/&gt;" resolve="false"/>
    43         <replace macro="_iconrtf_" scope="metadata" text="&lt;img src='interfaces/default/images/irtf.gif' border='0'/&gt;" resolve="false"/>
    44         <replace macro="_iconxls_" scope="metadata" text="&lt;img src='interfaces/default/images/iexcel.gif' border='0'/&gt;" resolve="false"/>
    45         <replace macro="_iconppt_" scope="metadata" text="&lt;img src='interfaces/default/images/ippt.gif' border='0'/&gt;" resolve="false"/>
    46         <replace macro="_icontext_" scope="metadata" text="&lt;img src='interfaces/default/images/itext.gif' border='0'/&gt;" resolve="false"/>
    47         <replace macro="_iconblanktext_" scope="metadata" text="&lt;img src='interfaces/default/images/ibtext.gif' border='0'/&gt;" resolve="false"/>     
    48         <replace macro="_iconmp3_" scope="metadata" text="&lt;img src='interfaces/default/images/imp3.gif' border='0'/&gt;" resolve="false"/>
    49         <replace macro="_iconmidi_" scope="metadata" text="&lt;img src='interfaces/default/images/imidi.gif' border='0'/&gt;" resolve="false"/>
    50         <replace macro="_iconworld_" scope="metadata" text="&lt;img src='interfaces/default/images/iworld.gif' border='0'/&gt;" resolve="false"/>
    51         <replace macro="_iconunknown_" scope="metadata" text="&lt;img src='interfaces/default/images/iunknown.gif' border='0'/&gt;" resolve="false"/>
     53       <replace macro="original text" scope="text|metadata|all" text="replacement text"/>
     54       <replace macro="original text" scope="text|metadata|all" metadata="metadata element value to replace with"/>
     55       <replace macro="original text" scope="text|metadata|all" key="dictionary key" bundle="dictionary name"/> -->
     56  <replaceList  id="gs2-standard">
     57    <replace macro="_iconpdf_" scope="metadata" text="&lt;img src='interfaces/default/images/ipdf.gif' border='0'/&gt;" resolve="false"/>
     58    <replace macro="_icondoc_" scope="metadata" text="&lt;img src='interfaces/default/images/imsword.gif' border='0'/&gt;" resolve="false"/>
     59    <replace macro="_icondocx_" scope="metadata" text="&lt;img src='interfaces/default/images/imsword.gif' border='0'/&gt;" resolve="false"/>
     60    <replace macro="_iconps_" scope="metadata" text="&lt;img src='interfaces/default/images/ips.gif' border='0'/&gt;" resolve="false"/>
     61    <replace macro="_iconrtf_" scope="metadata" text="&lt;img src='interfaces/default/images/irtf.gif' border='0'/&gt;" resolve="false"/>
     62    <replace macro="_iconxls_" scope="metadata" text="&lt;img src='interfaces/default/images/iexcel.gif' border='0'/&gt;" resolve="false"/>
     63    <replace macro="_iconppt_" scope="metadata" text="&lt;img src='interfaces/default/images/ippt.gif' border='0'/&gt;" resolve="false"/>
     64    <replace macro="_icontext_" scope="metadata" text="&lt;img src='interfaces/default/images/itext.gif' border='0'/&gt;" resolve="false"/>
     65    <replace macro="_iconblanktext_" scope="metadata" text="&lt;img src='interfaces/default/images/ibtext.gif' border='0'/&gt;" resolve="false"/>     
     66    <replace macro="_iconmp3_" scope="metadata" text="&lt;img src='interfaces/default/images/imp3.gif' border='0'/&gt;" resolve="false"/>
     67    <replace macro="_iconmidi_" scope="metadata" text="&lt;img src='interfaces/default/images/imidi.gif' border='0'/&gt;" resolve="false"/>
     68    <replace macro="_iconworld_" scope="metadata" text="&lt;img src='interfaces/default/images/iworld.gif' border='0'/&gt;" resolve="false"/>
     69    <replace macro="_iconunknown_" scope="metadata" text="&lt;img src='interfaces/default/images/iunknown.gif' border='0'/&gt;" resolve="false"/>
    5270
    53         <replace macro="[archivedir]" scope="all" metadata="assocfilepath" resolve="false"/>
    54         <replace macro="[assocfilepath]" scope="all" metadata="assocfilepath" resolve="false"/>
    55         <replace macro="[srcurl]" scope="metadata" metadata="srcurl" resolve="false"/>
    56         <replace macro="[SourceFile]" scope="metadata" metadata="SourceFile" resolve="false"/>
    57         <!-- _httpsite_ and _clustername_ are macros that are defined in the java code -->
    58         <replace macro="_httpcollection_" scope="metadata" text="_httpsite_/collect/_clustername_" resolve="true"/>
    59         <replace macro="_httpprefix_" scope="metadata" text="_httpsite_" resolve="true"/>
    60         <replace macro="_httpdocimg_" scope="text" text="_httpsite_/collect/_clustername_/index/assoc/[assocfilepath]/" resolve="true"/>
    61         <replace macro="_httpsamepagelink_" scope="text" text="_libraryname_/collection/_clustername_/document/[DocOID]" resolve="true"/>
    62         <replace macro="[collection]" scope="all" text="_clustername_" resolve="true"/>
    63         <replace macro="_httpextlink_" scope="all" text="_libraryname_?el=&amp;a=d&amp;c=_clustername_&amp;d=" resolve="true"/>
    64     </replaceList>
    65     <replaceList id="gs2-image">
    66         <replace macro="[Image]" scope="metadata" metadata="Image" resolve="false"/>
    67         <replace macro="[Thumb]" scope="metadata" metadata="Thumb" resolve="false"/>
    68         <replace macro="[ThumbWidth]" scope="metadata" metadata="ThumbWidth" resolve="false"/>
    69         <replace macro="[ThumbHeight]" scope="metadata" metadata="ThumbHeight" resolve="false"/>
    70         <replace macro="[Screen]" scope="metadata" metadata="Screen" resolve="false"/>
    71         <replace macro="[ScreenWidth]" scope="metadata" metadata="ScreenWidth" resolve="false"/>
    72         <replace macro="[ScreenHeight]" scope="metadata" metadata="ScreenHeight" resolve="false"/>
    73     </replaceList>
    74     <metadataList xmlns:gsf="http://www.greenstone.org/greenstone3/schema/MetadataFormat" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    75         <metadata name="siteURL">/greenstone3/</metadata>
    76         <!--<metadata name="siteURL">http://bedrock.resnet.cms.waikato.ac.nz/mars-greenstone3/</metadata>-->
    77         <metadata name="siteName" lang="en">My Greenstone Library</metadata>
    78         <metadata name="siteName" lang="fr">Mon site de dévelopment</metadata>
    79         <metadata name="siteDescription" lang="en">This is just a random site for testing stuff...</metadata>
    80         <metadata name="siteDescription" lang="fr">C'est juste un site pour tester des trucs...</metadata>
    81         <metadata name="siteAdmin">[email protected]</metadata>
    82     </metadataList>
     71    <replace macro="[archivedir]" scope="all" metadata="assocfilepath" resolve="false"/>
     72    <replace macro="[assocfilepath]" scope="all" metadata="assocfilepath" resolve="false"/>
     73    <replace macro="[srcurl]" scope="metadata" metadata="srcurl" resolve="false"/>
     74    <replace macro="[SourceFile]" scope="metadata" metadata="SourceFile" resolve="false"/>
     75    <!-- _httpsite_ and _clustername_ are macros that are defined in the java code -->
     76    <replace macro="_httpcollection_" scope="metadata" text="_httpsite_/collect/_clustername_" resolve="true"/>
     77    <replace macro="_httpprefix_" scope="metadata" text="_httpsite_" resolve="true"/>
     78    <replace macro="_httpdocimg_" scope="text" text="_httpsite_/collect/_clustername_/index/assoc/[assocfilepath]/" resolve="true"/>
     79    <replace macro="_httpsamepagelink_" scope="text" text="_libraryname_/collection/_clustername_/document/[DocOID]" resolve="true"/>
     80    <replace macro="[collection]" scope="all" text="_clustername_" resolve="true"/>
     81    <replace macro="_httpextlink_" scope="all" text="_libraryname_?el=&amp;a=d&amp;c=_clustername_&amp;d=" resolve="true"/>
     82  </replaceList>
     83  <replaceList id="gs2-image">
     84    <replace macro="[Image]" scope="metadata" metadata="Image" resolve="false"/>
     85    <replace macro="[Thumb]" scope="metadata" metadata="Thumb" resolve="false"/>
     86    <replace macro="[ThumbWidth]" scope="metadata" metadata="ThumbWidth" resolve="false"/>
     87    <replace macro="[ThumbHeight]" scope="metadata" metadata="ThumbHeight" resolve="false"/>
     88    <replace macro="[Screen]" scope="metadata" metadata="Screen" resolve="false"/>
     89    <replace macro="[ScreenWidth]" scope="metadata" metadata="ScreenWidth" resolve="false"/>
     90    <replace macro="[ScreenHeight]" scope="metadata" metadata="ScreenHeight" resolve="false"/>
     91  </replaceList>
     92  <replaceList id="gs2-months">
     93    <replace macro="_textmonth00_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth00"/>
     94    <replace macro="_textmonth01_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth01"/>
     95    <replace macro="_textmonth02_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth02"/>
     96    <replace macro="_textmonth03_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth03"/>
     97    <replace macro="_textmonth04_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth04"/>
     98    <replace macro="_textmonth05_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth05"/>
     99    <replace macro="_textmonth06_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth06"/>
     100    <replace macro="_textmonth07_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth07"/>
     101    <replace macro="_textmonth08_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth08"/>
     102    <replace macro="_textmonth09_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth09"/>
     103    <replace macro="_textmonth10_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth10"/>
     104    <replace macro="_textmonth11_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth11"/>
     105    <replace macro="_textmonth12_" scope="metadata" resolve="false" bundle="interface_default" key="textmonth12"/>
     106    <replace bundle="interface_default" key="num" macro="_num_" resolve="false" scope="metadata"/>
     107  </replaceList>
    83108</siteConfig>
Note: See TracChangeset for help on using the changeset viewer.