From 7647d87743e49e1c775040271cf5c9f60cd25eb4 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Fri, 17 Jan 2014 00:13:41 +0100 Subject: Made a jquery function of dw_qsearch --- lib/scripts/qsearch.js | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'lib/scripts') diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js index e5cc73b49..fa8bc237d 100644 --- a/lib/scripts/qsearch.js +++ b/lib/scripts/qsearch.js @@ -6,10 +6,13 @@ * @author Adrian Lang * @author Michal Rezler */ +jQuery.fn.dw_qsearch = function(overrides) { -var dw_qsearch = { + var dw_qsearch = { - $inObj: null, + output_id: '#qsearch__out', + + $inObj: this, $outObj: null, timer: null, curRequest: null, @@ -19,14 +22,11 @@ var dw_qsearch = { * * Attaches the event handlers * - * @param input element (jQuery selector/DOM obj) - * @param output element (jQuery selector/DOM obj) */ - init: function (input, output) { + init: function () { var do_qsearch; - dw_qsearch.$inObj = jQuery(input); - dw_qsearch.$outObj = jQuery(output); + dw_qsearch.$outObj = jQuery(dw_qsearch.output_id); // objects found? if (dw_qsearch.$inObj.length === 0 || @@ -163,8 +163,21 @@ var dw_qsearch = { // reenable overflow dw_qsearch.$outObj.find('li').css('overflow', 'hidden').css('text-overflow','ellipsis'); } + + + }; + + jQuery.extend(dw_qsearch, overrides); + + if (!overrides.deferInit) { + dw_qsearch.init(); + } + + return dw_qsearch; }; jQuery(function () { - dw_qsearch.init('#qsearch__in','#qsearch__out'); + jQuery('#qsearch__in').dw_qsearch({ + output_id: '#qsearch__out' + }); }); -- cgit v1.2.3 From f9328d30809630f0fe49373facd9f8e1d47f38ba Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Fri, 17 Jan 2014 00:15:23 +0100 Subject: Reformat qsearch.js --- lib/scripts/qsearch.js | 282 +++++++++++++++++++++++++------------------------ 1 file changed, 145 insertions(+), 137 deletions(-) (limited to 'lib/scripts') diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js index fa8bc237d..a68d5f323 100644 --- a/lib/scripts/qsearch.js +++ b/lib/scripts/qsearch.js @@ -6,163 +6,171 @@ * @author Adrian Lang * @author Michal Rezler */ -jQuery.fn.dw_qsearch = function(overrides) { +jQuery.fn.dw_qsearch = function (overrides) { var dw_qsearch = { output_id: '#qsearch__out', - $inObj: this, - $outObj: null, - timer: null, - curRequest: null, - - /** - * initialize the quick search - * - * Attaches the event handlers - * - */ - init: function () { - var do_qsearch; - - dw_qsearch.$outObj = jQuery(dw_qsearch.output_id); - - // objects found? - if (dw_qsearch.$inObj.length === 0 || - dw_qsearch.$outObj.length === 0) { - return; - } - - // attach eventhandler to search field - do_qsearch = function () { - // abort any previous request - if (dw_qsearch.curRequest != null) { - dw_qsearch.curRequest.abort(); - } - var value = dw_qsearch.$inObj.val(); - if (value === '') { - dw_qsearch.clear_results(); + $inObj: this, + $outObj: null, + timer: null, + curRequest: null, + + /** + * initialize the quick search + * + * Attaches the event handlers + * + */ + init: function () { + var do_qsearch; + + dw_qsearch.$outObj = jQuery(dw_qsearch.output_id); + + // objects found? + if (dw_qsearch.$inObj.length === 0 || + dw_qsearch.$outObj.length === 0) { return; } - dw_qsearch.curRequest = jQuery.post( - DOKU_BASE + 'lib/exe/ajax.php', - { - call: 'qsearch', - q: encodeURI(value) - }, - dw_qsearch.onCompletion, - 'html' - ); - }; - dw_qsearch.$inObj.keyup( - function() { - if(dw_qsearch.timer){ - window.clearTimeout(dw_qsearch.timer); - dw_qsearch.timer = null; + // attach eventhandler to search field + do_qsearch = function () { + // abort any previous request + if (dw_qsearch.curRequest != null) { + dw_qsearch.curRequest.abort(); } - dw_qsearch.timer = window.setTimeout(do_qsearch, 500); - } - ); - - // attach eventhandler to output field - dw_qsearch.$outObj.click(dw_qsearch.clear_results); - }, - - /** - * Empty and hide the output div - */ - clear_results: function(){ - dw_qsearch.$outObj.hide(); - dw_qsearch.$outObj.text(''); - }, - - /** - * Callback. Reformat and display the results. - * - * Namespaces are shortened here to keep the results from overflowing - * or wrapping - * - * @param data The result HTML - */ - onCompletion: function(data) { - var max, $links, too_big; - - dw_qsearch.curRequest = null; - - if (data === '') { - dw_qsearch.clear_results(); - return; - } - - dw_qsearch.$outObj - .html(data) - .show() - .css('white-space', 'nowrap'); - - // disable overflow during shortening - dw_qsearch.$outObj.find('li').css('overflow', 'visible'); - - $links = dw_qsearch.$outObj.find('a'); - 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; + var value = dw_qsearch.$inObj.val(); + if (value === '') { + dw_qsearch.clear_results(); + return; + } + dw_qsearch.curRequest = jQuery.post( + DOKU_BASE + 'lib/exe/ajax.php', + { + call: 'qsearch', + q: encodeURI(value) + }, + dw_qsearch.onCompletion, + 'html' + ); + }; + + dw_qsearch.$inObj.keyup( + function () { + if (dw_qsearch.timer) { + window.clearTimeout(dw_qsearch.timer); + dw_qsearch.timer = null; + } + dw_qsearch.timer = window.setTimeout(do_qsearch, 500); + } + ); - if (!too_big(this)) { + // attach eventhandler to output field + dw_qsearch.$outObj.click(dw_qsearch.clear_results); + }, + + /** + * Empty and hide the output div + */ + clear_results: function () { + dw_qsearch.$outObj.hide(); + dw_qsearch.$outObj.text(''); + }, + + /** + * Callback. Reformat and display the results. + * + * Namespaces are shortened here to keep the results from overflowing + * or wrapping + * + * @param data The result HTML + */ + onCompletion: function (data) { + var max, $links, too_big; + + dw_qsearch.curRequest = null; + + if (data === '') { + dw_qsearch.clear_results(); 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 }); + dw_qsearch.$outObj + .html(data) + .show() + .css('white-space', 'nowrap'); + + // disable overflow during shortening + dw_qsearch.$outObj.find('li').css('overflow', 'visible'); + + $links = dw_qsearch.$outObj.find('a'); + 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; + }; } - nsL = this.innerText.indexOf('('); - nsR = this.innerText.indexOf(')'); - eli = 0; - runaway = 0; - - while((nsR - nsL > 3) && too_big(this) && runaway++ < 500) { - if(eli !== 0){ - // elipsis already inserted - if( (eli - nsL) > (nsR - eli) ){ - // cut left - start = eli - 2; - length = 2; - }else{ - // cut right - start = eli + 1; - length = 1; - } - replace = ''; - }else{ - // replace middle with ellipsis - start = Math.floor( nsL + ((nsR-nsL)/2) ); - length = 1; - replace = '…'; + $links.each(function () { + var start, length, replace, nsL, nsR, eli, runaway; + + if (!too_big(this)) { + 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 + }); } - this.innerText = substr_replace(this.innerText, - replace, start, length); - eli = this.innerText.indexOf('…'); nsL = this.innerText.indexOf('('); nsR = this.innerText.indexOf(')'); - } - }); + eli = 0; + runaway = 0; + + while ((nsR - nsL > 3) && too_big(this) && runaway++ < 500) { + if (eli !== 0) { + // elipsis already inserted + if ((eli - nsL) > (nsR - eli)) { + // cut left + start = eli - 2; + length = 2; + } else { + // cut right + start = eli + 1; + length = 1; + } + replace = ''; + } else { + // replace middle with ellipsis + start = Math.floor(nsL + ((nsR - nsL) / 2)); + length = 1; + replace = '…'; + } + this.innerText = substr_replace(this.innerText, + replace, start, length); - // reenable overflow - dw_qsearch.$outObj.find('li').css('overflow', 'hidden').css('text-overflow','ellipsis'); - } + eli = this.innerText.indexOf('…'); + nsL = this.innerText.indexOf('('); + nsR = this.innerText.indexOf(')'); + } + }); + + // reenable overflow + dw_qsearch.$outObj.find('li').css('overflow', 'hidden').css('text-overflow', 'ellipsis'); + } }; -- cgit v1.2.3 From ceb99d9541015ec69a997e127a3cbb8b81798aa5 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Fri, 17 Jan 2014 01:30:44 +0100 Subject: move getSearchterm to overrideable method --- lib/scripts/qsearch.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'lib/scripts') diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js index a68d5f323..f783cfd01 100644 --- a/lib/scripts/qsearch.js +++ b/lib/scripts/qsearch.js @@ -40,7 +40,7 @@ jQuery.fn.dw_qsearch = function (overrides) { if (dw_qsearch.curRequest != null) { dw_qsearch.curRequest.abort(); } - var value = dw_qsearch.$inObj.val(); + var value = dw_qsearch.getSearchterm(); if (value === '') { dw_qsearch.clear_results(); return; @@ -70,6 +70,13 @@ jQuery.fn.dw_qsearch = function (overrides) { dw_qsearch.$outObj.click(dw_qsearch.clear_results); }, + /** + * Read search term from input + */ + getSearchterm: function() { + return dw_qsearch.$inObj.val(); + }, + /** * Empty and hide the output div */ -- cgit v1.2.3 From 5b82acf8318410c81848ddc7f6c0dc201a735626 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Fri, 17 Jan 2014 14:46:26 +0100 Subject: Use more general name for qsearch output --- lib/scripts/qsearch.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/scripts') diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js index f783cfd01..95c632e45 100644 --- a/lib/scripts/qsearch.js +++ b/lib/scripts/qsearch.js @@ -10,7 +10,7 @@ jQuery.fn.dw_qsearch = function (overrides) { var dw_qsearch = { - output_id: '#qsearch__out', + output: '#qsearch__out', $inObj: this, $outObj: null, @@ -26,7 +26,7 @@ jQuery.fn.dw_qsearch = function (overrides) { init: function () { var do_qsearch; - dw_qsearch.$outObj = jQuery(dw_qsearch.output_id); + dw_qsearch.$outObj = jQuery(dw_qsearch.output); // objects found? if (dw_qsearch.$inObj.length === 0 || @@ -193,6 +193,6 @@ jQuery.fn.dw_qsearch = function (overrides) { jQuery(function () { jQuery('#qsearch__in').dw_qsearch({ - output_id: '#qsearch__out' + output: '#qsearch__out' }); }); -- cgit v1.2.3