CanvasBlocker/options/sanitize.js

61 lines
2.2 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
(function(){
"use strict";
const extension = require("../lib/extension");
const settings = require("../lib/settings");
require("../lib/theme").init("sanitize");
const sanitationRules = require("./sanitationRules");
const title = document.createElement("h1");
title.className = "title";
title.textContent = extension.getTranslation("sanitation_title");
document.body.appendChild(title);
const description = document.createElement("div");
description.className = "description";
description.textContent = extension.getTranslation("sanitation_description");
document.body.appendChild(description);
settings.onloaded(function(){
const list = document.createElement("ul");
sanitationRules.ruleset.forEach(function(ruleset){
const rulesetContainer = document.createElement("li");
rulesetContainer.textContent = extension.getTranslation("sanitation_ruleset." + ruleset.name);
const rulesetErrors = document.createElement("ul");
let anyComplaint = false;
ruleset.check(function({message, severity, resolutions}){
anyComplaint = true;
const li = document.createElement("li");
li.className = "complaint " + severity;
li.textContent = message;
const buttons = document.createElement("span");
buttons.className = "resolutions";
resolutions.forEach(function(resolution){
const button = document.createElement("button");
button.textContent = resolution.label;
button.addEventListener("click", function(){
resolution.callback();
window.location.reload();
});
buttons.appendChild(button);
});
li.appendChild(buttons);
rulesetErrors.appendChild(li);
});
if (!anyComplaint){
const noComplaints = document.createElement("li");
noComplaints.className = "noComplaints";
noComplaints.textContent = extension.getTranslation("sanitation_nothingToComplain");
rulesetErrors.appendChild(noComplaints);
}
rulesetContainer.appendChild(rulesetErrors);
list.appendChild(rulesetContainer);
});
document.body.appendChild(list);
});
}());