Changeset 37089


Ignore:
Timestamp:
2023-01-02T17:15:33+13:00 (5 weeks ago)
Author:
davidb
Message:

Another round of tidy-up

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gs3-installations/intermuse/trunk/sites/intermuse/collect/programmes/transform/pages/document-iiif-manifest.xsl

    r37087 r37089  
    1919  -->
    2020
     21  <!-- **** this only defines xsl-variables => change filename? -->
    2122  <xsl:include href="layouts/header-core.xsl"/>
    2223
    2324  <xsl:include href="pages/document-shared.xsl" />
     25  <!-- **** this only defines xsl-variables => change filename? --> 
    2426  <xsl:include href="pages/document-core.xsl" />
    2527
     28 
    2629  <xsl:output method="html" version="1.0" encoding="utf-8"/>
    2730 
     
    3033  <xsl:strip-space elements="*"/>
    3134  -->
    32    
     35
     36 
    3337  <xsl:variable name="iiifPresentationRootIdentifier">http-greenstone://<xsl:value-of select="$site_name"/>/<xsl:value-of select="$collNameChecked"/>/<xsl:value-of select="$docID"/></xsl:variable>
    3438
    35   <!-- **** should be able to get rid of this, however at the moment it seems to be used in some supporting file !!!! -->
    36  
    37   <xsl:variable name="bookswitch">mirador</xsl:variable>
    38    
    3939  <xsl:template match="/">
    40     <html>
    41       <body>
    42     <xsl:apply-templates select="/page/pageResponse/document" />
     40      <html>
     41    <body>
     42      <pre>
     43      <xsl:apply-templates select="/page/pageResponse/document" />
     44    </pre>
    4345      </body>
    4446    </html>
     
    4648  </xsl:template>
    4749
    48 
     50  <xsl:template match="/page/pageResponse/document">
     51    <!-- display the document -->
     52    <xsl:choose>
     53      <xsl:when test="@docType='simple'">
     54    <xsl:call-template name="documentContent"/>
     55      </xsl:when>   
     56      <xsl:otherwise> <!-- kick off the recursive call for a more complex structured document-->
     57    <xsl:call-template name="wrappedDocumentTopLevel"/>
     58      </xsl:otherwise>
     59    </xsl:choose>
     60  </xsl:template>
     61
     62 
     63  <xsl:template name="wrappedDocumentTopLevel">
     64
     65    <!-- <xsl:call-template name="documentPre"/> -->
     66    <xsl:call-template name="wrappedDocument"/> <!-- without ed=1, this template misses the binds in of documentPre and documentPost -->
     67    <!-- <xsl:call-template name="documentPost"/> -->
     68
     69  </xsl:template>
     70
     71
     72  <xsl:template name="wrappedDocument">
     73
     74    <xsl:call-template name="documentPre"/>
     75      <xsl:for-each select="documentNode">
     76    <xsl:call-template name="wrapDocumentNodes"/>
     77      </xsl:for-each>
     78    <xsl:call-template name="documentPost"/>                   
     79   
     80  </xsl:template>   
     81 
     82 
    4983  <xsl:template name="iiif-other-content">
    5084    <xsl:param name="optSection"/>
     
    5993 
    6094
    61   <!-- **** improve name !!!! -->
    62  
    63   <xsl:template name="iiif-links">
     95  <xsl:template name="iiif-canvas-image">
    6496    <xsl:param name="identifier"/>
    6597    <xsl:param name="docType"/>
     
    108140    -->
    109141    <!-- an array entry in 'canvases': { @content, @id, @type, label, width, height, images[{}], thumbnail {@id,@type} } -->
    110     <pre>
    111142      <!-- add a comma first, if it is not the first canvas element in the array -->
    112143      <xsl:if test="$section &gt; 1">
     
    150181          }
    151182            }     
    152     </pre>
    153183    <!-- Another field to consider in the above JSON is: -->
    154184    <!--   "format": mime_type, // ???? or is it OK to always have this as image/jpeg and rely on IIIF Image Server coverting as/when needed??? -->
     
    160190    <!-- add in IIIF Server link for section image -->
    161191    <xsl:variable name="nodeID" select="@nodeID"/>
    162     <xsl:call-template name="iiif-links">
     192    <xsl:call-template name="iiif-canvas-image">
    163193      <xsl:with-param name="identifier" select="$nodeID" />
    164194      <xsl:with-param name="docType" select="@docType" />
     
    190220
    191221    <!-- start of iiif_manifest: -->
    192     <pre>
    193222    {
    194223        "@context": "http://iiif.io/api/presentation/2/context.json",
     
    209238          "@type": "sc:Sequence",
    210239      "canvases": [
    211     </pre>
    212240
    213241  </xsl:template>
     
    215243 
    216244  <xsl:template name="documentContentSimpleIIIFImage">
    217     <xsl:call-template name="iiif-links">
     245    <xsl:call-template name="iiif-canvas-image">
    218246      <xsl:with-param name="identifier" select="$docID" />
    219247      <xsl:with-param name="docType" select="@docType" />
     
    229257  </xsl:template>
    230258
     259 
     260  <xsl:template name="wrapDocumentNodes">
     261
     262    <xsl:call-template name="sectionContent"/>
     263   
     264    <xsl:if test="documentNode">
     265      <xsl:for-each select="documentNode">
     266    <xsl:call-template name="wrapDocumentNodes"/>
     267      </xsl:for-each>
     268    </xsl:if>
     269  </xsl:template>
     270
     271  <xsl:template name="wrappedSectionImage">
     272    <!-- don't need this template to generate anything in the IIIF-Manifest JSON case -->
     273  </xsl:template>
     274
     275 
     276 
    231277  <xsl:template name="documentPost">
    232278    <!-- end of iiif_manifest: -->
    233279    <!-- close of canvases, then close higher level blocks to complete the JSON file -->
    234     <pre>
    235280      ]
    236281    }]   
    237282    }       
    238     </pre>
    239    
    240   </xsl:template>
    241  
    242 
    243   <xsl:template name="wrappedDocumentTopLevel">
    244 
    245     <!-- <xsl:call-template name="documentPre"/> -->
    246     <xsl:call-template name="wrappedDocument"/> <!-- without ed=1, this template misses the binds in of documentPre and documentPost -->
    247     <!-- <xsl:call-template name="documentPost"/> -->
    248     <!--
    249     <xsl:call-template name="documentPostMirador3OLD"/>
    250     -->
    251 
    252   </xsl:template>
    253 
    254 
    255     <xsl:template name="wrapDocumentNodes">
    256 
    257       <xsl:choose>
    258         <xsl:when test="../../document">
    259           <xsl:call-template name="topLevelSectionContent"/>
    260         </xsl:when>
    261         <xsl:otherwise>
    262           <xsl:call-template name="sectionContent"/>
    263         </xsl:otherwise>
    264       </xsl:choose>
    265      
    266       <xsl:if test="documentNode">
    267         <xsl:for-each select="documentNode">
    268           <xsl:call-template name="wrapDocumentNodes"/>
    269         </xsl:for-each>
    270       </xsl:if>
    271     </xsl:template>
    272 
    273 
    274 
    275     <xsl:template name="wrappedSectionImage">
    276       <!-- don't need this template to generate anything in the IIIF-Manifest JSON case -->
    277     </xsl:template>
    278    
    279     <!-- The default template for displaying the document node text -->
    280     <!-- equivalent to gsf:text -->
    281     <xsl:template name="documentNodeText">
    282       <xsl:param name="force">0</xsl:param>
    283         <!-- Hides the "This document has no text." message -->
    284         <xsl:variable name="noText"><gsf:metadata name="NoText"/></xsl:variable>
    285         <xsl:choose>
    286         <xsl:when test="$force = '1' or not($noText = '1')">
    287 
    288             <!-- Section text -->
    289             <xsl:for-each select="nodeContent">
    290               <xsl:call-template name="displayMarkedUpTextAndAnnotations"/>
    291             </xsl:for-each>
    292         </xsl:when>
    293         <xsl:when test="$noText = '1' and not(metadataList/metadata[@name='ImageType'])">
    294             <gsf:link type="source"><gsf:metadata name="Source"/></gsf:link>
    295         </xsl:when>
    296         </xsl:choose>
    297         <xsl:text> </xsl:text>
    298     </xsl:template>
    299 
    300 
    301 
    302 
    303 
    304     <xsl:template match="/page/pageResponse/document">
    305         <!-- display the document -->
    306         <xsl:choose>
    307             <xsl:when test="@docType='simple'">
    308                 <xsl:call-template name="documentHeading"/><br/>
    309                 <xsl:call-template name="documentContentTopLevel"/>
    310             </xsl:when>
    311             <xsl:otherwise> <!-- display the standard greenstone document -->
    312                 <xsl:call-template name="wrappedDocumentTopLevel"/>
    313             </xsl:otherwise>
    314         </xsl:choose>
    315     </xsl:template>
    316 
    317 
    318     <!-- **** SIMPLIFY !!!! -->
    319 
    320     <xsl:template name="wrappedDocument">
    321         <xsl:choose>
    322             <!-- NOTE: alb = ajax load bypass -->
    323             <!--
    324                  If we have asked for expanded document, then do this.
    325                  OR If the docType is hierarchy and we want to bypass the ajax load then do this
    326                  OR If the docType is hierarchy and we have asked for the top level document then do this
    327             -->
    328             <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or (/page/pageResponse/document/@docType = 'hierarchy' and (/page/pageRequest/paramList/param[@name = 'alb']/@value = '1' or (string-length(/page/pageRequest/paramList/param[@name = 'd']/@value) > 0 and not(util:contains(/page/pageResponse/document/@selectedNode, '.')))))">
    329                 <div id="gs-document">
    330                     <xsl:call-template name="documentPre"/>
    331                     <div id="gs-document-text" class="documenttext" collection="{/page/pageResponse/collection/@name}"><!-- *** -->
    332                       <xsl:for-each select="documentNode">
    333                             <xsl:call-template name="wrapDocumentNodes"/>
    334                         </xsl:for-each>
    335                     </div>
    336                     <xsl:call-template name="documentPost"/>                   
    337                 </div>
    338             </xsl:when>
    339             <xsl:when test="/page/pageResponse/document/@docType = 'paged' or /page/pageResponse/document/@docType = 'pagedhierarchy'">
    340               <div id="gs-document">
    341                     <div id="tocLoadingImage" style="text-align:center;">
    342                         <img src="{util:getInterfaceText($interface_name, /page/@lang, 'loading_image')}"/><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.loading')"/><xsl:text>...</xsl:text>
    343                     </div>
    344                 </div>
    345                 <script type="text/javascript">
    346                     <xsl:text disable-output-escaping="yes">
    347                         $(window).on("load", function()
    348                         {
    349                             var sectionID = gs.cgiParams.d;
    350                             var callbackFunction = null;
    351                             if(sectionID.indexOf(".") != -1)
    352                             {
    353                                 callbackFunction = function()
    354                                 {
    355                                     focusSection(sectionID);
    356                                 };
    357                             }
    358                             else {
    359                                callbackFunction = function()
    360                                 {
    361                                
    362                                 expandAndExecute(sectionID+".1", null, null, null);
    363                                 };
    364                             }
    365                             var docID = sectionID.replace(/([^.]*)\..*/, "$1");
    366                             var url = gs.xsltParams.library_name + "?a=d&amp;c=" + gs.cgiParams.c + "&amp;excerptid=gs-document&amp;dt=hierarchy&amp;d=" + docID;
    367                             if(gs.cgiParams.p_s) {
    368                             url += "&amp;p.s="+gs.cgiParams.p_s;
    369                             }
    370                             loadTopLevelPage(callbackFunction, url);
    371                         });
    372                     </xsl:text>
    373                 </script>
    374             </xsl:when>
    375             <xsl:otherwise>
    376                 <div id="gs-document">                         
    377                     <div id="tocLoadingImage" style="text-align:center;">
    378                         <img src="{util:getInterfaceText($interface_name, /page/@lang, 'loading_image')}"/><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.loading')"/><xsl:text>...</xsl:text>
    379                     </div>
    380                 </div>
    381                 <script type="text/javascript">
    382                     <xsl:text disable-output-escaping="yes">
    383                         $(window).on("load", function()
    384                         {
    385                             loadTopLevelPage(function()
    386                             {
    387                                 //Don't focus the section until the table of contents is loaded
    388                                 var tocCheck = function()
    389                                 {
    390                                     if(gs.variables.tocLoaded)
    391                                     {
    392                                         focusSection("</xsl:text><xsl:value-of select="/page/pageResponse/document/@selectedNode"/><xsl:text disable-output-escaping="yes">");
    393                                     }
    394                                     else
    395                                     {
    396                                         setTimeout(tocCheck, 500);
    397                                     }
    398                                 }
    399                                 tocCheck();
    400                             });
    401                         });
    402                     </xsl:text>
    403                 </script>
    404             </xsl:otherwise>
    405         </xsl:choose>
    406        
    407         <div class="clear"><xsl:text> </xsl:text></div>
    408     </xsl:template>
    409 
    410 
    411 
    412    
     283   
     284  </xsl:template>
     285
     286
    413287</xsl:stylesheet>
Note: See TracChangeset for help on using the changeset viewer.