diff --git a/CHANGELOG.md b/CHANGELOG.md
index bee6ad0..dec3e87 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,21 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [1.9.4] - 2019-11-24
+
+### Compatibility note
+- Require Firefox >= 55
+- Require Chrome >= 22
+
+### Fixed
+- Fixed toolbar icon on startup [#102](https://gitlab.com/KevinRoebert/ClearUrls/issues/102)
+
+### Added
+- Added option to disable/allow domain blocking [#294](https://gitlab.com/KevinRoebert/ClearUrls/issues/294)
+
+### Changed
+- Some refactoring
+
## [1.9.3.1] - 2019-11-15
### Compatibility note
@@ -31,7 +46,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- Fixed [#290](https://gitlab.com/KevinRoebert/ClearUrls/issues/290)
-## Changed
+### Changed
- Updated some strings of Italian translation by [@gioxx](https://gitlab.com/gioxx)
### Added
@@ -60,7 +75,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed [#241](https://gitlab.com/KevinRoebert/ClearUrls/issues/241)
- Possible fix for [#203](https://gitlab.com/KevinRoebert/ClearUrls/issues/203)
-## Changed
+### Changed
- Refactoring
- Changed background script loading sequence to prevent that required functions are not yet loaded.
@@ -89,7 +104,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Require Firefox >= 55
- Require Chrome >= 22
-## Changed
+### Changed
- Force redirects only on main frames
- Added google link fix script, to avoid the sub frame permission for force redirection on google
diff --git a/_locales/de/messages.json b/_locales/de/messages.json
index 9d498b0..0d18ec0 100644
--- a/_locales/de/messages.json
+++ b/_locales/de/messages.json
@@ -286,7 +286,7 @@
"description": "Diese Zeichenfolge wird als Titel auf der Hinweisseite für blockierte Seiten verwendet."
},
"blocked_html_body": {
- "message": "Diese Seite wurde vom ClearURLs Add-On blockiert, weil wir sie als Werbe- bzw. Trackingservice identifiziert haben. Um diese Seite zu besuchen, müssen Sie das Add-On temporär deaktivieren. Dann können Sie auf den untenstehenden Button klicken, um die Seite aufzurufen.",
+ "message": "Diese Seite wurde vom ClearURLs Add-On blockiert, weil wir sie als Werbe- bzw. Trackingservice identifiziert haben. Um diese Seite zu besuchen, müssen Sie das Add-On temporär deaktivieren oder in den Einstellungen von ClearURLs das Domain-Blocking deaktivieren. Dann können Sie auf den untenstehenden Button klicken, um die Seite aufzurufen.",
"description": "Diese Zeichenfolge wird als Mengentext auf der Hinweisseite für blockierte Seiten verwendet."
},
"blocked_html_button": {
@@ -304,5 +304,13 @@
"watchdog": {
"message": "[ClearURLs]: Der Watchdog hat ein Problem festgestellt. ClearURLs wird neugestartet.",
"description": "Diese Zeichenkette wird als Text für den Watchdog verwendet."
+ },
+ "domain_blocking_enabled": {
+ "message": "Erlaube Domain-Blocking (Kann zu Problemen auf Seiten führen, die AdBlocker nicht erlauben)",
+ "description": "Diese Zeichenkette wird als Beschreibung für das Domain-Blocking verwendet."
+ },
+ "domain_blocking_enabled_title": {
+ "message": "Erlaube Domain-Blocking (Kann zu Problemen auf Seiten führen, die AdBlocker nicht erlauben)",
+ "description": "Diese Zeichenkette wird als Titel für das Domain-Blocking verwendet."
}
}
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index 775e433..d63f26d 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -286,7 +286,7 @@
"description": "This string is used as title on the blocked site page."
},
"blocked_html_body": {
- "message": "This site was blocked by the ClearURLs Add-on, because we identify this site as an advertising and/or tracking service. To visit this site, you must temporarily deactivate the Add-on. After deactivating ClearURLs you can click on the button below to load the page.",
+ "message": "This site was blocked by the ClearURLs Add-on, because we identify this site as an advertising and/or tracking service. To visit this site, you must temporarily deactivate the Add-on or disable domain blocking in the ClearURLs settings. After this you can click on the button below to load the page.",
"description": "This string is used as body on the blocked site page."
},
"blocked_html_button": {
@@ -304,5 +304,13 @@
"watchdog": {
"message": "[ClearURLs]: The watchdog has detected a problem. ClearURLs is restarted.",
"description": "This string is used as text for the watchdog"
+ },
+ "domain_blocking_enabled": {
+ "message": "Allow domain blocking (Can lead to problems on pages that do not allow AdBlocker)",
+ "description": "This string is used as label for the domain blocking switch"
+ },
+ "domain_blocking_enabled_title": {
+ "message": "Allow domain blocking (Can lead to problems on pages that do not allow AdBlocker)",
+ "description": "This string is used as title for the domain blocking switch"
}
}
diff --git a/clearurls.js b/clearurls.js
index 95476ea..0030d36 100644
--- a/clearurls.js
+++ b/clearurls.js
@@ -170,7 +170,7 @@ function removeFieldsFormURL(provider, pureUrl, quiet = false) {
url = finalURL.replace(new RegExp("\\?&"), "?").replace(new RegExp("#&"), "#");
}
- if (provider.isCaneling()) {
+ if (provider.isCaneling() && storage.domainBlocking) {
if (!quiet) pushToLog(pureUrl, pureUrl, translate('log_domain_blocked'));
if (badges[tabid] == null) {
badges[tabid] = 0;
diff --git a/core_js/popup.js b/core_js/popup.js
index 8035ed7..7d111a2 100644
--- a/core_js/popup.js
+++ b/core_js/popup.js
@@ -32,65 +32,6 @@ var loggingStatus;
var statisticsStatus;
var currentURL;
-async function getData()
-{
- await browser.runtime.sendMessage({
- function: "getData",
- params: ["globalCounter"]
- }).then((data) => {
- globalCounter = data.response;
- });
-
- await browser.runtime.sendMessage({
- function: "getData",
- params: ["globalurlcounter"]
- }).then((data) => {
- globalurlcounter = data.response;
- });
-
- await browser.runtime.sendMessage({
- function: "getData",
- params: ["globalStatus"]
- }).then((data) => {
- globalStatus = data.response;
- });
-
- await browser.runtime.sendMessage({
- function: "getData",
- params: ["badgedStatus"]
- }).then((data) => {
- badgedStatus = data.response;
- });
-
- await browser.runtime.sendMessage({
- function: "getData",
- params: ["hashStatus"]
- }).then((data) => {
- hashStatus = data.response;
- });
-
- await browser.runtime.sendMessage({
- function: "getData",
- params: ["loggingStatus"]
- }).then((data) => {
- loggingStatus = data.response;
- });
-
- await browser.runtime.sendMessage({
- function: "getData",
- params: ["statisticsStatus"]
- }).then((data) => {
- statisticsStatus = data.response;
- });
-
- await browser.runtime.sendMessage({
- function: "getCurrentURL",
- params: []
- }).then((data) => {
- currentURL = data.response;
- });
-}
-
/**
* Initialize the UI.
*
@@ -240,19 +181,26 @@ function resetGlobalCounter(){
}
$(document).ready(function(){
- getData().then(() => {
- init();
- $('#reset_counter_btn').on("click", resetGlobalCounter);
- changeSwitchButton("globalStatus", "globalStatus");
- changeSwitchButton("tabcounter", "badgedStatus");
- changeSwitchButton("logging", "loggingStatus");
- changeSwitchButton("statistics", "statisticsStatus");
- $('#loggingPage').attr('href', browser.extension.getURL('./html/log.html'));
- $('#settings').attr('href', browser.extension.getURL('./html/settings.html'));
- $('#cleaning_tools').attr('href', browser.extension.getURL('./html/cleaningTool.html'));
- setText();
- });
-
+ loadData("globalCounter")
+ .then(() => loadData("globalurlcounter"))
+ .then(() => loadData("globalStatus"))
+ .then(() => loadData("badgedStatus"))
+ .then(() => loadData("hashStatus"))
+ .then(() => loadData("loggingStatus"))
+ .then(() => loadData("statisticsStatus"))
+ .then(() => loadData("getCurrentURL", "currentURL"))
+ .then(() => {
+ init();
+ $('#reset_counter_btn').on("click", resetGlobalCounter);
+ changeSwitchButton("globalStatus", "globalStatus");
+ changeSwitchButton("tabcounter", "badgedStatus");
+ changeSwitchButton("logging", "loggingStatus");
+ changeSwitchButton("statistics", "statisticsStatus");
+ $('#loggingPage').attr('href', browser.extension.getURL('./html/log.html'));
+ $('#settings').attr('href', browser.extension.getURL('./html/settings.html'));
+ $('#cleaning_tools').attr('href', browser.extension.getURL('./html/cleaningTool.html'));
+ setText();
+ });
});
/**
@@ -299,6 +247,25 @@ function injectText(id, attribute, tooltip = "")
}
}
+/**
+ * Loads data from storage and saves into local variable.
+ *
+ * @param name data name
+ * @param varName variable name
+ * @returns {Promise} requested data
+ */
+async function loadData(name, varName=name) {
+ return new Promise((resolve, reject) => {
+ browser.runtime.sendMessage({
+ function: "getData",
+ params: [name]
+ }).then(data => {
+ this[varName] = data.response;
+ resolve(data);
+ }, handleError);
+ });
+}
+
/**
* Translate a string with the i18n API.
*
diff --git a/core_js/settings.js b/core_js/settings.js
index 7699b44..22e7d2f 100644
--- a/core_js/settings.js
+++ b/core_js/settings.js
@@ -78,45 +78,23 @@ function reset()
*/
function save()
{
- browser.runtime.sendMessage({
- function: "setData",
- params: ["badged_color", $('input[name=badged_color]').val()]
- }).then(handleResponse, handleError);
-
- browser.runtime.sendMessage({
- function: "setBadgedStatus",
- params: []
- }).then(handleResponse, handleError);
-
- browser.runtime.sendMessage({
- function: "setData",
- params: ["ruleURL", $('input[name=rule_url]').val()]
- }).then(handleResponse, handleError);
-
- browser.runtime.sendMessage({
- function: "setData",
- params: ["hashURL", $('input[name=hash_url]').val()]
- }).then(handleResponse, handleError);
-
- browser.runtime.sendMessage({
- function: "setData",
- params: ["types", $('input[name=types]').val()]
- }).then(handleResponse, handleError);
-
- browser.runtime.sendMessage({
- function: "setData",
- params: ["logLimit", $('input[name=logLimit]').val()]
- }).then(handleResponse, handleError);
-
- browser.runtime.sendMessage({
- function: "saveOnExit",
- params: []
- }).then(handleResponse, handleError);
-
- browser.runtime.sendMessage({
- function: "reload",
- params: []
- }).then(handleResponse, handleError);
+ saveData("badged_color", $('input[name=badged_color]').val())
+ .then(() => saveData("ruleURL", $('input[name=ruleURL]').val()))
+ .then(() => saveData("hashURL", $('input[name=hashURL]').val()))
+ .then(() => saveData("types", $('input[name=types]').val()))
+ .then(() => saveData("logLimit", $('input[name=logLimit]').val()))
+ .then(() => browser.runtime.sendMessage({
+ function: "setBadgedStatus",
+ params: []
+ }), handleError)
+ .then(() => browser.runtime.sendMessage({
+ function: "saveOnExit",
+ params: []
+ }), handleError)
+ .then(() => browser.runtime.sendMessage({
+ function: "reload",
+ params: []
+ }), handleError);
}
/**
@@ -135,66 +113,69 @@ function translate(string, ...placeholders)
*/
function getData()
{
- browser.runtime.sendMessage({
- function: "getData",
- params: ["badged_color"]
- }).then((data) => handleResponseData(data, "badged_color", "badged_color"), handleError);
+ loadData("badged_color")
+ .then(() => loadData("ruleURL"))
+ .then(() => loadData("hashURL"))
+ .then(() => loadData("types"))
+ .then(() => loadData("logLimit"))
+ .then(logData => {
+ if(logData.response === undefined || logData.response === -1) {
+ $('#logLimit_label').text(translate('setting_log_limit_label', "∞"));
+ } else {
+ $('#logLimit_label').text(translate('setting_log_limit_label', logData.response));
+ }
+ });
- browser.runtime.sendMessage({
- function: "getData",
- params: ["ruleURL"]
- }).then((data) => handleResponseData(data, "rule_url", "rule_url"), handleError);
+ loadData("contextMenuEnabled")
+ .then(() => loadData("historyListenerEnabled"))
+ .then(() => loadData("localHostsSkipping"))
+ .then(() => loadData("referralMarketing"))
+ .then(() => loadData("domainBlocking"))
+ .then(() => {
+ changeSwitchButton("localHostsSkipping", "localHostsSkipping");
+ changeSwitchButton("historyListenerEnabled", "historyListenerEnabled");
+ changeSwitchButton("contextMenuEnabled", "contextMenuEnabled");
+ changeSwitchButton("referralMarketing", "referralMarketing");
+ changeSwitchButton("domainBlocking", "domainBlocking");
+ });
+}
- browser.runtime.sendMessage({
- function: "getData",
- params: ["hashURL"]
- }).then((data) => handleResponseData(data, "hash_url", "hash_url"), handleError);
-
- browser.runtime.sendMessage({
- function: "getData",
- params: ["types"]
- }).then((data) => handleResponseData(data, "types", "types"), handleError);
-
- browser.runtime.sendMessage({
- function: "getData",
- params: ["logLimit"]
- }).then((data) => {
- handleResponseData(data, "logLimit", "logLimit");
- if(data.response === undefined || data.response === -1) {
- $('#logLimit_label').text(translate('setting_log_limit_label', "∞"));
- } else {
- $('#logLimit_label').text(translate('setting_log_limit_label', data.response));
- }
- }, handleError);
-
- browser.runtime.sendMessage({
- function: "getData",
- params: ["contextMenuEnabled"]
- }).then((data) => {
- handleResponseData(data, "contextMenuEnabled", "contextMenuEnabled");
+/**
+ * Loads data from storage and saves into local variable.
+ *
+ * @param name data/variable name
+ * @returns {Promise} requested data
+ */
+async function loadData(name) {
+ return new Promise((resolve, reject) => {
browser.runtime.sendMessage({
function: "getData",
- params: ["historyListenerEnabled"]
- }).then((data) => {
- handleResponseData(data, "historyListenerEnabled", "historyListenerEnabled");
- browser.runtime.sendMessage({
- function: "getData",
- params: ["localHostsSkipping"]
- }).then((data) => {
- handleResponseData(data, "localHostsSkipping", "localHostsSkipping");
- browser.runtime.sendMessage({
- function: "getData",
- params: ["referralMarketing"]
- }).then((data) => {
- handleResponseData(data, "referralMarketing", "referralMarketing");
- changeSwitchButton("contextMenuEnabled", "contextMenuEnabled");
- changeSwitchButton("historyListenerEnabled", "historyListenerEnabled");
- changeSwitchButton("localHostsSkipping", "localHostsSkipping");
- changeSwitchButton("referralMarketing", "referralMarketing");
- }, handleError);
- }, handleError);
+ params: [name]
+ }).then(data => {
+ settings[name] = data.response;
+ $('input[name='+name+']').val(data.response);
+ resolve(data);
}, handleError);
- }, handleError);
+ });
+}
+
+/**
+ * Saves data to storage.
+ *
+ * @param key key of the data that should be saved
+ * @param data data that should be saved
+ * @returns {Promise
@@ -118,9 +117,9 @@ along with this program. If not, see
-
-
+
-
+
+
+
+