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-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 |
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 /* globals checkShareResource, getDocLink, openSharePopup, E */ | 18 /* globals checkShareResource, getDocLink, openSharePopup, E */ |
19 | 19 |
20 "use strict"; | 20 "use strict"; |
21 | 21 |
| 22 (function() |
22 { | 23 { |
23 function onDOMLoaded() | 24 function onDOMLoaded() |
24 { | 25 { |
25 // Set up logo image | 26 // Set up logo image |
26 let logo = E("logo"); | 27 let logo = E("logo"); |
27 logo.src = "skin/abp-128.png"; | 28 logo.src = "skin/abp-128.png"; |
28 let errorCallback = function() | 29 let errorCallback = function() |
29 { | 30 { |
30 logo.removeEventListener("error", errorCallback, false); | 31 logo.removeEventListener("error", errorCallback, false); |
31 // We are probably in Chrome/Opera/Safari, the image has a different path. | 32 // We are probably in Chrome/Opera/Safari, the image has a different path. |
32 logo.src = "icons/detailed/abp-128.png"; | 33 logo.src = "icons/detailed/abp-128.png"; |
33 }; | 34 }; |
34 logo.addEventListener("error", errorCallback, false); | 35 logo.addEventListener("error", errorCallback, false); |
35 | 36 |
36 // Set up URLs | 37 // Set up URLs |
37 getDocLink("donate", link => | 38 getDocLink("donate", (link) => |
38 { | 39 { |
39 E("donate").href = link; | 40 E("donate").href = link; |
40 }); | 41 }); |
41 | 42 |
42 getDocLink("contributors", link => | 43 getDocLink("contributors", (link) => |
43 { | 44 { |
44 E("contributors").href = link; | 45 E("contributors").href = link; |
45 }); | 46 }); |
46 | 47 |
47 getDocLink("acceptable_ads_criteria", link => | 48 getDocLink("acceptable_ads_criteria", (link) => |
48 { | 49 { |
49 setLinks("acceptable-ads-explanation", link, openFilters); | 50 setLinks("acceptable-ads-explanation", link, openFilters); |
50 }); | 51 }); |
51 | 52 |
52 getDocLink("contribute", link => | 53 getDocLink("contribute", (link) => |
53 { | 54 { |
54 setLinks("share-headline", link); | 55 setLinks("share-headline", link); |
55 }); | 56 }); |
56 | 57 |
57 ext.backgroundPage.sendMessage({ | 58 ext.backgroundPage.sendMessage({ |
58 type: "app.get", | 59 type: "app.get", |
59 what: "issues" | 60 what: "issues" |
60 }, issues => | 61 }, (issues) => |
61 { | 62 { |
62 // Show warning if filterlists settings were reinitialized | 63 // Show warning if filterlists settings were reinitialized |
63 if (issues.filterlistsReinitialized) | 64 if (issues.filterlistsReinitialized) |
64 { | 65 { |
65 E("filterlistsReinitializedWarning").removeAttribute("hidden"); | 66 E("filterlistsReinitializedWarning").removeAttribute("hidden"); |
66 setLinks("filterlistsReinitializedWarning", openFilters); | 67 setLinks("filterlistsReinitializedWarning", openFilters); |
67 } | 68 } |
68 }); | 69 }); |
69 | 70 |
70 updateSocialLinks(); | 71 updateSocialLinks(); |
71 | 72 |
72 ext.onMessage.addListener(message => | 73 ext.onMessage.addListener((message) => |
73 { | 74 { |
74 if (message.type == "subscriptions.respond") | 75 if (message.type == "subscriptions.respond") |
| 76 { |
75 updateSocialLinks(); | 77 updateSocialLinks(); |
| 78 } |
76 }); | 79 }); |
77 ext.backgroundPage.sendMessage({ | 80 ext.backgroundPage.sendMessage({ |
78 type: "subscriptions.listen", | 81 type: "subscriptions.listen", |
79 filter: ["added", "removed", "updated", "disabled"] | 82 filter: ["added", "removed", "updated", "disabled"] |
80 }); | 83 }); |
81 } | 84 } |
82 | 85 |
83 function updateSocialLinks() | 86 function updateSocialLinks() |
84 { | 87 { |
85 for (let network of ["twitter", "facebook", "gplus"]) | 88 for (let network of ["twitter", "facebook", "gplus"]) |
86 { | 89 { |
87 let link = E("share-" + network); | 90 let link = E("share-" + network); |
88 checkShareResource(link.getAttribute("data-script"), isBlocked => | 91 checkShareResource(link.getAttribute("data-script"), (isBlocked) => |
89 { | 92 { |
90 // Don't open the share page if the sharing script would be blocked | 93 // Don't open the share page if the sharing script would be blocked |
91 if (isBlocked) | 94 if (isBlocked) |
92 link.removeEventListener("click", onSocialLinkClick, false); | 95 link.removeEventListener("click", onSocialLinkClick, false); |
93 else | 96 else |
94 link.addEventListener("click", onSocialLinkClick, false); | 97 link.addEventListener("click", onSocialLinkClick, false); |
95 }); | 98 }); |
96 } | 99 } |
97 } | 100 } |
98 | 101 |
99 function onSocialLinkClick(event) | 102 function onSocialLinkClick(event) |
100 { | 103 { |
101 if (window.matchMedia("(max-width: 970px)").matches) | 104 if (window.matchMedia("(max-width: 970px)").matches) |
102 return; | 105 return; |
103 | 106 |
104 event.preventDefault(); | 107 event.preventDefault(); |
105 | 108 |
106 getDocLink(event.target.id, link => | 109 getDocLink(event.target.id, (link) => |
107 { | 110 { |
108 openSharePopup(link); | 111 openSharePopup(link); |
109 }); | 112 }); |
110 } | 113 } |
111 | 114 |
112 function setLinks(id, ...args) | 115 function setLinks(id, ...args) |
113 { | 116 { |
114 let element = E(id); | 117 let element = E(id); |
115 if (!element) | 118 if (!element) |
| 119 { |
116 return; | 120 return; |
| 121 } |
117 | 122 |
118 let links = element.getElementsByTagName("a"); | 123 let links = element.getElementsByTagName("a"); |
119 | 124 |
120 for (let i = 0; i < links.length; i++) | 125 for (let i = 0; i < links.length; i++) |
121 { | 126 { |
122 if (typeof args[i] == "string") | 127 if (typeof args[i] == "string") |
123 { | 128 { |
124 links[i].href = args[i]; | 129 links[i].href = args[i]; |
125 links[i].setAttribute("target", "_blank"); | 130 links[i].setAttribute("target", "_blank"); |
126 } | 131 } |
127 else if (typeof args[i] == "function") | 132 else if (typeof args[i] == "function") |
128 { | 133 { |
129 links[i].href = "javascript:void(0);"; | 134 links[i].href = "javascript:void(0);"; |
130 links[i].addEventListener("click", args[i], false); | 135 links[i].addEventListener("click", args[i], false); |
131 } | 136 } |
132 } | 137 } |
133 } | 138 } |
134 | 139 |
135 function openFilters() | 140 function openFilters() |
136 { | 141 { |
137 ext.backgroundPage.sendMessage({type: "app.open", what: "options"}); | 142 ext.backgroundPage.sendMessage({type: "app.open", what: "options"}); |
138 } | 143 } |
139 | 144 |
140 document.addEventListener("DOMContentLoaded", onDOMLoaded, false); | 145 document.addEventListener("DOMContentLoaded", onDOMLoaded, false); |
141 } | 146 }()); |
LEFT | RIGHT |