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() |