diff options
Diffstat (limited to 'lib/scripts/ajax.js')
-rw-r--r-- | lib/scripts/ajax.js | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/lib/scripts/ajax.js b/lib/scripts/ajax.js deleted file mode 100644 index 19d4b86a6..000000000 --- a/lib/scripts/ajax.js +++ /dev/null @@ -1,141 +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> - */ - -var ajax_quicksearch = { - - inObj: null, // jquery object - outObj: null, // jquery object - delay: null, - - /** - * initialize the quick search - * - * Attaches the event handlers - * - * @param input element (JQuery selector/DOM obj) - * @param output element (JQuery selector/DOM obj) - */ - init: function(input, output) { - ajax_quicksearch.inObj = jQuery(input); - ajax_quicksearch.outObj = jQuery(output); - - // objects found? - if (ajax_quicksearch.inObj === []) return; - if (ajax_quicksearch.outObj === []) return; - - // attach eventhandler to search field - ajax_quicksearch.delay = new Delay(function () { - ajax_quicksearch.clear_results(); - var value = ajax_quicksearch.inObj.val(); - if(value === ''){ return; } - jQuery.post( - DOKU_BASE + 'lib/exe/ajax.php', - { - call: 'qsearch', - q: encodeURI(value) - }, - ajax_quicksearch.onCompletion, - 'html' - ); - }); - - ajax_quicksearch.inObj.keyup( - function() { - ajax_quicksearch.clear_results(); - ajax_quicksearch.delay.start(); - } - ); - - // attach eventhandler to output field - ajax_quicksearch.outObj.click( - ajax_quicksearch.outObj.hide - ); - - }, - - /** - * Empty and hide the output div - */ - clear_results: function(){ - ajax_quicksearch.outObj.hide(); - ajax_quicksearch.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) { - if (data === '') { return; } - - var outObj = ajax_quicksearch.outObj; - - outObj.html(data); - outObj.show(); - outObj.css('white-space', 'nowrap'); - - // shorten namespaces if too long - var width = outObj.clientWidth; - var links = outObj.find('a'); - - for (var i=0; i<links.length; i++) { - var content = links[i].text; - - // maximum allowed width: - var max = width - links[i].offsetLeft; - var isRTL = (document.documentElement.dir == 'rtl'); - - if(!isRTL && links[i].offsetWidth < max) continue; - if(isRTL && links[i].offsetLeft > 0) continue; - - var nsL = content.indexOf('('); - var nsR = content.indexOf(')'); - var eli = 0; - var runaway = 0; - - while((nsR - nsL > 3) && - ( - (!isRTL && links[i].offsetWidth > max) || - (isRTL && links[i].offsetLeft < 0) - ) - ){ - - if(runaway++ > 500) return; // just in case something went wrong - - if(eli){ - // elipsis already inserted - if( (eli - nsL) > (nsR - eli) ){ - // cut left - content = content.substring(0,eli-2) + content.substring(eli); - }else{ - // cut right - content = content.substring(0,eli+1) + content.substring(eli+2); - } - }else{ - // replace middle with ellipsis - var mid = Math.floor( nsL + ((nsR-nsL)/2) ); - content = content.substring(0,mid)+'…' + content.substring(mid+1); - } - - eli = content.indexOf('…'); - nsL = content.indexOf('('); - nsR = content.indexOf(')'); - } - } - } -}; - -jQuery(function () { - ajax_quicksearch.init('#qsearch__in','#qsearch__out'); -}); - |