Revision: 8292
          
http://languagetool.svn.sourceforge.net/languagetool/?rev=8292&view=rev
Author:   gulp21-1
Date:     2012-11-03 21:08:42 +0000 (Sat, 03 Nov 2012)
Log Message:
-----------
[extension/fx] add new firefox extension to svn, still under development

Added Paths:
-----------
    trunk/extension/
    trunk/extension/firefox/
    trunk/extension/firefox/README.md
    trunk/extension/firefox/TODO
    trunk/extension/firefox/data/
    trunk/extension/firefox/data/iconSmall.ico
    trunk/extension/firefox/data/panel.css
    trunk/extension/firefox/data/panel.html
    trunk/extension/firefox/data/panel.js
    trunk/extension/firefox/doc/
    trunk/extension/firefox/doc/main.md
    trunk/extension/firefox/icon.png
    trunk/extension/firefox/lib/
    trunk/extension/firefox/lib/main.js
    trunk/extension/firefox/locale/
    trunk/extension/firefox/locale/de-DE.properties
    trunk/extension/firefox/locale/en-US.properties
    trunk/extension/firefox/package.json
    trunk/extension/firefox/package.json.backup
    trunk/extension/firefox/test/
    trunk/extension/firefox/test/test-main.js

Added: trunk/extension/firefox/README.md
===================================================================
--- trunk/extension/firefox/README.md                           (rev 0)
+++ trunk/extension/firefox/README.md   2012-11-03 21:08:42 UTC (rev 8292)
@@ -0,0 +1,20 @@
+LanguageToolFx
+==============
+
+LanguageTool for Firefox
+
+Usage
+-----
+
+Select the text that you want to check with LanguageTool and click the LT icon 
in the add-on bar.
+
+The extensions tries to connect to a locally running LanguageTool server. If 
the connection fails, the extensions uses the webservice at 
http://api.languagetool.org:8081/ if it is enabled in the settings of the 
extension.
+
+The default language is en-US. You might want to change this in the settings 
of the extension.
+
+Build installable XPI file
+--------------------------
+
+1. get and extract the Add-on SDK from 
https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/tutorials/installation.html
+2. run source bin/activate
+3. run cfx xpi

Added: trunk/extension/firefox/TODO
===================================================================
--- trunk/extension/firefox/TODO                                (rev 0)
+++ trunk/extension/firefox/TODO        2012-11-03 21:08:42 UTC (rev 8292)
@@ -0,0 +1,4 @@
+- check if selectedText is null
+- use unobtrusive squiggles
+- move spelling errors to the end
+- autodetect language (needs code change in lt)

Added: trunk/extension/firefox/data/iconSmall.ico
===================================================================
(Binary files differ)


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

Added: trunk/extension/firefox/data/panel.css
===================================================================
--- trunk/extension/firefox/data/panel.css                              (rev 0)
+++ trunk/extension/firefox/data/panel.css      2012-11-03 21:08:42 UTC (rev 
8292)
@@ -0,0 +1,40 @@
+body {
+       background-color: white;
+       counter-reset: i;
+}
+
+div {
+       font-family: Verdana, sans-serif;
+       font-size: 10px;
+}
+
+.msg:before {
+       counter-increment: i;
+       content: counter(i) ": ";
+}
+
+.msg {
+       font-weight: bold;
+}
+
+.context, .status {
+       color: gray;
+}
+
+.markerGrammar {
+/*     background-image: 
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAOCAYAAAASVl2WAAAABmJLR0QA5QDgAOQX8gURAAAACXBIWXMAAArwAAAK8AFCrDSYAAAAB3RJTUUH3AoFFAY6Xz/r/wAAAC1JREFUGNNjYBgFdAKMCOb//0jCcHEmmOTMmRAJCI2smOH//5kzUQQYIHwIBgC15xTAY0o3qAAAAABJRU5ErkJggg==);
+       padding-bottom: 2px;
+       background-repeat: repeat-x;
+       background-position: left bottom; */
+       border-bottom: 1px dashed #9999FF;
+       color: DimGray;
+}
+
+.markerSpelling {
+       border-bottom: 1px dashed #FF9999;
+       color: DimGray;
+}
+
+hr:last-child {
+       display: none;
+}
\ No newline at end of file

