Revision: 8301
          
http://languagetool.svn.sourceforge.net/languagetool/?rev=8301&view=rev
Author:   gulp21-1
Date:     2012-11-04 17:23:25 +0000 (Sun, 04 Nov 2012)
Log Message:
-----------
[extension/fx] support checking text in textarea
               use squiggles as error markers
               display spelling mistakes at the end

Modified Paths:
--------------
    trunk/extension/firefox/TODO
    trunk/extension/firefox/data/panel.css
    trunk/extension/firefox/lib/main.js
    trunk/extension/firefox/locale/de-DE.properties
    trunk/extension/firefox/locale/en-US.properties
    trunk/extension/firefox/package.json

Added Paths:
-----------
    trunk/extension/firefox/data/content.js
    trunk/extension/firefox/data/squiggle.png
    trunk/extension/firefox/data/squiggle_red.png

Modified: trunk/extension/firefox/TODO
===================================================================
--- trunk/extension/firefox/TODO        2012-11-04 15:51:51 UTC (rev 8300)
+++ trunk/extension/firefox/TODO        2012-11-04 17:23:25 UTC (rev 8301)
@@ -1,5 +1 @@
-- check if selectedText is null
-- use unobtrusive squiggles
-- move spelling errors to the end
-- check text in an active text field, even if it is not selected 
(document.forms, onfocus, onblur)
 - autodetect language (needs code change in lt)

Added: trunk/extension/firefox/data/content.js
===================================================================
--- trunk/extension/firefox/data/content.js                             (rev 0)
+++ trunk/extension/firefox/data/content.js     2012-11-04 17:23:25 UTC (rev 
8301)
@@ -0,0 +1,7 @@
+var activeElement = document.activeElement;
+if(activeElement.tagName=="TEXTAREA") {
+       self.postMessage(activeElement.value.toString());
+} else {
+//     self.postMessage(window.getSelection().toString()); // This does not 
work when the selected text is in an iframe (e.g. lt forum)
+       self.postMessage("-NULL-");
+}

Modified: trunk/extension/firefox/data/panel.css
===================================================================
--- trunk/extension/firefox/data/panel.css      2012-11-04 15:51:51 UTC (rev 
8300)
+++ trunk/extension/firefox/data/panel.css      2012-11-04 17:23:25 UTC (rev 
8301)
@@ -21,18 +21,19 @@
        color: gray;
 }
 
-.markerGrammar {
-/*     background-image: 
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAOCAYAAAASVl2WAAAABmJLR0QA5QDgAOQX8gURAAAACXBIWXMAAArwAAAK8AFCrDSYAAAAB3RJTUUH3AoFFAY6Xz/r/wAAAC1JREFUGNNjYBgFdAKMCOb//0jCcHEmmOTMmRAJCI2smOH//5kzUQQYIHwIBgC15xTAY0o3qAAAAABJRU5ErkJggg==);
+[class^="marker"] {
        padding-bottom: 2px;
        background-repeat: repeat-x;
-       background-position: left bottom; */
-       border-bottom: 1px dashed #9999FF;
+       background-position: left bottom;
        color: DimGray;
 }
 
+.markerGrammar {
+       background-image: url("squiggle.png");
+}
+
 .markerSpelling {
-       border-bottom: 1px dashed #FF9999;
-       color: DimGray;
+       background-image: url("squiggle_red.png");
 }
 
 hr:last-child {

Added: trunk/extension/firefox/data/squiggle.png
===================================================================
(Binary files differ)


Property changes on: trunk/extension/firefox/data/squiggle.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/extension/firefox/data/squiggle_red.png
===================================================================
(Binary files differ)


Property changes on: trunk/extension/firefox/data/squiggle_red.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Modified: trunk/extension/firefox/lib/main.js
===================================================================
--- trunk/extension/firefox/lib/main.js 2012-11-04 15:51:51 UTC (rev 8300)
+++ trunk/extension/firefox/lib/main.js 2012-11-04 17:23:25 UTC (rev 8301)
@@ -4,7 +4,7 @@
 var self=require("self");
 var simpleprefs=require("simple-prefs");
 var tabs=require("tabs");
-// tabs.open("http://languagetool.org/de/";);
+// tabs.open("http://www.languagetool.org/forum/";);
 var widgets=require("widget");
 var _=require("l10n").get;
 
@@ -34,7 +34,8 @@
 }
 
 function createReport(response, selectedText) {
-       var returnText="";
+       var returnTextGrammar="";
+       var returnTextSpelling="";
        response=response.split("<error ");
        
        if(response.length<2) {
@@ -42,7 +43,7 @@
        }
        
        for(var i=1; i<response.length; ++i) {
-               returnText+="<div 
class=\"msg\">"+getAttributeValue(response[i],"msg")+"</div>";
+               var returnText="<div 
class=\"msg\">"+getAttributeValue(response[i],"msg")+"</div>";
                
                fromx=getAttributeValue(response[i],"fromx");
                tox=getAttributeValue(response[i],"tox");
@@ -69,10 +70,16 @@
                }
                
                returnText+="<hr/>";
+               
+               if(returnText.indexOf("markerGrammar")!=-1) {
+                       returnTextGrammar+=returnText;
+               } else {
+                       returnTextSpelling+=returnText;
+               }
        } // for each <error/>
        
