Index: lib/typoSurvey.js |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/lib/typoSurvey.js |
@@ -0,0 +1,115 @@ |
+/* |
Wladimir Palant
2012/12/13 16:07:00
Same question as for typoCollector.js - this has b
Thomas Greiner
2013/01/14 10:06:41
Same answer: IIRC yes.
|
+ * This file is part of the URL Fixer, |
+ * Copyright (C) 2006-2012 Eyeo GmbH |
+ * |
+ * URL Fixer is free software: you can redistribute it and/or modify |
+ * it under the terms of the GNU General Public License version 3 as |
+ * published by the Free Software Foundation. |
+ * |
+ * URL Fixer is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with URL Fixer. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+Cu.import("resource://gre/modules/Services.jsm"); |
+ |
+let {Prefs} = require("prefs"); |
+ |
+let surveyLang = null; |
+let surveyUrl = null; //"http://urlfixer.org/usersurvey/..."; |
+ |
+exports.incrementCorrectionsCounter = incrementCorrectionsCounter; |
+function incrementCorrectionsCounter() |
+{ |
+ // Only if survey exists |
+ if (!surveyUrl) |
+ return; |
+ |
+ // Only users with 5 URL corrections |
+ if (++Prefs.corrections_count == 5) |
+ { |
+ initSurvey(); |
+ } |
+} |
+ |
+function initSurvey() |
+{ |
+ // Don't ask after 2012-10-15 |
+ if (Date.now() > 1350259200000) |
+ return; |
+ |
+ // Only Firefox users |
+ let {application} = require("info"); |
+ if (application != "firefox") |
+ return; |
+ |
+ // Only Firefox 4 and higher |
+ if (Services.vc.compare(Services.appinfo.platformVersion, "2.0") < 0) |
+ return; |
+ |
+ // Survey is only available in English/German/Russian |
+ if (!/^(en|de|ru)\b/.test(Services.locale.getApplicationLocale().getCategory("NSILOCALE_CTYPE"))) |
+ return; |
+ surveyLang = RegExp.$1; |
+ |
+ // Delay survey question by 5 seconds |
+ surveyTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); |
+ surveyTimer.initWithCallback(runSurvey, 5000, Ci.nsITimer.TYPE_ONE_SHOT); |
+} |
+ |
+function runSurvey() |
+{ |
+ //open panel |
+ let request = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest); |
+ request.open("GET", "chrome://url-fixer/content/survey.xul"); |
+ request.addEventListener("load", function(event) |
+ { |
+ let window = Services.wm.getMostRecentWindow("navigator:browser"); |
+ let document = window.document; |
+ |
+ let style = document.createProcessingInstruction('xml-stylesheet', 'href="chrome://url-fixer/skin/survey.css" type="text/css"'); |
+ document.insertBefore(style, document.firstChild); |
+ |
+ let panel = new window.DOMParser().parseFromString(request.responseText, "text/xml").documentElement; |
+ let oldPanel = document.getElementById(panel.id); |
+ if (oldPanel) |
+ oldPanel.parentNode.removeChild(oldPanel); |
+ document.getElementById("mainPopupSet").appendChild(panel); |
+ document.getElementById("url-fixer-icon").setAttribute("src", require("info").addonRoot + "icon64.png"); |
+ document.getElementById("url-fixer-accept-button").addEventListener("command", function() |
+ { |
+ openSurvey(); |
+ panel.hidePopup(); |
+ }); |
+ document.getElementById("url-fixer-cancel-button").addEventListener("command", function() |
+ { |
+ panel.hidePopup(); |
+ }); |
+ panel.addEventListener("popuphidden", function() |
+ { |
+ panel.parentNode.removeChild(panel); |
+ style.parentNode.removeChild(style); |
+ }); |
+ |
+ let anchor = document.getElementById("identity-box"); |
+ panel.openPopup(anchor, "after_start", 0, 0, false, true); |
+ }, false); |
+ request.send(null); |
+} |
+ |
+function openSurvey() |
+{ |
+ let window = Services.wm.getMostRecentWindow("navigator:browser"); |
+ if (window) |
+ { |
+ let browser = require("typoAppIntegration").getBrowser(window); |
+ browser.loadOneTab(surveyUrl + "&lang=" + surveyLang, { |
+ referrerURI: Services.io.newURI("http://url.fixer/", null, null), |
+ inBackground: false |
+ }); |
+ } |
+} |