Changeset 25283

Show
Ignore:
Timestamp:
23.03.2012 16:41:17 (8 years ago)
Author:
sjm84
Message:

Added the ability to filter pages on the paged-image widget, as well as the ability to show or hide the page editor

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/oran/js/document_scripts.js

    r25177 r25283  
     1var _imageZoomEnabled = false; 
     2var _linkCellMap = new Array(); 
     3var _onCells = new Array(); 
     4 
    15/******************** 
    26* EXPANSION SCRIPTS * 
     
    110114**********************/ 
    111115 
    112 function changePage(href) 
    113 { 
    114     var ajax = new gs.functions.ajaxRequest(); 
    115     ajax.open("GET", href + "&excerptid=gs-document"); 
    116     ajax.onreadystatechange = function() 
    117     { 
    118         if(ajax.readyState == 4 && ajax.status == 200) 
    119         { 
    120             var contentElem = document.getElementById("gs-document"); 
    121             contentElem.innerHTML = ajax.responseText; 
    122         } 
    123     } 
    124     ajax.send(); 
    125 } 
    126  
    127116function changeView() 
    128117{ 
     
    207196} 
    208197 
    209 function retrieveTableOfContents() 
     198function retrieveTableOfContentsAndTitles() 
    210199{ 
    211200    var ajax = gs.functions.ajaxRequest(); 
     
    225214            var loading = document.getElementById("tocLoadingImage"); 
    226215            loading.parentNode.removeChild(loading); 
     216            console.log("Error Loading TOC"); 
    227217        } 
    228218    } 
     
    272262} 
    273263 
     264function changePage(href) 
     265{ 
     266    var ajax = new gs.functions.ajaxRequest(); 
     267    ajax.open("GET", href + "&excerptid=gs-document"); 
     268    ajax.onreadystatechange = function() 
     269    { 
     270        if(ajax.readyState == 4 && ajax.status == 200) 
     271        { 
     272            var contentElem = document.getElementById("gs-document"); 
     273            contentElem.innerHTML = ajax.responseText; 
     274             
     275            for(var i = 0; i < _onCells.length; i++) 
     276            { 
     277                cells[i].cell.style.border = ""; 
     278            } 
     279            _onCells = new Array; 
     280             
     281            if(_linkCellMap[href]) 
     282            { 
     283                cells = _linkCellMap[href]; 
     284                for(var i = 0; i < cells.length; i++) 
     285                { 
     286                    cells[i].cell.style.border = "3px red solid"; 
     287                    _onCells.push(cells[i]); 
     288                } 
     289            } 
     290        } 
     291    } 
     292    ajax.send(); 
     293} 
     294 
    274295function SliderWidget(_links) 
    275296{ 
     
    285306    var _linkTable = document.createElement("TABLE"); 
    286307    _mainDiv.appendChild(_linkTable); 
    287     _linkTable.style.width = (75 * _links.length) + "px"; 
    288308     
    289309    //The image row of the table 
     
    291311    _linkTable.appendChild(_linkRow); 
    292312     
    293     //The label row 
    294     var _numberRow = document.createElement("TR"); 
    295     _linkTable.appendChild(_numberRow); 
     313    //The list of titles we can search through 
     314    var _titles = new Array(); 
    296315 
    297316    //**************** 
     
    308327    //PRIVATE FUNCTIONS 
    309328    //***************** 
     329     
     330    var setUpFilterBox = function() 
     331    { 
     332        var filter = $("#filterText"); 
     333        filter.keyup(function() 
     334        { 
     335            var currentValue = filter.val(); 
     336            for(var i = 0; i < _titles.length; i++) 
     337            { 
     338                var currentTitle = _titles[i]; 
     339                if(currentTitle[0].search(/*"^" +*/ currentValue.replace(/\./g, "\\.")) != -1) 
     340                { 
     341                    currentTitle[1].cell.style.display = "table-cell"; 
     342                } 
     343                else 
     344                { 
     345                    currentTitle[1].cell.style.display = "none"; 
     346                } 
     347            } 
     348        }); 
     349    } 
    310350     
    311351    var getImage = function(page) 
     
    326366        template +=       '</xsl:attribute>'; 
    327367        template +=     '</img>'; 
     368        template +=     '<p>'; 
     369        template +=       "<xsl:value-of disable-output-escaping=\"yes\" select=\"/page/pageResponse/document/documentNode/metadataList/metadata[@name = 'Title']\"/>"; 
     370        template +=     '</p>'; 
    328371        template +=   '</html>'; 
    329372        template += '</xsl:template>'; 
     
    344387                var hrefEnd = text.indexOf("\"", hrefStart); 
    345388                var href = text.substring(hrefStart, hrefEnd); 
    346                 console.log(href); 
     389 
    347390                var image = document.createElement("IMG"); 
    348391                $(image).load(function() 
     
    360403                }); 
    361404                image.setAttribute("src", href); 
     405                 
     406                var titleStart = text.indexOf("<p>") + 3; 
     407                var titleEnd = text.indexOf("</p>"); 
     408                var title = text.substring(titleStart, titleEnd); 
    362409            } 
    363410            else if (ajax.readyState == 4 && !page.failed) 
     
    421468        link.setAttribute("href", "javascript:changePage(\"" + href + "\");"); 
    422469         
     470        if(!_linkCellMap[href]) 
     471        { 
     472            _linkCellMap[href] = new Array(); 
     473        } 
     474        _linkCellMap[href].push(_links[i]); 
     475         
    423476        var image = document.createElement("IMG"); 
    424477        link.appendChild(image); 
     
    426479        _links[i].image = image; 
    427480         
    428         var spacer = document.createElement("TD"); 
    429         _linkRow.appendChild(spacer); 
    430         spacer.setAttribute("class", "pageSliderSpacer"); 
    431          
    432         var num = document.createElement("TD"); 
    433         _numberRow.appendChild(num); 
    434         num.innerHTML = "Page " + (i + 1); 
    435         num.style.textAlign = "center"; 
    436          
    437         var spacer = document.createElement("TD"); 
    438         _numberRow.appendChild(spacer); 
    439         spacer.setAttribute("class", "pageSliderSpacer"); 
    440     } 
    441      
     481        var title = _links[i].innerHTML; 
     482        if(title.search(/^[^ ]+ [^ ]+$/) != -1) 
     483        { 
     484            var section = title.replace(/^([^ ]+) [^ ]+$/, "$1"); 
     485            var page = title.replace(/^[^ ]+ ([^ ]+)$/, "$1"); 
     486            if(page.search(/^[0-9]+$/) != -1) 
     487            { 
     488                title = page; 
     489            } 
     490        } 
     491        _titles.push([title, _links[i]]); 
     492         
     493        var text = document.createTextNode(title); 
     494        col.appendChild(text); 
     495    } 
     496     
     497    setUpFilterBox(); 
    442498    startCheckFunction(); 
    443499} 
     
    597653    var newCell = document.createElement("TD"); 
    598654    newCell.setAttribute("style", "font-size:0.7em; padding:0px 10px"); 
     655    newCell.setAttribute("class", "editMetadataButton"); 
    599656     
    600657    var linkSpan = document.createElement("SPAN"); 
     
    604661    var linkLabel = document.createElement("SPAN"); 
    605662    linkLabel.innerHTML = "edit metadata"; 
     663    newCell.linkLabel = linkLabel; 
    606664    var linkIcon = document.createElement("SPAN"); 
    607665    linkIcon.setAttribute("class", "ui-icon ui-icon-folder-collapsed"); 
     666    newCell.linkIcon = linkIcon; 
    608667     
    609668    var uList = document.createElement("UL"); 
     
    650709} 
    651710 
     711function setEditingFeaturesVisible(visible) 
     712{ 
     713    if(visible) 
     714    { 
     715        document.getElementById("editContentButton").innerHTML = "Hide editor"; 
     716    } 
     717    else 
     718    { 
     719        document.getElementById("editContentButton").innerHTML = "Edit content"; 
     720    } 
     721 
     722    var saveButton = document.getElementById("saveButton"); 
     723    var metadataListLabel = document.getElementById("metadataListLabel"); 
     724    var metadataList = document.getElementById("metadataSetList"); 
     725     
     726    var visibility = (visible ? "" : "none"); 
     727    saveButton.style.display = visibility; 
     728    metadataListLabel.style.display = visibility; 
     729    metadataList.style.display = visibility; 
     730     
     731    var buttons = gs.functions.getElementsByClassName("editMetadataButton"); 
     732     
     733    for(var i = 0; i < buttons.length; i++) 
     734    { 
     735        buttons[i].style.display = visibility; 
     736        buttons[i].linkLabel.innerHTML = "edit metadata"; 
     737        buttons[i].linkIcon.setAttribute("class", "ui-icon ui-icon-folder-collapsed"); 
     738    } 
     739     
     740    var tables = document.getElementsByTagName("TABLE"); 
     741    for(var i = 0; i < tables.length; i++) 
     742    { 
     743        var currentTable = tables[i]; 
     744        if(currentTable.getAttribute("id") && currentTable.getAttribute("id").search(/^meta/) != -1) 
     745        { 
     746            currentTable.style.display = "none"; 
     747            currentTable.metaNameField.style.display = "none"; 
     748            currentTable.addRowButton.style.display = "none"; 
     749        } 
     750    } 
     751} 
     752 
    652753function readyPageForEditing() 
    653754{ 
     755    if(document.getElementById("metadataSetList")) 
     756    { 
     757        var setList = document.getElementById("metadataSetList"); 
     758        if(!setList.style.display || setList.style.display == "") 
     759        { 
     760            setEditingFeaturesVisible(false); 
     761        } 
     762        else 
     763        { 
     764            setEditingFeaturesVisible(true); 
     765        } 
     766        return; 
     767    } 
     768 
     769    document.getElementById("editContentButton").innerHTML = "Hide Editor"; 
     770     
    654771    var textDivs = gs.functions.getElementsByClassName("sectionText"); 
    655772    for(var i = 0; i < textDivs.length; i++) 
     
    671788    visibleMetadataList.setAttribute("id", "metadataSetList"); 
    672789    var metadataListLabel = document.createElement("SPAN"); 
     790    metadataListLabel.setAttribute("id", "metadataListLabel"); 
    673791    metadataListLabel.setAttribute("style", "margin-left:20px;"); 
    674792    metadataListLabel.innerHTML = "Visible metadata: "; 
    675793    editBar.appendChild(metadataListLabel); 
    676794    editBar.appendChild(visibleMetadataList); 
     795    visibleMetadataList.onchange = onVisibleMetadataSetChange; 
    677796     
    678797    var statusBarDiv = document.createElement("DIV");