| Index: options.js |
| =================================================================== |
| --- a/options.js |
| +++ b/options.js |
| @@ -29,6 +29,11 @@ |
| this.SpecialSubscription = SpecialSubscription; |
| this.DownloadableSubscription = DownloadableSubscription; |
| } |
| +with(require("filterValidation")) |
| +{ |
| + this.parseFilter = parseFilter; |
| + this.parseFilters = parseFilters; |
| +} |
| var FilterStorage = require("filterStorage").FilterStorage; |
| var FilterNotifier = require("filterNotifier").FilterNotifier; |
| var Prefs = require("prefs").Prefs; |
| @@ -472,12 +477,23 @@ |
| { |
| event.preventDefault(); |
| - var filterText = Filter.normalize(document.getElementById("newFilter").value); |
| - document.getElementById("newFilter").value = ""; |
| - if (!filterText) |
| + var element = document.getElementById("newFilter"); |
| + var filter; |
| + |
| + try |
| + { |
| + filter = parseFilter(element.value); |
| + } |
| + catch (error) |
| + { |
| + alert(error); |
| return; |
| + } |
| - FilterStorage.addFilter(Filter.fromText(filterText)); |
| + if (filter) |
| + FilterStorage.addFilter(filter); |
| + |
| + element.value = ""; |
| } |
| // Removes currently selected whitelisted domains |
| @@ -529,21 +545,25 @@ |
| // Imports filters in the raw text box |
| function importRawFiltersText() |
| { |
| - $("#rawFilters").hide(); |
| - var filters = document.getElementById("rawFiltersText").value.split("\n"); |
| + var text = document.getElementById("rawFiltersText").value; |
| + |
| + var add; |
| + try |
| + { |
| + add = parseFilters(text, true); |
| + } |
| + catch (error) |
| + { |
| + alert(error); |
| + return; |
| + } |
| + |
| var seenFilter = {__proto__: null}; |
| - for (var i = 0; i < filters.length; i++) |
| + for (var i = 0; i < add.length; i++) |
| { |
| - var text = Filter.normalize(filters[i]); |
| - if (!text) |
| - continue; |
| - |
| - // Don't import filter list header |
| - if (/^\[/.test(text)) |
| - continue; |
| - |
| - FilterStorage.addFilter(Filter.fromText(text)); |
| - seenFilter[text] = true; |
| + var filter = add[i]; |
| + FilterStorage.addFilter(filter); |
| + seenFilter[filter.text] = null; |
| } |
| var remove = []; |
| @@ -563,8 +583,11 @@ |
| remove.push(filter); |
| } |
| } |
| + |
| for (var i = 0; i < remove.length; i++) |
| FilterStorage.removeFilter(remove[i]); |
| + |
| + $("#rawFilters").hide(); |
| } |
| // Called when user explicitly requests filter list updates |