Ignore:
Timestamp:
2012-04-12T15:24:51+12:00 (12 years ago)
Author:
sjm84
Message:

Some major upgrades to the document view

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/oran/transform/pages/document.xsl

    r25291 r25371  
    3333        <a>
    3434            <xsl:attribute name="href">
    35                 <xsl:value-of select="$library_name"/>?a=d&amp;c=<xsl:value-of select="$collName"/>&amp;d=<xsl:value-of select="/page/pageResponse/document/documentNode[1]/@nodeID"/>&amp;dt=<xsl:value-of select="/page/pageResponse/document/documentNode/@docType"/>&amp;p.a=b&amp;p.s=<xsl:value-of select="/page/pageResponse/service/@name"/>
     35                <xsl:value-of select="$library_name"/>/collection/<xsl:value-of select="$collName"/>/document/<xsl:value-of select="/page/pageResponse/document/documentNode[1]/@nodeID"/>
    3636            </xsl:attribute>
    3737            <xsl:variable name="documentTitleVar">
     
    6868           
    6969                <!-- Expand/collapse button -->
    70                 <td class="headerTD">
    71                     <img id="dtoggle{@nodeID}" onclick="toggleSection('{@nodeID}');" class="icon">         
    72                         <xsl:attribute name="src">
    73                             <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
    74                         </xsl:attribute>
    75                     </img>
    76                 </td>
     70                <xsl:if test="not(/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='sectionExpandCollapse']/@value) or /page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='sectionExpandCollapse']/@value = 'true'">
     71                    <td class="headerTD">
     72                        <img id="dtoggle{@nodeID}" onclick="toggleSection('{@nodeID}');" class="icon">         
     73                            <xsl:attribute name="src">
     74                                <xsl:choose>
     75                                    <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or util:oidIsMatchOrParent(@nodeID, /page/pageResponse/document/@selectedNode)">
     76                                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
     77                                    </xsl:when>
     78                                    <xsl:otherwise>
     79                                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
     80                                    </xsl:otherwise>
     81                                </xsl:choose>
     82                            </xsl:attribute>
     83                        </img>
     84                    </td>
     85                </xsl:if>
    7786               
    7887                <!-- Title -->
     
    92101                <xsl:if test="util:hashToDepthClass(@nodeID) != 'sectionHeaderDepthTitle'">
    93102                    <td class="backToTop headerTD">
    94                         <a href="#top">
     103                        <a href="javascript:scrollToTop();">
    95104                            <xsl:text disable-output-escaping="yes">&#9650;</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.back_to_top')"/>
    96105                        </a>
     
    99108            </tr></table>
    100109           
    101             <div id="doc{@nodeID}" class="sectionContainer"><!-- *** -->
     110            <div id="doc{@nodeID}"><!-- *** -->
     111                <xsl:choose>
     112                    <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
     113                        <xsl:attribute name="class">
     114                            <xsl:text>sectionContainer hasText</xsl:text>
     115                        </xsl:attribute>
     116                        <xsl:attribute name="style">
     117                            <xsl:text>display:block;</xsl:text>
     118                        </xsl:attribute>
     119                    </xsl:when>
     120                    <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or util:oidIsMatchOrParent(@nodeID, /page/pageResponse/document/@selectedNode)">
     121                        <xsl:attribute name="class">
     122                            <xsl:text>sectionContainer noText</xsl:text>
     123                        </xsl:attribute>
     124                        <xsl:attribute name="style">
     125                            <xsl:text>display:block;</xsl:text>
     126                        </xsl:attribute>
     127                    </xsl:when>
     128                    <xsl:otherwise>
     129                        <xsl:attribute name="class">
     130                            <xsl:text>sectionContainer noText</xsl:text>
     131                        </xsl:attribute>
     132                        <xsl:attribute name="style">
     133                            <xsl:text>display:none;</xsl:text>
     134                        </xsl:attribute>
     135                    </xsl:otherwise>
     136                </xsl:choose>
     137           
    102138                <xsl:if test="/page/pageRequest/userInformation 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))">
    103139                    <table id="meta{@nodeID}">
     
    233269           
    234270            <xsl:if test="/page/pageRequest/userInformation 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))">
    235                 <table style="width:100%"><tr>
    236                     <td id="editBarLeft" style="width:70%"><xsl:text> </xsl:text></td>
    237                     <td id="editBarRight">
    238                         <div style="text-align:center;">
    239                             <div style="margin:5px;" class="ui-state-default ui-corner-all">
    240                                 <a style="padding: 3px; text-decoration:none;" href="{$library_name}?a=g&amp;sa=documentbasket&amp;c=&amp;s=DisplayDocumentList&amp;rt=r&amp;p.c={/page/pageResponse/collection/@name}&amp;docToEdit={/page/pageResponse/document/documentNode/@nodeID}"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.edit_structure')"/></a>
    241                             </div>
    242                             <div style="margin:5px;" class="ui-state-default ui-corner-all">
    243                                 <a id="editContentButton" style="padding: 3px; text-decoration:none;" href="javascript:readyPageForEditing();"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.edit_content')"/></a>
    244                             </div>
    245                         </div>
    246                     </td>
    247                 </tr></table>
    248                 <xsl:call-template name="document-editor-language-fragments"/>
     271                <xsl:call-template name="editBar"/>
    249272            </xsl:if>
    250273
    251274            <xsl:if test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='sideBar']) or /page/pageResponse/format[@type='display']/gsf:option[@name='sideBar']/@value='true'">
    252                 <table id="rightSidebar">
    253                     <tr><td>
    254                         <xsl:call-template name="viewOptions"/>
    255                     </td></tr>
    256                     <tr><td>
    257                         <div id="contentsArea">
    258                             <!-- show the berry basket if it's turned on -->
    259                             <gslib:berryBasket/>
    260 
    261                             <!-- the book's cover image -->
    262                             <div id="coverImage">
    263                                 <xsl:attribute name="class">
    264                                     <xsl:choose>
    265                                         <xsl:when test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']) or /page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']/@value='true'">visible</xsl:when>
    266                                         <xsl:otherwise>hidden</xsl:otherwise>   
    267                                     </xsl:choose>
    268                                 </xsl:attribute>
    269                                 <gslib:coverImage/><xsl:text> </xsl:text>
    270                             </div>
    271 
    272                             <!-- the contents (if enabled) -->
    273                             <xsl:choose>
    274                                 <xsl:when test="/page/pageResponse/document/@docType = 'paged' and not(/page/pageRequest/paramList/param[@name = 'ed']/@value = '1')">
    275                                     <!-- Table of contents will be dynamically retrieved when viewing a paged document -->
    276                                     <script type="text/javascript">
    277                                         <xsl:text disable-output-escaping="yes">
    278                                             $(window).load(function()
    279                                             {
    280                                                 retrieveTableOfContentsAndTitles();
    281                                             });
    282                                         </xsl:text>
    283                                     </script>
    284                                     <div id="tocLoadingImage" style="text-align:center;">
    285                                         <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>
    286                                     </div>
    287                                 </xsl:when>
    288                                 <xsl:otherwise>
    289                                     <div id="tableOfContents">
    290                                         <xsl:attribute name="class">
    291                                             <xsl:choose>
    292                                                 <xsl:when test="count(//documentNode) > 1 and not(/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']) or /page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value='true'">visible</xsl:when>
    293                                                 <xsl:otherwise>hidden</xsl:otherwise>
    294                                             </xsl:choose>
    295                                         </xsl:attribute>
    296                                         <xsl:apply-templates select="documentNode" mode="TOC"/>
    297                                         <xsl:if test="@docType = 'paged'">
    298                                             <table style="width:100%;"><tbody><tr>
    299                                                 <td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.filter_pages')"/><xsl:text>: </xsl:text><input id="filterText" type="text" size="27"/></td>
    300                                             </tr></tbody></table>
    301                                         </xsl:if>
    302                                     </div>
    303                                 </xsl:otherwise>
    304                             </xsl:choose>
    305                         </div>
    306                     </td></tr>
    307                 </table>
     275                <xsl:call-template name="rightSidebar"/>
    308276            </xsl:if>
    309277        </xsl:if>
     
    332300            </xsl:when>
    333301            <xsl:otherwise>
    334                 <div id="gs-document">
    335                     <div id="gs-document-text" class="documenttext" collection="{/page/pageResponse/collection/@name}"><!-- *** -->
    336                         <xsl:call-template name="wrapDocumentNodes"/>
     302                <xsl:choose>
     303                    <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or not(util:contains(/page/pageResponse/document/@selectedNode, '.'))">
     304                        <div id="gs-document">
     305                            <xsl:call-template name="documentPre"/>
     306                            <div id="gs-document-text" class="documenttext" collection="{/page/pageResponse/collection/@name}"><!-- *** -->
     307                                <xsl:call-template name="wrapDocumentNodes"/>
     308                            </div>
     309                        </div>
     310                    </xsl:when>
     311                    <xsl:otherwise>
     312                        <div id="gs-document">                         
     313                            <div id="tocLoadingImage" style="text-align:center;">
     314                                <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>
     315                            </div>
     316                        </div>
     317                        <script type="text/javascript">
     318                            <xsl:text disable-output-escaping="yes">
     319                                $(window).load(function()
     320                                {
     321                                    loadTopLevelPage(function()
     322                                    {
     323                                        focusSection("</xsl:text><xsl:value-of select="/page/pageResponse/document/@selectedNode"/><xsl:text disable-output-escaping="yes">");
     324                                    });
     325                                    console.log("HASH IS " + gs.functions.hashString("" + (new Date()).getTime()) + " ON " + (new Date()).getTime());
     326                                });
     327                            </xsl:text>
     328                        </script>
     329                    </xsl:otherwise>
     330                </xsl:choose>
     331            </xsl:otherwise>
     332        </xsl:choose>
     333       
     334        <div class="clear"><xsl:text> </xsl:text></div>
     335    </xsl:template>
     336   
     337    <xsl:template name="editBar">
     338        <table style="width:100%"><tr>
     339            <td id="editBarLeft" style="width:70%"><xsl:text> </xsl:text></td>
     340            <td id="editBarRight">
     341                <div style="text-align:center;">
     342                    <div style="margin:5px;" class="ui-state-default ui-corner-all">
     343                        <a style="padding: 3px; text-decoration:none;" href="{$library_name}?a=g&amp;sa=documentbasket&amp;c=&amp;s=DisplayDocumentList&amp;rt=r&amp;p.c={/page/pageResponse/collection/@name}&amp;docToEdit={/page/pageResponse/document/documentNode/@nodeID}"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.edit_structure')"/></a>
     344                    </div>
     345                    <div style="margin:5px;" class="ui-state-default ui-corner-all">
     346                        <a id="editContentButton" style="padding: 3px; text-decoration:none;" href="javascript:readyPageForEditing();"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.edit_content')"/></a>
    337347                    </div>
    338348                </div>
    339             </xsl:otherwise>
    340         </xsl:choose>
    341        
    342         <div class="clear"><xsl:text> </xsl:text></div>
     349            </td>
     350        </tr></table>
     351        <xsl:call-template name="document-editor-language-fragments"/>
     352    </xsl:template>
     353   
     354    <xsl:template name="rightSidebar">
     355        <table id="rightSidebar">
     356            <tr><td>
     357                <xsl:call-template name="viewOptions"/>
     358            </td></tr>
     359            <tr><td>
     360                <div id="contentsArea">
     361                    <!-- show the berry basket if it's turned on -->
     362                    <gslib:berryBasket/>
     363
     364                    <!-- the book's cover image -->
     365                    <div id="coverImage">
     366                        <xsl:attribute name="class">
     367                            <xsl:choose>
     368                                <xsl:when test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']) or /page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']/@value='true'">visible</xsl:when>
     369                                <xsl:otherwise>hidden</xsl:otherwise>   
     370                            </xsl:choose>
     371                        </xsl:attribute>
     372                        <gslib:coverImage/><xsl:text> </xsl:text>
     373                    </div>
     374
     375                    <!-- the contents (if enabled) -->
     376                    <xsl:choose>
     377                        <xsl:when test="/page/pageResponse/document/@docType = 'paged'">
     378                            <!-- Table of contents will be dynamically retrieved when viewing a paged document -->
     379                            <script type="text/javascript">
     380                                <xsl:text disable-output-escaping="yes">
     381                                    $(window).load(function()
     382                                    {
     383                                        retrieveTableOfContentsAndTitles();
     384                                    });
     385                                </xsl:text>
     386                            </script>
     387                            <div id="tocLoadingImage" style="text-align:center;">
     388                                <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>
     389                            </div>
     390                        </xsl:when>
     391                        <xsl:when test="not(/page/pageRequest/paramList/param[@name = 'ed']/@value = '1')">
     392                            <div id="tableOfContents">
     393                                <div id="tocLoadingImage" style="text-align:center;">
     394                                    <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>
     395                                </div>
     396                            </div>
     397                            <script type="text/javascript">
     398                                <xsl:text disable-output-escaping="yes">
     399                                    $(window).load(function()
     400                                    {
     401                                        retrieveFullTableOfContents();
     402                                    });
     403                                </xsl:text>
     404                            </script>
     405                        </xsl:when>
     406                        <xsl:otherwise>
     407                            <div id="tableOfContents">
     408                                <xsl:attribute name="class">
     409                                    <xsl:choose>
     410                                        <xsl:when test="count(//documentNode) > 1 and not(/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']) or /page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value='true'">visible</xsl:when>
     411                                        <xsl:otherwise>hidden</xsl:otherwise>
     412                                    </xsl:choose>
     413                                </xsl:attribute>
     414                                <xsl:apply-templates select="documentNode" mode="TOC"/>
     415                                <xsl:if test="@docType = 'paged'">
     416                                    <table style="width:100%;"><tbody><tr>
     417                                        <td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.filter_pages')"/><xsl:text>: </xsl:text><input id="filterText" type="text" size="27"/></td>
     418                                    </tr></tbody></table>
     419                                </xsl:if>
     420                            </div>
     421                        </xsl:otherwise>
     422                    </xsl:choose>
     423                </div>
     424            </td></tr>
     425        </table>
    343426    </xsl:template>
    344427   
     
    377460    <!-- The default template for displaying the document content -->
    378461    <xsl:template match="documentNode" mode="document">
    379         <xsl:call-template name="documentNodePre"/>
    380462        <!-- Section text -->
    381463        <xsl:for-each select="nodeContent">
     
    413495                                <img id="ttoggle{@nodeID}" onclick="toggleSection('{@nodeID}');" class="icon">
    414496                                    <xsl:attribute name="src">
    415                                         <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
     497                                        <xsl:choose>
     498                                            <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
     499                                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
     500                                            </xsl:when>
     501                                            <xsl:otherwise>
     502                                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
     503                                            </xsl:otherwise>
     504                                        </xsl:choose>
    416505                                    </xsl:attribute>
    417506                                </img>
     
    446535                <!-- The section name, links to the section in the document -->
    447536                <td>               
    448                     <a>
     537                    <a id="toclink{@nodeID}">
    449538                        <xsl:choose>
    450539                            <xsl:when test="/page/pageResponse/document/@docType = 'paged'">
     
    452541                            </xsl:when>
    453542                            <xsl:otherwise>
    454                                 <xsl:attribute name="href">#<xsl:value-of select="@nodeID"/></xsl:attribute>
     543                                <xsl:attribute name="href">javascript:focusSection('<xsl:value-of select="@nodeID"/>');</xsl:attribute>
    455544                            </xsl:otherwise>
    456545                        </xsl:choose>
     
    466555            <!-- display any child items -->       
    467556            <xsl:if test="documentNode">
    468                 <li id="toc{@nodeID}" style="display:block;">
     557                <li id="toc{@nodeID}">
     558                    <xsl:attribute name="style">
     559                        <xsl:choose>
     560                            <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
     561                                <xsl:text>display:block;</xsl:text>
     562                            </xsl:when>
     563                            <xsl:otherwise>
     564                                <xsl:text>display:none;</xsl:text>
     565                            </xsl:otherwise>
     566                        </xsl:choose>
     567                    </xsl:attribute>
    469568                    <xsl:apply-templates select="documentNode" mode="TOC"/>
    470569                </li>
     
    553652           
    554653            <!-- Highlight on/off button -->
    555             <xsl:if test="/page/pageRequest/paramList/param[@name = 'p.a']/@value = 'q' and count(//annotation) > 0">
     654            <xsl:if test="/page/pageRequest/paramList/param[@name = 'p.a']/@value = 'q' or /page/pageRequest/paramList/param[@name = 's1.query']">
    556655                <td>
    557656                    <img>
     
    611710                <td style="width:60%;">
    612711                    <div>
    613                         <div style="float:left; width:30%;"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.zoom')"/><xsl:text>:</xsl:text></div>
     712                        <div style="float:left; width:30%;"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.zoom_size')"/><xsl:text>:</xsl:text></div>
    614713                        <div id="zoomSlider" style="float:right; width:65%; height:5px; margin-top:6px;"><xsl:text> </xsl:text></div>
    615714                        <script type="text/javascript">
     
    644743    </xsl:template>
    645744   
    646     <xsl:template name="documentNodePre">
     745    <xsl:template name="documentPre">
    647746        <xsl:if test="/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='mapEnabled']/@value = 'true'">
    648747            <xsl:call-template name="mapFeatures"/>
     
    651750   
    652751    <xsl:template name="mapFeatures">
    653         <div id="map_canvas" style="margin:0px auto; width:900px; height:500px;"><xsl:text> </xsl:text></div>
     752        <div id="map_canvas"><xsl:text> </xsl:text></div>
    654753
    655754        <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">
Note: See TracChangeset for help on using the changeset viewer.