Version 1.9.4

This commit is contained in:
Kevin Röbert 2019-11-24 18:05:42 +01:00
parent deb7648d61
commit 84c069331f
9 changed files with 168 additions and 189 deletions

View File

@ -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

View File

@ -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 <b>ClearURLs</b> 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 <b>ClearURLs</b> 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."
}
}

View File

@ -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 <b>ClearURLs</b> 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 <b>ClearURLs</b> 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"
}
}

View File

@ -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;

View File

@ -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<data>} 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.
*

View File

@ -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<data>} 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<message>} message from background script
*/
async function saveData(key, data) {
return new Promise((resolve, reject) => {
browser.runtime.sendMessage({
function: "setData",
params: [key, data]
}).then(message => {
handleResponse(message);
resolve(message);
}, handleError);
});
}
/**
@ -220,6 +201,7 @@ function setText()
$('#import_settings_btn_text').text(translate('setting_html_import_button'));
$('#import_settings_btn').prop('title', translate('setting_html_import_button_title'));
injectText("referral_marketing_enabled", "referral_marketing_enabled");
injectText("domain_blocking_enabled", "domain_blocking_enabled");
}
/**
@ -267,18 +249,6 @@ function importSettings(evt) {
fileReader.readAsText(file);
}
/**
* Handle the response from the storage and saves the data.
* @param {JSON-Object} data Data JSON-Object
* @param varName
* @param inputID
*/
function handleResponseData(data, varName, inputID)
{
settings[varName] = data.response;
$('input[name='+inputID+']').val(data.response);
}
function handleResponse(message) {
console.log(`Message from the background script: ${message.response}`);
}

View File

@ -106,6 +106,9 @@ function genesis() {
// Start the clearurls.js
start();
//Set correct icon on startup
changeIcon();
// Start the context_menu
contextMenuStart();
@ -205,6 +208,7 @@ function initSettings() {
storage.localHostsSkipping = true;
storage.referralMarketing = false;
storage.logLimit = -1;
storage.domainBlocking = true;
if (getBrowser() === "Firefox") {
storage.types = ["font", "image", "imageset", "main_frame", "media", "object", "object_subrequest", "other", "script", "stylesheet", "sub_frame", "websocket", "xbl", "xml_dtd", "xmlhttprequest", "xslt"];

View File

@ -99,12 +99,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<br />
<p>
<label id="rule_url_label"></label><br />
<input type="url" id="rule_url" value="" name="rule_url" class="form-control" />
<input type="url" id="ruleURL" value="" name="ruleURL" class="form-control" />
</p>
<br />
<p>
<label id="hash_url_label"></label><br />
<input type="url" id="hash_url" value="" name="hash_url" class="form-control" />
</p>
<br />
<p>
@ -118,9 +117,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
</p>
<br />
<p>
<label id="context_menu_enabled" style="font-weight: bold;"></label><br />
<label id="domain_blocking_enabled" style="font-weight: bold;"></label><br />
<label class="switch">
<input type="checkbox" id="contextMenuEnabled">
<input type="checkbox" id="domainBlocking">
<span class="slider round"></span>
</label>
</p>
@ -141,6 +140,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
</label>
</p>
<br />
<p>
<label id="context_menu_enabled" style="font-weight: bold;"></label><br />
<label class="switch">
<input type="checkbox" id="contextMenuEnabled">
<span class="slider round"></span>
</label>
</p>
<br />
<p>
<label id="referral_marketing_enabled" style="font-weight: bold;"></label><br />
<label class="switch">

View File

@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "ClearURLs",
"version": "1.9.3.1",
"version": "1.9.4",
"author": "Kevin Röbert",
"description": "Remove tracking elements from URLs.",
"homepage_url": "https://gitlab.com/KevinRoebert/ClearUrls",