From 20d062ca5220daf6606e2b1bcdd73d84eebafa45 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 8 Oct 2005 19:54:04 +0200 Subject: first go on unobstrusive javascript, new toolbar darcs-hash:20051008175404-7ad00-cd640de7660825b19d5e863cc8caf5467d59b055.gz --- lib/scripts/spellcheck.js | 125 ++++++++++++++++++---------------------------- 1 file changed, 49 insertions(+), 76 deletions(-) (limited to 'lib/scripts/spellcheck.js') diff --git a/lib/scripts/spellcheck.js b/lib/scripts/spellcheck.js index e86c079df..d47430c31 100644 --- a/lib/scripts/spellcheck.js +++ b/lib/scripts/spellcheck.js @@ -40,45 +40,19 @@ * OF SUCH DAMAGE. */ -/** - * Get the X offset of the top left corner of the given object +/* + * Uses some general functions defined elsewhere. Here is a list: * - * @author Garrison Locke - */ -function findPosX(object){ - var curleft = 0; - var obj = document.getElementById(object); - if (obj.offsetParent){ - while (obj.offsetParent){ - curleft += obj.offsetLeft; - obj = obj.offsetParent; - } - } - else if (obj.x){ - curleft += obj.x; - } - return curleft; -} //end findPosX function - -/** - * Get the Y offset of the top left corner of the given object + * Defined in script.js: * - * @author Garrison Locke + * findPosX() + * findPosY() + * addEvent() + * + * Defined in edit.js: + * + * createToolButton() */ -function findPosY(object){ - var curtop = 0; - var obj = document.getElementById(object); - if (obj.offsetParent){ - while (obj.offsetParent){ - curtop += obj.offsetTop; - obj = obj.offsetParent; - } - } - else if (obj.y){ - curtop += obj.y; - } - return curtop; -} //end findPosY function /** * quotes single quotes @@ -89,29 +63,6 @@ function qquote(str){ return str.split('\'').join('\\\''); } -/** - * This function generates a spellchecker button with localized tooltips - */ -function spellButton(imageFile, speedTip, funcCall, accessKey) { - speedTip=escapeQuotes(speedTip); - funcCall=escapeQuotes(funcCall); - - button = ""; - button = button+"\""+"; - button = button+""; - return button; -} - /** * AJAX Spellchecker Class * @@ -127,11 +78,13 @@ function ajax_spell_class(){ this.utf8ok = 1; this.handler = DOKU_BASE+'lib/exe/spellcheck.php'; // to hold the page objects (initialized with init()) - this.textboxObj = null; + this.textboxObj = null; this.showboxObj = null; this.suggestObj = null; - this.actionObj = null; this.editbarObj = null; + this.buttonObj = null; + this.imageObj = null; + // hold translations this.txtStart = 'Check Spelling'; this.txtStop = 'Resume Editing'; @@ -162,7 +115,6 @@ function ajax_spell_class(){ this.editbarObj = document.getElementById('wikieditbar'); this.showboxObj = document.getElementById('spell_result'); this.suggestObj = document.getElementById('spell_suggest'); - this.actionObj = document.getElementById('spell_action'); // set Translation Strings this.txtStart = txtStart; @@ -172,11 +124,20 @@ function ajax_spell_class(){ this.txtNoSug = txtNoSug; this.txtChange= txtChange; + // create ToolBar Button with ID and add it to the toolbar with null action + var toolbarObj = document.getElementById('toolbar'); + this.buttonObj = createToolButton('spellcheck.png',txtStart,'k','spellcheck'); + this.buttonObj.onclick = function(){return false;}; + toolbarObj.appendChild(this.buttonObj); + this.imageObj = document.getElementById('spellcheck_ico'); + // start UTF-8 compliance test - send an UTF-8 char and see what comes back ajax.AjaxFailedAlert = ''; ajax.encodeURIString = false; ajax.onCompletion = this.initReady; ajax.runAJAX('call=utf8test&data='+encodeURIComponent('ΓΌ')); + + // second part of initialisation is in initReady() function } /** @@ -208,16 +169,28 @@ function ajax_spell_class(){ this.setState = function(state){ switch (state){ case 'stop': - ajax_spell.actionObj.innerHTML = spellButton("spellstop.png",ajax_spell.txtStop,"ajax_spell.resume()",""); + ajax_spell.buttonObj.onclick = function(){ ajax_spell.resume(); return false; }; + ajax_spell.buttonObj.title = ajax_spell.txtStop; + ajax_spell.buttonObj.accesskey = ''; + ajax_spell.imageObj.src = DOKU_BASE+'lib/images/toolbar/spellstop.png'; break; case 'noerr': - ajax_spell.actionObj.innerHTML = spellButton("spellnoerr.png",ajax_spell.txtNoErr,"ajax_spell.setState(\"start\")",""); + ajax_spell.buttonObj.onclick = function(){ajax_spell.setState('start'); return false; }; + ajax_spell.buttonObj.title = ajax_spell.txtNoErr; + ajax_spell.buttonObj.accesskey = ''; + ajax_spell.imageObj.src = DOKU_BASE+'lib/images/toolbar/spellnoerr.png'; break; case 'run': - ajax_spell.actionObj.innerHTML = spellButton("spellwait.gif",ajax_spell.txtRun,"",""); + ajax_spell.buttonObj.onclick = function(){return false;}; + ajax_spell.buttonObj.title = ajax_spell.txtRun; + ajax_spell.buttonObj.accesskey = ''; + ajax_spell.imageObj.src = DOKU_BASE+'lib/images/toolbar/spellwait.gif'; break; default: - ajax_spell.actionObj.innerHTML = spellButton("spellcheck.png",ajax_spell.txtStart,"ajax_spell.run()","k"); + ajax_spell.buttonObj.onclick = function(){ ajax_spell.run(); return false; }; + ajax_spell.buttonObj.title = ajax_spell.txtStart+' [ALT-K]'; + ajax_spell.buttonObj.accesskey = 'k'; + ajax_spell.imageObj.src = DOKU_BASE+'lib/images/toolbar/spellcheck.png'; break; } } @@ -311,10 +284,10 @@ function ajax_spell_class(){ } // register click event - document.onclick = ajax_spell.docClick; + addEvent(document,'onclick',ajax_spell.docClick); // register focus event - ajax_spell.textboxObj.onfocus = ajax_spell.setState; + addEvent(ajax_spell.textboxObj,'onfocus',ajax_spell.setState); // get started ajax_spell.setState('start'); @@ -395,14 +368,14 @@ function ajax_spell_class(){ * @author Andreas Gohr */ this.run = function(){ - this.setState('run'); - this.textboxObj.disabled = true; - var ajax = new sack(this.handler); + ajax_spell.setState('run'); + ajax_spell.textboxObj.disabled = true; + var ajax = new sack(ajax_spell.handler); ajax.AjaxFailedAlert = ''; ajax.encodeURIString = false; ajax.onCompletion = this.start; ajax.runAJAX('call=check&utf8='+ajax_spell.utf8ok+ - '&data='+encodeURIComponent(this.textboxObj.value)); + '&data='+encodeURIComponent(ajax_spell.textboxObj.value)); } /** @@ -411,13 +384,13 @@ function ajax_spell_class(){ * @author Andreas Gohr */ this.resume = function(){ - this.setState('run'); - var text = this.showboxObj.innerHTML; + ajax_spell.setState('run'); + var text = ajax_spell.showboxObj.innerHTML; if(text != ''){ - var ajax = new sack(this.handler); + var ajax = new sack(ajax_spell.handler); ajax.AjaxFailedAlert = ''; ajax.encodeURIString = false; - ajax.onCompletion = this.stop; + ajax.onCompletion = ajax_spell.stop; ajax.runAJAX('call=resume&utf8='+ajax_spell.utf8ok+ '&data='+encodeURIComponent(text)); } -- cgit v1.2.3