Ignore:
Timestamp:
2023-09-04T14:59:06+12:00 (9 months ago)
Author:
kjdon
Message:

updates to handle having horizontal a-z lists inside a vertical bookshelf. now we open the sections in a more similar way to the bookshelves. opening in place, and keeping the rest of the bookshelves visible

Location:
main/trunk/greenstone3/web/interfaces/default
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/default/js/classifier_scripts.js

    r36027 r38003  
    1818    var sectionToggle = gs.jqGet("toggle" + sectionID);
    1919   
    20     if(sectionToggle == undefined)
     20    if(sectionToggle.length === 0)
    2121    {
    2222        return;
     
    3636            sectionToggle.attr("src", gs.imageURLs.expand);
    3737
    38             if(openClassifiers[sectionID].length !== 0) //if(openClassifiers[sectionID] != undefined)
     38            if(openClassifiers[sectionID] != undefined && openClassifiers[sectionID].length !== 0)
    3939            {
    4040                delete openClassifiers[sectionID];
     
    5757    else
    5858    {
    59         httpBrowseRequest(sectionID);
    60     }
     59        httpBrowseRequest(sectionID, "vlist");
     60    }
     61}
     62
     63function toggleHListSection(sectionID)
     64{
     65
     66    var parentID = getParentID(sectionID);
     67    var section = document.getElementById('div' + sectionID);
     68    var parent = document.getElementById('classifiernodelist'+parentID);
     69    if (parent === null) {
     70    console.log("couldn't find parent for "+sectionID);
     71    return;
     72    }
     73    if(section != null) {
     74   
     75   
     76    var expanding = false;
     77    var sectionTitle = document.getElementById("title"+sectionID);
     78    if(isExpanded(sectionID))
     79    {
     80        expanding = false;
     81        section.style.display = "none";
     82
     83        sectionTitle.classList.remove("selectedHorizontalClassifierNode");
     84        if(openClassifiers[sectionID] != undefined && openClassifiers[sectionID].length !== 0)
     85        {
     86        delete openClassifiers[sectionID];
     87        }
     88    }
     89    else
     90    {
     91        expanding = true;
     92        section.style.display="block";
     93        sectionTitle.classList.add("selectedHorizontalClassifierNode");
     94        openClassifiers[sectionID] = true; 
     95    }
     96    updateOpenClassifiers();
     97    if(typeof mapEnabled !== 'undefined' /*&& mapEnabled*/){
     98        //console.log("Classifier scripts -> updateMap()");
     99        toggleMapSection({"expand": expanding, "nodeID": sectionID});
     100        updateMap();
     101    }
     102    }
     103    else
     104    {
     105    // get teh content of the section
     106    httpBrowseRequest(sectionID, "hlist");
     107    }
     108    // now hide the one that was already displayed (if any)
     109    var children = parent.querySelectorAll('.childrenlist');
     110    for (var i = 0; i < children.length; i++) {
     111    var child = children[i];
     112    var cid = child.id.substring(3); // remove 'div' from the id so we can get the section id
     113    if (cid != sectionID) {
     114        child.style.display="none";
     115        var childTitle = document.getElementById('title'+cid);
     116        childTitle.classList.remove("selectedHorizontalClassifierNode");
     117        delete openClassifiers[cid];
     118    }
     119    }
     120    updateOpenClassifiers();
     121
    61122}
    62123
     
    118179}
    119180
    120 function httpBrowseRequest(sectionID)
     181function getParentID(sectionID) {
     182    if (sectionID.lastIndexOf(".") != -1) {
     183    return sectionID.substring(0, sectionID.lastIndexOf("."));
     184    }
     185    return sectionID;
     186}
     187
     188function httpBrowseRequest(sectionID, listType)
    121189{
    122190    if(!inProgress[sectionID])
    123191    {
    124         inProgress[sectionID] = true;
    125        
     192        inProgress[sectionID] = true;
     193
     194        if (listType != "hlist") {
    126195        var sectionToggle = gs.jqGet("toggle" + sectionID);
    127196        sectionToggle.attr("src", gs.imageURLs.loading);
    128        
     197        }
    129198        var url = gs.xsltParams.library_name + "/collection/" + gs.cgiParams.c + "/browse/" + sectionID.replace(/\./g, "/") + "?excerptid=div" + sectionID;
    130199
    131         if(gs.cgiParams.berrybasket == "on")
    132         {
    133             url = url + "&berrybasket=on";
    134         }
    135200        if(gs.cgiParams.favouritebasket == "on")
    136201        {
     
    146211        .done(function(data)
    147212        {
    148             var newDiv = $("<div>");                                       
     213            var newDiv = $("<div>");
     214            if (listType == "hlist") {
     215            var parent = gs.jqGet("classifiernodelist"+getParentID(sectionID));
     216            var title = gs.jqGet("title"+sectionID);
     217            title.addClass("selectedHorizontalClassifierNode");
     218            parent.append(newDiv);
     219
     220            } else {
    149221            var sibling = gs.jqGet("title" + sectionID);
    150             sibling.after(newDiv);
     222                sibling.after(newDiv);
     223            sectionToggle.attr("src", gs.imageURLs.collapse);
     224
     225            }
     226            newDiv.html(data);
    151227           
    152             newDiv.html(data);
    153             sectionToggle.attr("src", gs.imageURLs.collapse);
    154228            openClassifiers[sectionID] = true; 
    155229           
    156             if(gs.cgiParams.berrybasket == "on")
    157             {
    158                     berryCheckout();
    159             }
    160230            if(gs.cgiParams.favouritebasket == "on")
    161231            {
     
    172242        })
    173243        .fail(function()
    174         {
    175             sectionToggle.attr("src", gs.imageURLs.expand);
     244              {
     245              if (listType != "hlist") {
     246                  sectionToggle.attr("src", gs.imageURLs.expand);
     247              }
    176248        })
    177249        .always(function()
     
    180252            busy = false;
    181253        });
    182     }
    183 }
     254        }
     255             
     256}
  • main/trunk/greenstone3/web/interfaces/default/transform/pages/classifier.xsl

    r37680 r38003  
    8585        </xsl:when>
    8686        <xsl:otherwise>
    87           <table id="classifiernodelist">
     87      <table class="childrenlist" id="div{@nodeID}">
     88       
     89          <!--<table id="classifiernodelist">-->
    8890            <xsl:text> </xsl:text>
    8991            <xsl:call-template name="processNodeChildren">
     
    103105      <xsl:value-of select="/page/pageRequest/paramList/param[@name = 'cl']/@value" />
    104106    </xsl:variable>
     107
    105108    <ul class="horizontalContainer">
    106109      <xsl:for-each select='classifierNode'>
    107         <li>
     110        <li id="title{@nodeID}">
    108111          <xsl:attribute name="class">
    109             <xsl:if test="$selectedNode = @nodeID or starts-with($selectedNode, concat(@nodeID, '.')) or (not(contains($selectedNode, '.')) and @nodeID = concat($selectedNode, '.1'))">selectedHorizontalClassifierNode </xsl:if>
     112<!--            <xsl:if test="$selectedNode = @nodeID or starts-with($selectedNode, concat(@nodeID, '.')) or (not(contains($selectedNode, '.')) and @nodeID = concat($selectedNode, '.1'))">selectedHorizontalClassifierNode </xsl:if>-->
     113             <xsl:if test="$selectedNode = @nodeID or starts-with($selectedNode, concat(@nodeID, '.')) or (@nodeID = concat($selectedNode, '.1'))">selectedHorizontalClassifierNode </xsl:if>
    110114            <xsl:text>horizontalClassifierNode</xsl:text>
    111115          </xsl:attribute>
     
    129133      </xsl:when>
    130134      <xsl:otherwise>
    131         <table id="classifiernodelist">
    132           <xsl:for-each select='classifierNode'>
     135
     136        <div id="classifiernodelist{@nodeID}">
     137        <xsl:for-each select='classifierNode'>
     138      <xsl:if test="classifierNode|documentNode">
     139        <table class="childrenlist" id="div{@nodeID}">
    133140            <xsl:call-template name="processNodeChildren">
    134141              <xsl:with-param name='collName' select='$collName' />
    135142              <xsl:with-param name='serviceName' select='$serviceName' />
    136143            </xsl:call-template>
     144        </table>
     145      </xsl:if>
    137146          </xsl:for-each>
    138         </table>
     147        </div>
    139148      </xsl:otherwise>
    140149    </xsl:choose>
     
    225234                    <td>
    226235                      <table class="childrenlist" id="div{@nodeID}">
    227                         <xsl:apply-templates select='.' mode='process-all-children'>
     236           
     237            <xsl:apply-templates select='.' mode='process-all-children'>
    228238                          <xsl:with-param name='collName' select='$collName' />
    229239                          <xsl:with-param name='serviceName' select='$serviceName' />
     
    280290    <xsl:choose>
    281291      <xsl:when test="@childType = 'HList'">
     292    <tr><td>
    282293        <xsl:call-template name="HList">
    283294          <xsl:with-param name='collName' select='$collName' />
    284295          <xsl:with-param name='serviceName' select='$serviceName' />
    285296        </xsl:call-template>
     297      </td></tr>
    286298      </xsl:when>
    287299      <xsl:otherwise>
     
    370382  -->
    371383  <xsl:template match="classifierNode[@classifierStyle = 'HList']">
    372     <gsf:link type="classifier" style="static">
     384    <gsf:link type="classifier">
    373385      <gsf:metadata name="Title" />
    374386    </gsf:link>
  • main/trunk/greenstone3/web/interfaces/default/transform/shared-templates.xsl

    r37703 r38003  
    178178    <xsl:when test="$link-type='static'">static</xsl:when>
    179179    <xsl:when test="$link-type='javascript'">javascript</xsl:when>
    180     <xsl:when test="@classifierStyle = 'HList'">static</xsl:when>
    181     <xsl:when test="not(/page/pageResponse/format[@type='browse']/gsf:option[@name='turnstyleClassifiers']) or /page/pageResponse/format[@type='browse']/gsf:option[@name='turnstyleClassifiers']/@value='true'">javascript</xsl:when>
     180    <xsl:when test="not(/page/pageResponse/format[@type='browse']/gsf:option[@name='turnstyleClassifiers']) or /page/pageResponse/format[@type='browse']/gsf:option[@name='turnstyleClassifiers']/@value='true'"><xsl:choose><xsl:when test="@classifierStyle = 'HList' and util:oidIsTopChild(@nodeID)">static</xsl:when><xsl:when test="@classifierStyle = 'HList'">hlistjavascript</xsl:when><xsl:otherwise>javascript</xsl:otherwise></xsl:choose></xsl:when>
    182181    <xsl:otherwise>static</xsl:otherwise>
    183182      </xsl:choose>
     
    187186    <xsl:value-of select='$library_name'/>/collection/<xsl:value-of select='/page/pageResponse/collection/@name'/>/browse/<xsl:choose><xsl:when test="$node-id"><xsl:value-of select="$node-id"/></xsl:when><xsl:otherwise><xsl:value-of select='util:replace(@nodeID, ".", "/")'/></xsl:otherwise></xsl:choose>
    188187      </xsl:when>
     188      <xsl:when test="$final-link-type='hlistjavascript'">javascript:toggleHListSection('<xsl:value-of select="@nodeID"/>');</xsl:when>
    189189      <xsl:otherwise>javascript:toggleSection('<xsl:value-of select="@nodeID"/>');</xsl:otherwise>
    190190    </xsl:choose>   
Note: See TracChangeset for help on using the changeset viewer.