Changeset 5015
- Timestamp:
- 04/22/14 08:14:00 (10 years ago)
- Location:
- vlo/branches/vlo-3.0/vlo-web-app/src/main
- Files:
-
- 1 added
- 3 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/RecordPage.java
r4987 r5015 23 23 import eu.clarin.cmdi.vlo.service.FieldFilter; 24 24 import eu.clarin.cmdi.vlo.service.PageParametersConverter; 25 import eu.clarin.cmdi.vlo.wicket.HighlightSearchTermBehavior; 25 26 import eu.clarin.cmdi.vlo.wicket.components.SolrFieldLabel; 26 27 import eu.clarin.cmdi.vlo.wicket.model.CollectionListModel; … … 62 63 public class RecordPage extends VloBasePage<SolrDocument> { 63 64 64 @SpringBean(name ="documentParamsConverter")65 @SpringBean(name = "documentParamsConverter") 65 66 private PageParametersConverter<SolrDocument> documentParamConverter; 66 @SpringBean(name ="queryParametersConverter")67 @SpringBean(name = "queryParametersConverter") 67 68 private PageParametersConverter<QueryFacetsSelection> selectionParametersConverter; 68 @SpringBean(name ="searchContextParamsConverter")69 @SpringBean(name = "searchContextParamsConverter") 69 70 private PageParametersConverter<SearchContext> contextParamConverter; 70 71 @SpringBean(name = "basicPropertiesFilter") … … 113 114 114 115 addComponents(); 116 add(new HighlightSearchTermBehavior()); 115 117 } 116 118 … … 225 227 final IModel<String> locationModel = new SolrFieldStringModel(getModel(), FacetConstants.FIELD_FILENAME); 226 228 final UrlFromStringModel locationUrlModel = new UrlFromStringModel(locationModel); 227 returnnew TogglePanel(id, Model.of("Show all metadata fields"), Model.of("Hide all metadata fields")) {229 final TogglePanel togglePanel = new TogglePanel(id, Model.of("Show all metadata fields"), Model.of("Hide all metadata fields")) { 228 230 229 231 @Override … … 234 236 } 235 237 }; 238 // highlight search terms when panel becomes visible 239 togglePanel.add(new HighlightSearchTermBehavior()); 240 return togglePanel; 236 241 } 237 242 -
vlo/branches/vlo-3.0/vlo-web-app/src/main/resources/eu/clarin/cmdi/vlo/wicket/pages/clarin-d/colour.css
r5000 r5015 115 115 } 116 116 117 #record .attributeValues .searchword, #recordcmdi .searchword { 118 background: yellow; 119 } 120 117 121 li.searchresultitem:nth-child(even), #record .recorddetailstable tr:nth-child(odd) { 118 122 background: #f1f3f6; -
vlo/branches/vlo-3.0/vlo-web-app/src/main/resources/eu/clarin/cmdi/vlo/wicket/pages/colour.css
r5000 r5015 107 107 } 108 108 109 #record .attributeValues .searchword, #recordcmdi .searchword { 110 background: yellow; 111 } 112 109 113 li.searchresultitem:nth-child(even), #record .recorddetailstable tr:nth-child(odd) { 110 114 background: #ccd6e8; -
vlo/branches/vlo-3.0/vlo-web-app/src/main/resources/eu/clarin/cmdi/vlo/wicket/pages/searchhi.js
r5007 r5015 4 4 /* Modified 20081217 to do in-page searching and wrap up in an object */ 5 5 /* Modified 20081218 to scroll to first hit like 6 6 http://www.woolyss.free.fr/js/searchhi_Woolyss.js and say when not found */ 7 7 /* Modified 20120112 to use the URL instead of referrer */ 8 8 9 9 searchhi = { 10 highlightWord: function(node,word) { 11 // Iterate into this nodes childNodes 12 if (node.hasChildNodes) { 13 for (var hi_cn=0;hi_cn<node.childNodes.length;hi_cn++) { 14 searchhi.highlightWord(node.childNodes[hi_cn],word); 15 } 10 highlightWord: function(node, word) { 11 // Iterate into this nodes childNodes 12 if (node.hasChildNodes) { 13 for (var hi_cn = 0; hi_cn < node.childNodes.length; hi_cn++) { 14 searchhi.highlightWord(node.childNodes[hi_cn], word); 15 } 16 } 17 18 // And do this node itself 19 if (node.nodeType == 3) { // text node 20 tempNodeVal = node.nodeValue.toLowerCase(); 21 tempWordVal = word.toLowerCase(); 22 if (tempNodeVal.indexOf(tempWordVal) != -1) { 23 var pn = node.parentNode; 24 // check if we're inside a "nosearchhi" zone 25 var checkn = pn; 26 while (checkn.nodeType != 9 && 27 checkn.nodeName.toLowerCase() != 'body') { 28 // 9 = top of doc 29 if (checkn.className.match(/\bnosearchhi\b/)) { 30 return; 31 } 32 checkn = checkn.parentNode; 33 } 34 if (pn.className != "searchword") { 35 // word has not already been highlighted! 36 var nv = node.nodeValue; 37 var ni = tempNodeVal.indexOf(tempWordVal); 38 // Create a load of replacement nodes 39 var before = document.createTextNode(nv.substr(0, ni)); 40 var docWordVal = nv.substr(ni, word.length); 41 var after = document.createTextNode(nv.substr(ni + word.length)); 42 var hiwordtext = document.createTextNode(docWordVal); 43 var hiword = document.createElement("span"); 44 hiword.className = "searchword"; 45 hiword.appendChild(hiwordtext); 46 pn.insertBefore(before, node); 47 pn.insertBefore(hiword, node); 48 pn.insertBefore(after, node); 49 pn.removeChild(node); 50 searchhi.found += 1; 51 if (searchhi.found == 1) 52 pn.scrollIntoView(); 53 } 54 } 55 } 56 }, 57 googleSearchHighlight: function() { 58 var ref = document.URL; 59 if (ref.indexOf('?') == -1) 60 return; 61 var qs = ref.substr(ref.indexOf('?') + 1); 62 var qsa = qs.split('&'); 63 for (var i = 0; i < qsa.length; i++) { 64 var qsip = qsa[i].split('='); 65 if (qsip.length == 1) 66 continue; 67 if (qsip[0] == 'q' || qsip[0] == 'p') { // q= for Google, p= for Yahoo 68 var wordstring = unescape(qsip[1].replace(/\+/g, ' ')); 69 searchhi.process(wordstring); 70 } 71 } 72 }, 73 process: function(wordstring) { 74 searchhi.found = 0; 75 var words = wordstring.split(/\s+/); 76 for (w = 0; w < words.length; w++) { 77 searchhi.highlightWord(document.getElementsByTagName("body")[0], words[w]); 78 } 79 if (searchhi.found === 0) { 80 searchhi.nohits(); 81 } 82 }, 83 nohits: function() { 84 }, 85 init: function() { 86 if (!document.createElement || !document.getElementsByTagName) 87 return; 88 // hook up forms of type searchhi 89 var frms = document.getElementsByTagName("form"); 90 for (var i = 0; i < frms.length; i++) { 91 if (frms[i].className.match(/\bsearchhi\b/)) { 92 frms[i].onsubmit = function() { 93 var inps = this.getElementsByTagName("input"); 94 for (var j = 0; j < inps.length; j++) { 95 if (inps[j].type == "text") { 96 searchhi.process(inps[j].value); 97 return false; 98 } 99 } 100 }; 101 } 102 } 103 // highlight search engine referrer results 104 searchhi.googleSearchHighlight(); 16 105 } 17 18 // And do this node itself19 if (node.nodeType == 3) { // text node20 tempNodeVal = node.nodeValue.toLowerCase();21 tempWordVal = word.toLowerCase();22 if (tempNodeVal.indexOf(tempWordVal) != -1) {23 var pn = node.parentNode;24 // check if we're inside a "nosearchhi" zone25 var checkn = pn;26 while (checkn.nodeType != 9 &&27 checkn.nodeName.toLowerCase() != 'body') {28 // 9 = top of doc29 if (checkn.className.match(/\bnosearchhi\b/)) { return; }30 checkn = checkn.parentNode;31 }32 if (pn.className != "searchword") {33 // word has not already been highlighted!34 var nv = node.nodeValue;35 var ni = tempNodeVal.indexOf(tempWordVal);36 // Create a load of replacement nodes37 var before = document.createTextNode(nv.substr(0,ni));38 var docWordVal = nv.substr(ni,word.length);39 var after = document.createTextNode(nv.substr(ni+word.length));40 var hiwordtext = document.createTextNode(docWordVal);41 var hiword = document.createElement("span");42 hiword.className = "searchword";43 hiword.appendChild(hiwordtext);44 pn.insertBefore(before,node);45 pn.insertBefore(hiword,node);46 pn.insertBefore(after,node);47 pn.removeChild(node);48 searchhi.found += 1;49 if (searchhi.found == 1) pn.scrollIntoView();50 }51 }52 }53 },54 55 googleSearchHighlight: function() {56 var ref = document.URL;57 if (ref.indexOf('?') == -1) return;58 var qs = ref.substr(ref.indexOf('?')+1);59 var qsa = qs.split('&');60 for (var i=0;i<qsa.length;i++) {61 var qsip = qsa[i].split('=');62 if (qsip.length == 1) continue;63 if (qsip[0] == 'q' || qsip[0] == 'p') { // q= for Google, p= for Yahoo64 var wordstring = unescape(qsip[1].replace(/\+/g,' '));65 searchhi.process(wordstring);66 }67 }68 },69 70 process: function(wordstring) {71 searchhi.found = 0;72 var words = wordstring.split(/\s+/);73 for (w=0;w<words.length;w++) {74 searchhi.highlightWord(document.getElementsByTagName("body")[0],words[w]);75 }76 if (searchhi.found === 0) {77 searchhi.nohits();78 }79 },80 81 nohits: function() {82 },83 84 init: function() {85 if (!document.createElement || !document.getElementsByTagName) return;86 // hook up forms of type searchhi87 var frms = document.getElementsByTagName("form");88 for (var i=0; i<frms.length; i++) {89 if (frms[i].className.match(/\bsearchhi\b/)) {90 frms[i].onsubmit = function() {91 var inps = this.getElementsByTagName("input");92 for (var j=0; j<inps.length; j++) {93 if (inps[j].type == "text") {94 searchhi.process(inps[j].value);95 return false;96 }97 }98 };99 }100 }101 // highlight search engine referrer results102 searchhi.googleSearchHighlight();103 }104 106 }; 105 106 (function(i) {var u =navigator.userAgent;var e=/*@cc_on!@*/false; var st = 107 setTimeout;if(/webkit/i.test(u)){st(function(){var dr=document.readyState; 108 if(dr=="loaded"||dr=="complete"){i()}else{st(arguments.callee,10);}},10);} 109 else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){ 110 document.addEventListener("DOMContentLoaded",i,false); } else if(e){ ( 111 function(){var t=document.createElement('doc:rdy');try{t.doScroll('left'); 112 i();t=null;}catch(e){st(arguments.callee,0);}})();}else{window.onload=i;}})(searchhi.init); 107 // 108 //(function(i) { 109 // var u = navigator.userAgent; 110 // var e = /*@cc_on!@*/false; 111 // var st = 112 // setTimeout; 113 // if (/webkit/i.test(u)) { 114 // st(function() { 115 // var dr = document.readyState; 116 // if (dr == "loaded" || dr == "complete") { 117 // i() 118 // } else { 119 // st(arguments.callee, 10); 120 // } 121 // }, 10); 122 // } 123 // else if ((/mozilla/i.test(u) && !/(compati)/.test(u)) || (/opera/i.test(u))) { 124 // document.addEventListener("DOMContentLoaded", i, false); 125 // } else if (e) { 126 // ( 127 // function() { 128 // var t = document.createElement('doc:rdy'); 129 // try { 130 // t.doScroll('left'); 131 // i(); 132 // t = null; 133 // } catch (e) { 134 // st(arguments.callee, 0); 135 // } 136 // })(); 137 // } else { 138 // window.onload = i; 139 // } 140 //}) 141 // 142 //(searchhi.init);
Note: See TracChangeset
for help on using the changeset viewer.