Ignore:
Timestamp:
2021-12-17T10:16:06+13:00 (2 years ago)
Author:
cstephen
Message:

Migrate from jQuery 1.10.2 -> jQuery 3.6.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/default_wip/transform/layouts/toc.xsl

    r35821 r35822  
    11<?xml version="1.0" encoding="UTF-8"?>
    22<xsl:stylesheet version="1.0"
    3     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    4     xmlns:java="http://xml.apache.org/xslt/java"
    5     xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
    6     xmlns:gslib="http://www.greenstone.org/skinning"
    7     xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
    8     extension-element-prefixes="java util"
    9     exclude-result-prefixes="java util gsf">
    10    
    11     <xsl:template name="rightSidebarTOC">
    12       <div id="rightSidebar">
    13         <xsl:choose>
    14           <xsl:when test="@docType = 'simple'">
    15         <xsl:for-each select=".">
    16           <xsl:call-template name="displayCoverImage"/>
    17         </xsl:for-each>
    18         <xsl:call-template name="viewOptions"/>
    19         <!--<xsl:text>  </xsl:text>-->
    20           </xsl:when>
    21         <xsl:otherwise>
    22           <xsl:for-each select="documentNode[1]">
    23         <xsl:call-template name="displayCoverImage"/>
    24           </xsl:for-each>
    25           <xsl:call-template name="viewOptions"/>
    26           <xsl:call-template name="displayTOC"/>
    27         </xsl:otherwise>
    28       </xsl:choose>
    29       </div>
    30     </xsl:template>
    31    
    32     <!-- this is called in the context of the top level node with the metadataList. For a simple doc, this is the document node. For a comples document, this is the first documentNode hcild of the document node. -->
    33     <xsl:template name="displayCoverImage">
    34       <xsl:variable name="hasCover"><gsf:metadata name="hascover"/></xsl:variable>
    35       <xsl:if test="$hasCover = '1' and (not(/page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']) or /page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']/@value='true')">
    36         <!-- the book's cover image -->
    37         <div id="coverImage">
    38           <img>
    39         <xsl:attribute name="src"><xsl:value-of select="$httpPath"/>/index/assoc/<gsf:metadata name="assocfilepath" pos="1"/>/cover.jpg</xsl:attribute>
    40           </img><xsl:text> </xsl:text>
    41         </div>
    42       </xsl:if>
    43     </xsl:template>
    44    
    45     <xsl:template name="displayTOC">
    46       <xsl:if test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']) or /page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value='true'">
    47         <div class="tableOfContentsContainer ui-state-default">
    48             <table class="tocTable ui-widget-content">
    49                 <tr>
    50                     <td id="unfloatTOCButton" style="display:none;">
    51                         <a href="javascript:floatMenu(false);">
    52                             <img class="icon" style="padding-top:3px;">
    53                                 <xsl:attribute name="src">
    54                                     <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'left_arrow_image')"/>
    55                                 </xsl:attribute>
    56                             </img>
    57                         </a>
    58                     </td>
    59                     <td style="vertical-align:top; text-align:right;">
    60                         <a id="sidebarMinimizeButton" href="javascript:minimizeSidebar();" style="float: right; font-size:0.6em;">
    61                             <img class="icon" style="padding-top:3px;">
    62                                 <xsl:attribute name="src">
    63                                     <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
    64                                 </xsl:attribute>
    65                             </img>
    66                         </a>
    67                         <a id="sidebarMaximizeButton" href="javascript:maximizeSidebar();" style="float: right; font-size:0.6em; display:none;">
    68                             <img class="icon" style="padding-top:3px;">
    69                                 <xsl:attribute name="src">
    70                                     <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
    71                                 </xsl:attribute>
    72                             </img>
    73                         </a>
    74                     </td>
    75                 </tr>
    76                 <tr><td id="tdContentsArea">
    77                     <div id="contentsArea">
    78                             <!-- showing gotoFavourites display-area takes priority over berryBaskets -->
    79                             <xsl:choose>
    80                           <xsl:when test="/page/pageResponse/interfaceOptions/option[@name = 'favouriteBasket']/@value = 'true'">
    81                             <!-- show the goto favourites if it's turned on -->
    82                             <xsl:call-template name="gotoFavourites"/>
    83                           </xsl:when>
    84                           <xsl:otherwise>
    85                             <!-- show the berry basket if it's turned on -->
    86                             <xsl:call-template name="berryBasket"/>
    87                           </xsl:otherwise>
    88                         </xsl:choose>
    89 
    90                         <!-- add in expand and contract document links -->
    91                         <xsl:call-template name="expandContractDocumentLinks"/>
    92                         <!-- dynamically get the contents (if enabled) -->
    93                         <xsl:choose>
    94                             <xsl:when test="/page/pageResponse/document/@docType = 'paged' or /page/pageResponse/document/@docType = 'pagedhierarchy'">
    95                                 <gsf:image type="Thumb"/>
    96                                 <!-- Table of contents will be dynamically retrieved when viewing a paged document -->
    97                                 <script type="text/javascript">
    98                                     <xsl:text disable-output-escaping="yes">
    99                                         $(window).load(function()
    100                                         {
    101                                             retrieveTableOfContentsAndTitles();
    102                                                 <!--setUpFilterButtons();-->
    103                                         });
    104                                     </xsl:text>
    105                                 </script>
    106                                
    107                                 <div id="tableOfContents"><xsl:text> </xsl:text></div>
    108                                 <div id="tocLoadingImage" style="text-align:center;">
    109                                     <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>
    110                                 </div>
    111                                 <label for="filterText"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.filter_pages')"/><xsl:text>: </xsl:text></label><span id="filterOnButtons" style="float: right;">...</span><input id="filterText" type="text" style="width: 100%;"/>
    112 <!--                                <xsl:if test="/page/pageRequest/userInformation and /page/pageRequest/userInformation/@editEnabled = 'true'">-->
    113  <xsl:if test="/page/pageRequest/userInformation and /page/pageRequest/userInformation/@editEnabled = 'true' and /page/pageRequest/paramList/param[@name='docEdit']/@value = '1'  and (util:contains(/page/pageRequest/userInformation/@groups, 'administrator') or util:contains(/page/pageRequest/userInformation/@groups, 'all-collections-editor') or util:contains(/page/pageRequest/userInformation/@groups, $thisCollectionEditor))">
    114                                   <a href="javascript:extractFilteredPagesToOwnDocument();"><button id="extractDocButton"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'de.extract_pages')"/></button></a>
    115                                 </xsl:if>
    116                             </xsl:when>
    117                             <xsl:when test="not(/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageRequest/paramList/param[@name = 'ec']/@value = '1')">
    118                                 <div id="tableOfContents">
    119                                     <div id="tocLoadingImage" style="text-align:center;">
    120                                         <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>
    121                                     </div>
    122                                 </div>
    123                                 <script type="text/javascript">
    124                                     <xsl:text disable-output-escaping="yes">
    125                                         $(window).load(function()
    126                                         {
    127                                             retrieveFullTableOfContents();
    128                                         });
    129                                     </xsl:text>
    130                                 </script>
    131                             </xsl:when>
    132                             <xsl:otherwise>
    133                              
    134                                 <div id="tableOfContents">
    135                                   <!-- if ed=1 or ec=1 then we have the complete section hierarchy in the page xml source, so we don't need an ajax call to get the table of contents, we just generate it from the list of nodes -->
    136                                     <xsl:attribute name="class"> <!-- do we ever need this ?? -->
    137                                         <xsl:choose>
    138                                             <xsl:when test="count(//documentNode) > 1">visible</xsl:when>
    139                                             <xsl:otherwise>hidden</xsl:otherwise>
    140                                         </xsl:choose>
    141                                     </xsl:attribute>
    142                                     <xsl:for-each select="documentNode">
    143                                         <xsl:call-template name="documentNodeTOC"/>
    144                                     </xsl:for-each>
    145                                 </div>
    146                             </xsl:otherwise>
    147                         </xsl:choose>
    148                     </div>
    149                 </td></tr>
    150             </table>
    151         </div>
    152       </xsl:if>
    153     </xsl:template>
    154    
    155     <!-- This template is used to display the table of contents -->
    156     <xsl:template name="documentNodeTOC">
    157         <ul>
    158             <table><tr>
    159                 <!-- The expand/collapse button (not displayed for the top level node) -->
    160                 <xsl:if test="util:hashToDepthClass(@nodeID) != 'sectionHeaderDepthTitle'">
    161                     <td>
    162                         <xsl:choose>
    163                             <xsl:when test="documentNode">
    164                                 <img id="ttoggle{@nodeID}" onclick="toggleSection('{@nodeID}');" class="icon">
    165                                     <xsl:attribute name="src">
    166                                         <xsl:choose>
    167                                             <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
    168                                                 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
    169                                             </xsl:when>
    170                                             <xsl:otherwise>
    171                                                 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
    172                                             </xsl:otherwise>
    173                                         </xsl:choose>
    174                                     </xsl:attribute>
    175                                 </img>
    176                             </xsl:when>
    177                             <xsl:otherwise>
    178                                 <xsl:attribute name="class">emptyIcon</xsl:attribute>
    179                             </xsl:otherwise>
    180                         </xsl:choose>
    181                     </td>
    182                 </xsl:if>
    183                
    184                 <!-- The chapter/page icon -->
    185                 <td>
    186                     <img>
    187                         <xsl:if test="not(documentNode)">
    188                             <xsl:attribute name="class">leafNode</xsl:attribute>
    189                         </xsl:if>
    190                        
    191                         <xsl:attribute name="src">
    192                             <xsl:choose>
    193                                 <xsl:when test="not(documentNode)">
    194                                     <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'page_image')"/>
    195                                 </xsl:when>
    196                                 <xsl:otherwise>
    197                                     <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'chapter_image')"/>
    198                                 </xsl:otherwise>
    199                             </xsl:choose>
    200                         </xsl:attribute>
    201                     </img>
    202                 </td>
    203                
    204                 <!-- The section name, links to the section in the document -->
    205                 <td class="tocTextCell">               
    206                     <a id="toclink{@nodeID}" href="javascript:focusSection('{@nodeID}');">
    207                         <xsl:if test="util:hashToSectionId(@nodeID)">
    208                           <span class="tocSectionNumber"><xsl:value-of select="util:hashToSectionId(@nodeID)"/><!--<xsl:text> </xsl:text>--></span></xsl:if><span class="tocSectionTitle"><xsl:call-template name="sectionHeading"/></span></a>
    209                    
    210                 </td>
    211             </tr></table>
    212        
    213             <!-- display any child items -->       
    214             <xsl:if test="documentNode">
    215                 <li id="toc{@nodeID}">
    216                     <xsl:attribute name="style">
    217                         <xsl:choose>
    218                             <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
    219                                 <xsl:text>display:block;</xsl:text>
    220                             </xsl:when>
    221                             <xsl:otherwise>
    222                                 <xsl:text>display:none;</xsl:text>
    223                             </xsl:otherwise>
    224                         </xsl:choose>
    225                     </xsl:attribute>
    226                     <xsl:for-each select="documentNode">
    227                         <xsl:call-template name="documentNodeTOC"/>
    228                     </xsl:for-each>
    229                 </li>
    230             </xsl:if>
    231            
    232         </ul>
    233     </xsl:template>
    234    
    235     <xsl:template name="viewOptions">
    236         <div id="viewAndZoomOptions" class="ui-state-default ui-corner-all">
    237             <ul id="viewOptions">
    238                 <!-- Paged-image document options -->
    239                             <xsl:if test="count(//documentNode/metadataList/metadata[@name = 'Screen']) > 0 or /page/pageResponse/document/@docType = 'paged' or /page/pageResponse/document/@docType = 'pagedhierarchy'">
    240                                 <!-- view selection option -->
    241                   <xsl:if test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='viewSelection']) or /page/pageResponse/format[@type='display']/gsf:option[@name='viewSelection']/@value='true'">
    242                 <li id="pagedImageOptions">
    243                     <select id="viewSelection" onchange="changeView();">
    244                         <xsl:choose>
    245                             <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'image'">
    246                                 <option><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.default_view')"/></option>
    247                                 <option selected="true"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.image_view')"/></option>
    248                                 <option><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.text_view')"/></option>
    249                             </xsl:when>
    250                             <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'text'">
    251                                 <option><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.default_view')"/></option>
    252                                 <option><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.image_view')"/></option>
    253                                 <option selected="true"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.text_view')"/></option>
    254                             </xsl:when>
    255                             <xsl:otherwise>
    256                                 <option selected="true"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.default_view')"/></option>
    257                                 <option><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.image_view')"/></option>
    258                                 <option><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.text_view')"/></option>
    259                             </xsl:otherwise>
    260                         </xsl:choose>
    261                     </select>
    262                 </li>
    263                 </xsl:if>
    264                 <!-- Slide-show options -->
    265                 <xsl:if test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='slideShow']) or /page/pageResponse/format[@type='display']/gsf:option[@name='slideShow']/@value='true'">
    266                 <li id="slideShowOptions">
    267                     <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.slideshowTooltip')"/></xsl:attribute>
    268                     <img onclick="showSlideShow()">
    269                         <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'slideshow_image')"/></xsl:attribute>
    270                     </img>
    271                 </li>
    272                     </xsl:if>
    273                 </xsl:if>
    274                 <!-- Realistic books link -->
    275                 <xsl:if test="/page/pageResponse/collection[@name = $collName]/metadataList/metadata[@name = 'tidyoption'] = 'tidy'">
    276                     <li>
    277                         <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.realisticBooksTooltip')"/></xsl:attribute>
    278                         <img id="rbOptionImage" onclick="bookInit();">
    279                             <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'realistic_books_image')"/></xsl:attribute>
    280                         </img>
    281                         <input id="rbOption" type="checkbox" onclick="bookInit();" class="optionCheckBox"/>
    282                     </li>
    283                 </xsl:if>
    284                
    285                 <!-- Highlight on/off button -->
    286                 <xsl:if test="util:contains(/page/pageRequest/paramList/param[@name = 'p.s']/@value, 'Query') and not(metadataList/metadata[@name='NoText']) and not(/page/pageResponse/format[@type='display']/gsf:option[@name='disableSearchTermHighlighting']/@value='true')">
    287                     <li>
    288                         <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.highlightTooltip')"/></xsl:attribute>
    289                         <img onclick="swapHighlight(true);">
    290                             <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'highlight_image')"/></xsl:attribute>
    291                         </img>
    292                         <input id="highlightOption" type="checkbox" class="optionCheckBox" onclick="swapHighlight(false);">
    293                             <xsl:if test="not(/page/pageRequest/paramList/param[@name = 'hl']/@value = 'off')">
    294                                 <xsl:attribute name="checked">checked</xsl:attribute>
    295                             </xsl:if>
    296                         </input>
    297                     </li>
    298                 </xsl:if><xsl:text> </xsl:text>
    299                
    300                 <!-- Zoom on/off button -->
    301       <xsl:if test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='disableZoom']) or /page/pageResponse/format[@type='display']/gsf:option[@name='disableZoom']/@value='false'">
    302 
    303                 <li id="zoomOptions" style="display:none;">
    304                     <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.zoomTooltip')"/></xsl:attribute>
    305                     <img id="zoomToggleImage">
    306                         <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'zoom_image')"/></xsl:attribute>
    307                     </img>
    308                     <input id="zoomToggle" type="checkbox"/>
    309                     <script type="text/javascript">
    310                         <xsl:text disable-output-escaping="yes">
    311                             $("#zoomToggle").change(function()
    312                             {
    313                                 _imageZoomEnabled = $("#zoomToggle").prop("checked");
    314                             });
    315                            
    316                             $("#zoomToggleImage").click(function()
    317                             {
    318                                 $("#zoomToggle").prop("checked", !$("#zoomToggle").prop("checked"));
    319                                 _imageZoomEnabled = $("#zoomToggle").prop("checked");
    320                             });
    321                         </xsl:text>
    322                     </script>
    323                 </li>
    324       </xsl:if>
    325                 <!-- Floating TOC on/off button -->
    326                 <xsl:if test="count(//documentNode) > 0 and (not(/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']) or /page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value='true')">
    327                     <li id="floatingTOCOptions">
    328                         <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.floatingTooltip')"/></xsl:attribute>
    329                         <img id="floatTOCToggleImage">
    330                             <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'float_toc_image')"/></xsl:attribute>
    331                         </img>
    332                         <input id="floatTOCToggle" type="checkbox"/>
    333                         <script type="text/javascript">
    334                             <xsl:text disable-output-escaping="yes">
    335                                 $("#floatTOCToggle").prop("checked", false);
    336                                 $("#floatTOCToggle").click(function()
    337                                 {
    338                                     floatMenu($("#floatTOCToggle").prop("checked"));
    339                                 });
    340                                
    341                                 $("#floatTOCToggleImage").click(function()
    342                                 {
    343                                     $("#floatTOCToggle").prop("checked", !$("#floatTOCToggle").prop("checked"))
    344                                     floatMenu($("#floatTOCToggle").prop("checked"));
    345                                 });
    346                             </xsl:text>
    347                         </script>
    348                     </li>
    349                     <xsl:if test="/page/pageRequest/paramList/param[@name='ftoc']/@value = '1'">
    350                         <script type="text/javascript">
    351                             <xsl:text disable-output-escaping="yes">
    352                                 $(window).load(function()
    353                                 {
    354                                     $("#floatTOCToggle").prop("checked", true);
    355                                     floatMenu(true);
    356                                 });
    357                             </xsl:text>
    358                         </script>
    359                     </xsl:if>
    360                 </xsl:if>
    361             </ul>
    362             <div style="clear:both;"><xsl:text> </xsl:text></div>
    363         </div>
    364     </xsl:template>
     3    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     4    xmlns:java="http://xml.apache.org/xslt/java"
     5    xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
     6    xmlns:gslib="http://www.greenstone.org/skinning"
     7    xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
     8    extension-element-prefixes="java util"
     9    exclude-result-prefixes="java util gsf">
     10
     11    <xsl:template name="rightSidebarTOC">
     12        <div id="rightSidebar">
     13            <xsl:choose>
     14                <xsl:when test="@docType = 'simple'">
     15                    <xsl:for-each select=".">
     16                        <xsl:call-template name="displayCoverImage"/>
     17                    </xsl:for-each>
     18                    <xsl:call-template name="viewOptions"/>
     19                    <!--<xsl:text>  </xsl:text>-->
     20                </xsl:when>
     21                <xsl:otherwise>
     22                    <xsl:for-each select="documentNode[1]">
     23                        <xsl:call-template name="displayCoverImage"/>
     24                    </xsl:for-each>
     25                    <xsl:call-template name="viewOptions"/>
     26                    <xsl:call-template name="displayTOC"/>
     27                </xsl:otherwise>
     28            </xsl:choose>
     29        </div>
     30    </xsl:template>
     31
     32    <!-- this is called in the context of the top level node with the metadataList. For a simple doc, this is the document node. For a comples document, this is the first documentNode hcild of the document node. -->
     33    <xsl:template name="displayCoverImage">
     34        <xsl:variable name="hasCover">
     35            <gsf:metadata name="hascover"/>
     36        </xsl:variable>
     37        <xsl:if test="$hasCover = '1' and (not(/page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']) or /page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']/@value='true')">
     38            <!-- the book's cover image -->
     39            <div id="coverImage">
     40                <img>
     41                    <xsl:attribute name="src">
     42                        <xsl:value-of select="$httpPath"/>/index/assoc/<gsf:metadata name="assocfilepath" pos="1"/>/cover.jpg
     43                    </xsl:attribute>
     44                </img>
     45                <xsl:text> </xsl:text>
     46            </div>
     47        </xsl:if>
     48    </xsl:template>
     49
     50    <xsl:template name="displayTOC">
     51        <xsl:if test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']) or /page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value='true'">
     52            <div class="tableOfContentsContainer ui-state-default">
     53                <table class="tocTable ui-widget-content">
     54                    <tr>
     55                        <td id="unfloatTOCButton" style="display:none;">
     56                            <a href="javascript:floatMenu(false);">
     57                                <img class="icon" style="padding-top:3px;">
     58                                    <xsl:attribute name="src">
     59                                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'left_arrow_image')"/>
     60                                    </xsl:attribute>
     61                                </img>
     62                            </a>
     63                        </td>
     64                        <td style="vertical-align:top; text-align:right;">
     65                            <a id="sidebarMinimizeButton" href="javascript:minimizeSidebar();" style="float: right; font-size:0.6em;">
     66                                <img class="icon" style="padding-top:3px;">
     67                                    <xsl:attribute name="src">
     68                                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
     69                                    </xsl:attribute>
     70                                </img>
     71                            </a>
     72                            <a id="sidebarMaximizeButton" href="javascript:maximizeSidebar();" style="float: right; font-size:0.6em; display:none;">
     73                                <img class="icon" style="padding-top:3px;">
     74                                    <xsl:attribute name="src">
     75                                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
     76                                    </xsl:attribute>
     77                                </img>
     78                            </a>
     79                        </td>
     80                    </tr>
     81                    <tr>
     82                        <td id="tdContentsArea">
     83                            <div id="contentsArea">
     84                                <!-- showing gotoFavourites display-area takes priority over berryBaskets -->
     85                                <xsl:choose>
     86                                    <xsl:when test="/page/pageResponse/interfaceOptions/option[@name = 'favouriteBasket']/@value = 'true'">
     87                                        <!-- show the goto favourites if it's turned on -->
     88                                        <xsl:call-template name="gotoFavourites"/>
     89                                    </xsl:when>
     90                                    <xsl:otherwise>
     91                                        <!-- show the berry basket if it's turned on -->
     92                                        <xsl:call-template name="berryBasket"/>
     93                                    </xsl:otherwise>
     94                                </xsl:choose>
     95
     96                                <!-- add in expand and contract document links -->
     97                                <xsl:call-template name="expandContractDocumentLinks"/>
     98                                <!-- dynamically get the contents (if enabled) -->
     99                                <xsl:choose>
     100                                    <xsl:when test="/page/pageResponse/document/@docType = 'paged' or /page/pageResponse/document/@docType = 'pagedhierarchy'">
     101                                        <gsf:image type="Thumb"/>
     102                                        <!-- Table of contents will be dynamically retrieved when viewing a paged document -->
     103                                        <script type="text/javascript">
     104                                            <xsl:text disable-output-escaping="yes">
     105                                                $(window).on("load", function()
     106                                                {
     107                                                    retrieveTableOfContentsAndTitles();
     108                                                    <!--setUpFilterButtons();-->
     109                                                });
     110                                            </xsl:text>
     111                                        </script>
     112
     113                                        <div id="tableOfContents">
     114                                            <xsl:text> </xsl:text>
     115                                        </div>
     116
     117                                        <div id="tocLoadingImage" style="text-align:center;">
     118                                            <img src="{util:getInterfaceText($interface_name, /page/@lang, 'loading_image')}"/>
     119                                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.loading')"/>
     120                                            <xsl:text>...</xsl:text>
     121                                        </div>
     122
     123                                        <label for="filterText">
     124                                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.filter_pages')"/>
     125                                            <xsl:text>: </xsl:text>
     126                                        </label>
     127                                        <span id="filterOnButtons" style="float: right;">...</span>
     128                                        <input id="filterText" type="text" style="width: 100%;" />
     129
     130                                        <!-- <xsl:if test="/page/pageRequest/userInformation and /page/pageRequest/userInformation/@editEnabled = 'true'"> -->
     131                                        <xsl:if test="/page/pageRequest/userInformation and /page/pageRequest/userInformation/@editEnabled = 'true' and /page/pageRequest/paramList/param[@name='docEdit']/@value = '1'  and (util:contains(/page/pageRequest/userInformation/@groups, 'administrator') or util:contains(/page/pageRequest/userInformation/@groups, 'all-collections-editor') or util:contains(/page/pageRequest/userInformation/@groups, $thisCollectionEditor))">
     132                                            <a href="javascript:extractFilteredPagesToOwnDocument();">
     133                                                <button id="extractDocButton">
     134                                                    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'de.extract_pages')"/>
     135                                                </button>
     136                                            </a>
     137                                        </xsl:if>
     138                                    </xsl:when>
     139                                    <xsl:when test="not(/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageRequest/paramList/param[@name = 'ec']/@value = '1')">
     140                                        <div id="tableOfContents">
     141                                            <div id="tocLoadingImage" style="text-align:center;">
     142                                                <img src="{util:getInterfaceText($interface_name, /page/@lang, 'loading_image')}"/>
     143                                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.loading')"/>
     144                                                <xsl:text>...</xsl:text>
     145                                            </div>
     146                                        </div>
     147                                        <script type="text/javascript">
     148                                            <xsl:text disable-output-escaping="yes">
     149                                                $(window).on("load", function()
     150                                                {
     151                                                    retrieveFullTableOfContents();
     152                                                });
     153                                            </xsl:text>
     154                                        </script>
     155                                    </xsl:when>
     156                                    <xsl:otherwise>
     157
     158                                        <div id="tableOfContents">
     159                                            <!-- if ed=1 or ec=1 then we have the complete section hierarchy in the page xml source, so we don't need an ajax call to get the table of contents, we just generate it from the list of nodes -->
     160                                            <xsl:attribute name="class"> <!-- do we ever need this ?? -->
     161                                                <xsl:choose>
     162                                                    <xsl:when test="count(//documentNode) > 1">visible</xsl:when>
     163                                                    <xsl:otherwise>hidden</xsl:otherwise>
     164                                                </xsl:choose>
     165                                            </xsl:attribute>
     166
     167                                            <xsl:for-each select="documentNode">
     168                                                <xsl:call-template name="documentNodeTOC"/>
     169                                            </xsl:for-each>
     170                                        </div>
     171                                    </xsl:otherwise>
     172                                </xsl:choose>
     173                            </div>
     174                        </td>
     175                    </tr>
     176                </table>
     177            </div>
     178        </xsl:if>
     179    </xsl:template>
     180
     181    <!-- This template is used to display the table of contents -->
     182    <xsl:template name="documentNodeTOC">
     183        <table>
     184            <tr>
     185                <!-- The expand/collapse button (not displayed for the top level node) -->
     186                <xsl:if test="util:hashToDepthClass(@nodeID) != 'sectionHeaderDepthTitle'">
     187                    <td>
     188                        <xsl:choose>
     189                            <xsl:when test="documentNode">
     190                                <img id="ttoggle{@nodeID}" onclick="toggleSection('{@nodeID}');" class="icon">
     191                                    <xsl:attribute name="src">
     192                                        <xsl:choose>
     193                                            <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
     194                                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
     195                                            </xsl:when>
     196                                            <xsl:otherwise>
     197                                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
     198                                            </xsl:otherwise>
     199                                        </xsl:choose>
     200                                    </xsl:attribute>
     201                                </img>
     202                            </xsl:when>
     203                            <xsl:otherwise>
     204                                <xsl:attribute name="class">emptyIcon</xsl:attribute>
     205
     206                                <!--
     207                                    Prevent the <td> element being self-closed, which would be invalid according to the HTML spec.
     208                                    This is also an identified issue in jQuery > 3.5.0
     209                                -->
     210                                <xsl:text> </xsl:text>
     211                            </xsl:otherwise>
     212                        </xsl:choose>
     213                    </td>
     214                </xsl:if>
     215
     216                <!-- The chapter/page icon -->
     217                <td>
     218                    <img>
     219                        <xsl:if test="not(documentNode)">
     220                            <xsl:attribute name="class">leafNode</xsl:attribute>
     221                        </xsl:if>
     222
     223                        <xsl:attribute name="src">
     224                            <xsl:choose>
     225                                <xsl:when test="not(documentNode)">
     226                                    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'page_image')"/>
     227                                </xsl:when>
     228                                <xsl:otherwise>
     229                                    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'chapter_image')"/>
     230                                </xsl:otherwise>
     231                            </xsl:choose>
     232                        </xsl:attribute>
     233                    </img>
     234                </td>
     235
     236                <!-- The section name, links to the section in the document -->
     237                <td class="tocTextCell">
     238                    <a id="toclink{@nodeID}" href="javascript:focusSection('{@nodeID}');">
     239                        <xsl:if test="util:hashToSectionId(@nodeID)">
     240                            <span class="tocSectionNumber">
     241                                <xsl:value-of select="util:hashToSectionId(@nodeID)"/><!--<xsl:text> </xsl:text>-->
     242                            </span>
     243                        </xsl:if>
     244                        <span class="tocSectionTitle">
     245                            <xsl:call-template name="sectionHeading"/>
     246                        </span>
     247                    </a>
     248                </td>
     249            </tr>
     250        </table>
     251
     252        <!-- display any child items -->
     253        <xsl:if test="documentNode">
     254            <div id="toc{@nodeID}">
     255                <xsl:attribute name="style">
     256                    <xsl:choose>
     257                        <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
     258                            <xsl:text>display:block;</xsl:text>
     259                        </xsl:when>
     260                        <xsl:otherwise>
     261                            <xsl:text>display:none;</xsl:text>
     262                        </xsl:otherwise>
     263                    </xsl:choose>
     264                </xsl:attribute>
     265                <xsl:for-each select="documentNode">
     266                    <xsl:call-template name="documentNodeTOC"/>
     267                </xsl:for-each>
     268            </div>
     269        </xsl:if>
     270    </xsl:template>
     271
     272    <xsl:template name="viewOptions">
     273        <div id="viewAndZoomOptions" class="ui-state-default ui-corner-all">
     274            <ul id="viewOptions">
     275                <!-- Paged-image document options -->
     276                <xsl:if test="count(//documentNode/metadataList/metadata[@name = 'Screen']) > 0 or /page/pageResponse/document/@docType = 'paged' or /page/pageResponse/document/@docType = 'pagedhierarchy'">
     277                    <!-- view selection option -->
     278                    <xsl:if test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='viewSelection']) or /page/pageResponse/format[@type='display']/gsf:option[@name='viewSelection']/@value='true'">
     279                        <li id="pagedImageOptions">
     280                            <select id="viewSelection" onchange="changeView();">
     281                                <xsl:choose>
     282                                    <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'image'">
     283                                        <option>
     284                                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.default_view')"/>
     285                                        </option>
     286                                        <option selected="true">
     287                                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.image_view')"/>
     288                                        </option>
     289                                        <option>
     290                                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.text_view')"/>
     291                                        </option>
     292                                    </xsl:when>
     293                                    <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'text'">
     294                                        <option>
     295                                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.default_view')"/>
     296                                        </option>
     297                                        <option>
     298                                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.image_view')"/>
     299                                        </option>
     300                                        <option selected="true">
     301                                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.text_view')"/>
     302                                        </option>
     303                                    </xsl:when>
     304                                    <xsl:otherwise>
     305                                        <option selected="true">
     306                                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.default_view')"/>
     307                                        </option>
     308                                        <option>
     309                                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.image_view')"/>
     310                                        </option>
     311                                        <option>
     312                                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.text_view')"/>
     313                                        </option>
     314                                    </xsl:otherwise>
     315                                </xsl:choose>
     316                            </select>
     317                        </li>
     318                    </xsl:if>
     319
     320                    <!-- Slide-show options -->
     321                    <xsl:if test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='slideShow']) or /page/pageResponse/format[@type='display']/gsf:option[@name='slideShow']/@value='true'">
     322                        <li id="slideShowOptions">
     323                            <xsl:attribute name="title">
     324                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.slideshowTooltip')"/>
     325                            </xsl:attribute>
     326                            <img onclick="showSlideShow()">
     327                                <xsl:attribute name="src">
     328                                    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'slideshow_image')"/>
     329                                </xsl:attribute>
     330                            </img>
     331                        </li>
     332                    </xsl:if>
     333                </xsl:if>
     334                <!-- Realistic books link -->
     335                <xsl:if test="/page/pageResponse/collection[@name = $collName]/metadataList/metadata[@name = 'tidyoption'] = 'tidy'">
     336                    <li>
     337                        <xsl:attribute name="title">
     338                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.realisticBooksTooltip')"/>
     339                        </xsl:attribute>
     340                        <img id="rbOptionImage" onclick="bookInit();">
     341                            <xsl:attribute name="src">
     342                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'realistic_books_image')"/>
     343                            </xsl:attribute>
     344                        </img>
     345                        <input id="rbOption" type="checkbox" onclick="bookInit();" class="optionCheckBox"/>
     346                    </li>
     347                </xsl:if>
     348
     349                <!-- Highlight on/off button -->
     350                <xsl:if test="util:contains(/page/pageRequest/paramList/param[@name = 'p.s']/@value, 'Query') and not(metadataList/metadata[@name='NoText']) and not(/page/pageResponse/format[@type='display']/gsf:option[@name='disableSearchTermHighlighting']/@value='true')">
     351                    <li>
     352                        <xsl:attribute name="title">
     353                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.highlightTooltip')"/>
     354                        </xsl:attribute>
     355                        <img onclick="swapHighlight(true);">
     356                            <xsl:attribute name="src">
     357                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'highlight_image')"/>
     358                            </xsl:attribute>
     359                        </img>
     360                        <input id="highlightOption" type="checkbox" class="optionCheckBox" onclick="swapHighlight(false);">
     361                            <xsl:if test="not(/page/pageRequest/paramList/param[@name = 'hl']/@value = 'off')">
     362                                <xsl:attribute name="checked">checked</xsl:attribute>
     363                            </xsl:if>
     364                        </input>
     365                    </li>
     366                </xsl:if>
     367                <xsl:text> </xsl:text>
     368
     369                <!-- Zoom on/off button -->
     370                <xsl:if test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='disableZoom']) or /page/pageResponse/format[@type='display']/gsf:option[@name='disableZoom']/@value='false'">
     371                    <li id="zoomOptions" style="display:none;">
     372                        <xsl:attribute name="title">
     373                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.zoomTooltip')"/>
     374                        </xsl:attribute>
     375                        <img id="zoomToggleImage">
     376                            <xsl:attribute name="src">
     377                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'zoom_image')"/>
     378                            </xsl:attribute>
     379                        </img>
     380                        <input id="zoomToggle" type="checkbox"/>
     381                        <script type="text/javascript">
     382                            <xsl:text disable-output-escaping="yes">
     383                                $("#zoomToggle").change(function()
     384                                {
     385                                    _imageZoomEnabled = $("#zoomToggle").prop("checked");
     386                                });
     387                               
     388                                $("#zoomToggleImage").on("click", function()
     389                                {
     390                                    $("#zoomToggle").prop("checked", !$("#zoomToggle").prop("checked"));
     391                                    _imageZoomEnabled = $("#zoomToggle").prop("checked");
     392                                });
     393                            </xsl:text>
     394                        </script>
     395                    </li>
     396                </xsl:if>
     397
     398                <!-- Floating TOC on/off button -->
     399                <xsl:if test="count(//documentNode) > 0 and (not(/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']) or /page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value='true')">
     400                    <li id="floatingTOCOptions">
     401                        <xsl:attribute name="title">
     402                            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.floatingTooltip')"/>
     403                        </xsl:attribute>
     404                        <img id="floatTOCToggleImage">
     405                            <xsl:attribute name="src">
     406                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'float_toc_image')"/>
     407                            </xsl:attribute>
     408                        </img>
     409                        <input id="floatTOCToggle" type="checkbox"/>
     410                        <script type="text/javascript">
     411                            <xsl:text disable-output-escaping="yes">
     412                                $("#floatTOCToggle").prop("checked", false);
     413                                $("#floatTOCToggle").on("click", function()
     414                                {
     415                                    floatMenu($("#floatTOCToggle").prop("checked"));
     416                                });
     417                               
     418                                $("#floatTOCToggleImage").on("click", function()
     419                                {
     420                                    $("#floatTOCToggle").prop("checked", !$("#floatTOCToggle").prop("checked"))
     421                                    floatMenu($("#floatTOCToggle").prop("checked"));
     422                                });
     423                            </xsl:text>
     424                        </script>
     425                    </li>
     426                    <xsl:if test="/page/pageRequest/paramList/param[@name='ftoc']/@value = '1'">
     427                        <script type="text/javascript">
     428                            <xsl:text disable-output-escaping="yes">
     429                                $(window).on("load", function()
     430                                {
     431                                    $("#floatTOCToggle").prop("checked", true);
     432                                    floatMenu(true);
     433                                });
     434                            </xsl:text>
     435                        </script>
     436                    </xsl:if>
     437                </xsl:if>
     438            </ul>
     439            <div style="clear:both;">
     440                <xsl:text> </xsl:text>
     441            </div>
     442        </div>
     443    </xsl:template>
    365444</xsl:stylesheet>
Note: See TracChangeset for help on using the changeset viewer.