-       console.log("returnText: "+returnText);
-       return returnText;
+       console.log("returnText: "+returnTextGrammar+returnTextSpelling);
+       return returnTextGrammar+returnTextSpelling;
 }
 
 var panel=require("panel").Panel({
@@ -89,63 +96,77 @@
        tabs.open(url);
 });
 
+function widgetClicked() {
+       selectedText=selectedText.replace(/(\r\n|\n|\r)/gm," <BR> ") // remove 
newlines
+                                .replace(/(\s+\<BR\>\s+(\<BR\>\s+)*)/g," ") // 
remove extra spaces added after newline
+                                .replace(/^\s+|\s+$/g,""); // trim
+       
+       console.log("Selection: "+selectedText);
+       console.log("Selection (escaped): "+myEscape(selectedText));
+       
+       var checkTextOnline=Request({
+               url: "http://api.languagetool.org:8081/";,
+               onComplete: function (response) {
+                       if(response.status!=200) {
+                               console.log("Response status: 
"+response.status);
+                               var errorText=_("errorOccuredStatus")+" 
"+response.status
+                               panel.port.emit("setText", "<div 
class=\"status\">"+errorText+"</div>");
+                       } else {
+                               text=response.text;
+                               console.log("Response: "+text);
+                               panel.show();
+                               panel.port.emit("setText", createReport(text, 
selectedText));
+                       }
+               },
+               content: 
"language="+simpleprefs.prefs.language+"&text="+myEscape(selectedText)
+       });
+       
+       var checkTextLocal=Request({
+               url: "http://localhost:8081";,
+               onComplete: function (response) {
+                       if(response.status!=200) {
+                               console.log("Response status: 
"+response.status);
+                               var errorText=_("errorOccuredStatus")+" 
"+response.status
+                               if(simpleprefs.prefs.enableWebService) {
+                                       console.log("Connecting with web 
service");
+                                       errorText+="<br>"+_("usingWebService");
+                                       panel.port.emit("setText", "<div 
class=\"status\">"+errorText+"</div>");
+                                       checkTextOnline.post();
+                               } else {
+                                       if(response.status==0) {
+                                               
errorText+="<br/>"+_("checkLtRunning");
+                                       }
+                                       panel.port.emit("setText", "<div 
class=\"status\">"+errorText+"</div>");
+                               }
+                       } else {
+                               text=response.text;
+                               console.log("Response: "+text);
+                               panel.show();
+                               panel.port.emit("setText", createReport(text, 
selectedText));
+                       }
+               },
+               content: 
"language="+simpleprefs.prefs.language+"&text="+myEscape(selectedText)
+       });
+       
+       if(selectedText!=null && selectedText!="") {
+               checkTextLocal.post();
+       } else {
+               panel.port.emit("setText", "<div 
class=\"status\">"+_("emptyText")+"</div>");
+       }
+}
+
 var widget=widgets.Widget({
        id: "lt-check",
        label: _("checkSelectionWithLT"),
        contentURL: self.data.url("iconSmall.ico"),
        panel: panel,
        onClick: function() {
-               selectedText=selectedText.replace(/(\r\n|\n|\r)/gm," <BR> ") // 
remove newlines
-                                        
.replace(/(\s+\<BR\>\s+(\<BR\>\s+)*)/g," ") // remove extra spaces added after 
newline
-                                        .replace(/^\s+|\s+$/g,""); // trim
-               
-               console.log("Selection: "+selectedText);
-               console.log("Selection (escaped): "+myEscape(selectedText));
-               
-               var checkTextOnline=Request({
-                       url: "http://api.languagetool.org:8081/";,
-                       onComplete: function (response) {
-                               if(response.status!=200) {
-                                       console.log("Response status: 
"+response.status);
-                                       var errorText=_("errorOccuredStatus")+" 
"+response.status
-                                       panel.port.emit("setText", "<div 
class=\"status\">"+errorText+"</div>");
-                               } else {
-                                       text=response.text;
-                                       console.log("Response: "+text);
-                                       panel.show();
-                                       panel.port.emit("setText", 
createReport(text, selectedText));
-                               }
-                       },
-                       content: 
"language="+simpleprefs.prefs.language+"&text="+myEscape(selectedText)
+               tabs.activeTab.attach({
+                       contentScriptFile: self.data.url("content.js"),
+                       onMessage: function (message) {
+                               if(message!="-NULL-") selectedText=message;
+                               widgetClicked();
+                       }
                });
-               
-               var checkTextLocal=Request({
-                       url: "http://localhost:8081";,
-                       onComplete: function (response) {
-                               if(response.status!=200) {
-                                       console.log("Response status: 
"+response.status);
-                                       var errorText=_("errorOccuredStatus")+" 
"+response.status
-                                       if(simpleprefs.prefs.enableWebService) {
-                                               console.log("Connecting with 
web service");
-                                               
errorText+="<br>"+_("usingWebService");
-                                               panel.port.emit("setText", 
"<div class=\"status\">"+errorText+"</div>");
-                                               checkTextOnline.post();
-                                       } else {
-                                               if(response.status==0) {
-                                                       
errorText+="<br/>"+_("checkLtRunning");
-                                               }
-                                               panel.port.emit("setText", 
"<div class=\"status\">"+errorText+"</div>");
-                                       }
-                               } else {
-                                       text=response.text;
-                                       console.log("Response: "+text);
-                                       panel.show();
-                                       panel.port.emit("setText", 
createReport(text, selectedText));
-                               }
-                       },
-                       content: 
"language="+simpleprefs.prefs.language+"&text="+myEscape(selectedText)
-               });
-               
-               checkTextLocal.post();
        }
 });

Modified: trunk/extension/firefox/locale/de-DE.properties
===================================================================
--- trunk/extension/firefox/locale/de-DE.properties     2012-11-04 15:51:51 UTC 
(rev 8300)
+++ trunk/extension/firefox/locale/de-DE.properties     2012-11-04 17:23:25 UTC 
(rev 8301)
@@ -1,11 +1,12 @@
 errorOccuredStatus=Es ist ein Fehler aufgetreten. Statuscode: 
 pleaseWaitWhileChecking=Bitte warten Sie, während der markierte Text überprüft 
wird&nbsp;&hellip;
 noProblemsFound=Es wurden keine Probleme gefunden.
-checkSelectionWithLT=Markierten Text mit LanguageTool überprüfen
+checkSelectionWithLT=Markierten Text oder Text in Textfeld mit LanguageTool 
überprüfen
 moreInformation=mehr Informationen
 checkLtRunning=Bitte stellen Sie sicher, dass ein LanguageTool-Server auf Port 
8081 läuft oder aktivieren Sie den Webservice in den <a 
href="about:addons">Add-on-Einstellungen</a>.
 usingWebService=Benutzen des lokalen Servers fehlgeschlagen, verbinde mit 
Webservice&nbsp;&hellip;
+emptyText=Keine Text ist markiert und kein Textfeld ist aktiviert. Bitte 
markieren Sie einen Text oder ein Textfeld, um den Text prüfen zu lassen.
 language_title=Sprache
 language_description=LanguageTool wird davon ausgehen, dass der zu prüfenden 
Text in dieser Sprache ist. Benutzen Sie Sprachcodes wie 'en-US' oder 'de-DE'.
-enableServer_title=Benutze den Webservice, wenn eine Verbindung mit dem 
lokalen Server nicht erfolgreich ist
-enableServer_description=Die Erweiterung versucht zuerst, eine Verbindung mit 
einem lokal laufenden LanguageTool-Server herzustellen. Wenn dies fehlschlägt 
und diese Option aktiviert ist, verbindet sich die Erweiterung mit 
api.languagetool.org, um den markierten Text zu prüfen. Bitte beachten Sie 
jedoch, dass die Verbindung nicht verschlüsselt ist. Bitte lesen Sie die 
Add-on-Beschreibung und die Datenschutzerklärung für Einzelheiten.
+enableWebService_title=Benutze den Webservice, wenn eine Verbindung mit dem 
lokalen Server nicht erfolgreich ist
+enableWebService_description=Die Erweiterung versucht zuerst, eine Verbindung 
mit einem lokal laufenden LanguageTool-Server herzustellen. Wenn dies 
fehlschlägt und diese Option aktiviert ist, verbindet sich die Erweiterung mit 
api.languagetool.org, um den Text zu prüfen. Bitte beachten Sie jedoch, dass 
die Verbindung nicht verschlüsselt ist. Bitte lesen Sie die Add-on-Beschreibung 
und die Datenschutzerklärung für Einzelheiten.

Modified: trunk/extension/firefox/locale/en-US.properties
===================================================================
--- trunk/extension/firefox/locale/en-US.properties     2012-11-04 15:51:51 UTC 
(rev 8300)
+++ trunk/extension/firefox/locale/en-US.properties     2012-11-04 17:23:25 UTC 
(rev 8301)
@@ -1,11 +1,12 @@
 errorOccuredStatus=An error occured. Status code: 
 pleaseWaitWhileChecking=Please wait while the selected text is being 
checked&nbsp;&hellip;
 noProblemsFound=No problems have been found.
-checkSelectionWithLT=Check selected text with LanguageTool
+checkSelectionWithLT=Check selected text or text in textfield with LanguageTool
 moreInformation=more information
 checkLtRunning=Please make sure that a LanguageTool Server is running on port 
8081 or enable the web service in <a href="about:addons">the setttings of the 
add-on</a>.
 usingWebService=Using local server failed, connecting with web 
service&nbsp;&hellip;
+emptyText=No text is selected and no textfield is active. Please select a text 
or a textfield in order to have the text checked.
 language_title=Language
 language_description=LanguageTool will assume that the text to be checked is 
in this language. Use language codes like 'en-US' or 'de-DE'.
-enableServer_title=Use web service when connecting with the local server is 
not successful
-enableServer_description=At first, the extension tries to connect to a locally 
running LanguageTool server. If this fails and this option is enabled, the 
extension connects to api.languagetool.org to check the selected text. Please 
note, however, that the connection is not encrypted. Please read the add-on 
description and the privacy policy for details.
+enableWebService_title=Use web service when connecting with the local server 
is not successful
+enableWebService_description=At first, the extension tries to connect to a 
locally running LanguageTool server. If this fails and this option is enabled, 
the extension connects to api.languagetool.org to check the text. Please note, 
however, that the connection is not encrypted. Please read the add-on 
description and the privacy policy for details.

Modified: trunk/extension/firefox/package.json
===================================================================
--- trunk/extension/firefox/package.json        2012-11-04 15:51:51 UTC (rev 
8300)
+++ trunk/extension/firefox/package.json        2012-11-04 17:23:25 UTC (rev 
8301)
@@ -9,14 +9,14 @@
        "homepage": "http://languagetool.org";,
        "preferences": [{
                "name": "language",
-               "title": "Language",
-               "description": "LanguageTool will assume that the text to be 
checked is in this language. Use language codes like 'en-US' or 'de-DE'.",
+               "title": "language_title",
+               "description": "language_description",
                "type": "string",
                "value": "en-US"
        }, {
                "name": "enableWebService",
-               "title": "Use web service when connecting with the local server 
is not successful",
-               "description": "At first, the extension tries to connect to a 
locally running LanguageTool server. If this fails and this option is enabled, 
the extension connects to api.languagetool.org to check the selected text. 
Please note, however, that the connection is not encrypted. Please read the 
add-on description and the privacy policy for details.",
+               "title": "enableWebService_title",
+               "description": "enableWebService_description",
                "type": "bool",
                "value": false
        }]

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
LogMeIn Central: Instant, anywhere, Remote PC access and management.
Stay in control, update software, and manage PCs from one command center
Diagnose problems and improve visibility into emerging IT issues
Automate, monitor and manage. Do more in less time with Central
http://p.sf.net/sfu/logmein12331_d2d
_______________________________________________
Languagetool-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-commits

Reply via email to