Rev 68 | Blame | Compare with Previous | Last modification | View Log | RSS feed
var blockList = {"init" : true};function saveOptions() {if (!window.localStorage) {alert("Error local storage is unavailable.");}window.localStorage.enableDebug =document.getElementById("debug").checked ? true : false;window.localStorage.alertOnCopy =document.getElementById("aoc").checked ? true : false;window.localStorage.alertOnCopySize =document.getElementById("aocs").style.fontSize;window.localStorage.alertOnCopyDuration =document.getElementById("aocd").value;var els = document.getElementsByName("aocLocation");var i=0;for (i=0; i<els.length; i++) {if (els[i].checked) {window.localStorage.alertOnCopyLocation = els[i].value;}}window.localStorage.removeSelectionOnCopy =document.getElementById("rsoc").checked ? true : false;window.localStorage.enableForTextBoxes =document.getElementById("eitb").checked ? true : false;window.localStorage.enableForContentEditable =document.getElementById("eice").checked ? true : false;window.localStorage.pasteOnMiddleClick =document.getElementById("pomc").checked ? true : false;window.localStorage.copyAsPlainText =document.getElementById("capt").checked ? true : false;window.localStorage.ctrlToDisable =document.getElementById("dc").checked ? true : false;window.localStorage.ctrlToDisableKey =document.getElementById("dck").value;window.localStorage.ctrlState =document.getElementById("acs").value;window.localStorage.altToCopyAsLink =document.getElementById("acal").checked ? true : false;window.localStorage.altToCopyAsLinkModifier =document.getElementById("acalo").value;window.localStorage.copyAsLink =document.getElementById("cal").checked ? true : false;window.localStorage.includeUrl =document.getElementById("iurl").checked ? true : false;window.localStorage.includeUrlToggle =document.getElementById("iurlemod").checked ? true : false;window.localStorage.includeUrlToggleModifier =document.getElementById("iurlmod").value;window.localStorage.includeUrlToggleState =document.getElementById("iurlemodstate").value;window.localStorage.prependUrl =document.getElementById("iurlp").checked ? true : false;//---------------------------------------------------------------------// Setting a localStorage var to empty causes it to get set to// undefined so there is no way to tell if a user has set an empty// string. Therefore, a placeholder is needed, so a single space is// used.//---------------------------------------------------------------------var text = document.getElementById("iurltext").value;window.localStorage.includeUrlText =(text.length <= 0 || text === " ") ? " " : text;//---------------------------------------------------------------------window.localStorage.includeUrlCommentCountEnabled =document.getElementById("iurlewc").checked ? true : false;window.localStorage.copyDelay =document.getElementById("copyDelay").checked ? true : false;window.localStorage.copyDelayWait =document.getElementById("copyDelayWait").value;window.localStorage.clearClipboard =document.getElementById("clearClipboard").checked ? true : false;window.localStorage.clearClipboardWait =document.getElementById("clearClipboardWait").value;window.localStorage.trimWhitespace =document.getElementById("trimWhitespace").checked ? true : false;window.localStorage.nativeAlertOnCopy =document.getElementById("nativeAlertOnCopy").checked ? true : false;window.localStorage.nativeAlertOnCopySound =document.getElementById("nativeAlertOnCopySound").checked ? true : false;var count = parseInt(document.getElementById("iurlcount").value,10);if (count < 1 || count > 99 || isNaN(count)) {window.localStorage.includeUrlCommentCount = 5;} else {window.localStorage.includeUrlCommentCount = count;}disableModifier();}function restoreOptions() {opts = {'alertOnCopy' : true,'alertOnCopySize' : '14px','alertOnCopyDuration' : .75,'alertOnCopyLocation' : 'bottomRight','removeSelectionOnCopy' : false,'enableForTextBoxes' : true,'enableForContentEditable' : true,'pasteOnMiddleClick' : false,'ctrlToDisable' : false,'ctrlToDisableKey' : 'ctrl','ctrlState' : 'disable','altToCopyAsLink' : false,'altToCopyAsLinkModifier' : 'alt','copyAsLink' : false,'copyAsPlainText' : false,'includeUrl' : false,'includeUrlToggle' : false,'includeUrlToggleModifier' : 'ctrlshift','includeUrlToggleState' : 'disable','prependUrl' : false,'includeUrlText' : '$crlfCopied from: $title - <$url>','includeUrlCommentCountEnabled' : false,'includeUrlCommentCount' : 5,'blockList' : blockListToObject(),'enableDebug' : false,'copyDelay' : false,'copyDelayWait' : 5,'clearClipboard' : false,'clearClipboardWait' : 10,'trimWhitespace' : false,'nativeAlertOnCopy' : false,'nativeAlertOnCopySound' : false,};if (!window.localStorage) {alert("Error local storage is unavailable.");window.close();}//---------------------------------------------------------------------------// Load options. This will either populate defaults or pulled saved// settings from localStorage.//---------------------------------------------------------------------------if (window.localStorage != null) {for (key in opts) {if (window.localStorage.hasOwnProperty(key)) {if (key === 'blockList') {opts[key] = blockListToObject();} else if (key === 'alertOnCopySize' || key === 'alertOnCopyDuration' ||key === 'alertOnCopyLocation' ||key === 'copyDelayWait' ||key === 'clearClipboardWait') {opts[key] = window.localStorage[key];} else if (key === 'ctrlToDisableKey' || key === 'ctrlState' ||key === 'altToCopyAsLinkModifier' ||key === 'includeUrlToggleModifier' ||key === 'includeUrlToggleState') {opts[key] = window.localStorage[key];} else if (key === 'includeUrlCommentCount') {opts[key] = parseInt(window.localStorage[key], 10);} else if (key === 'includeUrlText') {opts[key] = window.localStorage[key];} else {opts[key] = window.localStorage[key] === "true" ? true : false;}}}}document.getElementById("debug").checked = opts.enableDebug;document.getElementById("aoc").checked = opts.alertOnCopy;document.getElementById("aocs").style.fontSize = opts.alertOnCopySize;document.getElementById("aocd").value = opts.alertOnCopyDuration;if (opts.alertOnCopyLocation === "topLeft") {document.getElementById("aocltl").checked = true;} else if (opts.alertOnCopyLocation === "topRight") {document.getElementById("aocltr").checked = true;} else if (opts.alertOnCopyLocation === "bottomLeft") {document.getElementById("aoclbl").checked = true;} else if (opts.alertOnCopyLocation === "bottomRight") {document.getElementById("aoclbr").checked = true;}document.getElementById("rsoc").checked = opts.removeSelectionOnCopy;document.getElementById("eitb").checked = opts.enableForTextBoxes;document.getElementById("eice").checked = opts.enableForContentEditable;document.getElementById("pomc").checked = opts.pasteOnMiddleClick;document.getElementById("capt").checked = opts.copyAsPlainText;document.getElementById("dc").checked = opts.ctrlToDisable;document.getElementById("dck").value = opts.ctrlToDisableKey;document.getElementById("acs").value = opts.ctrlState;document.getElementById("acal").checked = opts.altToCopyAsLink;document.getElementById("acalo").value = opts.altToCopyAsLinkModifier;document.getElementById("cal").checked = opts.copyAsLink;document.getElementById("iurl").checked = opts.includeUrl;document.getElementById("iurlemod").checked = opts.includeUrlToggle;document.getElementById("iurlmod").value = opts.includeUrlToggleModifier;document.getElementById("iurlemodstate").value = opts.includeUrlToggleState;document.getElementById("iurltext").value = opts.includeUrlText;document.getElementById("iurlewc").checked =opts.includeUrlCommentCountEnabled;document.getElementById("iurlcount").value = opts.includeUrlCommentCount;if (document.getElementById("iurlewc").checked) {document.getElementById("iurlcount").disabled = false;} else {document.getElementById("iurlcount").disabled = true;}document.getElementById("copyDelay").checked = opts.copyDelay;document.getElementById("copyDelayWait").value = opts.copyDelayWait;document.getElementById("clearClipboard").checked = opts.clearClipboard;document.getElementById("clearClipboardWait").value = opts.clearClipboardWait;document.getElementById("trimWhitespace").checked = opts.trimWhitespace;document.getElementById("nativeAlertOnCopy").checked = opts.nativeAlertOnCopy;document.getElementById("nativeAlertOnCopySound").checked =opts.nativeAlertOnCopySound;var v = opts.prependUrl;if (v === undefined || v === false) {document.getElementById("iurlp").checked = false;document.getElementById("iurla").checked = true;} else {document.getElementById("iurlp").checked = true;document.getElementById("iurla").checked = false;}if (opts.includeUrl) {toggleDiv("diviurlap");}if (opts.alertOnCopy) {toggleDiv("aocSettings");}if (opts.nativeAlertOnCopy) {toggleDiv("nativeAlertOnCopySettings");}if (opts.copyDelay) {toggleDiv("copyDelaySettings");}if (opts.clearClipboard) {toggleDiv("clearClipboardSettings");}disableModifier();blockListToObject();handleExclusivity();}function disableModifier() {let els = {};document.querySelectorAll('.modifierKey').forEach((item) => {els[item.options[item.selectedIndex].value] = item;[].forEach.call(item.options, (option) => {option.removeAttribute('disabled');});});for (let [k, v] of Object.entries(els)) {document.querySelectorAll('.modifierKey').forEach((item) => {if (v.id === item.id) {return;}let option = item.options.namedItem(k);if (option) {option.setAttribute('disabled', '');}});}}function initBlockListDiv(obl) {for (var n in obl) {if (obl[n]) {addBlockListRow(decodeURIComponent(n));}}}function addBlockListRow(text) {var blEl = document.getElementById("blocklist");var frag = document.createDocumentFragment();var divEl = document.createElement("div");frag.appendChild(divEl);divEl.className = "row";divEl.innerText = text;divEl.title = text;divEl.addEventListener('click', function() {if (this.className.match(/selected/)) {this.className = this.className.replace(/\s?selected/, "");} else {this.className += " selected";}});blEl.appendChild(frag);stripeList("div.row");}function stripeList(id) {els = document.querySelectorAll(id);len = els.length;for (var i=0; i<len; i++) {if (i % 2 === 0) {if (!els[i].className.match(/stripe/)) {els[i].className += " stripe";}} else {els[i].className = els[i].className.replace(/ stripe/, "");}}}function addToBlockList() {var overlay = document.getElementById("overlay");var addErrorEl = document.getElementById("addError")var domain = document.getElementById("domaintext").value;var selectionD = document.getElementById("blocklistDomain").checked;var encodedDomain, parsedDomain;addErrorEl.style.display = "none";if (selectionD) {if (domain.match(/^file:/)) {domain = domain.match(/^file:\/\/\/([^\/]+)/)[1];encodedDomain = encodeURIComponent(domain);if (!domain) {addErrorEl.innerText = "Error: domain is invalid";addErrorEl.style.display = "block";return;}} else {if (!domain.match(/\./)) {addErrorEl.innerText = "Error: domain is invalid";addErrorEl.style.display = "block";return;}domain = domain.replace(/.*:\/\//,"").replace(/\/.*/,"");encodedDomain = encodeURIComponent(domain);if (blockList[encodedDomain]) {addErrorEl.innerText ="Error: domain is already in the list";addErrorEl.style.display = "block";return;}}} else {if (domain.match(/^file:/)) {encodedDomain = encodeURIComponent(domain);if (blockList[encodedDomain]) {addErrorEl.innerText = "Error: page is already in the list";addErrorEl.style.display = "block";return;}} else {if (!domain.match(/\./) && !domain.match(/\//)) {addErrorEl.innerText = "Error: page is invalid";addErrorEl.style.display = "block";return;}parsedDomain = domain.replace(/.*:\/\//,"").replace(/\/.*/,"");encodedDomain = encodeURIComponent(domain);if (blockList[parsedDomain]) {addErrorEl.innerText ="Error: page's domain is already in the list";addErrorEl.style.display = "block";return;} else if (blockList[encodedDomain]) {addErrorEl.innerText = "Error: page is already in the list";addErrorEl.style.display = "block";return;}}}document.getElementById("domaintext").value = '';addErrorEl.style.display = "none";blockList[encodedDomain] = 1;blockListToString(blockList);addBlockListRow(domain);}function removeSelectedFromBlockList() {var els = document.querySelectorAll('div.selected');var len = els.length;var domain = "";var encodedDomain = "";for (var i=0; i<len; i++) {domain = els[i].innerText;encodedDomain = encodeURIComponent(domain);if (blockList[encodedDomain] && domain === "docs.google.com") {blockList[encodedDomain] = 0;} else if (blockList[encodedDomain]) {delete blockList[encodedDomain];}els[i].parentNode.removeChild(els[i]);}blockListToString(blockList);stripeList("div.row");}function blockListToObject() {chrome.extension.sendMessage({"type" : "getBlockList"}, function (resp) {var flag = (blockList.init) ? 1 : 0;blockList = resp;if (flag) {initBlockListDiv(blockList);}});return(blockList);}function blockListToString(oBlockList) {var blockList = {};chrome.extension.sendMessage({"type" : "writeBlockList", "blockList" : oBlockList});}function validateCountValue() {var enabled = document.getElementById('iurlewc');var el = document.getElementById('iurlcount');el.disabled = (enabled.checked) ? false : true;}function toggleDiv(id) {var el = document.getElementById(id);if (!el) {return}el.style.display = (el.style.display === "block") ? "none" : "block";}function handleExclusivity() {var cal = document.getElementById('cal');var capt = document.getElementById('capt');var iurl = document.getElementById('iurl');if (cal.checked) {capt.disabled = true;capt.checked = false;iurl.disabled = true;iurl.checked = false;} else {capt.disabled = false;iurl.disabled = false;}if (capt.checked || iurl.checked) {cal.disabled = true;cal.checked = false;} else {cal.disabled = false;}}document.addEventListener('DOMContentLoaded', function () {document.getElementById('smaller').addEventListener('click', function() {var el = document.getElementById('aocs');var fs = el.style.fontSize;//window.getComputedStyle(el, null).getPropertyValue('font-size');fs = parseFloat(fs);fs = fs - 1;el.style.fontSize = fs + 'px';window.localStorage.alertOnCopySize = fs + 'px';});document.getElementById('bigger').addEventListener('click', function() {var el = document.getElementById('aocs');var fs = el.style.fontSizefs = parseFloat(fs);fs = fs + 1;el.style.fontSize = fs + 'px';window.localStorage.alertOnCopySize = fs + 'px';});document.getElementById('aocd').addEventListener('blur', function () {if (isNaN(document.getElementById("aocd").value)) {document.getElementById("aocd").value = .75;window.localStorage.alertOnCopyDuration = .75;}});document.getElementById('aoc').addEventListener('click', function() {toggleDiv('aocSettings');});document.getElementById('nativeAlertOnCopy').addEventListener('click', function() {toggleDiv('nativeAlertOnCopySettings');});document.getElementById('copyDelay').addEventListener('click', function() {toggleDiv('copyDelaySettings');});document.getElementById('clearClipboard').addEventListener('click', function() {toggleDiv('clearClipboardSettings');});document.getElementById('iurl').addEventListener('click', function() {toggleDiv('diviurlap');});document.getElementById('iurlewc').addEventListener('click', validateCountValue);document.getElementById('cal').addEventListener('click', handleExclusivity);document.getElementById('capt').addEventListener('click', handleExclusivity);document.getElementById('iurl').addEventListener('click', handleExclusivity);document.getElementById('iurlcount').addEventListener('click', document.getElementById('iurlcount').select);document.getElementById('iurlcount').addEventListener('blur', validateCountValue);document.getElementById('iurlcount').addEventListener('keyup', validateCountValue);document.getElementById('iurltext').addEventListener('click', document.getElementById('iurltext').select);document.getElementById('removeBtn').addEventListener('click', removeSelectedFromBlockList);document.getElementById('addBtn').addEventListener('click', function() {var overlay = document.getElementById("overlay");overlay.style.visibility = "visible";document.getElementById("domaintext").select();});document.getElementById('addOverlayBtn').addEventListener('click', addToBlockList);document.getElementById("domaintext").addEventListener('keyup', function(e) {if (e.keyCode == 13) {addToBlockList();}});document.getElementById('cancelOverlayBtn').addEventListener('click', function() {document.getElementById("overlay").style.visibility = "hidden";document.getElementById("addError").style.display = "none";});var els = document.querySelectorAll(".autosave");var len = els.length;for (var i=0; i<len; i++) {if (els[i].nodeName === "SELECT") {els[i].addEventListener('change', saveOptions);} else {if (els[i].type === "text" || els[i].type === "tel") {els[i].addEventListener('keyup', saveOptions);} else {els[i].addEventListener('click', saveOptions);}}}restoreOptions();});