| Index: options.js |
| =================================================================== |
| --- a/options.js |
| +++ b/options.js |
| @@ -30,6 +30,20 @@ |
| this.items = []; |
| } |
| + Collection.prototype._setEmpty = function(table, text) |
| + { |
| + var placeholder = table.querySelector(".empty-placeholder"); |
| + if (text && !placeholder) |
| + { |
| + placeholder = document.createElement("li"); |
| + placeholder.className = "empty-placeholder"; |
| + placeholder.textContent = ext.i18n.getMessage(text); |
| + table.appendChild(placeholder); |
| + } |
| + else if (placeholder) |
| + table.removeChild(placeholder); |
| + } |
| + |
| Collection.prototype.addItems = function() |
| { |
| var length = Array.prototype.push.apply(this.items, arguments); |
| @@ -65,6 +79,7 @@ |
| control.checked = item.disabled == false; |
| } |
| + this._setEmpty(table, null); |
| if (table.hasChildNodes()) |
| table.insertBefore(listItem, table.childNodes[this.items.indexOf(item)]); |
| else |
| @@ -81,25 +96,27 @@ |
| return; |
| this.items.splice(index, 1); |
| - var access = (item.url || item.text).replace(/'/g, "\\'"); |
| for (var i = 0; i < this.details.length; i++) |
| { |
| var table = E(this.details[i].id); |
| - var element = table.querySelector("[data-access='" + access + "']"); |
| + var element = table.childNodes[index]; |
| element.parentElement.removeChild(element); |
| + if (this.items.length == 0) |
| + this._setEmpty(table, this.details[i].emptyText); |
| } |
| }; |
| Collection.prototype.clearAll = function() |
| { |
| + this.items = []; |
| for (var i = 0; i < this.details.length; i++) |
| { |
| var table = E(this.details[i].id); |
| var template = table.querySelector("template"); |
| table.innerHTML = ""; |
| table.appendChild(template); |
| + this._setEmpty(table, this.details[i].emptyText); |
| } |
| - this.items.length = 0; |
| }; |
| function onToggleSubscriptionClick(e) |
| @@ -108,11 +125,10 @@ |
| var subscriptionUrl = e.target.parentNode.getAttribute("data-access"); |
| if (!e.target.checked) |
| { |
| - ext.backgroundPage.sendMessage( |
| - { |
| - type: "subscriptions.remove", |
| - url: subscriptionUrl |
| - }); |
| + ext.backgroundPage.sendMessage({ |
| + type: "subscriptions.remove", |
| + url: subscriptionUrl |
| + }); |
| } |
| else |
| addEnableSubscription(subscriptionUrl); |
| @@ -146,44 +162,49 @@ |
| [ |
| { |
| id: "blocking-languages-table", |
| + emptyText: "options_dialog_language_added_empty", |
| onClick: onToggleSubscriptionClick |
| }, |
| { |
| - id: "blocking-languages-dialog-table" |
| + id: "blocking-languages-dialog-table", |
| + emptyText: "options_dialog_language_added_empty" |
| } |
| ]); |
| collections.allLangs = new Collection( |
| [ |
| { |
| - id: "all-lang-table", |
| + id: "all-lang-table", |
| + emptyText: "options_dialog_language_other_empty", |
| onClick: onAddLanguageSubscriptionClick |
| } |
| ]); |
| collections.acceptableAds = new Collection( |
| [ |
| { |
| - id: "acceptableads-table", |
| + id: "acceptableads-table", |
| onClick: onToggleSubscriptionClick |
| } |
| ]); |
| collections.custom = new Collection( |
| [ |
| { |
| - id: "custom-list-table", |
| + id: "custom-list-table", |
| onClick: onToggleSubscriptionClick |
| } |
| ]); |
| collections.whitelist = new Collection( |
| [ |
| { |
| - id: "whitelisting-table", |
| + id: "whitelisting-table", |
| + emptyText: "options_whitelisted_empty", |
| onClick: onRemoveFilterClick |
| } |
| ]); |
| collections.customFilters = new Collection( |
| [ |
| { |
| - id: "custom-filters-table" |
| + id: "custom-filters-table", |
| + emptyText: "options_customFilters_empty" |
| } |
| ]); |
| @@ -363,6 +384,7 @@ |
| break; |
| case "cancel-domain-exception": |
| E("whitelisting-textbox").value = ""; |
| + document.querySelector("#whitelisting .controls").classList.remove("mode-edit"); |
| break; |
| case "close-dialog": |
| closeDialog(); |
| @@ -371,6 +393,10 @@ |
| E("custom-filters").classList.add("mode-edit"); |
| editCustomFilters(); |
| break; |
| + case "edit-domain-exception": |
| + document.querySelector("#whitelisting .controls").classList.add("mode-edit"); |
| + E("whitelisting-textbox").focus(); |
| + break; |
| case "import-subscription": |
| var url = E("blockingList-textbox").value; |
| addEnableSubscription(url); |
| @@ -601,6 +627,7 @@ |
| } |
| domain.value = ""; |
| + document.querySelector("#whitelisting .controls").classList.remove("mode-edit"); |
| } |
| function editCustomFilters() |