Changeset 30169
- Timestamp:
- 2015-09-02T13:36:28+12:00 (9 years ago)
- Location:
- main/trunk/greenstone3/web/interfaces/default
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/web/interfaces/default/js/document_scripts.js
r29978 r30169 1 1 var _imageZoomEnabled = false; 2 // Choose which types of filtering you want: sectionnum, or sectiontitle. 3 var _filter_on_types = ["sectiontitle", "sectionnum"]; 4 // the text strings for the two radio buttons 5 var _filter_on_num_text = "pagenum"; 6 var _filter_on_title_text = "title"; 7 // are titles numeric match? 8 var _filter_title_numeric = false; 9 2 10 var _linkCellMap = new Array(); 3 11 var _onCells = new Array(); … … 674 682 } 675 683 684 676 685 function SliderWidget(_links) 677 686 { … … 711 720 //PRIVATE FUNCTIONS 712 721 //***************** 713 714 var setUpFilterBox = function() 715 { 716 var filter = $("#filterText"); 717 filter.keyup(function() 718 { 719 var fullValue = filter.val(); 720 var values = fullValue.split(","); 722 723 // _filter_on_types can be "sectionnum", "sectiontitle" 724 var setUpFilterButtons = function() { 725 726 var button_div = $("#filterOnButtons"); 727 button_div.onclick = doFiltering; 728 button_div.html("radio"); 729 if (_filter_on_types.length == 0) { 730 _filter_on_types = ["sectionnum", "sectiontitle"]; 731 } 732 else if (_filter_on_types.length == 1) { 733 if (_filter_on_types[0] == "sectionnum") { 734 button_div.html("(<input type='radio' name='filterOn' value='num' checked>"+_filter_on_num_text+"</input>)"); 735 } else { 736 button_div.html("(<input type='radio' name='filterOn' value='title' checked>"+_filter_on_title_text+"</input>)"); 737 } 738 } else { 739 // should be both options 740 button_div.html("<input type='radio' name='filterOn' value='num' checked>"+_filter_on_num_text+"</input><input type='radio' name='filterOn' value='title'>"+_filter_on_title_text+"</input>"); 741 } 742 } 743 744 var doFiltering = function () { 745 if (typeof _titles == "undefined") { 746 return; 747 } 748 749 var filter_string = $("#filterText").val(); 750 var filter_type = $('input[name="filterOn"]:checked').val(); 751 752 var index = 2; // section num 753 var numeric_match = true; 754 if (filter_type == "title") { 755 index = 3; 756 if (_filter_title_numeric != true) { 757 numeric_match = false; 758 } 759 760 } 761 var values = filter_string.split(","); 721 762 722 var matchingTitles = new Array(); 723 724 for (var l = 0; l < values.length; l++) 725 { 726 var currentValue = values[l].replace(/^ +/g, "").replace(/ +$/g, ""); 727 var isRange = (currentValue.search(/\d+-\d+/) != -1) 728 729 var found = false; 730 for(var i = 0; i < _titles.length; i++) 731 { 732 if(_titles[i][0] == currentValue) 733 { 734 found = true; 735 } 736 } 737 738 if(!found && isRange) 739 { 740 var firstNumber = currentValue.replace(/(\d+)-\d+/, "$1"); 741 var secondNumber = currentValue.replace(/\d+-(\d+)/, "$1"); 742 743 if(firstNumber <= secondNumber) 744 { 745 for(var i = firstNumber; i <= secondNumber; i++) 746 { 747 var numString = i + ""; 748 for(var j = 0; j < _titles.length; j++) 749 { 750 var currentTitle = _titles[j]; 751 if(currentTitle[0].search(numString) != -1) 752 { 753 matchingTitles.push(currentTitle); 754 } 755 } 756 } 757 } 758 } 759 else 760 { 761 for(var i = 0; i < _titles.length; i++) 762 { 763 var currentTitle = _titles[i]; 764 if(currentTitle[0].search(currentValue.replace(/\./g, "\\.")) != -1) 765 { 766 matchingTitles.push(currentTitle); 767 } 768 } 769 } 770 } 771 772 for(var i = 0; i < _titles.length; i++) 773 { 774 $(_titles[i][1].cell).css("display", "none"); 775 } 776 777 for(var i = 0; i < matchingTitles.length; i++) 778 { 779 $(matchingTitles[i][1].cell).css("display", "table-cell"); 780 } 781 }); 763 var matchingTitles = new Array(); 764 765 for (var l = 0; l < values.length; l++) 766 { 767 var currentValue = values[l].replace(/^ +/g, "").replace(/ +$/g, ""); 768 if (numeric_match) { 769 var isRange = (currentValue.search(/\d+-\d+/) != -1); 770 if (isRange) { 771 var firstNumber = currentValue.replace(/(\d+)-\d+/, "$1"); 772 var secondNumber = currentValue.replace(/\d+-(\d+)/, "$1"); 773 774 if(firstNumber <= secondNumber) 775 { 776 for(var i = firstNumber; i <= secondNumber; i++) 777 { 778 var numString = i + ""; 779 for(var j = 0; j < _titles.length; j++) { 780 781 var currentTitle = _titles[j]; 782 if(currentTitle[index] == numString) { 783 matchingTitles.push(currentTitle); 784 } 785 } 786 } 787 } 788 } // if isRange 789 else { 790 for(var j = 0; j < _titles.length; j++) { 791 if (_titles[j][index]==currentValue) { 792 matchingTitles.push(_titles[j]); 793 } 794 } 795 796 } 797 798 } else { // not numeric match. 799 // need to do a search 800 for(var i = 0; i < _titles.length; i++) 801 { 802 var currentTitle = _titles[i]; 803 if(currentTitle[index].toLowerCase().search(currentValue.toLowerCase().replace(/\./g, "\\.")) != -1) 804 { 805 matchingTitles.push(currentTitle); 806 } 807 } 808 } 809 } // for each value from filter string 810 811 // set all to hide... 812 for(var i = 0; i < _titles.length; i++) 813 { 814 $(_titles[i][1].cell).css("display", "none"); 815 } 816 817 // .. then display the matching ones 818 for(var i = 0; i < matchingTitles.length; i++) 819 { 820 $(matchingTitles[i][1].cell).css("display", "table-cell"); 821 } 822 } 823 824 var setUpFilterBox = function() 825 { 826 var filter = $("#filterText"); 827 828 filter.keyup(function() 829 { 830 doFiltering(); 831 }); 782 832 } 783 833 … … 946 996 947 997 var title = $(_links[i]).html(); 948 if(title.search(/^[^ ]+ [^ ]+$/) != -1) 949 { 950 var section = title.replace(/^([^ ]+) [^ ]+$/, "$1"); 951 var page = title.replace(/^[^ ]+ ([^ ]+)$/, "$1"); 952 if(page.search(/^[0-9]+$/) != -1) 953 { 954 title = page; 955 } 956 } 957 _titles.push([title, _links[i]]); 998 var t_section = ""; 999 var t_title = ""; 1000 if (title.search(/tocSectionNumber/) != -1) 1001 { 1002 var matching_regex = /<span class=\"tocSectionNumber\">([0-9]+)<\/span>\s*(.+)$/; 1003 var matches_array = matching_regex.exec(title); 1004 if (matches_array.length == 3) { 1005 t_section = matches_array[1]; 1006 t_title = matches_array[2]; 1007 } 1008 } 1009 1010 _titles.push([title, _links[i], t_section, t_title]); 958 1011 959 1012 col.append($("<br>")); … … 962 1015 963 1016 setUpFilterBox(); 1017 setUpFilterButtons(); 964 1018 startCheckFunction(); 965 }1019 } 966 1020 967 1021 /*********************** -
main/trunk/greenstone3/web/interfaces/default/transform/layouts/toc.xsl
r29520 r30169 89 89 { 90 90 retrieveTableOfContentsAndTitles(); 91 <!--setUpFilterButtons();--> 91 92 }); 92 93 </xsl:text> … … 96 97 <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> 97 98 </div> 98 <table style="width:100%;"><tbody><tr> 99 <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> 99 <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;">xx</span><input id="filterText" type="text" style="width: 100%;"/> 100 <xsl:if test="/page/pageRequest/userInformation and /page/pageRequest/userInformation/@editEnabled = 'true'"> 101 <a href="javascript:extractFilteredPagesToOwnDocument();"><button id="extractDocButton">Extract these pages to document</button></a> 102 </xsl:if> 103 104 <!-- <table style="width:100%;"><tbody><tr> 105 <td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.filter_pages')"/><xsl:text>: </xsl:text><input id="filterText" type="text"/></td> 100 106 </tr> 101 107 <xsl:if test="/page/pageRequest/userInformation and /page/pageRequest/userInformation/@editEnabled = 'true'"> 102 108 <tr><td><a href="javascript:extractFilteredPagesToOwnDocument();"><button id="extractDocButton">Extract these pages to document</button></a></td></tr> 103 109 </xsl:if> 104 </tbody></table> 110 </tbody></table>--> 105 111 </xsl:when> 106 112 <xsl:when test="not(/page/pageRequest/paramList/param[@name = 'ed']/@value = '1')"> … … 202 208 <a id="toclink{@nodeID}" href="javascript:focusSection('{@nodeID}');"> 203 209 <xsl:if test="util:hashToSectionId(@nodeID)"> 204 <xsl:value-of select="util:hashToSectionId(@nodeID)"/> 205 <xsl:text> </xsl:text> 206 </xsl:if> 207 <xsl:call-template name="sectionHeading"/> 210 <span class="tocSectionNumber"><xsl:value-of select="util:hashToSectionId(@nodeID)"/><!--<xsl:text> </xsl:text>--></span></xsl:if><xsl:call-template name="sectionHeading"/> 208 211 </a> 209 212 </td>
Note:
See TracChangeset
for help on using the changeset viewer.