| OLD | NEW | 
|---|
| 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-2016 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 368 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 379   ]); | 379   ]); | 
| 380   collections.filterLists = new Collection( | 380   collections.filterLists = new Collection( | 
| 381   [ | 381   [ | 
| 382     { | 382     { | 
| 383       id: "all-filter-lists-table", | 383       id: "all-filter-lists-table", | 
| 384       onClick: toggleDisableSubscription, | 384       onClick: toggleDisableSubscription, | 
| 385       useOriginalTitle: true | 385       useOriginalTitle: true | 
| 386     } | 386     } | 
| 387   ]); | 387   ]); | 
| 388 | 388 | 
| 389   function observeSubscription(subscription) | 389   function updateLanguageCollections(subscription) | 
| 390   { | 390   { | 
| 391     function onObjectChanged(change) | 391     var recommendation = recommendationsMap[subscription.url]; | 
|  | 392 | 
|  | 393     if (recommendation && recommendation.type == "ads") | 
| 392     { | 394     { | 
| 393       for (var i = 0; i < change.length; i++) | 395       if (subscription.disabled) | 
| 394       { | 396       { | 
| 395         if (change[i].name == "disabled") | 397         collections.allLangs.addItems(subscription); | 
| 396         { | 398         collections.langs.removeItem(subscription); | 
| 397           var recommendation = recommendationsMap[subscription.url]; |  | 
| 398           if (recommendation && recommendation.type == "ads") |  | 
| 399           { |  | 
| 400             if (subscription.disabled == false) |  | 
| 401             { |  | 
| 402               collections.allLangs.removeItem(subscription); |  | 
| 403               collections.langs.addItems(subscription); |  | 
| 404             } |  | 
| 405             else |  | 
| 406             { |  | 
| 407               collections.allLangs.addItems(subscription); |  | 
| 408               collections.langs.removeItem(subscription); |  | 
| 409             } |  | 
| 410           } |  | 
| 411         } |  | 
| 412       } | 399       } | 
|  | 400       else | 
|  | 401       { | 
|  | 402         collections.allLangs.removeItem(subscription); | 
|  | 403         collections.langs.addItems(subscription); | 
|  | 404       } | 
|  | 405     } | 
|  | 406   } | 
| 413 | 407 | 
| 414       for (var name in collections) | 408   function addSubscription(subscription) | 
| 415         collections[name].updateItem(subscription); | 409   { | 
|  | 410     var collection; | 
|  | 411     if (subscription.url in recommendationsMap) | 
|  | 412     { | 
|  | 413       var recommendation = recommendationsMap[subscription.url]; | 
|  | 414       if (recommendation.type != "ads") | 
|  | 415         collection = collections.popular; | 
|  | 416       else if (subscription.disabled == false) | 
|  | 417         collection = collections.langs; | 
|  | 418       else | 
|  | 419         collection = collections.allLangs; | 
| 416     } | 420     } | 
|  | 421     else if (subscription.url == acceptableAdsUrl) | 
|  | 422       collection = collections.acceptableAds; | 
|  | 423     else | 
|  | 424       collection = collections.custom; | 
| 417 | 425 | 
| 418     if (!Object.observe) | 426     collection.addItems(subscription); | 
| 419     { | 427     subscriptionsMap[subscription.url] = subscription; | 
| 420       Object.keys(subscription).forEach(function(property) |  | 
| 421       { |  | 
| 422         var value = subscription[property]; |  | 
| 423         Object.defineProperty(subscription, property, |  | 
| 424         { |  | 
| 425           get: function() |  | 
| 426           { |  | 
| 427             return value; |  | 
| 428           }, |  | 
| 429           set: function(newValue) |  | 
| 430           { |  | 
| 431             if (value != newValue) |  | 
| 432             { |  | 
| 433               value = newValue; |  | 
| 434               onObjectChanged([{name: property}]); |  | 
| 435             } |  | 
| 436           } |  | 
| 437         }); |  | 
| 438       }); |  | 
| 439     } |  | 
| 440     else |  | 
| 441     { |  | 
| 442       Object.observe(subscription, onObjectChanged); |  | 
| 443     } |  | 
| 444   } | 428   } | 
| 445 | 429 | 
| 446   function updateSubscription(subscription) | 430   function updateSubscription(subscription) | 
| 447   { | 431   { | 
| 448     var subscriptionUrl = subscription.url; | 432     var knownSubscription = subscriptionsMap[subscription.url]; | 
| 449     var knownSubscription = subscriptionsMap[subscriptionUrl]; | 433     for (var property in subscription) | 
| 450     if (knownSubscription) |  | 
| 451     { | 434     { | 
| 452       for (var property in subscription) | 435       if (property == "title" && subscription.url in recommendationsMap) | 
| 453       { | 436         knownSubscription.originalTitle = subscription.title; | 
| 454         if (property == "title" && subscriptionUrl in recommendationsMap) | 437       else | 
| 455           knownSubscription.originalTitle = subscription.title; | 438         knownSubscription[property] = subscription[property]; | 
| 456         else |  | 
| 457           knownSubscription[property] = subscription[property]; |  | 
| 458       } |  | 
| 459     } | 439     } | 
| 460     else |  | 
| 461     { |  | 
| 462       observeSubscription(subscription); |  | 
| 463 | 440 | 
| 464       var collection; | 441     for (var name in collections) | 
| 465       if (subscriptionUrl in recommendationsMap) | 442       collections[name].updateItem(knownSubscription); | 
| 466       { |  | 
| 467         var recommendation = recommendationsMap[subscriptionUrl]; |  | 
| 468         if (recommendation.type != "ads") |  | 
| 469           collection = collections.popular; |  | 
| 470         else if (subscription.disabled == false) |  | 
| 471           collection = collections.langs; |  | 
| 472         else |  | 
| 473           collection = collections.allLangs; |  | 
| 474       } |  | 
| 475       else if (subscriptionUrl == acceptableAdsUrl) |  | 
| 476         collection = collections.acceptableAds; |  | 
| 477       else |  | 
| 478         collection = collections.custom; |  | 
| 479 | 443 | 
| 480       collection.addItems(subscription); | 444     return knownSubscription; | 
| 481       subscriptionsMap[subscriptionUrl] = subscription; |  | 
| 482     } |  | 
| 483   } | 445   } | 
| 484 | 446 | 
| 485   function updateFilter(filter) | 447   function updateFilter(filter) | 
| 486   { | 448   { | 
| 487     var match = filter.text.match(/^@@\|\|([^\/:]+)\^\$document$/); | 449     var match = filter.text.match(/^@@\|\|([^\/:]+)\^\$document$/); | 
| 488     if (match && !filtersMap[filter.text]) | 450     if (match && !filtersMap[filter.text]) | 
| 489     { | 451     { | 
| 490       filter.title = match[1]; | 452       filter.title = match[1]; | 
| 491       collections.whitelist.addItems(filter); | 453       collections.whitelist.addItems(filter); | 
| 492     } | 454     } | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 525             prefix = prefix.replace(/\W/g, "_"); | 487             prefix = prefix.replace(/\W/g, "_"); | 
| 526             subscription.title = getMessage("options_language_" + prefix); | 488             subscription.title = getMessage("options_language_" + prefix); | 
| 527           } | 489           } | 
| 528           else | 490           else | 
| 529           { | 491           { | 
| 530             var type = recommendation.type.replace(/\W/g, "_"); | 492             var type = recommendation.type.replace(/\W/g, "_"); | 
| 531             subscription.title = getMessage("common_feature_" + type + "_title")
      ; | 493             subscription.title = getMessage("common_feature_" + type + "_title")
      ; | 
| 532           } | 494           } | 
| 533 | 495 | 
| 534           recommendationsMap[subscription.url] = recommendation; | 496           recommendationsMap[subscription.url] = recommendation; | 
| 535           updateSubscription(subscription); | 497           addSubscription(subscription); | 
| 536         } | 498         } | 
| 537       }); | 499       }); | 
| 538   } | 500   } | 
| 539 | 501 | 
| 540   function findParentData(element, dataName, returnElement) | 502   function findParentData(element, dataName, returnElement) | 
| 541   { | 503   { | 
| 542     while (element) | 504     while (element) | 
| 543     { | 505     { | 
| 544       if (element.hasAttribute("data-" + dataName)) | 506       if (element.hasAttribute("data-" + dataName)) | 
| 545         return returnElement ? element : element.getAttribute("data-" + dataName
      ); | 507         return returnElement ? element : element.getAttribute("data-" + dataName
      ); | 
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 868     }); | 830     }); | 
| 869     loadRecommendations(); | 831     loadRecommendations(); | 
| 870     ext.backgroundPage.sendMessage( | 832     ext.backgroundPage.sendMessage( | 
| 871     { | 833     { | 
| 872       type: "prefs.get", | 834       type: "prefs.get", | 
| 873       key: "subscriptions_exceptionsurl" | 835       key: "subscriptions_exceptionsurl" | 
| 874     }, | 836     }, | 
| 875     function(url) | 837     function(url) | 
| 876     { | 838     { | 
| 877       acceptableAdsUrl = url; | 839       acceptableAdsUrl = url; | 
| 878       updateSubscription({ | 840       addSubscription({ | 
| 879         url: acceptableAdsUrl, | 841         url: acceptableAdsUrl, | 
| 880         disabled: true | 842         disabled: true | 
| 881       }); | 843       }); | 
| 882 | 844 | 
| 883       // Load user subscriptions | 845       // Load user subscriptions | 
| 884       ext.backgroundPage.sendMessage( | 846       ext.backgroundPage.sendMessage( | 
| 885       { | 847       { | 
| 886         type: "subscriptions.get", | 848         type: "subscriptions.get", | 
| 887         downloadable: true | 849         downloadable: true | 
| 888       }, | 850       }, | 
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 958         delete filtersMap[filter.text]; | 920         delete filtersMap[filter.text]; | 
| 959         updateShareLink(); | 921         updateShareLink(); | 
| 960         break; | 922         break; | 
| 961     } | 923     } | 
| 962   } | 924   } | 
| 963 | 925 | 
| 964   function onSubscriptionMessage(action, subscription) | 926   function onSubscriptionMessage(action, subscription) | 
| 965   { | 927   { | 
| 966     switch (action) | 928     switch (action) | 
| 967     { | 929     { | 
|  | 930       case "disabled": | 
|  | 931         subscription = updateSubscription(subscription); | 
|  | 932         updateLanguageCollections(subscription); | 
|  | 933         break; | 
|  | 934       case "downloading": | 
|  | 935       case "downloadStatus": | 
|  | 936       case "homepage": | 
|  | 937       case "lastDownload": | 
|  | 938       case "title": | 
|  | 939         updateSubscription(subscription); | 
|  | 940         break; | 
| 968       case "added": | 941       case "added": | 
| 969         updateSubscription(subscription); | 942         if (subscription.url in subscriptionsMap) | 
| 970         updateShareLink(); | 943           subscription = updateSubscription(subscription); | 
|  | 944         else | 
|  | 945           addSubscription(subscription); | 
| 971 | 946 | 
| 972         var knownSubscription = subscriptionsMap[subscription.url]; | 947         collections.filterLists.addItems(subscription); | 
| 973         if (knownSubscription) | 948         updateLanguageCollections(subscription); | 
| 974           collections.filterLists.addItems(knownSubscription); |  | 
| 975         else |  | 
| 976           collections.filterLists.addItems(subscription); |  | 
| 977         break; |  | 
| 978       case "disabled": |  | 
| 979         updateSubscription(subscription); |  | 
| 980         updateShareLink(); |  | 
| 981         break; | 949         break; | 
| 982       case "removed": | 950       case "removed": | 
| 983         var knownSubscription = subscriptionsMap[subscription.url]; | 951         var knownSubscription = subscriptionsMap[subscription.url]; | 
| 984         if (subscription.url == acceptableAdsUrl) | 952 | 
|  | 953         if (subscription.url == acceptableAdsUrl || | 
|  | 954             subscription.url in recommendationsMap) | 
| 985         { | 955         { | 
| 986           subscription.disabled = true; | 956           subscription.disabled = true; | 
| 987           updateSubscription(subscription); | 957           onSubscriptionMessage("disabled", subscription); | 
| 988         } | 958         } | 
| 989         else | 959         else | 
| 990         { | 960         { | 
| 991           if (subscription.url in recommendationsMap) | 961           collections.custom.removeItem(knownSubscription); | 
| 992             knownSubscription.disabled = true; | 962           delete subscriptionsMap[subscription.url]; | 
| 993           else |  | 
| 994           { |  | 
| 995             collections.custom.removeItem(knownSubscription); |  | 
| 996             delete subscriptionsMap[subscription.url]; |  | 
| 997           } |  | 
| 998         } | 963         } | 
| 999         updateShareLink(); |  | 
| 1000         collections.filterLists.removeItem(knownSubscription); | 964         collections.filterLists.removeItem(knownSubscription); | 
| 1001         break; | 965         break; | 
| 1002       default: |  | 
| 1003         updateSubscription(subscription); |  | 
| 1004         break; |  | 
| 1005     } | 966     } | 
|  | 967 | 
|  | 968     updateShareLink(); | 
| 1006   } | 969   } | 
| 1007 | 970 | 
| 1008   function hidePref(key, value) | 971   function hidePref(key, value) | 
| 1009   { | 972   { | 
| 1010     var element = document.querySelector("[data-pref='" + key + "']"); | 973     var element = document.querySelector("[data-pref='" + key + "']"); | 
| 1011     if (element) | 974     if (element) | 
| 1012       element.setAttribute("aria-hidden", value); | 975       element.setAttribute("aria-hidden", value); | 
| 1013   } | 976   } | 
| 1014 | 977 | 
| 1015   function getPref(key, callback) | 978   function getPref(key, callback) | 
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1154   }); | 1117   }); | 
| 1155   ext.backgroundPage.sendMessage( | 1118   ext.backgroundPage.sendMessage( | 
| 1156   { | 1119   { | 
| 1157     type: "subscriptions.listen", | 1120     type: "subscriptions.listen", | 
| 1158     filter: ["added", "disabled", "homepage", "lastDownload", "removed", | 1121     filter: ["added", "disabled", "homepage", "lastDownload", "removed", | 
| 1159         "title", "downloadStatus", "downloading"] | 1122         "title", "downloadStatus", "downloading"] | 
| 1160   }); | 1123   }); | 
| 1161 | 1124 | 
| 1162   window.addEventListener("DOMContentLoaded", onDOMLoaded, false); | 1125   window.addEventListener("DOMContentLoaded", onDOMLoaded, false); | 
| 1163 })(); | 1126 })(); | 
| OLD | NEW | 
|---|