Tinymce拼写检查实现

问题描述:

我有一个经典的ASP页面,具有jQuery的功能,并有它的TinyMCE编辑器。我希望能够拼写检查编辑器,但我看到的每个示例都使用PHP或ASP.net。Tinymce拼写检查实现

我遇到了这个页面:http://achorniy.wordpress.com/2009/08/11/tinymce-spellchecker-in-java/但是我对SVN并不熟悉,所以我不太确定如何按照步骤操作,并且我读过它可能不适用于IE。

有没有其他选项可以拼写检查我的tinymce编辑器?

非常感谢您的帮助。

+0

你得到这个工作? – RogueSpear00 2012-04-13 13:27:44

+0

@ RogueSpear00对不起,我以为你会看到下面的注释。我已经部分工作了,但在对James Newtons的ASP代理进行更新后,它无法正常工作。看到我的评论如下。感谢您的跟踪!我希望很快得到解决 – Cineno28 2012-04-16 13:07:15

只需使用该插件拼写检查

http://www.tinymce.com/wiki.php/Plugin:spellchecker

+0

感谢您的答复。我注意到,但看到PHP被列为需求之一。我仍然可以使用这与经典的ASP? – Cineno28 2012-04-11 16:03:32

+0

@ Cineno28 - 看起来TinyMCE并不直接支持经典的ASP进行拼写检查。它使用拼写检查器的PHP模块。但是,对于文本框集成它确实工作正常。这里是他们的论坛帖子的链接,它有一些黑客,你可以使用:http://www.tinymce.com/forum/viewtopic.php?id=15662 – RogueSpear00 2012-04-11 20:44:39

+0

@ Cineno28 - 我继续前进,并尝试提供的例子从那个链接中,我成功地使用了TinyMCE拼写检查器。 – RogueSpear00 2012-04-11 20:57:16

首先,我不知道这是否是好的,甚至捎带关闭SG 86的回答,因此,如果它不是不chastize我...

我用SG 86的例子,发现你不能直接使用TinyMCE提供的拼写检查功能,但是如果你使用了论坛用户提供的黑客,它确实能够成功工作。

  1. 安装和设置TinyMCE的从论坛用户
  2. 按照说明

所有信用卡此解决方案与TinyMCE的应到原论坛用户@http://tinymce.com/forum/viewtopic.php?id=15662


我建议设置googiespell首先与asp一起使用简单的textarea: googiespell这里:http://orangoo.com/labs/GoogieSpell/

ASP脚本此页面上有詹姆斯·牛顿的ASP代理:http://orangoo.com/labs/GoogieSpell/Documentation/ 所以一旦你得到了这个在这里工作是你如何用TinyMCE的 在你的JavaScript设置整合这个拼写检查的配置:

<script language="javascript"> 

tinyMCE.init({ 
    theme : "advanced", 
    mode : "textareas", 
    plugins : "spellchecker", 
    theme_advanced_buttons3_add : "spellchecker", 
    spellchecker_rpc_url : "/googiespell/spell.asp", 
    spellchecker_languages : "+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv" 
}); 

</script> 

编辑线:

spellchecker_rpc_url : "/googiespell/spell.asp", 

以指向您的spell.asp文件位于您的应用程序

用下面的代码替换spell.asp的内容:

<% 

Dim ByteCount, BinRead 
ByteCount = Request.TotalBytes 
BinRead = Request.BinaryRead(ByteCount) 
rawData = RSBinaryToString(BinRead) 

'get language 
if instr(rawData, """params"":[""") > 1 then 
    lang = mid(rawData, InStr(rawData,"[")+2, 2) 
else 
    lang = "en" 
end if 

