Changeset 37089
- Timestamp:
- 2023-01-02T17:15:33+13:00 (11 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gs3-installations/intermuse/trunk/sites/intermuse/collect/programmes/transform/pages/document-iiif-manifest.xsl
r37087 r37089 19 19 --> 20 20 21 <!-- **** this only defines xsl-variables => change filename? --> 21 22 <xsl:include href="layouts/header-core.xsl"/> 22 23 23 24 <xsl:include href="pages/document-shared.xsl" /> 25 <!-- **** this only defines xsl-variables => change filename? --> 24 26 <xsl:include href="pages/document-core.xsl" /> 25 27 28 26 29 <xsl:output method="html" version="1.0" encoding="utf-8"/> 27 30 … … 30 33 <xsl:strip-space elements="*"/> 31 34 --> 32 35 36 33 37 <xsl:variable name="iiifPresentationRootIdentifier">http-greenstone://<xsl:value-of select="$site_name"/>/<xsl:value-of select="$collNameChecked"/>/<xsl:value-of select="$docID"/></xsl:variable> 34 38 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 39 39 <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> 43 45 </body> 44 46 </html> … … 46 48 </xsl:template> 47 49 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 49 83 <xsl:template name="iiif-other-content"> 50 84 <xsl:param name="optSection"/> … … 59 93 60 94 61 <!-- **** improve name !!!! --> 62 63 <xsl:template name="iiif-links"> 95 <xsl:template name="iiif-canvas-image"> 64 96 <xsl:param name="identifier"/> 65 97 <xsl:param name="docType"/> … … 108 140 --> 109 141 <!-- an array entry in 'canvases': { @content, @id, @type, label, width, height, images[{}], thumbnail {@id,@type} } --> 110 <pre>111 142 <!-- add a comma first, if it is not the first canvas element in the array --> 112 143 <xsl:if test="$section > 1"> … … 150 181 } 151 182 } 152 </pre>153 183 <!-- Another field to consider in the above JSON is: --> 154 184 <!-- "format": mime_type, // ???? or is it OK to always have this as image/jpeg and rely on IIIF Image Server coverting as/when needed??? --> … … 160 190 <!-- add in IIIF Server link for section image --> 161 191 <xsl:variable name="nodeID" select="@nodeID"/> 162 <xsl:call-template name="iiif- links">192 <xsl:call-template name="iiif-canvas-image"> 163 193 <xsl:with-param name="identifier" select="$nodeID" /> 164 194 <xsl:with-param name="docType" select="@docType" /> … … 190 220 191 221 <!-- start of iiif_manifest: --> 192 <pre>193 222 { 194 223 "@context": "http://iiif.io/api/presentation/2/context.json", … … 209 238 "@type": "sc:Sequence", 210 239 "canvases": [ 211 </pre>212 240 213 241 </xsl:template> … … 215 243 216 244 <xsl:template name="documentContentSimpleIIIFImage"> 217 <xsl:call-template name="iiif- links">245 <xsl:call-template name="iiif-canvas-image"> 218 246 <xsl:with-param name="identifier" select="$docID" /> 219 247 <xsl:with-param name="docType" select="@docType" /> … … 229 257 </xsl:template> 230 258 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 231 277 <xsl:template name="documentPost"> 232 278 <!-- end of iiif_manifest: --> 233 279 <!-- close of canvases, then close higher level blocks to complete the JSON file --> 234 <pre>235 280 ] 236 281 }] 237 282 } 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&c=" + gs.cgiParams.c + "&excerptid=gs-document&dt=hierarchy&d=" + docID; 367 if(gs.cgiParams.p_s) { 368 url += "&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 413 287 </xsl:stylesheet>
Note:
See TracChangeset
for help on using the changeset viewer.