2012-04-11 8 views
4

Ich habe eine klassische ASP-Seite, die jquery Funktionen hat und TinyMCE-Editoren darauf hat. Ich möchte die Editoren buchstabieren können, aber jedes Beispiel, das ich sehe, benutzt PHP oder ASP.net.Tinymce Rechtschreibprüfung Implementierungen

Ich stieß auf diese Seite: http://achorniy.wordpress.com/2009/08/11/tinymce-spellchecker-in-java/, aber ich bin nicht vertraut mit SVN, also bin ich nicht wirklich sicher, wie man den Schritten folgt, und ich habe gelesen, dass es nicht gut mit IE funktioniert.

Gibt es noch andere Möglichkeiten, um meine tinymce-Redakteure zu überprüfen?

Vielen Dank für jede Hilfe.

+0

Haben Sie dies funktioniert? – RogueSpear00

+0

@ RogueSpear00 Entschuldigung, ich dachte, du würdest die Notizen unten sehen. Ich habe es teilweise funktioniert, aber nachdem ich das Update auf James Newtons ASP-Proxy mache, funktioniert es nicht richtig. Siehe meine Kommentare unten. Danke für das Nachschlagen! Ich hoffe, dass dies bald behoben – Cineno28

Antwort

1

Verwenden Sie einfach die Plugin-Rechtschreibprüfung

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

+0

Vielen Dank für die Antwort. Ich bemerkte das, sah aber, dass PHP als eine der Anforderungen aufgeführt wurde. Kann ich das noch mit klassischem ASP nutzen? – Cineno28

+0

@ Cineno28 - Sieht so aus, als würde TinyMCE Classic ASP nicht direkt zur Rechtschreibprüfung unterstützen. Es verwendet ein PHP-Modul für die Rechtschreibprüfung. Für die Textbox-Integration funktioniert es jedoch gut. Hier ist ein Link zu einem ihrer Forenbeiträge, der einige Hacks hat, die Sie möglicherweise verwenden können: http://www.tinymce.com/forum/viewtopic.php?id=15662 – RogueSpear00

+0

@ Cineno28 - Ich ging voran und versuchte das mitgelieferte Beispiel von diesem Link, und ich konnte erfolgreich die TinyMCE-Rechtschreibprüfung verwenden. – RogueSpear00

4

Erstens, ich bin mir nicht sicher, ob dies auch in Ordnung ist ausgeschaltet Antwort der SG 86 auf huckepack, also nicht züchtigt mich nicht, wenn es nicht ...

Ich habe das Beispiel von SG 86 verwendet und festgestellt, dass Sie die von TinyMCE bereitgestellten Rechtschreibprüfungsfunktionen nicht direkt verwenden können, aber wenn Sie den von einem Forumbenutzer bereitgestellten Hack verwenden, funktioniert er erfolgreich.

  1. installieren und einrichten TinyMCE
  2. Folgen Sie den Anweisungen von Forum Benutzer

Alle Kredit für diese Lösung mit TinyMCE zum ursprünglichen Forum user @http://tinymce.com/forum/viewtopic.php?id=15662


Ich empfehle gehen googiespell einrichten, um mit einem einfachen textarea mit asp zuerst zu arbeiten: googiespell ist hier: http://orangoo.com/labs/GoogieSpell/

das ASP-Skript ist ASP-Proxy James Newtons auf dieser Seite: http://orangoo.com/labs/GoogieSpell/Documentation/ Also, wenn Sie bekam das hier funktioniert, wie Sie dies mit TinyMCE integrieren in Ihrem Javascript-Setup die Rechtschreibprüfung config:

<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> 

Bearbeiten Sie die Zeile :

spellchecker_rpc_url : "/googiespell/spell.asp", 

, wo Ihre spell.asp Datei auf Ihrer Anwendung befindet sich auf Punkt

Ersetzen Sie den Inhalt der spell.asp mit dem folgenden Code:

<% 

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 

%> 

Bearbeiten - mein Header für Klarheit hinzugefügt:

<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

Ich bin mir nicht sicher, wie diese Seite Poster von Kommentaren warnt, also poste ich hier, dass es unten im Beitrag von SG 86 Kommentare gibt, falls sie nicht gesehen wurden. Danke nochmal für deine Hilfe. Ich habe das Gefühl, dass ich dem nahe komme, dass das funktioniert. – Cineno28

+0

Was funktioniert nicht? Ich beantwortete die obigen Fragen in SGs Antwort. Hat das nicht funktioniert? Ich habe diese Kommentare von letzter Woche gelesen und geantwortet. – RogueSpear00

+0

Der Teil, der nicht funktioniert, ist, wenn ich James Newtons ASP-Proxy durch den neuen ASP-Code ersetze. Ich bin mir nicht sicher, ob ich seinen Proxy nur mit diesem neuen Code bearbeiten oder ihn vollständig ersetzen soll. Ich habe versucht, es komplett zu ersetzen, und ich bekomme die Rechtschreibprüfung im Editor, aber es findet keine Rechtschreibkorrekturen an Wörtern, die mit Newtons ursprünglichem Code und ohne Tinyce korrigiert wurden. – Cineno28

0

JSpellChecker in der Frage erwähnt (http://achorniy.wordpress.com/2009/08/11/tinymce-spellchecker-in-java/) bieten einige Implementierungen von Rechtschreibprüfung für TinyMCE und Verwendungsbeispiele, aber sie alle sind Java-basierte Implementierungen (also müssen Sie einige zusätzliche Schritte tun, damit es in Ihrer Umgebung funktioniert)

Es sollte mit IE gut funktionieren, aber im Idealfall sollte es auf gehostet werden derselbe Host wie die Seite, von der Sie ihn verwenden möchten, da der Browser (nicht nur IE) domainübergreifende Ajax-Anfragen blockieren kann.

Sie können Code-Snapshot hier herunterladen (http://sourceforge.net/p/jspellchecker/code/11/tarball), wenn Sie nicht mit SVN umgehen wollen. Es enthält auch Verwendungsbeispiele

0

Shameless Self Promotion:

Ich habe vor kurzem ein Pro-Plugin für TinyMCE ins Leben gerufen haben, die für die klassischen ASP volle Unterstützung bietet.

http://tinymcespellcheck.com

0

TinyMCE bietet

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

Hier ist Python-Code (ein Äquivalent in ASP schreiben):

#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)