if instr(rawData, """method"":""checkWords"",") > 1 then 
'return mispelled words 
json = mid(rawData, InStrRev(rawData,"[")) 
json = mid(json, 1, instr(json, "]")) 
json = replace(json, """,""", " ") 
json = replace(json, """", "") 
t = json 

    r = "<?xml version=""1.0"" encoding=""utf-8"" ?><spellrequest textalreadyclipped=""0"" ignoredups=""0"" ignoredigits=""1"" ignoreallcaps=""1""><text>"_ 
     &t&"</text></spellrequest>" 

    r = getURL("https://www.google.com/tbproxy/spell?lang="&lang, r, "","") 
    out = "{""id"":null,""result"":[" 
    wrds = "" 
    for each c in filter(split(r,"<c "),"</c>") 
     'response.write "<br>"&server.htmlencode(c) 
     o = cint(split(split(c,"o=",2)(1),"""")(1))+1 
     l = cint(split(split(c,"l=",2)(1),"""")(1)) 
     s = cint(split(split(c,"s=",2)(1),"""")(1)) 
     out = out & """" & mid(t,o,l)& """, " 
     wrds = "1" 
    next 
    if wrds = "" then 
     out = "{""id"":null,""result"":[],""error"":null}" 
    else 
     out = mid(out, 1, len(out)-2) & "],""error"":null}" 
    end if 

    response.write out 
    response.end 

else 
'return single word corrections 
json = mid(rawData, InStrRev(rawData,"[")) 
json = mid(json, 1, instr(json, "]")) 
json = replace(json, """,""", " ") 
json = replace(json, "en ", "") 
json = replace(json, """", "") 
t = json 

    r = "<?xml version=""1.0"" encoding=""utf-8"" ?><spellrequest textalreadyclipped=""0"" ignoredups=""0"" ignoredigits=""1"" ignoreallcaps=""1""><text>"_ 
     &t&"</text></spellrequest>" 

    r = getURL("https://www.google.com/tbproxy/spell?lang="&lang, r, "","") 

    for each c in filter(split(r,"<c "),"</c>") 
     'response.write "<br>"&server.htmlencode(c) 
     o = cint(split(split(c,"o=",2)(1),"""")(1))+1 
     l = cint(split(split(c,"l=",2)(1),"""")(1)) 
     s = cint(split(split(c,"s=",2)(1),"""")(1)) 
     c = textbetween(">", c, "<") 
     '{"id":null,"result":["Titmice","Times","Tines","Tinnies","Timmy\'s"],"error":null} 
     out = "{""id"":null,""result"":[" 
     wrds = "" 
     for each w in split(c,vbTab) 
      out = out & """" & w & """, " 
      wrds = "1" 
     next 
     if wrds = "" then 
      out = "{""id"":null,""result"":[],""error"":null}" 
     else 
      out = mid(out, 1, len(out)-2) & "],""error"":null}" 
     end if 
    next 
    response.write out 
    response.end 
end if 

if t=empty then t = request.form() 'GoogieSpell is going to put the text in the POST data. 

'show the reply from google for the POST data.  
response.write getURL("https://www.google.com/tbproxy/spell?lang="&lang, t, "","") 



Function TextBetween(sThis, sAnd, sThat) 
    on error resume next 
    TextBetween = split(split(sAnd,sThis,2,1)(1),sThat,2,1)(0) 
end function 

Function RSBinaryToString(xBinary) 
    Dim Binary 
    If vartype(xBinary)=8 Then Binary = MultiByteToBinary(xBinary) Else Binary = xBinary 
    Dim RS, LBinary 
    Const adLongVarChar = 201 
    Set RS = CreateObject("ADODB.Recordset") 
    LBinary = LenB(Binary) 

    If LBinary>0 Then 
    RS.Fields.Append "mBinary", adLongVarChar, LBinary 
    RS.Open 
    RS.AddNew 
    RS("mBinary").AppendChunk Binary 
    RS.Update 
    RSBinaryToString = RS("mBinary") 
    Else 
    RSBinaryToString = "" 
    End If 
End Function 

function getURL(aURL, anyPostData, anyUserName, anyPassword) 
DIM objSrvHTTP,web,method,s 
    on error resume next 
    s="" 
    set objSrvHTTP = Server.CreateObject ("Msxml2.ServerXMLHTTP.3.0") 
    if anyPostData=empty then 
     objSrvHTTP.open "GET",aURL, true, anyUsername, anyPassword 
    else 
     objSrvHTTP.open "POST",aURL, true, anyUsername, anyPassword 
     objSrvHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
    end if 
    objSrvHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)" 
    objSrvHTTP.send anyPostData 
    objSrvHTTP.waitForResponse 7 
    select case objSrvHTTP.readyState 
     case 0 'object created, but no URL opened 
      debug "getURL("&aURL&", "&anyPostData&", "&anyUserName&", "&anyPassword&"): Object Created, no URL opened" 
      err.raise 1, "Object Created, no URL opened" 
      exit function 
     case 1 'loading: URL opened, but no data sent 
      debug "getURL("&aURL&", "&anyPostData&", "&anyUserName&", "&anyPassword&"):URL opened, no data sent" 
      err.raise 2, "URL opened, no data sent" 
      exit function 
     case 2 'loaded: data sent, status and headers available, no response recieved. 
      debug "getURL("&aURL&", "&anyPostData&", "&anyUserName&", "&anyPassword&"):No response from remote host" 
      err.raise 3, "No response from remote host" 
      exit function 
     case 3 'interactive: some data recieved. responseBody and responseText will return partial results. 
      debug "getURL("&aURL&", "&anyPostData&", "&anyUserName&", "&anyPassword&"):Partial response recieved:" 
      debug server.htmlencode(objSrvHTTP.responseText) 
      s = objSrvHTTP.responseText 
      err.raise 4, "Partial response recieved" 
     case 4 'complete: 
      s = objSrvHTTP.responseText 
     end select 
    getURL = s 
end function 

%> 

编辑 - 添加我的头为清楚:

<script type="text/javascript" src="tinymce/jscripts/tiny_mce/tiny_mce.js" ></script> 
<script type="text/javascript"> 
tinyMCE.init({ 
    mode : "textareas", 
    theme : "advanced", 
    plugins : "spellchecker", 
    theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,undo,redo,|,copy,paste,|,spellchecker", 
    theme_advanced_buttons2 : "", 
    theme_advanced_buttons3 : "", 
    spellchecker_rpc_url : "googiespell/spell.asp", <--! Needs to point to where the spell.asp script is located on your server. --> 
    spellchecker_languages : "+English=en,Spanish=es" 
}); 

</script> 
+0

我不知道这个网站如何提醒评论的海报,所以我只是在这里发布,在SG 86的帖子下面有评论,以防他们没有看到。再次感谢你的帮助。我觉得我正在接近这个工作。 – Cineno28 2012-04-16 13:08:50

+0

什么不起作用?我回答了SG的回答中的上述问题。这没有用吗?我从上周阅读了这些评论并作出回应。 – RogueSpear00 2012-04-16 15:44:40

+0

不工作的部分是当我将James Newton的ASP代理替换为新的ASP代码时。我不确定是否应该用这个新代码编辑他的代理,或者完全用它替换它。我试图完全替换它,并且我在编辑器上得到了拼写检查器,但是它没有发现任何拼写纠正可以用牛顿的原始代码纠正,也没有锡姆蒂奇。 – Cineno28 2012-04-16 16:46:07

JSpellChecker的问题(http://achorniy.wordpress.com/2009/08/11/tinymce-spellchecker-in-java/)为TinyMCE的拼写检查程序的几个实现提到和使用示例,但它们都是基于java的实现(因此您需要执行一些额外的步骤才能使其在您的环境中工作)

它应该在IE中正常工作,但理想情况下应该托管在与您要使用它的页面相同的主机,因为浏览器(不仅是IE)可能会阻止跨域的Ajax请求。

如果你不想处理SVN,你可以在这里下载代码快照(http://sourceforge.net/p/jspellchecker/code/11/tarball)。它还包含用法示例

自我夸耀:

我最近推出了亲插件TinyMCE的,提供传统的ASP全力支持。

http://tinymcespellcheck.com

TinyMCE的提供

spellchecker_rpc_url : "/myspellchcker", 
<--! Needs to point to where the myspellchecker script is located on your server. --> 

下面是Python代码(写在ASP等效):

#checker is a pyenchant object - uses enchant which wraps aspell in our case . The code was taken from django's implementation for tinymce spellchecker. 

    def spell_check(self): 
     """Returns a Response that implements the TinyMCE spellchecker protocol. 
     """ 
     try: 
      raw = self.REQUEST['BODY'] 
      input = json.loads(raw) 
      id = input['id'] 
      method = input['method'] 
      params = input['params'] 
      lang = params[0] 
      arg = params[1] 

      if not enchant.dict_exists(str(lang)): 
       raise Exception("dictionary not found for language '%s'" % lang) 

      checker = self.checker 
      if method == 'checkWords': 
       result = [word for word in arg if not checker.check(word)] 
      elif method == 'getSuggestions': 
       result = checker.suggest(arg) 
      elif method == 'learnWord' : 
       result = checker.add(arg) 
      else: 
       raise Exception("Unkown spellcheck method: '%s'" % method) 
      output = { 
       'id': id, 
       'result': result, 
       'error': None, 
      } 
     except Exception: 
      return Exception("Error running spellchecker") 
     self.REQUEST.RESPONSE.setHeader('Content-Type','application/json') 
     return json.dumps(output)