Left: | ||
Right: |
LEFT | RIGHT |
---|---|
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-2016 Eyeo GmbH | 3 * Copyright (C) 2006-2017 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 |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
13 * | 13 * |
14 * You should have received a copy of the GNU General Public License | 14 * You should have received a copy of the GNU General Public License |
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
16 */ | 16 */ |
17 | 17 |
18 /* global $, i18n, i18n_timeDateStrings */ | 18 /* global $, i18n, i18nTimeDateStrings */ |
19 | 19 |
20 "use strict"; | 20 "use strict"; |
21 | 21 |
22 /** | 22 /** |
23 * Creates a wrapping function used to conveniently send a type of message. | 23 * Creates a wrapping function used to conveniently send a type of message. |
24 * | 24 * |
25 * @param {Object} baseMessage The part of the message that's always sent | 25 * @param {Object} baseMessage The part of the message that's always sent |
26 * @param {...string} paramKeys Any message keys that have dynamic values. The | 26 * @param {...string} paramKeys Any message keys that have dynamic values. The |
27 * returned function will take the corresponding | 27 * returned function will take the corresponding |
28 * values as arguments. | 28 * values as arguments. |
29 * @return {function} The generated messaging function, optionally | 29 * @return {function} The generated messaging function, optionally |
30 * taking any values as specified by the paramKeys | 30 * taking any values as specified by the paramKeys |
31 * and finally an optional callback. (Although the | 31 * and finally an optional callback. (Although the |
32 * value arguments are optional their index must be | 32 * value arguments are optional their index must be |
33 * maintained. E.g. if you omit the first value you | 33 * maintained. E.g. if you omit the first value you |
34 * must omit the second too.) | 34 * must omit the second too.) |
35 */ | 35 */ |
36 function wrapper(baseMessage, ...paramKeys) | 36 function wrapper(baseMessage, ...paramKeys) |
Sebastian Noack
2017/02/09 01:04:51
How about calling the rest arguments just "args" a
kzar
2017/02/20 10:27:33
Since paramKeys is a more useful name. (I used `ar
| |
37 { | 37 { |
38 return function(...paramValues /* , callback */) | 38 return function(...paramValues /* , callback */) |
39 { | 39 { |
40 let message = Object.create(null); | 40 let message = Object.create(null); |
41 for (let key in baseMessage) | 41 for (let key in baseMessage) |
42 { | 42 { |
43 if (baseMessage.hasOwnProperty(key)) | 43 if (baseMessage.hasOwnProperty(key)) |
44 message[key] = baseMessage[key]; | 44 message[key] = baseMessage[key]; |
45 } | 45 } |
46 | 46 |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
345 } | 345 } |
346 updateSubscriptionSelection(); | 346 updateSubscriptionSelection(); |
347 document.getElementById("addSubscriptionContainer").scrollIntoView(true); | 347 document.getElementById("addSubscriptionContainer").scrollIntoView(true); |
348 } | 348 } |
349 | 349 |
350 function updateSubscriptionSelection() | 350 function updateSubscriptionSelection() |
351 { | 351 { |
352 let list = document.getElementById("subscriptionSelector"); | 352 let list = document.getElementById("subscriptionSelector"); |
353 let data = list.options[list.selectedIndex]._data; | 353 let data = list.options[list.selectedIndex]._data; |
354 if (data) | 354 if (data) |
355 { | |
356 $("#customSubscriptionContainer").hide(); | 355 $("#customSubscriptionContainer").hide(); |
357 } | |
358 else | 356 else |
359 { | 357 { |
360 $("#customSubscriptionContainer").show(); | 358 $("#customSubscriptionContainer").show(); |
361 $("#customSubscriptionTitle").focus(); | 359 $("#customSubscriptionTitle").focus(); |
362 } | 360 } |
363 } | 361 } |
364 | 362 |
365 function addSubscriptionClicked() | 363 function addSubscriptionClicked() |
366 { | 364 { |
367 let list = document.getElementById("subscriptionSelector"); | 365 let list = document.getElementById("subscriptionSelector"); |
368 let data = list.options[list.selectedIndex]._data; | 366 let data = list.options[list.selectedIndex]._data; |
369 if (data) | 367 if (data) |
370 { | |
371 addSubscription(data.url, data.title, data.homepage); | 368 addSubscription(data.url, data.title, data.homepage); |
372 } | |
373 else | 369 else |
374 { | 370 { |
375 let url = document.getElementById("customSubscriptionLocation") | 371 let url = document.getElementById("customSubscriptionLocation") |
376 .value.trim(); | 372 .value.trim(); |
377 if (!/^https?:/i.test(url)) | 373 if (!/^https?:/i.test(url)) |
378 { | 374 { |
379 alert(i18n.getMessage("global_subscription_invalid_location")); | 375 alert(i18n.getMessage("global_subscription_invalid_location")); |
380 $("#customSubscriptionLocation").focus(); | 376 $("#customSubscriptionLocation").focus(); |
381 return; | 377 return; |
382 } | 378 } |
383 | 379 |
384 let title = document.getElementById("customSubscriptionTitle").value.trim(); | 380 let title = document.getElementById("customSubscriptionTitle").value.trim(); |
385 if (!title) | 381 if (!title) |
386 title = url; | 382 title = url; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
438 } | 434 } |
439 else if (downloadStatus && downloadStatus != "synchronize_ok") | 435 else if (downloadStatus && downloadStatus != "synchronize_ok") |
440 { | 436 { |
441 if (statusMessages.has(downloadStatus)) | 437 if (statusMessages.has(downloadStatus)) |
442 { | 438 { |
443 lastUpdate.textContent = i18n.getMessage( | 439 lastUpdate.textContent = i18n.getMessage( |
444 statusMessages.get(downloadStatus) | 440 statusMessages.get(downloadStatus) |
445 ); | 441 ); |
446 } | 442 } |
447 else | 443 else |
448 { | |
449 lastUpdate.textContent = downloadStatus; | 444 lastUpdate.textContent = downloadStatus; |
450 } | |
451 lastUpdate.classList.add("error"); | 445 lastUpdate.classList.add("error"); |
452 } | 446 } |
453 else if (subscription.lastDownload > 0) | 447 else if (subscription.lastDownload > 0) |
454 { | 448 { |
455 let timeDate = i18n_timeDateStrings(subscription.lastDownload * 1000); | 449 let timeDate = i18nTimeDateStrings(subscription.lastDownload * 1000); |
456 let messageID = (timeDate[1] ? "last_updated_at" : "last_updated_at_today"); | 450 let messageID = (timeDate[1] ? "last_updated_at" : "last_updated_at_today"); |
457 lastUpdate.textContent = i18n.getMessage(messageID, timeDate); | 451 lastUpdate.textContent = i18n.getMessage(messageID, timeDate); |
458 } | 452 } |
459 } | 453 } |
460 | 454 |
461 function onSubscriptionMessage(action, subscription) | 455 function onSubscriptionMessage(action, subscription) |
462 { | 456 { |
463 let element = findSubscriptionElement(subscription); | 457 let element = findSubscriptionElement(subscription); |
464 | 458 |
465 switch (action) | 459 switch (action) |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
745 onFilterMessage(message.action, message.args[0]); | 739 onFilterMessage(message.action, message.args[0]); |
746 break; | 740 break; |
747 case "prefs.respond": | 741 case "prefs.respond": |
748 onPrefMessage(message.action, message.args[0]); | 742 onPrefMessage(message.action, message.args[0]); |
749 break; | 743 break; |
750 case "subscriptions.respond": | 744 case "subscriptions.respond": |
751 onSubscriptionMessage(message.action, message.args[0]); | 745 onSubscriptionMessage(message.action, message.args[0]); |
752 break; | 746 break; |
753 } | 747 } |
754 }); | 748 }); |
LEFT | RIGHT |