import rt 3.8.7
[freeside.git] / rt / share / html / NoAuth / RichText / FCKeditor / editor / dialog / fck_spellerpages / spellerpages / server-scripts / spellchecker.cfm
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm
new file mode 100644 (file)
index 0000000..27e368e
--- /dev/null
@@ -0,0 +1,148 @@
+<cfsetting enablecfoutputonly="true">\r
+<!---\r
+This code uses a CF User Defined Function and should work in CF version 5.0\r
+and up without alteration.\r
+\r
+Also if you are hosting your site at an ISP, you will have to check with them\r
+to see if the use of <CFEXECUTE> is allowed. In most cases ISP will not allow\r
+the use of that tag for security reasons. Clients would be able to access each\r
+others files in certain cases.\r
+--->\r
+\r
+<!--- The following variables values must reflect your installation. --->\r
+<cfset aspell_dir        = "C:\Program Files\Aspell\bin">\r
+<cfset lang         = "en_US">\r
+<cfset aspell_opts  = "-a --lang=#lang# --encoding=utf-8 -H --rem-sgml-check=alt">\r
+<cfset tempfile_in  = GetTempFile(GetTempDirectory(), "spell_")>\r
+<cfset tempfile_out = GetTempFile(GetTempDirectory(), "spell_")>\r
+<cfset spellercss   = "../spellerStyle.css">\r
+<cfset word_win_src = "../wordWindow.js">\r
+\r
+<cfset form.checktext = form["textinputs[]"]>\r
+\r
+<!--- make no difference between URL and FORM scopes --->\r
+<cfparam name="url.checktext"  default="">\r
+<cfparam name="form.checktext" default="#url.checktext#">\r
+\r
+<!--- Takes care of those pesky smart quotes from MS apps, replaces them with regular quotes --->\r
+<cfset submitted_text = ReplaceList(form.checktext,"%u201C,%u201D","%22,%22")>\r
+\r
+<!--- submitted_text now is ready for processing --->\r
+\r
+<!--- use carat on each line to escape possible aspell commands --->\r
+<cfset text = "">\r
+<cfset CRLF = Chr(13) & Chr(10)>\r
+\r
+<cfloop list="#submitted_text#" index="field" delimiters=",">\r
+       <cfset text = text & "%"  & CRLF\r
+                      & "^A" & CRLF\r
+                      & "!"  & CRLF>\r
+       <!--- Strip all tags for the text. (by FredCK - #339 / #681) --->\r
+       <cfset field = REReplace(URLDecode(field), "<[^>]+>", " ", "all")>\r
+       <cfloop list="#field#" index="line" delimiters="#CRLF#">\r
+               <cfset text = ListAppend(text, "^" & Trim(JSStringFormat(line)), CRLF)>\r
+       </cfloop>\r
+</cfloop>\r
+\r
+<!--- create temp file from the submitted text, this will be passed to aspell to be check for misspelled words --->\r
+<cffile action="write" file="#tempfile_in#" output="#text#" charset="utf-8">\r
+\r
+<!--- execute aspell in an UTF-8 console and redirect output to a file. UTF-8 encoding is lost if done differently --->\r
+<cfexecute name="cmd.exe" arguments='/c type "#tempfile_in#" | "#aspell_dir#\aspell.exe" #aspell_opts# > "#tempfile_out#"' timeout="100"/>\r
+\r
+<!--- read output file for further processing --->\r
+<cffile action="read" file="#tempfile_out#" variable="food" charset="utf-8">\r
+\r
+<!--- remove temp files --->\r
+<cffile action="delete" file="#tempfile_in#">\r
+<cffile action="delete" file="#tempfile_out#">\r
+\r
+<cfset texts = StructNew()>\r
+<cfset texts.textinputs = "">\r
+<cfset texts.words      = "">\r
+<cfset texts.abort      = "">\r
+\r
+<!--- Generate Text Inputs --->\r
+<cfset i = 0>\r
+<cfloop list="#submitted_text#" index="textinput">\r
+  <cfset texts.textinputs = ListAppend(texts.textinputs, 'textinputs[#i#] = decodeURIComponent("#textinput#");', CRLF)>\r
+  <cfset i = i + 1>\r
+</cfloop>\r
+\r
+<!--- Generate Words Lists --->\r
+<cfset word_cnt  = 0>\r
+<cfset input_cnt = -1>\r
+<cfloop list="#food#" index="aspell_line" delimiters="#CRLF#">\r
+    <cfset leftChar = Left(aspell_line, 1)>\r
+       <cfif leftChar eq "*">\r
+                       <cfset input_cnt   = input_cnt + 1>\r
+                       <cfset word_cnt    = 0>\r
+                       <cfset texts.words = ListAppend(texts.words, "words[#input_cnt#] = [];", CRLF)>\r
+                       <cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#] = [];", CRLF)>\r
+    <cfelse>\r
+        <cfif leftChar eq "&" or leftChar eq "##">\r
+                       <!--- word that misspelled --->\r
+                       <cfset bad_word    = Trim(ListGetAt(aspell_line, 2, " "))>\r
+                       <cfset bad_word    = Replace(bad_word, "'", "\'", "ALL")>\r
+                       <!--- sugestions --->\r
+                       <cfset sug_list    = Trim(ListRest(aspell_line, ":"))>\r
+                       <cfset sug_list    = ListQualify(Replace(sug_list, "'", "\'", "ALL"), "'")>\r
+                       <!--- javascript --->\r
+                       <cfset texts.words = ListAppend(texts.words, "words[#input_cnt#][#word_cnt#] = '#bad_word#';", CRLF)>\r
+                       <cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#][#word_cnt#] = [#sug_list#];", CRLF)>\r
+                       <cfset word_cnt    = word_cnt + 1>\r
+               </cfif>\r
+     </cfif>\r
+</cfloop>\r
+\r
+<cfif texts.words eq "">\r
+  <cfset texts.abort = "alert('Spell check complete.\n\nNo misspellings found.'); top.window.close();">\r
+</cfif>\r
+\r
+<cfcontent type="text/html; charset=utf-8">\r
+\r
+<cfoutput><html>\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">\r
+<link rel="stylesheet" type="text/css" href="#spellercss#" />\r
+<script language="javascript" src="#word_win_src#"></script>\r
+<script language="javascript">\r
+var suggs      = new Array();\r
+var words      = new Array();\r
+var textinputs = new Array();\r
+var error;\r
+\r
+#texts.textinputs##CRLF#\r
+#texts.words#\r
+#texts.abort#\r
+\r
+var wordWindowObj = new wordWindow();\r
+wordWindowObj.originalSpellings = words;\r
+wordWindowObj.suggestions = suggs;\r
+wordWindowObj.textInputs = textinputs;\r
+\r
+function init_spell() {\r
+       // check if any error occured during server-side processing\r
+       if( error ) {\r
+               alert( error );\r
+       } else {\r
+               // call the init_spell() function in the parent frameset\r
+               if (parent.frames.length) {\r
+                       parent.init_spell( wordWindowObj );\r
+               } else {\r
+                       alert('This page was loaded outside of a frameset. It might not display properly');\r
+               }\r
+       }\r
+}\r
+</script>\r
+\r
+</head>\r
+<body onLoad="init_spell();">\r
+\r
+<script type="text/javascript">\r
+wordWindowObj.writeBody();\r
+</script>\r
+\r
+</body>\r
+</html></cfoutput>\r
+<cfsetting enablecfoutputonly="false">\r