diff options
Diffstat (limited to 'wiki/lib/scripts/qsearch.js')
-rw-r--r-- | wiki/lib/scripts/qsearch.js | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/wiki/lib/scripts/qsearch.js b/wiki/lib/scripts/qsearch.js deleted file mode 100644 index 18e5150..0000000 --- a/wiki/lib/scripts/qsearch.js +++ /dev/null @@ -1,191 +0,0 @@ -/** - * AJAX functions for the pagename quicksearch - * - * @license GPL2 (http://www.gnu.org/licenses/gpl.html) - * @author Andreas Gohr <andi@splitbrain.org> - * @author Adrian Lang <lang@cosmocode.de> - * @author Michal Rezler <m.rezler@centrum.cz> - */ -jQuery.fn.dw_qsearch = function (overrides) { - - var dw_qsearch = { - - output: '#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); - - // 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.getSearchterm(); - if (value === '') { - dw_qsearch.clear_results(); - return; - } - dw_qsearch.$inObj.parents('form').addClass('searching'); - 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); - } - ); - - // attach eventhandler to output field - 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 - */ - clear_results: function () { - dw_qsearch.$inObj.parents('form').removeClass('searching'); - 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.$inObj.parents('form').removeClass('searching'); - - 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; - - if (!too_big(this)) { - return; - } - - nsL = this.textContent.indexOf('('); - nsR = this.textContent.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.textContent = substr_replace(this.textContent, - replace, start, length); - - eli = this.textContent.indexOf('…'); - nsL = this.textContent.indexOf('('); - nsR = this.textContent.indexOf(')'); - } - }); - - // 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 () { - jQuery('#qsearch__in').dw_qsearch({ - output: '#qsearch__out' - }); -}); |