Software: Apache/2.2.16 (Debian). PHP/5.3.3-7+squeeze19 uname -a: Linux mail.tri-specialutilitydistrict.com 2.6.32-5-amd64 #1 SMP Tue May 13 16:34:35 UTC uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /usr/share/squirrelmail/plugins/squirrelspell/js/ drwxr-xr-x |
Viewing file: Select action/file-type: /** * check_me.js * * Copyright (c) 1999-2010 The SquirrelMail Project Team * Licensed under the GNU GPL. For full terms see the file COPYING. * * This JavaScript app is the driving power of the SquirrelSpell's * main spellchecker window. Hope you have as much pain figuring * it out as it took to write. ;)) * * $Id: check_me.js 13893 2010-01-25 02:47:41Z pdontthink $ */ var CurrentError=0; var CurrentLocation=0; var CurrentLine; var CurrentSymbol; var ChangesMade=false; /** * This function loads spellchecking errors into the form * displayed to the user. * * @return void */ function populateSqspellForm(){ CurrentWord=Word=misses[CurrentError]; WordLocations = locations[CurrentError].split(", "); CurrentLoc = WordLocations[CurrentLocation]; if(CurrentLocation==WordLocations.length-1) { CurrentLocation=0; } else { CurrentLocation++; } tmp = CurrentLoc.split(":"); CurrentLine=parseInt(tmp[0]); CurrentSymbol=parseInt(tmp[1]); document.forms[0].sqspell_error.value=Word; LineValue=sqspell_lines[CurrentLine]; StartWith=0; NewLineValue=""; if (CurrentSymbol > 40){ StartWith=CurrentSymbol-40; NewLineValue = "..."; } EndWith=LineValue.length; EndLine=""; if (EndWith > CurrentSymbol + 40){ EndWith=CurrentSymbol+40; EndLine="..."; } NewLineValue+=LineValue.substring(StartWith, CurrentSymbol) + "*" + Word + "*" + LineValue.substring(CurrentSymbol + Word.length, EndWith) + EndLine; document.forms[0].sqspell_line_area.value=NewLineValue; if (suggestions[CurrentError]){ WordSuggestions = suggestions[CurrentError].split(", "); for (i=0; i<WordSuggestions.length; i++){ document.forms[0].sqspell_suggestion.options[i] = new Option(WordSuggestions[i], WordSuggestions[i]); } } else { document.forms[0].sqspell_suggestion.options[0] = new Option("No Suggestions", "_NONE"); document.forms[0].sqspell_oruse.value=Word; document.forms[0].sqspell_oruse.focus(); document.forms[0].sqspell_oruse.select(); } document.forms[0].sqspell_suggestion.selectedIndex=0; if (!document.forms[0].sqspell_oruse.value) document.forms[0].sqspell_oruse.value=document.forms[0].sqspell_suggestion.options[document.forms[0].sqspell_suggestion.selectedIndex].value; occursTimes = WordLocations.length; if (CurrentLocation) occursTimes += CurrentLocation-1; document.forms[0].sqspell_likethis.value=occursTimes; } /** * This function updates a line from the message with a new value, * received from the user. * * @param lLine line number. * @param lSymbol symbol at which the misspelled word starts. * @param lWord misspelled word * @param lNewWord corrected word * @return void */ function updateLine(lLine, lSymbol, lWord, lNewWord){ sqspell_lines[lLine] = sqspell_lines[lLine].substring(0, lSymbol) + lNewWord + sqspell_lines[lLine].substring(lSymbol+lWord.length, sqspell_lines[lLine].length); if (lWord.length != lNewWord.length) updateSymbol(lLine, lSymbol, lNewWord.length-lWord.length); if (!ChangesMade) ChangesMade=true; } /** * This function is used to add a word user wishes to place in his/her * user dictionary to the form field for later submission. Since there * is no sane way to pass arrays between javascript and PHP, all words * are concatenated into one strings and separated with a "%". * * @return void */ function sqspellRemember(){ CurrentWord = misses[CurrentError] + "%"; document.forms[0].words.value += CurrentWord; /** * Now ignore all occurances of this word. */ sqspellIgnoreAll(); } /** * This function is called when the "Change" button is pressed. * * @return void */ function sqspellChange(){ CurrentWord = misses[CurrentError]; NewWord=document.forms[0].sqspell_oruse.value; updateLine(CurrentLine, CurrentSymbol, CurrentWord, NewWord); proceed(); } /** * This function is called when the "Change All" button is pressed. * * @return void */ function sqspellChangeAll(){ // Called when pressed the "Change All" button allLoc = locations[CurrentError].split(", "); if (allLoc.length==1) { /** * There's no need to "change all", only one occurance of this * word in the whole text. */ sqspellChange(); return; } /** * Dark magic. */ NewWord=document.forms[0].sqspell_oruse.value; CurrentWord = misses[CurrentError]; for (z=CurrentLocation-1; z<allLoc.length; z++){ tmp = allLoc[z].split(":"); lLine = parseInt(tmp[0]); lSymbol = parseInt(tmp[1]); updateLine(lLine, lSymbol, CurrentWord, NewWord); /** * Load it again to reflect the changes in symbol data */ allLoc = locations[CurrentError].split(", "); } CurrentLocation=0; proceed(); } /** * This function is only here for consistency. It is called when * "Ignore" is pressed. * * @return void */ function sqspellIgnore(){ proceed(); } /** * This function is called when the "Ignore All" button is pressed. * * @return void */ function sqspellIgnoreAll(){ CurrentLocation=0; proceed(); } /** * This function clears the options in a select box "sqspell_suggestions". * * @return void */ function clearSqspellForm(){ for (i=0; i<document.forms[0].sqspell_suggestion.length; i++){ document.forms[0].sqspell_suggestion.options[i]=null; } /** * Now, I've been instructed by the Netscape Developer docs to call * history.go(0) to refresh the page after I've changed the options. * However, that brings so many pains with it that I just decided not * to do it. It works like it is in Netscape 4.x. If there are problems * in earlier versions of Netscape, then oh well. I'm not THAT anxious * to have it working on all browsers... ;) */ document.forms[0].sqspell_oruse.value=""; } /** * This function goes on to the next error, or finishes nicely if * no more errors are available. * * @return void */ function proceed(){ if (!CurrentLocation) CurrentError++; if (misses[CurrentError]){ clearSqspellForm(); populateSqspellForm(); } else { if (ChangesMade || document.forms[0].words.value){ if (confirm(ui_completed)) sqspellCommitChanges(); else self.close(); } else { confirm (ui_nochange); self.close(); } } } /** * This function updates the symbol locations after there have been * word length changes in the lines. Otherwise SquirrelSpell barfs all * over your message... ;) * * @param lLine line number on which the error occurs * @param lSymbol symbol number at which error occurs * @param difference the difference in length between the old word * and the new word. Can be negative or positive. * @return void */ function updateSymbol(lLine, lSymbol, difference){ /** * Now, I will admit that this is not the best way to do stuff, * However that's the solution I've come up with. * * If you are wondering why I didn't use two-dimensional arrays instead, * well, sometimes there will be a long line with an error close to the * end of it, so the coordinates would be something like 2,98 and * some Javascript implementations will create 98 empty members of an * array just to have a filled number 98. This is too resource-wasteful * and I have decided to go with the below solution instead. It takes * a little more processing, but it saves a lot on memory. * * It just looks heinous. In real life it's really nice and sane. ;) */ for (i=0; i<misses.length; i++){ if(locations[i].indexOf(lLine + ":") >= 0){ allLoc = locations[i].split(", "); for (j=0; j<allLoc.length; j++){ if (allLoc[j].indexOf(lLine+":")==0){ tmp = allLoc[j].split(":"); tmp[0] = parseInt(tmp[0]); tmp[1] = parseInt(tmp[1]); if (tmp[1] > lSymbol){ tmp[1] = tmp[1] + difference; allLoc[j] = tmp.join(":"); } } } locations[i] = allLoc.join(", "); } } } /** * This function writes the changes back into the compose form. * * @return void */ function sqspellCommitChanges(){ newSubject = sqspell_lines[0]; newBody = ""; for (i=1; i<sqspell_lines.length; i++){ if (i!=1) newBody+="\r\n"; newBody += sqspell_lines[i]; } opener.document.compose.subject.value=newSubject; opener.document.compose.body.value=newBody; /** * See if any words were added to the dictionary. */ if (document.forms[0].words.value){ /** * Yeppers. */ document.forms[0].sqspell_line_area.value=ui_wait; /** * pass focus to the parent so we can do background save. */ window.opener.focus(); document.forms[0].submit(); } else { self.close(); } } |
:: Command execute :: | |
--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0167 ]-- |