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