| 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-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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 61     { | 61     { | 
| 62       var table = E(this.details[j].id); | 62       var table = E(this.details[j].id); | 
| 63       var template = table.querySelector("template"); | 63       var template = table.querySelector("template"); | 
| 64       for (var i = 0; i < arguments.length; i++) | 64       for (var i = 0; i < arguments.length; i++) | 
| 65       { | 65       { | 
| 66         var item = arguments[i]; | 66         var item = arguments[i]; | 
| 67         var text = item.title || item.url || item.text; | 67         var text = item.title || item.url || item.text; | 
| 68         var listItem = document.createElement("li"); | 68         var listItem = document.createElement("li"); | 
| 69         listItem.appendChild(document.importNode(template.content, true)); | 69         listItem.appendChild(document.importNode(template.content, true)); | 
| 70         listItem.setAttribute("data-access", item.url || item.text); | 70         listItem.setAttribute("data-access", item.url || item.text); | 
| 71         listItem.querySelector(".display").textContent = text; | 71         var display = listItem.querySelector(".display"); | 
|  | 72         if (item.type) | 
|  | 73           display.setAttribute("data-tooltip-value", item.type); | 
|  | 74         display.textContent = text; | 
| 72         if (text) | 75         if (text) | 
| 73           listItem.setAttribute("data-search", text.toLowerCase()); | 76           listItem.setAttribute("data-search", text.toLowerCase()); | 
| 74 | 77 | 
| 75         var control = listItem.querySelector(".control"); | 78         var control = listItem.querySelector(".control"); | 
| 76         if (control) | 79         if (control) | 
| 77         { | 80         { | 
| 78           control.addEventListener("click", this.details[j].onClick, false); | 81           control.addEventListener("click", this.details[j].onClick, false); | 
| 79           control.checked = item.disabled == false; | 82           control.checked = item.disabled == false; | 
| 80         } | 83         } | 
| 81 | 84 | 
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 239                   collections.langs.addItems(subscription); | 242                   collections.langs.addItems(subscription); | 
| 240                 } | 243                 } | 
| 241                 else | 244                 else | 
| 242                 { | 245                 { | 
| 243                   collections.allLangs.addItems(subscription); | 246                   collections.allLangs.addItems(subscription); | 
| 244                   collections.langs.removeItem(subscription); | 247                   collections.langs.removeItem(subscription); | 
| 245                 } | 248                 } | 
| 246               } | 249               } | 
| 247             } | 250             } | 
| 248           } | 251           } | 
|  | 252           updateTooltips(); | 
| 249         } | 253         } | 
| 250 | 254 | 
| 251         if (!Object.observe) | 255         if (!Object.observe) | 
| 252         { | 256         { | 
| 253           // Currently only "disabled" property of subscription used for observa
     tion | 257           // Currently only "disabled" property of subscription used for observa
     tion | 
| 254           // but with Advanced tab implementation we should also add more proper
     ties. | 258           // but with Advanced tab implementation we should also add more proper
     ties. | 
| 255           ["disabled"].forEach(function(property) | 259           ["disabled"].forEach(function(property) | 
| 256           { | 260           { | 
| 257             subscription["$" + property] = subscription[property]; | 261             subscription["$" + property] = subscription[property]; | 
| 258             Object.defineProperty(subscription, property, | 262             Object.defineProperty(subscription, property, | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 318         return response.text(); | 322         return response.text(); | 
| 319       }) | 323       }) | 
| 320       .then(function(text) | 324       .then(function(text) | 
| 321       { | 325       { | 
| 322         var list = document.getElementById("subscriptionSelector"); | 326         var list = document.getElementById("subscriptionSelector"); | 
| 323         var doc = new DOMParser().parseFromString(text, "application/xml"); | 327         var doc = new DOMParser().parseFromString(text, "application/xml"); | 
| 324         var elements = doc.documentElement.getElementsByTagName("subscription"); | 328         var elements = doc.documentElement.getElementsByTagName("subscription"); | 
| 325         for (var i = 0; i < elements.length; i++) | 329         for (var i = 0; i < elements.length; i++) | 
| 326         { | 330         { | 
| 327           var element = elements[i]; | 331           var element = elements[i]; | 
| 328           var subscription = Object.create(null); | 332           var recommendation = {type: element.getAttribute("type")}; | 
| 329           subscription.title = element.getAttribute("title"); | 333           var subscription = { | 
| 330           subscription.url = element.getAttribute("url"); | 334             title: element.getAttribute("title"), | 
| 331           subscription.disabled = null; | 335             url: element.getAttribute("url"), | 
| 332           subscription.downloadStatus = null; | 336             disabled: null, | 
| 333           subscription.homepage = null; | 337             downloadStatus: null, | 
| 334           subscription.lastSuccess = null; | 338             homepage: null, | 
| 335           var recommendation = Object.create(null); | 339             lastSuccess: null, | 
| 336           recommendation.type = element.getAttribute("type"); | 340             type: recommendation.type | 
|  | 341           }; | 
| 337           var prefix = element.getAttribute("prefixes"); | 342           var prefix = element.getAttribute("prefixes"); | 
| 338           if (prefix) | 343           if (prefix) | 
| 339           { | 344           { | 
| 340             prefix = prefix.replace(/\W/g, "_"); | 345             prefix = prefix.replace(/\W/g, "_"); | 
| 341             subscription.title = ext.i18n.getMessage("options_language_" + prefi
     x); | 346             subscription.title = ext.i18n.getMessage("options_language_" + prefi
     x); | 
| 342           } | 347           } | 
| 343           else | 348           else | 
| 344           { | 349           { | 
| 345             var type = recommendation.type.replace(/\W/g, "_"); | 350             var type = recommendation.type.replace(/\W/g, "_"); | 
| 346             subscription.title = ext.i18n.getMessage("common_feature_" + type + 
     "_title"); | 351             subscription.title = ext.i18n.getMessage("common_feature_" + type + 
     "_title"); | 
| (...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 774         } | 779         } | 
| 775         else | 780         else | 
| 776           tab.addEventListener("click", onShareLinkClick, false); | 781           tab.addEventListener("click", onShareLinkClick, false); | 
| 777       } | 782       } | 
| 778     } | 783     } | 
| 779 | 784 | 
| 780     for (var i = 0; i < shareResources.length; i++) | 785     for (var i = 0; i < shareResources.length; i++) | 
| 781       checkShareResource(shareResources[i], onResult); | 786       checkShareResource(shareResources[i], onResult); | 
| 782   } | 787   } | 
| 783 | 788 | 
|  | 789   function getMessages(id) | 
|  | 790   { | 
|  | 791     var messages = []; | 
|  | 792     for (var i = 1; true; i++) | 
|  | 793     { | 
|  | 794       var message = ext.i18n.getMessage(id + "_" + i); | 
|  | 795       if (!message) | 
|  | 796         break; | 
|  | 797 | 
|  | 798       messages.push(message); | 
|  | 799     } | 
|  | 800     return messages; | 
|  | 801   } | 
|  | 802 | 
|  | 803   function updateTooltips() | 
|  | 804   { | 
|  | 805     var anchors = document.querySelectorAll(":not(.tooltip) > [data-tooltip]"); | 
|  | 806     for (var i = 0; i < anchors.length; i++) | 
|  | 807     { | 
|  | 808       var anchor = anchors[i]; | 
|  | 809       var id = anchor.getAttribute("data-tooltip"); | 
|  | 810       id = id.replace("%value%", anchor.getAttribute("data-tooltip-value")); | 
|  | 811 | 
|  | 812       var wrapper = document.createElement("div"); | 
|  | 813       wrapper.className = "tooltip"; | 
|  | 814       anchor.parentNode.replaceChild(wrapper, anchor); | 
|  | 815       wrapper.appendChild(anchor); | 
|  | 816 | 
|  | 817       var topTexts = getMessages(id); | 
|  | 818       var bottomTexts = getMessages(id + "_notes"); | 
|  | 819 | 
|  | 820       // We have to use native tooltips to avoid issues when attaching a tooltip | 
|  | 821       // to an element in a scrollable list or otherwise it might get cut off | 
|  | 822       if (anchor.hasAttribute("data-tooltip-native")) | 
|  | 823       { | 
|  | 824         var title = topTexts.concat(bottomTexts).join("\n\n"); | 
|  | 825         anchor.setAttribute("title", title); | 
|  | 826         continue; | 
|  | 827       } | 
|  | 828 | 
|  | 829       var tooltip = document.createElement("div"); | 
|  | 830       tooltip.setAttribute("role", "tooltip"); | 
|  | 831 | 
|  | 832       var flip = anchor.getAttribute("data-tooltip-flip"); | 
|  | 833       if (flip) | 
|  | 834         tooltip.className = "flip-" + flip; | 
|  | 835 | 
|  | 836       var imageSource = anchor.getAttribute("data-tooltip-image"); | 
|  | 837       if (imageSource) | 
|  | 838       { | 
|  | 839         var image = document.createElement("img"); | 
|  | 840         image.src = imageSource; | 
|  | 841         image.alt = ""; | 
|  | 842         tooltip.appendChild(image); | 
|  | 843       } | 
|  | 844 | 
|  | 845       for (var j = 0; j < topTexts.length; j++) | 
|  | 846       { | 
|  | 847         var paragraph = document.createElement("p"); | 
|  | 848         paragraph.textContent = topTexts[j]; | 
|  | 849         tooltip.appendChild(paragraph); | 
|  | 850       } | 
|  | 851       if (bottomTexts.length > 0) | 
|  | 852       { | 
|  | 853         var notes = document.createElement("div"); | 
|  | 854         notes.className = "notes"; | 
|  | 855         for (var j = 0; j < bottomTexts.length; j++) | 
|  | 856         { | 
|  | 857           var paragraph = document.createElement("p"); | 
|  | 858           paragraph.textContent = bottomTexts[j]; | 
|  | 859           notes.appendChild(paragraph); | 
|  | 860         } | 
|  | 861         tooltip.appendChild(notes); | 
|  | 862       } | 
|  | 863 | 
|  | 864       wrapper.appendChild(tooltip); | 
|  | 865     } | 
|  | 866   } | 
|  | 867 | 
| 784   ext.onMessage.addListener(function(message) | 868   ext.onMessage.addListener(function(message) | 
| 785   { | 869   { | 
| 786     switch (message.type) | 870     switch (message.type) | 
| 787     { | 871     { | 
| 788       case "app.listen": | 872       case "app.listen": | 
| 789         if (message.action == "addSubscription") | 873         if (message.action == "addSubscription") | 
| 790         { | 874         { | 
| 791           var subscription = message.args[0]; | 875           var subscription = message.args[0]; | 
| 792           var dialog = E("dialog-content-predefined"); | 876           var dialog = E("dialog-content-predefined"); | 
| 793           dialog.querySelector("h3").textContent = subscription.title || ""; | 877           dialog.querySelector("h3").textContent = subscription.title || ""; | 
| (...skipping 25 matching lines...) Expand all  Loading... | 
| 819     filter: ["added", "loaded", "removed"] | 903     filter: ["added", "loaded", "removed"] | 
| 820   }); | 904   }); | 
| 821   ext.backgroundPage.sendMessage( | 905   ext.backgroundPage.sendMessage( | 
| 822   { | 906   { | 
| 823     type: "subscriptions.listen", | 907     type: "subscriptions.listen", | 
| 824     filter: ["added", "disabled", "homepage", "removed", "title"] | 908     filter: ["added", "disabled", "homepage", "removed", "title"] | 
| 825   }); | 909   }); | 
| 826 | 910 | 
| 827   window.addEventListener("DOMContentLoaded", onDOMLoaded, false); | 911   window.addEventListener("DOMContentLoaded", onDOMLoaded, false); | 
| 828 })(); | 912 })(); | 
| OLD | NEW | 
|---|