Ignore:
Timestamp:
2012-03-23T16:41:17+13:00 (12 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

File:
1 edited

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");
Note: See TracChangeset for help on using the changeset viewer.