diff options
author | Andreas Gohr <andi@splitbrain.org> | 2010-08-29 14:22:01 +0200 |
---|---|---|
committer | Andreas Gohr <andi@splitbrain.org> | 2010-08-29 14:22:01 +0200 |
commit | 2c053ed58376c6709596ab48fc40dceb90d4e89d (patch) | |
tree | c8d0f78c2f47f373473419396d3c0855ec671eca /lib/scripts/ajax.js | |
parent | cb4a07568e84d853fbcd9d5eca37f572fa10786f (diff) | |
parent | 5479a8c3341247ca228026819f20f3ab5c34a80f (diff) | |
download | rpg-2c053ed58376c6709596ab48fc40dceb90d4e89d.tar.gz rpg-2c053ed58376c6709596ab48fc40dceb90d4e89d.tar.bz2 |
Merge branch 'master' into stable
Conflicts:
conf/msg
lib/plugins/acl/ajax.php
Diffstat (limited to 'lib/scripts/ajax.js')
-rw-r--r-- | lib/scripts/ajax.js | 104 |
1 files changed, 42 insertions, 62 deletions
diff --git a/lib/scripts/ajax.js b/lib/scripts/ajax.js index a2a48a996..de009d448 100644 --- a/lib/scripts/ajax.js +++ b/lib/scripts/ajax.js @@ -1,68 +1,48 @@ /** * AJAX functions for the pagename quicksearch * - * We're using a global object with self referencing methods - * here to make callbacks work - * * @license GPL2 (http://www.gnu.org/licenses/gpl.html) * @author Andreas Gohr <andi@splitbrain.org> + * @author Adrian Lang <lang@cosmocode.de> */ - -//prepare class -function ajax_qsearch_class(){ - this.sack = null; - this.inObj = null; - this.outObj = null; - this.timer = null; -} - -//create global object and add functions -var ajax_qsearch = new ajax_qsearch_class(); -ajax_qsearch.sack = new sack(DOKU_BASE + 'lib/exe/ajax.php'); -ajax_qsearch.sack.AjaxFailedAlert = ''; -ajax_qsearch.sack.encodeURIString = false; - -ajax_qsearch.init = function(inID,outID){ - ajax_qsearch.inObj = document.getElementById(inID); - ajax_qsearch.outObj = document.getElementById(outID); - - // objects found? - if(ajax_qsearch.inObj === null){ return; } - if(ajax_qsearch.outObj === null){ return; } - - // attach eventhandler to search field - addEvent(ajax_qsearch.inObj,'keyup',ajax_qsearch.call); - - // attach eventhandler to output field - addEvent(ajax_qsearch.outObj,'click',function(){ ajax_qsearch.outObj.style.display='none'; }); -}; - -ajax_qsearch.clear = function(){ - ajax_qsearch.outObj.style.display = 'none'; - ajax_qsearch.outObj.innerHTML = ''; - if(ajax_qsearch.timer !== null){ - window.clearTimeout(ajax_qsearch.timer); - ajax_qsearch.timer = null; - } -}; - -ajax_qsearch.exec = function(){ - ajax_qsearch.clear(); - var value = ajax_qsearch.inObj.value; - if(value === ''){ return; } - ajax_qsearch.sack.runAJAX('call=qsearch&q='+encodeURI(value)); -}; - -ajax_qsearch.sack.onCompletion = function(){ - var data = ajax_qsearch.sack.response; - if(data === ''){ return; } - - ajax_qsearch.outObj.innerHTML = data; - ajax_qsearch.outObj.style.display = 'block'; -}; - -ajax_qsearch.call = function(){ - ajax_qsearch.clear(); - ajax_qsearch.timer = window.setTimeout("ajax_qsearch.exec()",500); -}; - +addInitEvent(function () { + + var inID = 'qsearch__in'; + var outID = 'qsearch__out'; + + var inObj = document.getElementById(inID); + var outObj = document.getElementById(outID); + + // objects found? + if (inObj === null){ return; } + if (outObj === null){ return; } + + function clear_results(){ + outObj.style.display = 'none'; + outObj.innerHTML = ''; + } + + var sack_obj = new sack(DOKU_BASE + 'lib/exe/ajax.php'); + sack_obj.AjaxFailedAlert = ''; + sack_obj.encodeURIString = false; + sack_obj.onCompletion = function () { + var data = sack_obj.response; + if (data === '') { return; } + + outObj.innerHTML = data; + outObj.style.display = 'block'; + }; + + // attach eventhandler to search field + var delay = new Delay(function () { + clear_results(); + var value = inObj.value; + if(value === ''){ return; } + sack_obj.runAJAX('call=qsearch&q=' + encodeURI(value)); + }); + + addEvent(inObj, 'keyup', function () {clear_results(); delay.start(); }); + + // attach eventhandler to output field + addEvent(outObj, 'click', function () {outObj.style.display = 'none'; }); +}); |