Added: trunk/extension/firefox/data/panel.html
===================================================================
--- trunk/extension/firefox/data/panel.html                             (rev 0)
+++ trunk/extension/firefox/data/panel.html     2012-11-03 21:08:42 UTC (rev 
8292)
@@ -0,0 +1,8 @@
+<html>
+<head>
+<link rel="stylesheet" type="text/css" href="panel.css" />
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+</head>
+<body id="body">
+</body> 
+</html>

Added: trunk/extension/firefox/data/panel.js
===================================================================
--- trunk/extension/firefox/data/panel.js                               (rev 0)
+++ trunk/extension/firefox/data/panel.js       2012-11-03 21:08:42 UTC (rev 
8292)
@@ -0,0 +1,16 @@
+self.port.on("setText", function(text) {
+       document.getElementById("body").innerHTML=text;
+});
+
+window.addEventListener(
+       'click',
+       function(event) {
+               var t=event.target;
+               if(t.nodeName=="A") {
+                       event.stopPropagation();
+                       event.preventDefault();
+                       self.port.emit('linkClicked', t.toString());
+               }
+       },
+       false
+);

Added: trunk/extension/firefox/doc/main.md
===================================================================
Added: trunk/extension/firefox/icon.png
===================================================================
(Binary files differ)


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

Added: trunk/extension/firefox/lib/main.js
===================================================================
--- trunk/extension/firefox/lib/main.js                         (rev 0)
+++ trunk/extension/firefox/lib/main.js 2012-11-03 21:08:42 UTC (rev 8292)
@@ -0,0 +1,151 @@
+var preferencesservice=require("preferences-service");
+var Request=require("request").Request;
+var selection=require("selection");
+var self=require("self");
+var simpleprefs=require("simple-prefs");
+var tabs=require("tabs");
+// tabs.open("http://languagetool.org/de/";);
+var widgets=require("widget");
+var _=require("l10n").get;
+
+var PLEASEWAITWHILECHECKING="<div 
class=\"status\">"+_("pleaseWaitWhileChecking")+"</div>";
+var MAXCONTEXTLENGTH=20;
+
+var selectedText="";
+
+function selectionChanged(event) {
+       selectedText=selection.text;
+}
+
+selection.on("select", selectionChanged);
+
+/**
+ * escape %, ?, and & in url
+ * normal escape does not work properly with umlauts
+ */
+function myEscape(string) {
+       return 
string.replace(/\%/g,"%25").replace(/\?/g,"%3F").replace(/\&/g,"%26")
+}
+
+function getAttributeValue(string, attribute) {
+       if(string.indexOf(attribute+"=\"")==-1)
+               return "";
+       return string.split(attribute+"=\"")[1].split("\"")[0];
+}
+
+function createReport(response, selectedText) {
+       var returnText="";
+       response=response.split("<error ");
+       
+       if(response.length<2) {
+               return "<div class=\"status\">"+_("noProblemsFound")+"</div>";
+       }
+       
+       for(var i=1; i<response.length; ++i) {
+               returnText+="<div 
class=\"msg\">"+getAttributeValue(response[i],"msg")+"</div>";
+               
+               fromx=getAttributeValue(response[i],"fromx");
+               tox=getAttributeValue(response[i],"tox");
+               l=selectedText.substring(0,fromx);
+               if(l.length>MAXCONTEXTLENGTH) {
+                       l="&hellip;"+l.substring(l.length-MAXCONTEXTLENGTH);
+               }
+               m=selectedText.substring(fromx,tox);
+               r=selectedText.substring(tox);
+               if(r.length>MAXCONTEXTLENGTH) {
+                       r=r.substring(0,MAXCONTEXTLENGTH)+"&hellip;";
+               }
+               id=getAttributeValue(response[i],"ruleId");
+               if(id.indexOf("MORFOLOGIK")!=-1 || id.indexOf("HUNSPELL")!=-1) {
+                       spanclass="markerSpelling";
+               } else {
+                       spanclass="markerGrammar";
+               }
+               returnText+="<div class=\"context\">"+l+"<span 
class=\""+spanclass+"\">"+m+"</span>"+r+"</div>";
+               
+               url=getAttributeValue(response[i],"url");
+               if(url!="") {
+                       returnText+="<div class=\"url\"><a targer=\"_blank\" 
href=\""+url+"\">"+_("moreInformation")+"</a></div>";
+               }
+               
+               returnText+="<hr/>";
+       } // for each <error/>
+       
+       console.log("returnText: "+returnText);
+       return returnText;
+}
+
+var panel=require("panel").Panel({
+       contentURL: self.data.url("panel.html"),
+       contentScriptFile: self.data.url("panel.js"),
+       onHide: function () {
+               panel.port.emit("setText", PLEASEWAITWHILECHECKING);
+       }
+});
+
+panel.port.emit("setText", PLEASEWAITWHILECHECKING);
+
+panel.port.on("linkClicked", function(url) {
+       tabs.open(url);
+});
+
+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)
+               });
+               
+               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();
+       }
+});

