Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: options.js

Issue 6088024630755328: issue 1526 - Implement new options page design for Chrome/Opera/Safari (Closed)
Left Patch Set: Created Feb. 13, 2015, 10:52 a.m.
Right Patch Set: Created Feb. 19, 2015, 4:52 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « options.html ('k') | skin/options.css » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2015 Eyeo GmbH 3 * Copyright (C) 2006-2015 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 20 matching lines...) Expand all
31 this.sort(function(a, b) 31 this.sort(function(a, b)
32 { 32 {
33 var aValue = (a.title || a.url || a.text).toLowerCase(); 33 var aValue = (a.title || a.url || a.text).toLowerCase();
34 var bValue = (b.title || b.url || a.text).toLowerCase(); 34 var bValue = (b.title || b.url || a.text).toLowerCase();
35 if (aValue < bValue) 35 if (aValue < bValue)
36 return -1; 36 return -1;
37 if (aValue > bValue) 37 if (aValue > bValue)
38 return 1; 38 return 1;
39 return 0; 39 return 0;
40 }); 40 });
41 for (var i=0; i < arguments.length; i++) 41 for (var i = 0; i < arguments.length; i++)
42 { 42 {
43 for (var j=0; j < this.table.length; j++) 43 for (var j = 0; j < this.table.length; j++)
44 { 44 {
45 var object = arguments[i]; 45 var object = arguments[i];
46 var text = object.title || object.text; 46 var text = object.title || object.text;
47 var access = object.url || object.text; 47 var access = object.url || object.text;
48 var index = this.indexOf(object); 48 var index = this.indexOf(object);
49 var table = E(this.table[j].id); 49 var table = E(this.table[j].id);
50 var template = this.table[j].template; 50 var template = this.table[j].template;
51 var listener = this.table[j].listener; 51 var listener = this.table[j].listener;
52 52
53 var list = document.createElement("li"); 53 var listItem = document.createElement("li");
54 list.innerHTML = template; 54 listItem.innerHTML = template;
55 list.dataset.access = access; 55 listItem.dataset.access = access;
56 list.getElementsByClassName("display")[0].textContent = text; 56 listItem.querySelector(".display").textContent = text;
57 if (object.isAdsType) 57 if (object.isAdsType)
58 list.dataset.value = text.toLowerCase(); 58 listItem.dataset.search = text.toLowerCase();
59 59
60 var control = list.getElementsByClassName("control")[0]; 60 var control = listItem.querySelector(".control");
61 if (control) 61 if (control)
62 { 62 {
63 control.addEventListener("click", listener, false); 63 control.addEventListener("click", listener, false);
64 control.checked = !object.disabled; 64 control.checked = !object.disabled;
65 } 65 }
66 if (table.hasChildNodes) 66 if (table.hasChildNodes)
67 table.insertBefore(list, table.childNodes[index]); 67 table.insertBefore(listItem, table.childNodes[index]);
68 else 68 else
69 table.appendChild(list); 69 table.appendChild(listItem);
70 } 70 }
71 } 71 }
72 return length; 72 return length;
73 }, 73 },
74 remove: function(obj) 74 remove: function(obj)
75 { 75 {
76 var index = this.indexOf(obj); 76 var index = this.indexOf(obj);
77 this.splice(index, 1); 77 this.splice(index, 1);
78 var access = obj.url || obj.text; 78 var access = obj.url || obj.text;
79 for (var i=0; i < this.table.length; i++) 79 for (var i=0; i < this.table.length; i++)
80 { 80 {
81 var table = E(this.table[i].id); 81 var table = E(this.table[i].id);
82 var element = table.querySelector("[data-access='"+access+"']"); 82 var element = table.querySelector("[data-access='"+access+"']");
83 element.parentElement.removeChild(element); 83 element.parentElement.removeChild(element);
84 } 84 }
85 } 85 }
86 }, 86 },
87 subscriptions: { 87 subscriptions:
88 getArray: function(subscription) 88 {
89 {
90 var collArray = null;
91 if (subscription.isPopular)
92 collArray = collections.popular;
93 else if (subscription.isAdsType && subscription.disabled)
94 collArray = collections.allLangs;
95 else if (subscription.isAdsType && !subscription.disabled)
96 collArray = collections.langs;
97 else if (subscription.url == acceptableAdsUrl)
98 collArray = collections.acceptableAds;
99 else
100 collArray = collections.custom;
101 return collArray;
102 },
103 update: function(subscription) 89 update: function(subscription)
104 { 90 {
105 var optionSubscription = this[subscription.url]; 91 var optionSubscription = this[subscription.url];
106 if (optionSubscription) 92 if (optionSubscription)
107 optionSubscription.disabled = subscription.disabled; 93 optionSubscription.disabled = subscription.disabled;
108 else 94 else
109 { 95 {
110 var collArray = this.getArray(subscription);
111 optionObj.observe(subscription, ["disabled"]); 96 optionObj.observe(subscription, ["disabled"]);
97 var collArray = null;
98 if (subscription.isPopular)
99 collArray = collections.popular;
100 else if (subscription.isAdsType && subscription.disabled)
101 collArray = collections.allLangs;
102 else if (subscription.isAdsType && !subscription.disabled)
103 collArray = collections.langs;
104 else if (subscription.url == acceptableAdsUrl)
105 collArray = collections.acceptableAds;
106 else
107 collArray = collections.custom;
108
112 collArray.push = collections.push; 109 collArray.push = collections.push;
113 collArray.push(subscription); 110 collArray.push(subscription);
114 this[subscription.url] = subscription; 111 this[subscription.url] = subscription;
115 } 112 }
116 }, 113 },
117 remove: function(subscription) 114 remove: function(subscription)
118 { 115 {
119 var optionSubscription = this[subscription.url]; 116 var optionSubscription = this[subscription.url];
120 117
121 if (optionSubscription.isAdsType) 118 if (optionSubscription.isAdsType)
122 { 119 {
123 collections.langs.remove(optionSubscription); 120 collections.langs.remove(optionSubscription);
124 collections.allLangs.push(optionSubscription); 121 collections.allLangs.push(optionSubscription);
125 } 122 }
126 else if(optionSubscription.isPopular) 123 else if(optionSubscription.isPopular)
127 { 124 {
128 optionSubscription.disabled = true; 125 optionSubscription.disabled = true;
129 } 126 }
130 else 127 else
131 { 128 {
132 collections.custom.remove(optionSubscription); 129 collections.custom.remove(optionSubscription);
133 } 130 }
134 }, 131 },
135 chboxListener: function(e) 132 chboxListener: function(e)
136 { 133 {
137 e.preventDefault(); 134 e.preventDefault();
138 var target = e.target; 135 var isChecked = e.target.checked;
139 var isChecked = target.checked;
140 var url = e.target.parentNode.dataset.access; 136 var url = e.target.parentNode.dataset.access;
141 if (!isChecked) 137 if (!isChecked)
142 SendMessage.removeSubscription(url); 138 sendMessage.removeSubscription(url);
143 else 139 else
144 SendMessage.addSubscription(url); 140 sendMessage.addSubscription(url);
145 }, 141 },
146 acceptableAdsListener: function(e) 142 toggleAcceptableAds: function(e)
147 { 143 {
148 e.preventDefault(); 144 e.preventDefault();
149 var target = e.target; 145 var target = e.target;
150 var isChecked = target.checked; 146 var isChecked = target.checked;
151 var url = e.target.parentNode.dataset.access; 147 var url = e.target.parentNode.dataset.access;
152 148
153 if (isChecked) 149 if (isChecked)
154 SendMessage.addSubscription(url); 150 sendMessage.addSubscription(url);
155 else 151 else
156 SendMessage.removeSubscription(url); 152 sendMessage.removeSubscription(url);
157 }, 153 },
158 addBtnListener: function(e) 154 addBtnListener: function(e)
159 { 155 {
160 e.preventDefault(); 156 e.preventDefault();
161 var url = this.parentNode.dataset.access; 157 var url = this.parentNode.dataset.access;
162 SendMessage.addSubscription(url); 158 sendMessage.addSubscription(url);
163 } 159 }
164 }, 160 },
165 filters: 161 filters:
166 { 162 {
167 update: function(filter) 163 update: function(filter)
168 { 164 {
169 var optionFilter = this[filter.text]; 165 var optionFilter = this[filter.text];
170 var match = filter.text.match(/^@@\|\|([^\/:]+)\^\$document$/); 166 var match = filter.text.match(/^@@\|\|([^\/:]+)\^\$document$/);
171 if (match && !optionFilter) 167 if (match && !optionFilter)
172 { 168 {
173 filter.title = match[1]; 169 filter.title = match[1];
174 collections.whitelist.push(filter); 170 collections.whitelist.push(filter);
175 this[filter.text] = filter; 171 this[filter.text] = filter;
176 } 172 }
177 else 173 else
178 { 174 {
179 // TODO: add `filters[i].text` to list of custom filters 175 // TODO: add `filters[i].text` to list of custom filters
180 } 176 }
181 }, 177 },
182 remove: function(filter) 178 remove: function(filter)
183 { 179 {
184 collections.whitelist.remove(filter); 180 collections.whitelist.remove(filter);
185 }, 181 },
186 deleteBtnClick: function() 182 deleteBtnClick: function()
187 { 183 {
188 var filter = this.parentNode.dataset.access; 184 var filter = this.parentNode.dataset.access;
189 SendMessage.removeFilter(filter); 185 sendMessage.removeFilter(filter);
190 } 186 }
191 }, 187 },
192 observe: function(obj, props) 188 observe: function(obj, props)
193 { 189 {
194 props.forEach(function(property) 190 props.forEach(function(property)
195 { 191 {
196 obj["__"+property] = obj[property]; 192 obj["$"+property] = obj[property];
197 Object.defineProperty(obj, property, 193 Object.defineProperty(obj, property,
198 { 194 {
199 get: function() 195 get: function()
200 { 196 {
201 return this["__"+property]; 197 return this["$"+property];
202 }, 198 },
203 set: function(value) 199 set: function(value)
204 { 200 {
205 this["__"+property] = value; 201 this["$"+property] = value;
206 var access = obj.url || obj.text; 202 var access = obj.url || obj.text;
207 var elements = document.querySelectorAll("[data-access='" + access + "']"); 203 var elements = document.querySelectorAll("[data-access='" + access + "']");
208 for (var i=0; i < elements.length; i++) 204 for (var i=0; i < elements.length; i++)
209 { 205 {
210 var elem = elements[i]; 206 var element = elements[i];
211 var control = elem.getElementsByClassName("control")[0]; 207 var control = element.getElementsByClassName("control")[0];
212 if (control.tagName == "INPUT") 208 if (control.localName == "input")
213 control.checked = !obj.disabled; 209 control.checked = !obj.disabled;
214 if (obj.isAdsType) 210 if (obj.isAdsType)
215 { 211 {
216 collections.allLangs.remove(obj); 212 collections.allLangs.remove(obj);
217 collections.langs.push(obj); 213 collections.langs.push(obj);
218 } 214 }
219 } 215 }
220 } 216 }
221 }); 217 });
222 }); 218 });
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 { 251 {
256 id: "all-lang-table", 252 id: "all-lang-table",
257 template: "<button class='button-add control'><span>+add</span></button><s pan class='display'></span>", 253 template: "<button class='button-add control'><span>+add</span></button><s pan class='display'></span>",
258 listener: optionObj.subscriptions.addBtnListener 254 listener: optionObj.subscriptions.addBtnListener
259 } 255 }
260 ]); 256 ]);
261 collections.acceptableAds = createCollArray([ 257 collections.acceptableAds = createCollArray([
262 { 258 {
263 id: "acceptableads-table", 259 id: "acceptableads-table",
264 template: "<input type='checkbox' class='control' /><span class='display'> </span>", 260 template: "<input type='checkbox' class='control' /><span class='display'> </span>",
265 listener: optionObj.subscriptions.acceptableAdsListener 261 listener: optionObj.subscriptions.toggleAcceptableAds
266 } 262 }
267 ]); 263 ]);
268 collections.custom = createCollArray([ 264 collections.custom = createCollArray([
269 { 265 {
270 id: "custom-list-table", 266 id: "custom-list-table",
271 template: "<input type='checkbox' class='control' /><span class='display'> </span>", 267 template: "<input type='checkbox' class='control' /><span class='display'> </span>",
272 listener: optionObj.subscriptions.chboxListener 268 listener: optionObj.subscriptions.chboxListener
273 } 269 }
274 ]); 270 ]);
275 collections.whitelist = createCollArray([ 271 collections.whitelist = createCollArray([
276 { 272 {
277 id: "whitelisting-table", 273 id: "whitelisting-table",
278 template: "<button class='delete control'></button><span class='display'>< /span>", 274 template: "<button class='delete control'></button><span class='display'>< /span>",
279 listener: optionObj.filters.deleteBtnClick 275 listener: optionObj.filters.deleteBtnClick
280 } 276 }
281 ]); 277 ]);
282 278
283 var Recommendations = 279 function loadRecommendations()
284 { 280 {
285 load: function() 281 var request = new XMLHttpRequest();
286 { 282 request.open("GET", "subscriptions.xml", false);
287 var request = new XMLHttpRequest(); 283 request.onload = function()
288 request.open("GET", "subscriptions.xml", false); 284 {
289 request.onload = function() 285 var list = document.getElementById("subscriptionSelector");
290 { 286 var docElem = request.responseXML.documentElement;
291 var list = document.getElementById("subscriptionSelector"); 287 var elements = docElem.getElementsByTagName("subscription");
292 var docElem = request.responseXML.documentElement; 288 for (var i = 0; i < elements.length; i++)
293 var elements = docElem.getElementsByTagName("subscription"); 289 {
294 for (var i = 0; i < elements.length; i++) 290 var element = elements[i];
295 { 291 var subscription = Object.create(null);
296 var element = elements[i]; 292 subscription.title = element.getAttribute("title");
297 var subscription = Object.create(null); 293 subscription.url = element.getAttribute("url");
298 subscription.title = element.getAttribute("title"); 294 subscription.disabled = true;
299 subscription.url = element.getAttribute("url"); 295 var prefix = element.getAttribute("prefixes");
300 subscription.disabled = true; 296 if (prefix)
301 var prefix = element.getAttribute("prefixes"); 297 {
302 if (prefix) 298 subscription.isAdsType = true;
303 { 299 var prefix = element.getAttribute("prefixes").replace(/,/g, "_");
304 subscription.isAdsType = true; 300 subscription.title = ext.i18n.getMessage("options_language_" + prefix) ;
305 var prefix = element.getAttribute("prefixes").replace(/,/g, '_'); 301 }
306 subscription.title = ext.i18n.getMessage("options_language_" + prefi x); 302 else
307 } 303 subscription.title = element.getAttribute("specialization");
308 else 304
309 subscription.title = element.getAttribute("specialization"); 305 if (element.getAttribute("popular"))
310 306 subscription.isPopular = true;
311 if (element.getAttribute("popular")) 307 optionObj.subscriptions.update(subscription);
312 subscription.isPopular = true; 308 }
313 optionObj.subscriptions.update(subscription); 309 };
314 } 310 request.send(null);
315 }.bind(this); 311 }
316 request.send();
317 }
318 };
319 312
320 function onDOMLoaded() 313 function onDOMLoaded()
321 { 314 {
322 updateShareLink(); 315 updateShareLink();
323 populateLists(); 316 populateLists();
324 317
325 var tabList = document.querySelectorAll("#main-navigation-tabs li"); 318 var tabList = document.querySelectorAll("#main-navigation-tabs li");
326 for (var i = 0; i < tabList.length; ++i) 319 for (var i = 0; i < tabList.length; i++)
327 { 320 {
328 tabList[i].addEventListener("click", function(ev) 321 tabList[i].addEventListener("click", function(e)
329 { 322 {
330 document.body.dataset.tab = this.id.substr(4); 323 document.body.dataset.tab = e.currentTarget.dataset.show;
331 }, false); 324 }, false);
332 } 325 }
333 326
334 var searchLanguage = function() 327 var searchLanguage = function()
335 { 328 {
336 var searchStyle = document.getElementById('search_style'); 329 var searchStyle = E('search_style');
Thomas Greiner 2015/02/18 17:19:27 You're using `document.getElementById()` here but
Thomas Greiner 2015/02/20 14:02:07 Review comments should not only be addressed for o
saroyanm 2015/02/26 12:18:33 Done.
337 var searchVal = this.value; 330 if (!this.value)
338 if (!searchVal)
339 searchStyle.innerHTML = ""; 331 searchStyle.innerHTML = "";
340 else 332 else
341 searchStyle.innerHTML = "#all-lang-table li:not([data-value*=\"" + this. value.toLowerCase() + "\"]) { display: none; }"; 333 searchStyle.innerHTML = "#all-lang-table li:not([data-search*=\"" + this .value.toLowerCase() + "\"]) { display: none; }";
342 }; 334 };
343 335
344 // Update version number in navigation sidebar 336 // Update version number in navigation sidebar
345 ext.backgroundPage.sendMessage({ 337 ext.backgroundPage.sendMessage(
Thomas Greiner 2015/02/20 14:02:07 It's still inconsistent. As I noted in a previous
saroyanm 2015/02/26 12:18:33 Used the one from your suggestion: https://hg.adbl
338 {
346 method: "app.get", 339 method: "app.get",
347 what: "addonVersion" 340 what: "addonVersion"
348 }, function(addonVersion) 341 }, function(addonVersion)
349 { 342 {
350 E("abp-version").textContent = addonVersion; 343 E("abp-version").textContent = addonVersion;
351 }); 344 });
352 345
353 var whitelistDomainBtnClick = function() 346 var whitelistDomainBtnClick = function()
354 { 347 {
355 var domain = E("whitelisting-textbox").value; 348 var domain = E("whitelisting-textbox");
356 if (domain) 349 if (domain.value)
357 SendMessage.addWhitelistedDomain(domain); 350 SendMessage.addWhitelistedDomain(domain.value);
358 E("whitelisting-textbox").value = ""; 351 domain.value = "";
359 }; 352 };
360 353
361 var placeholderValue = ext.i18n.getMessage("options_modal_language_find"); 354 var placeholderValue = ext.i18n.getMessage("options_modal_language_find");
362 E("find-language").setAttribute("placeholder", placeholderValue); 355 E("find-language").setAttribute("placeholder", placeholderValue);
363 setLinks("block-element-explanation", "#"); 356 setLinks("block-element-explanation", "#");
364 357
365 E("add-blocking-list").addEventListener("click", function() 358 E("add-blocking-list").addEventListener("click", function()
366 { 359 {
367 openModal("customlist"); 360 openModal("customlist");
368 }, false); 361 }, false);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 { 411 {
419 type: "filters.get", 412 type: "filters.get",
420 subscriptionUrl: subscriptions[i].url 413 subscriptionUrl: subscriptions[i].url
421 }, function(filters) 414 }, function(filters)
422 { 415 {
423 for (var i = 0; i < filters.length; i++) 416 for (var i = 0; i < filters.length; i++)
424 optionObj.filters.update(filters[i]); 417 optionObj.filters.update(filters[i]);
425 }); 418 });
426 } 419 }
427 }); 420 });
428 Recommendations.load(); 421 loadRecommendations();
429 SendMessage.getAcceptableAdsURL(function(url) 422 sendMessage.getAcceptableAdsURL(function(url)
430 { 423 {
431 acceptableAdsUrl = url; 424 acceptableAdsUrl = url;
432 var subscription = Object.create(null); 425 var subscription = Object.create(null);
433 subscription.url = acceptableAdsUrl; 426 subscription.url = acceptableAdsUrl;
434 subscription.disabled = true; 427 subscription.disabled = true;
435 subscription.title = ext.i18n.getMessage("options_acceptableAds_descriptio n"); 428 subscription.title = ext.i18n.getMessage("options_acceptableAds_descriptio n");
436 optionObj.subscriptions.update(subscription); 429 optionObj.subscriptions.update(subscription);
437 430
438 // Load user subscriptions 431 // Load user subscriptions
439 ext.backgroundPage.sendMessage( 432 ext.backgroundPage.sendMessage(
440 { 433 {
441 type: "subscriptions.get", 434 type: "subscriptions.get",
442 downloadable: true 435 downloadable: true
443 }, function(subscriptions) 436 }, function(subscriptions)
444 { 437 {
445 for (var i = 0; i < subscriptions.length; i++) 438 for (var i = 0; i < subscriptions.length; i++)
446 MessageListeners.onSubscriptionMessage("added", subscriptions[i]); 439 messageListeners.onSubscriptionMessage("added", subscriptions[i]);
447 }); 440 });
448 }); 441 });
449 } 442 }
450 443
451 function editOwnRulsBtnClick() 444 function editOwnRulsBtnClick()
452 { 445 {
453 446
454 } 447 }
455 448
456 var SendMessage = 449 var sendMessage =
457 { 450 {
458 getAcceptableAdsURL: function(callback) 451 getAcceptableAdsURL: function(callback)
459 { 452 {
460 ext.backgroundPage.sendMessage( 453 ext.backgroundPage.sendMessage(
461 { 454 {
462 type: "prefs.get", 455 type: "prefs.get",
463 key: "subscriptions_exceptionsurl" 456 key: "subscriptions_exceptionsurl"
464 }, function(value) 457 }, function(value)
465 { 458 {
466 SendMessage.getAcceptableAdsURL = function(callback) 459 sendMessage.getAcceptableAdsURL = function(callback)
467 { 460 {
468 callback(value); 461 callback(value);
469 } 462 }
470 SendMessage.getAcceptableAdsURL(callback); 463 sendMessage.getAcceptableAdsURL(callback);
471 }); 464 });
472 }, 465 },
473 addSubscription: function(url, title, homepage) 466 addSubscription: function(url, title, homepage)
474 { 467 {
475 var message = { 468 var message = {
476 type: "subscriptions.add", 469 type: "subscriptions.add",
477 url: url 470 url: url
478 }; 471 };
479 if (title) 472 if (title)
480 message.title = title; 473 message.title = title;
(...skipping 21 matching lines...) Expand all
502 removeFilter: function(filter) 495 removeFilter: function(filter)
503 { 496 {
504 ext.backgroundPage.sendMessage( 497 ext.backgroundPage.sendMessage(
505 { 498 {
506 type: "filters.remove", 499 type: "filters.remove",
507 text: filter 500 text: filter
508 }); 501 });
509 } 502 }
510 }; 503 };
511 504
512 var MessageListeners = 505 var messageListeners =
513 { 506 {
514 onFilterMessage: function(action, filter) 507 onFilterMessage: function(action, filter)
515 { 508 {
516 switch (action) 509 switch (action)
517 { 510 {
518 case "added": 511 case "added":
519 optionObj.filters.update(filter); 512 optionObj.filters.update(filter);
520 break; 513 break;
521 case "loaded": 514 case "loaded":
522 populateLists(); 515 populateLists();
(...skipping 21 matching lines...) Expand all
544 subscription.disabled = true; 537 subscription.disabled = true;
545 optionObj.subscriptions.update(subscription); 538 optionObj.subscriptions.update(subscription);
546 } 539 }
547 else 540 else
548 optionObj.subscriptions.remove(subscription); 541 optionObj.subscriptions.remove(subscription);
549 break; 542 break;
550 case "title": 543 case "title":
551 // TODO: NYI 544 // TODO: NYI
552 break; 545 break;
553 } 546 }
554 },
555 showAddSubscriptionDialog: function(subscription)
556 {
557 E("blockingList-textbox").value = subscription.url;
558 openModal("customlist");
559 } 547 }
560 }; 548 };
549
550 function showAddSubscriptionDialog(subscription)
551 {
552 E("blockingList-textbox").value = subscription.url;
553 openModal("customlist");
554 }
561 555
562 function updateShareLink() 556 function updateShareLink()
563 { 557 {
564 ext.backgroundPage.sendMessage( 558 ext.backgroundPage.sendMessage(
565 { 559 {
566 type: "filters.blocked", 560 type: "filters.blocked",
567 url: "https://platform.twitter.com/widgets/", 561 url: "https://platform.twitter.com/widgets/",
568 requestType: "SCRIPT", 562 requestType: "SCRIPT",
569 docDomain: "adblockplus.org", 563 docDomain: "adblockplus.org",
570 thirdParty: true 564 thirdParty: true
571 }, function(blocked) 565 },
566 function(blocked)
572 { 567 {
573 // TODO: modify "share" link accordingly 568 // TODO: modify "share" link accordingly
574 }); 569 });
575 } 570 }
576 571
577 function getDocLink(link, callback) 572 function getDocLink(link, callback)
578 { 573 {
579 ext.backgroundPage.sendMessage( 574 ext.backgroundPage.sendMessage(
580 { 575 {
581 type: "app.get", 576 type: "app.get",
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 { 608 {
614 return document.getElementById(id); 609 return document.getElementById(id);
615 } 610 }
616 611
617 ext.onMessage.addListener(function(message) 612 ext.onMessage.addListener(function(message)
618 { 613 {
619 switch (message.type) 614 switch (message.type)
620 { 615 {
621 case "app.listen": 616 case "app.listen":
622 if (message.action == "addSubscription") 617 if (message.action == "addSubscription")
623 MessageListeners.showAddSubscriptionDialog(message.args[0]); 618 messageListeners.showAddSubscriptionDialog(message.args[0]);
624 break; 619 break;
625 case "filters.listen": 620 case "filters.listen":
626 MessageListeners.onFilterMessage(message.action, message.args[0]); 621 messageListeners.onFilterMessage(message.action, message.args[0]);
627 break; 622 break;
628 case "subscriptions.listen": 623 case "subscriptions.listen":
629 MessageListeners.onSubscriptionMessage(message.action, message.args[0]); 624 messageListeners.onSubscriptionMessage(message.action, message.args[0]);
630 break; 625 break;
631 } 626 }
632 }); 627 });
633 628
634 ext.backgroundPage.sendMessage( 629 ext.backgroundPage.sendMessage(
635 { 630 {
636 type: "app.listen", 631 type: "app.listen",
637 filter: ["addSubscription"] 632 filter: ["addSubscription"]
638 }); 633 });
639 ext.backgroundPage.sendMessage( 634 ext.backgroundPage.sendMessage(
640 { 635 {
641 type: "filters.listen", 636 type: "filters.listen",
642 filter: ["added", "loaded", "removed"] 637 filter: ["added", "loaded", "removed"]
643 }); 638 });
644 ext.backgroundPage.sendMessage( 639 ext.backgroundPage.sendMessage(
645 { 640 {
646 type: "subscriptions.listen", 641 type: "subscriptions.listen",
647 filter: ["added", "disabled", "homepage", "removed", "title"] 642 filter: ["added", "disabled", "homepage", "removed", "title"]
648 }); 643 });
649 644
650 window.addEventListener("DOMContentLoaded", onDOMLoaded, false); 645 window.addEventListener("DOMContentLoaded", onDOMLoaded, false);
651 })(); 646 })();
LEFTRIGHT

Powered by Google App Engine
This is Rietveld