summaryrefslogtreecommitdiff
path: root/data/extensions/https-everywhere@eff.org/pages/options/ux.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/pages/options/ux.js')
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/options/ux.js258
1 files changed, 258 insertions, 0 deletions
diff --git a/data/extensions/https-everywhere@eff.org/pages/options/ux.js b/data/extensions/https-everywhere@eff.org/pages/options/ux.js
new file mode 100644
index 0000000..7a4306c
--- /dev/null
+++ b/data/extensions/https-everywhere@eff.org/pages/options/ux.js
@@ -0,0 +1,258 @@
+/* global sendMessage */
+
+"use strict";
+
+document.addEventListener("DOMContentLoaded", () => {
+
+ const showCounter = document.getElementById("showCounter");
+ const autoUpdateRulesets = document.getElementById("autoUpdateRulesets");
+ const enableMixedRulesets = document.getElementById("enableMixedRulesets");
+ const showDevtoolsTab = document.getElementById("showDevtoolsTab");
+
+ const defaultOptions = {
+ showCounter: true,
+ autoUpdateRulesets: false,
+ enableMixedRulesets: false,
+ showDevtoolsTab: true
+ };
+
+ sendMessage("get_option", defaultOptions, item => {
+ showCounter.checked = item.showCounter;
+ autoUpdateRulesets.checked = item.autoUpdateRulesets;
+ enableMixedRulesets.checked = item.enableMixedRulesets;
+ showDevtoolsTab.checked = item.showDevtoolsTab;
+
+ showCounter.addEventListener("change", () => {
+ sendMessage("set_option", { showCounter: showCounter.checked });
+ });
+
+ autoUpdateRulesets.addEventListener("change", () => {
+ sendMessage("set_option", { autoUpdateRulesets: autoUpdateRulesets.checked });
+ });
+
+ enableMixedRulesets.addEventListener("change", () => {
+ sendMessage("set_option", { enableMixedRulesets: enableMixedRulesets.checked });
+ });
+
+ showDevtoolsTab.addEventListener("change", () => {
+ sendMessage("set_option", { showDevtoolsTab: showDevtoolsTab.checked });
+ });
+ });
+
+ function onlyShowSection(sectionId){
+ document.querySelectorAll('.section-wrapper').forEach(sw => {
+ sw.style.display = "none";
+ });
+ document.getElementById(sectionId).style.display = "block";
+ }
+ onlyShowSection('general-settings-wrapper');
+
+ document.querySelectorAll('.section-header-span').forEach(shs => {
+ shs.addEventListener("click", () => {
+ document.querySelectorAll('.section-header-span').forEach(shs => {
+ shs.classList.remove("active");
+ shs.classList.add("inactive");
+ });
+ shs.classList.remove("inactive");
+ shs.classList.add("active");
+ onlyShowSection(shs.dataset.show);
+ });
+ });
+
+ function create_update_channel_element(update_channel, last_updated, pinned){
+ let ruleset_version_string;
+
+ if(last_updated){
+ const ruleset_date = new Date(last_updated * 1000);
+ ruleset_version_string = ruleset_date.getUTCFullYear() + "." + (ruleset_date.getUTCMonth() + 1) + "." + ruleset_date.getUTCDate();
+ } else {
+ ruleset_version_string = "n/a";
+ }
+
+ const update_channel_div = document.createElement('div');
+ update_channel_div.className = "update-channel";
+
+ const update_channel_name = document.createElement('div');
+ update_channel_name.className = "update-channel-name";
+ update_channel_name.innerText = update_channel.name;
+ update_channel_div.appendChild(update_channel_name);
+ const update_channel_last_updated = document.createElement('div');
+ update_channel_last_updated.className = "update-channel-last-updated";
+ update_channel_last_updated.innerText = chrome.i18n.getMessage("options_storedRulesetsVersion") + ruleset_version_string;
+ update_channel_name.appendChild(update_channel_last_updated);
+
+ const update_channel_row_jwk = document.createElement('div');
+ update_channel_row_jwk.className = "update-channel-row-jwk";
+ update_channel_div.appendChild(update_channel_row_jwk);
+ const update_channel_jwk_column_left = document.createElement('div');
+ update_channel_jwk_column_left.className = "update-channel-column-left";
+ update_channel_jwk_column_left.innerText = "JWK:";
+ update_channel_row_jwk.appendChild(update_channel_jwk_column_left);
+ const update_channel_jwk_column_right = document.createElement('div');
+ update_channel_jwk_column_right.className = "update-channel-column-right";
+ update_channel_row_jwk.appendChild(update_channel_jwk_column_right);
+ const update_channel_jwk = document.createElement('textarea');
+ update_channel_jwk.className = "update-channel-jwk";
+ update_channel_jwk.setAttribute("data-name", update_channel.name);
+ update_channel_jwk.disabled = pinned;
+ update_channel_jwk.innerText = JSON.stringify(update_channel.jwk);
+ update_channel_jwk_column_right.appendChild(update_channel_jwk);
+
+ const update_channel_row_path_prefix = document.createElement('div');
+ update_channel_row_path_prefix.className = "update-channel-row-path-prefix";
+ update_channel_div.appendChild(update_channel_row_path_prefix);
+ const update_channel_path_prefix_column_left = document.createElement('div');
+ update_channel_path_prefix_column_left.className = "update-channel-column-left";
+ update_channel_path_prefix_column_left.innerText = "Path Prefix:";
+ update_channel_row_path_prefix.appendChild(update_channel_path_prefix_column_left);
+ const update_channel_path_prefix_column_right = document.createElement('div');
+ update_channel_path_prefix_column_right.className = "update-channel-column-right";
+ update_channel_row_path_prefix.appendChild(update_channel_path_prefix_column_right);
+ const update_channel_path_prefix = document.createElement('input');
+ update_channel_path_prefix.setAttribute("type", "text");
+ update_channel_path_prefix.className = "update-channel-path-prefix";
+ update_channel_path_prefix.setAttribute("data-name", update_channel.name);
+ update_channel_path_prefix.disabled = pinned;
+ update_channel_path_prefix.value = update_channel.update_path_prefix;
+ update_channel_path_prefix_column_right.appendChild(update_channel_path_prefix);
+
+ const update_channel_row_controls = document.createElement('div');
+ update_channel_row_controls.className = "update-channel-row-controls";
+ update_channel_div.appendChild(update_channel_row_controls);
+ const update_channel_controls_column_left = document.createElement('div');
+ update_channel_controls_column_left.className = "update-channel-column-left";
+ update_channel_controls_column_left.innerText = " ";
+ update_channel_row_controls.appendChild(update_channel_controls_column_left);
+ const update_channel_controls_column_right = document.createElement('div');
+ update_channel_controls_column_right.className = "update-channel-column-right";
+ update_channel_row_controls.appendChild(update_channel_controls_column_right);
+ const update_channel_update = document.createElement('button');
+ update_channel_update.className = "update-channel-update";
+ update_channel_update.setAttribute("data-name", update_channel.name);
+ update_channel_update.disabled = pinned;
+ update_channel_update.innerText = chrome.i18n.getMessage("options_update");
+ update_channel_controls_column_right.appendChild(update_channel_update);
+ const update_channel_delete = document.createElement('button');
+ update_channel_delete.className = "update-channel-update";
+ update_channel_delete.setAttribute("data-name", update_channel.name);
+ update_channel_delete.disabled = pinned;
+ update_channel_delete.innerText = chrome.i18n.getMessage("options_delete");
+ update_channel_controls_column_right.appendChild(update_channel_delete);
+
+ const clearer = document.createElement('div');
+ clearer.className = "clearer";
+ update_channel_div.appendChild(clearer);
+
+ update_channel_delete.addEventListener("click", () => {
+ sendMessage("delete_update_channel", update_channel.name, () => {
+ render_update_channels();
+ });
+ });
+
+ update_channel_update.addEventListener("click", () => {
+ sendMessage("update_update_channel", {
+ name: update_channel.name,
+ jwk: JSON.parse(update_channel_jwk.value),
+ update_path_prefix: update_channel_path_prefix.value
+ }, () => {
+ render_update_channels();
+ });
+ });
+
+ return update_channel_div;
+ }
+
+ function render_update_channels(){
+ const update_channels_list = document.getElementById("update-channels-list");
+ while(update_channels_list.firstChild){
+ update_channels_list.removeChild(update_channels_list.firstChild);
+ }
+
+ sendMessage("get_pinned_update_channels", null, item => {
+ for(const update_channel of item.update_channels){
+ update_channels_list.appendChild(
+ create_update_channel_element(
+ update_channel,
+ item.last_updated[update_channel.name],
+ true
+ )
+ );
+
+ }
+ });
+
+ sendMessage("get_stored_update_channels", null, item => {
+ for(const update_channel of item.update_channels){
+ update_channels_list.appendChild(
+ create_update_channel_element(
+ update_channel,
+ item.last_updated[update_channel.name],
+ false
+ )
+ );
+ }
+ });
+ }
+ render_update_channels();
+
+ const add_update_channel = document.getElementById("add-update-channel");
+ const update_channel_name_div = document.getElementById("update-channel-name");
+ const update_channels_error_text = document.getElementById("update-channels-error-text");
+ const update_channels_error = document.getElementById("update-channels-error");
+ update_channel_name_div.setAttribute("placeholder", chrome.i18n.getMessage("options_enterUpdateChannelName"));
+
+ function displayError(text){
+ update_channels_error_text.innerText = text;
+ update_channels_error.style.display = "block";
+ window.scrollTo(0,0);
+ }
+
+ add_update_channel.addEventListener("click", () => {
+ const update_channel_name = update_channel_name_div.value;
+ if(update_channel_name.trim() == ""){
+ displayError("Error: The update channel name is blank. Please enter another name.");
+ } else {
+ update_channel_name_div.value = "";
+ sendMessage("create_update_channel", update_channel_name, result => {
+ if(result == true){
+ render_update_channels();
+ } else {
+ displayError("Error: There already exists an update channel with this name.");
+ }
+ });
+ }
+ });
+
+ const update_channels_error_hide = document.getElementById("update-channels-error-hide");
+ update_channels_error_hide.addEventListener("click", () => {
+ update_channels_error.style.display = "none";
+ });
+
+ const update_channels_last_checked = document.getElementById("update-channels-last-checked");
+ sendMessage("get_last_checked", null, last_checked => {
+ let last_checked_string;
+ if(last_checked){
+ const last_checked_date = new Date(last_checked * 1000);
+ const options = {
+ year: '2-digit',
+ month: '2-digit',
+ day: '2-digit',
+ hour: '2-digit',
+ minute: '2-digit',
+ timeZoneName: 'short'
+ };
+ const customDateTime = new Intl.DateTimeFormat('default', options).format;
+ last_checked_string = customDateTime(last_checked_date);
+ } else {
+ last_checked_string = chrome.i18n.getMessage("options_updatesLastCheckedNever");
+ }
+ update_channels_last_checked.innerText = chrome.i18n.getMessage("options_updatesLastChecked") + last_checked_string;
+ });
+
+ document.onkeydown = function(evt) {
+ evt = evt || window.event;
+ if (evt.ctrlKey && evt.keyCode == 90) {
+ window.open("/pages/debugging-rulesets/index.html");
+ }
+ };
+});