Added: trunk/extension/firefox/locale/de-DE.properties
===================================================================
--- trunk/extension/firefox/locale/de-DE.properties                             
(rev 0)
+++ trunk/extension/firefox/locale/de-DE.properties     2012-11-03 21:08:42 UTC 
(rev 8292)
@@ -0,0 +1,11 @@
+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
+moreInformation=mehr Informationen
+usingWebService=Benutzen des lokalen Servers fehlgeschlagen, verbinde mit 
Webservice&nbsp;&hellip;
+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'.
+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>.
+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.

Added: trunk/extension/firefox/locale/en-US.properties
===================================================================
--- trunk/extension/firefox/locale/en-US.properties                             
(rev 0)
+++ trunk/extension/firefox/locale/en-US.properties     2012-11-03 21:08:42 UTC 
(rev 8292)
@@ -0,0 +1,11 @@
+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
+moreInformation=more information
+usingWebService=Using local server failed, connecting with web 
service&nbsp;&hellip;
+language_title=Language
+language_description=LanguageTool will asume that the text to be checked is in 
this language. Use language codes like 'en-US' or 'de-DE'.
+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>.
+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 conntects 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.

Added: trunk/extension/firefox/package.json
===================================================================
--- trunk/extension/firefox/package.json                                (rev 0)
+++ trunk/extension/firefox/package.json        2012-11-03 21:08:42 UTC (rev 
8292)
@@ -0,0 +1,23 @@
+{
+       "name": "languagetoolfx", 
+       "license": "GPL 3.0", 
+       "author": "Markus Brenneis", 
+       "version": "0.1-pre", 
+       "fullName": "LanguageToolFx", 
+       "id": "jid1-j3KiX1n7UXrjxQ", 
+       "description": "LanguageTool for Firefox",
+       "homepage": "http://languagetool.org";,
+       "preferences": [{
+               "name": "language",
+               "title": "Language",
+               "description": "LanguageTool will asume that the text to be 
checked is in this language. Use language codes like 'en-US' or 'de-DE'.",
+               "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 conntects 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.",
+               "type": "bool",
+               "value": false
+       }]
+}

Added: trunk/extension/firefox/package.json.backup
===================================================================
--- trunk/extension/firefox/package.json.backup                         (rev 0)
+++ trunk/extension/firefox/package.json.backup 2012-11-03 21:08:42 UTC (rev 
8292)
@@ -0,0 +1,8 @@
+{
+  "name": "languagetoolfx",
+  "fullName": "languagetoolFx",
+  "description": "a basic add-on",
+  "author": "",
+  "license": "MPL 2.0",
+  "version": "0.1"
+}

Added: trunk/extension/firefox/test/test-main.js
===================================================================
--- trunk/extension/firefox/test/test-main.js                           (rev 0)
+++ trunk/extension/firefox/test/test-main.js   2012-11-03 21:08:42 UTC (rev 
8292)
@@ -0,0 +1,6 @@
+var main = require("main");
+
+exports.test_run = function(test) {
+  test.pass("Unit test running!");
+};
+

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