You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bypass-paywalls-firefox-clean/options_custom.js

114 lines
3.9 KiB
JavaScript

// Saves options to browser.storage
function save_options() {
var gh_url = document.getElementById('bypass_sites').value;
var textareaEl = document.querySelector('#bypass_sites textarea');
var sites_custom = {};
if (textareaEl.value !== '')
var sites_custom = JSON.parse(textareaEl.value);
browser.storage.sync.set({
sites_custom: sites_custom
}, function () {
// Update status to let user know options were saved.
var status = document.getElementById('status');
status.textContent = 'Options saved.';
setTimeout(function () {
status.textContent = '';
location.href = 'options.html';
//window.close();
}, 800);
});
}
// Add custom site to browser.storage
function add_options() {
var gh_url = document.getElementById('add_site').value;
var inputEls = document.querySelectorAll('#add_site input');
var sites_custom = {};
for (let i = 0; i < inputEls.length; i++) {
if (inputEls[i].dataset.key === 'title') {
var title = inputEls[i].value;
if (title === '')
break;
sites_custom[title] = {};
} else {
if (inputEls[i].dataset.value) {
if (inputEls[i].checked)
sites_custom[title][inputEls[i].dataset.key] = inputEls[i].dataset.value;
} else
sites_custom[title][inputEls[i].dataset.key] = inputEls[i].value;
}
}
if (sites_custom[title]['domain'] === '')
sites_custom = {};
else
sites_custom[title]['domain'] = sites_custom[title]['domain'].replace('www.', '');
// add new site to local storage
browser.storage.sync.get({
sites_custom: {}
}, function (items) {
var sites_custom_old = items.sites_custom;
for (var key in sites_custom) {
sites_custom_old[key] = sites_custom[key];
}
browser.storage.sync.set({
sites_custom: sites_custom_old
}, function () {
// Update status to let user know options were saved.
var status = document.getElementById('status');
status.textContent = 'Site added.';
setTimeout(function () {
status.textContent = '';
location.href = 'options.html';
//window.close();
}, 800);
});
});
}
// Restores checkbox input states using the preferences stored in browser.storage.
function renderOptions() {
browser.storage.sync.get({
sites_custom: {}
}, function (items) {
var sites_custom = items.sites_custom;
var sitesEl = document.getElementById('bypass_sites');
var labelEl = document.createElement('label');
var textareaEl = document.createElement('textarea');
textareaEl.value = JSON.stringify(sites_custom);
textareaEl.rows = 12;
textareaEl.cols = 45;
labelEl.appendChild(textareaEl);
sitesEl.appendChild(labelEl);
// add site
var add_sitesEl = document.getElementById('add_site');
var inputEl;
var add_checkboxes = {
'title': 0,
'domain': 0,
'googlebot': 1,
'block_javascript': 1
};
for (var key in add_checkboxes) {
labelEl = document.createElement('label');
inputEl = document.createElement('input');
inputEl.dataset.key = key;
labelEl.appendChild(inputEl);
if (add_checkboxes[key]) {
inputEl.type = 'checkbox';
inputEl.dataset.value = 1;
}
labelEl.appendChild(document.createTextNode(' ' + key));
add_sitesEl.appendChild(labelEl);
}
});
}
document.addEventListener('DOMContentLoaded', renderOptions);
document.getElementById('save').addEventListener('click', save_options);
document.getElementById('add').addEventListener('click', add_options);