From a21383af58203bf0e6dc36a07ea78fae0b58c1ef Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Mon, 12 Nov 2012 20:57:27 +0100 Subject: crossbrowser fixes for quicksearch shortening FS#2660 fixes the problem with missing innerText in Firefox (and other browsers) and corrects shortening in regard to paddings and the use of the text-overflow attribute --- lib/scripts/qsearch.js | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'lib/scripts/qsearch.js') diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js index a309f9e29..c3d0d94fb 100644 --- a/lib/scripts/qsearch.js +++ b/lib/scripts/qsearch.js @@ -92,12 +92,18 @@ var dw_qsearch = { .show() .css('white-space', 'nowrap'); - // shorten namespaces if too long - max = dw_qsearch.$outObj[0].clientWidth; + // disable overflow during shortening + dw_qsearch.$outObj.find('li').css('overflow', 'visible'); + $links = dw_qsearch.$outObj.find('a'); - too_big = (document.documentElement.dir === 'rtl') - ? function (l) { return l.offsetLeft < 0; } - : function (l) { return l.offsetWidth + l.offsetLeft > max; }; + max = dw_qsearch.$outObj[0].clientWidth; // maximum width allowed (but take away paddings below) + if(document.documentElement.dir === 'rtl'){ + max -= parseInt(dw_qsearch.$outObj.css('padding-left')); + too_big = function (l) { return l.offsetLeft < 0; }; + }else{ + max -= parseInt(dw_qsearch.$outObj.css('padding-right')); + too_big = function (l) { return l.offsetWidth + l.offsetLeft > max; }; + } $links.each(function () { var start, length, replace, nsL, nsR, eli, runaway; @@ -106,6 +112,12 @@ var dw_qsearch = { return; } + // make IE's innerText available to W3C conform browsers + if(this.textContent){ + this.__defineGetter__('innerText', function(){ return this.textContent }); + this.__defineSetter__('innerText', function(val){ this.textContent = val }); + } + nsL = this.innerText.indexOf('('); nsR = this.innerText.indexOf(')'); eli = 0; @@ -138,6 +150,9 @@ var dw_qsearch = { nsR = this.innerText.indexOf(')'); } }); + + // reenable overflow + dw_qsearch.$outObj.find('li').css('overflow', 'hidden').css('text-overflow','ellipsis'); } }; -- cgit v1.2.3 From e4a50ea7ef39fc26378570f7a62c58e9bbf4bfda Mon Sep 17 00:00:00 2001 From: Klap-in Date: Tue, 29 Jan 2013 01:05:27 +0100 Subject: Keep search suggestions, during typing in search field --- lib/scripts/qsearch.js | 2 -- 1 file changed, 2 deletions(-) (limited to 'lib/scripts/qsearch.js') diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js index c3d0d94fb..71aa2ba0e 100644 --- a/lib/scripts/qsearch.js +++ b/lib/scripts/qsearch.js @@ -35,7 +35,6 @@ var dw_qsearch = { // attach eventhandler to search field do_qsearch = function () { - dw_qsearch.clear_results(); var value = dw_qsearch.$inObj.val(); if (value === '') { return; @@ -57,7 +56,6 @@ var dw_qsearch = { window.clearTimeout(dw_qsearch.timer); dw_qsearch.timer = null; } - dw_qsearch.clear_results(); dw_qsearch.timer = window.setTimeout(do_qsearch, 500); } ); -- cgit v1.2.3 From 48606867454b93c7d11708b8193fbc2a4368aaf9 Mon Sep 17 00:00:00 2001 From: Klap-in Date: Sun, 3 Feb 2013 19:53:11 +0100 Subject: use var and remove suggestions when needed Use variable for maximum number of suggestions for quicksearch. And hide suggestions when search field is emptied, or when no suggestion are found. --- lib/exe/ajax.php | 4 +++- lib/scripts/qsearch.js | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'lib/scripts/qsearch.js') diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php index fdc28d4f1..9769503a7 100644 --- a/lib/exe/ajax.php +++ b/lib/exe/ajax.php @@ -45,6 +45,8 @@ function ajax_qsearch(){ global $lang; global $INPUT; + $maxnumbersuggestions = 50; + $query = $INPUT->post->str('q'); if(empty($query)) $query = $INPUT->get->str('q'); if(empty($query)) return; @@ -72,7 +74,7 @@ function ajax_qsearch(){ echo '
  • ' . html_wikilink(':'.$id,$name) . '
  • '; $counter ++; - if($counter > 50) { + if($counter > $maxnumbersuggestions) { echo '
  • ...
  • '; break; } diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js index 71aa2ba0e..0c3609ada 100644 --- a/lib/scripts/qsearch.js +++ b/lib/scripts/qsearch.js @@ -37,6 +37,7 @@ var dw_qsearch = { do_qsearch = function () { var value = dw_qsearch.$inObj.val(); if (value === '') { + dw_qsearch.clear_results(); return; } jQuery.post( @@ -83,7 +84,10 @@ var dw_qsearch = { onCompletion: function(data) { var max, $links, too_big; - if (data === '') { return; } + if (data === '') { + dw_qsearch.clear_results(); + return; + } dw_qsearch.$outObj .html(data) -- cgit v1.2.3