Post by Bradley on Sept 8, 2005 20:53:42 GMT -5
This is the code used on the regular post page slightly modified. It needs to go in your headers. A better method would be an external javascript file.
Then put this small piece I wrote in your board footers:
<script type="text/javascript">
var tds = document.getElementsByTagName("td"); var pRef = 1; var spButton;
if (location.href.match(/action=display/) && location.href.match(/thread=(\d)+/)){
for(i=0; i<tds.length; i++){
if(tds.item(i).width == "100%" && tds.item(i).firstChild.nodeName.match(/font/i) && tds.item(i).firstChild.innerHTML.match(/Message:/i)){
spButton = document.createElement("input");
spButton.type = "button"
spButton.value = "Spell Check"
spButton.onclick = function(){openSpellCheck()};
tds.item(i).firstChild.childNodes.item(2).insertBefore(spButton, tds.item(i).firstChild.childNodes.item(2).lastChild);
}
}
}
</script>
<script type="text/javascript">
/* PB Spell Check Code */
if (location.href.match(/action=display/) && location.href.match(/thread=(\d)+/)){
function spellChecker(textObject) { this.popUpUrl='/speller/spellchecker.html'; this.popUpName='spellchecker'; this.popUpProps="menu=no,width=440,height=350,top=70,left=120,resizable=yes,status=yes"; this.spellCheckScript='/speller/server-scripts/spellchecker.pl'; this.replWordFlag="R"; this.ignrWordFlag="I"; this.replAllFlag="RA"; this.ignrAllFlag="IA"; this.fromReplAll="~RA"; this.fromIgnrAll="~IA"; this.wordFlags=new Array(); this.currentTextIndex=0; this.currentWordIndex=0; this.spellCheckerWin=null; this.controlWin=null; this.wordWin=null; this.textArea=textObject; this.textInputs=arguments; this._spellcheck=_spellcheck; this._getSuggestions=_getSuggestions; this._setAsIgnored=_setAsIgnored; this._getTotalReplaced=_getTotalReplaced; this._setWordText=_setWordText; this._getFormInputs=_getFormInputs; this.openChecker=openChecker; this.startCheck=startCheck; this.checkTextBoxes=checkTextBoxes; this.checkTextAreas=checkTextAreas; this.spellCheckAll=spellCheckAll; this.ignoreWord=ignoreWord; this.ignoreAll=ignoreAll; this.replaceWord=replaceWord; this.replaceAll=replaceAll; this.terminateSpell=terminateSpell; this.undo=undo; window.speller=this;}function checkTextBoxes() { this.textInputs=this._getFormInputs("^text$"); this.openChecker();}function checkTextAreas() { this.textInputs=this._getFormInputs("^textarea$"); this.openChecker();}function spellCheckAll() { this.textInputs=this._getFormInputs("^text(area)?$"); this.openChecker();}function openChecker() { this.spellCheckerWin=window.open(this.popUpUrl, this.popUpName, this.popUpProps); if(!this.spellCheckerWin.opener) { this.spellCheckerWin.opener=window; }}function startCheck(wordWindowObj, controlWindowObj) { this.wordWin=wordWindowObj; this.controlWin=controlWindowObj; this.wordWin.resetForm(); this.controlWin.resetForm(); this.currentTextIndex=0; this.currentWordIndex=0; this.wordFlags=new Array(this.wordWin.textInputs.length); for(var i=0; i<this.wordFlags.length; i++) { this.wordFlags[i]=[]; } this._spellcheck(); return true;}function ignoreWord() { var wi=this.currentWordIndex; var ti=this.currentTextIndex; if(!this.wordWin) { alert('Error: Word frame not available.'); return false; } if(!this.wordWin.getTextVal(ti, wi)) { alert('Error: "Not in dictionary" text is missing.'); return false; } if(this._setAsIgnored(ti, wi, this.ignrWordFlag)) { this.currentWordIndex++; this._spellcheck(); }}function ignoreAll() { var wi=this.currentWordIndex; var ti=this.currentTextIndex; if(!this.wordWin) { alert('Error: Word frame not available.'); return false; } var s_word_to_repl=this.wordWin.getTextVal(ti, wi); if(!s_word_to_repl) { alert('Error: "Not in dictionary" text is missing'); return false; } this._setAsIgnored(ti, wi, this.ignrAllFlag); for(var i=ti; i < this.wordWin.textInputs.length; i++) { for(var j=0; j < this.wordWin.totalWords(i); j++) { if((i == ti && j > wi) || i > ti) { if((this.wordWin.getTextVal(i, j) == s_word_to_repl) && (!this.wordFlags[i][j])) { this._setAsIgnored(i, j, this.fromIgnrAll); } } } } this.currentWordIndex++; this._spellcheck();}function replaceWord() { var wi=this.currentWordIndex; var ti=this.currentTextIndex; if(!this.wordWin) { alert('Error: Word frame not available.'); return false; } if(!this.wordWin.getTextVal(ti, wi)) { alert('Error: "Not in dictionary" text is missing'); return false; } if(!this.controlWin.replacementText) { return; } var txt=this.controlWin.replacementText; if(txt.value) { var newspell=new String(txt.value); if(this._setWordText(ti, wi, newspell, this.replWordFlag)) { this.currentWordIndex++; this._spellcheck(); } }}function replaceAll() { var ti=this.currentTextIndex; var wi=this.currentWordIndex; if(!this.wordWin) { alert('Error: Word frame not available.'); return false; } var s_word_to_repl=this.wordWin.getTextVal(ti, wi); if(!s_word_to_repl) { alert('Error: "Not in dictionary" text is missing'); return false; } var txt=this.controlWin.replacementText; if(!txt.value) return; var newspell=new String(txt.value); this._setWordText(ti, wi, newspell, this.replAllFlag); for(var i=ti; i < this.wordWin.textInputs.length; i++) { for(var j=0; j < this.wordWin.totalWords(i); j++) { if((i == ti && j > wi) || i > ti) { if((this.wordWin.getTextVal(i, j) == s_word_to_repl) && (!this.wordFlags[i][j])) { this._setWordText(i, j, newspell, this.fromReplAll); } } } } this.currentWordIndex++; this._spellcheck();}function terminateSpell() { var msg="Spell check complete:\n\n"; var numrepl=this._getTotalReplaced(); if(numrepl == 0) { if(!this.wordWin) { msg=""; } else { if(this.wordWin.totalMisspellings()) { msg += "No words changed."; } else { msg += "No misspellings found."; } } } else if(numrepl == 1) { msg += "One word changed."; } else { msg += numrepl + " words changed."; } if(msg) { msg += "\n"; alert(msg); } if(numrepl > 0) { for(var i=0; i < this.textInputs.length; i++) { if(this.wordWin) { if(this.wordWin.textInputs[i]) { this.textInputs[i].value=this.wordWin.textInputs[i]; } } } } this.spellCheckerWin.close(); return true;}function undo() { var ti=this.currentTextIndex; var wi=this.currentWordIndex; if(this.wordWin.totalPreviousWords(ti, wi) > 0) { this.wordWin.removeFocus(ti, wi); do { if(this.currentWordIndex == 0 && this.currentTextIndex > 0) { this.currentTextIndex--; this.currentWordIndex=this.wordWin.totalWords(this.currentTextIndex)-1; if(this.currentWordIndex < 0) this.currentWordIndex=0; } else { if(this.currentWordIndex > 0) { this.currentWordIndex--; } } } while ( this.wordWin.totalWords(this.currentTextIndex) == 0 || this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromIgnrAll || this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromReplAll ); var text_idx=this.currentTextIndex; var idx=this.currentWordIndex; var preReplSpell=this.wordWin.originalSpellings[text_idx][idx]; if(this.wordWin.totalPreviousWords(text_idx, idx) == 0) { this.controlWin.disableUndo(); } switch(this.wordFlags[text_idx][idx]) { case this.replAllFlag : for(var i=text_idx; i < this.wordWin.textInputs.length; i++) { for(var j=0; j < this.wordWin.totalWords(i); j++) { if((i == text_idx && j >= idx) || i > text_idx) { var origSpell=this.wordWin.originalSpellings[i][j]; if(origSpell == preReplSpell) { this._setWordText (i, j, origSpell, undefined); } } } } break; case this.ignrAllFlag : for(var i=text_idx; i < this.wordWin.textInputs.length; i++) { for(var j=0; j < this.wordWin.totalWords(i); j++) { if((i == text_idx && j >= idx) || i > text_idx) { var origSpell=this.wordWin.originalSpellings[i][j]; if(origSpell == preReplSpell) { this.wordFlags[i][j]=undefined; } } } } break; case this.replWordFlag : this._setWordText (text_idx, idx, preReplSpell, undefined); break; } this.wordFlags[text_idx][idx]=undefined; this._spellcheck(); }}function _spellcheck() { var ww=this.wordWin; if(this.currentWordIndex == ww.totalWords(this.currentTextIndex)) { this.currentTextIndex++; this.currentWordIndex=0; if(this.currentTextIndex < this.wordWin.textInputs.length) { this._spellcheck(); return; } else { this.terminateSpell(); return; } } if(this.currentWordIndex > 0) { this.controlWin.enableUndo(); } if(this.wordFlags[this.currentTextIndex][this.currentWordIndex]) { this.currentWordIndex++; this._spellcheck(); } else { var evalText=ww.getTextVal(this.currentTextIndex, this.currentWordIndex); if(evalText) { this.controlWin.evaluatedText.value=evalText; ww.setFocus(this.currentTextIndex, this.currentWordIndex); this._getSuggestions(this.currentTextIndex, this.currentWordIndex); } }}function _getSuggestions(text_num, word_num) { this.controlWin.clearSuggestions(); var a_suggests=this.wordWin.suggestions[text_num][word_num]; if(a_suggests) { for(var ii=0; ii < a_suggests.length; ii++) { this.controlWin.addSuggestion(a_suggests[ii]); } } this.controlWin.selectDefaultSuggestion();}function _setAsIgnored(text_num, word_num, flag) { this.wordWin.removeFocus(text_num, word_num); this.wordFlags[text_num][word_num]=flag; return true;}function _getTotalReplaced() { var i_replaced=0; for(var i=0; i < this.wordFlags.length; i++) { for(var j=0; j < this.wordFlags[i].length; j++) { if((this.wordFlags[i][j] == this.replWordFlag) || (this.wordFlags[i][j] == this.replAllFlag) || (this.wordFlags[i][j] == this.fromReplAll)) { i_replaced++; } } } return i_replaced;}function _setWordText(text_num, word_num, newText, flag) { this.wordWin.setText(text_num, word_num, newText); this.wordFlags[text_num][word_num]=flag; return true;}function _getFormInputs(inputPattern) { var inputs=new Array(); for(var i=0; i < document.forms.length; i++) { for(var j=0; j < document.forms[i].elements.length; j++) { if(document.forms[i].elements[j].type.match(inputPattern)) { inputs[inputs.length]=document.forms[i].elements[j]; } } } return inputs;}function openSpellCheck(){ var speller=new spellChecker(document.forms[document.forms.length-1].message); speller.openChecker();}
}
</script>
Then put this small piece I wrote in your board footers:
<script type="text/javascript">
var tds = document.getElementsByTagName("td"); var pRef = 1; var spButton;
if (location.href.match(/action=display/) && location.href.match(/thread=(\d)+/)){
for(i=0; i<tds.length; i++){
if(tds.item(i).width == "100%" && tds.item(i).firstChild.nodeName.match(/font/i) && tds.item(i).firstChild.innerHTML.match(/Message:/i)){
spButton = document.createElement("input");
spButton.type = "button"
spButton.value = "Spell Check"
spButton.onclick = function(){openSpellCheck()};
tds.item(i).firstChild.childNodes.item(2).insertBefore(spButton, tds.item(i).firstChild.childNodes.item(2).lastChild);
}
}
}
</script>