Index: firstRun.js |
=================================================================== |
--- a/firstRun.js |
+++ b/firstRun.js |
@@ -18,103 +18,87 @@ |
/* globals checkShareResource, getDocLink, openSharePopup, setLinks, E */ |
juliandoucette
2017/10/21 16:18:43
@greiner, @saroyanm
"[Deprecation] Synchronous XM
Thomas Greiner
2017/10/23 12:01:55
No, this issue only applies to the development env
|
"use strict"; |
(function() |
{ |
function onDOMLoaded() |
{ |
- // Set up logo image |
- let logo = E("logo"); |
- logo.src = "skin/abp-128.png"; |
- let errorCallback = function() |
+ function initLanguageSelection() |
+ { |
+ const locale = document.getElementById("navbar-locale-selected"); |
+ // skip if page does not have language selection (EG: blog) |
+ if (!locale) |
+ return; |
+ |
+ locale.onclick = function() |
+ { |
+ toggleClass(document.getElementById("navbar-locale-menu"), "visible"); |
+ }; |
+ } |
+ |
+ function navigationClick(event) |
{ |
- logo.removeEventListener("error", errorCallback, false); |
- // We are probably in Chrome/Opera/Safari, the image has a different path. |
- logo.src = "icons/detailed/abp-128.png"; |
- }; |
- logo.addEventListener("error", errorCallback, false); |
+ toggleClass(document.getElementById("navbar-menu"), "visible"); |
+ } |
+ |
+ function initMenu() |
+ { |
+ document.getElementById("navbar-menu-toggle").onclick = navigationClick; |
+ } |
- // Set up URLs |
- getDocLink("donate", (link) => |
+ function toggleClass(element, className) |
Thomas Greiner
2017/10/23 13:17:43
We've already been using `Element.classList` in ot
juliandoucette
2017/10/23 13:27:35
He copied this from abp.org main.js. It's unclear
juliandoucette
2017/10/23 13:29:58
(On that note, we could polyfill classList and ref
Thomas Greiner
2017/10/23 16:45:49
From what I see, if we remove the language selecti
juliandoucette
2017/10/24 14:22:18
See https://codereview.adblockplus.org/29587659
martin
2017/10/26 10:33:16
Done.
|
+ { |
+ if (hasClass(element, className)) |
+ removeClass(element, className); |
+ else |
+ addClass(element, className); |
+ } |
+ |
+ function hasClass(element, className) |
{ |
- E("donate").href = link; |
- }); |
+ return !!element.className.match("\\b" + escapeRegExp(className) + "\\b"); |
+ } |
- getDocLink("contributors", (link) => |
+ function addClass(element, className) |
{ |
- E("contributors").href = link; |
- }); |
+ if (hasClass(element, className)) |
+ return; |
+ |
+ if (element.className.length) |
+ element.className += " "; |
+ element.className += className; |
+ } |
- getDocLink("acceptable_ads_criteria", (link) => |
+ function removeClass(element, className) |
+ { |
+ const regExp = new RegExp("\\s*\\b" + escapeRegExp(className) + "\\b\\s*"); |
+ element.className = element.className.replace(regExp, ""); |
+ } |
+ |
+ function escapeRegExp(string) |
{ |
- setLinks("acceptable-ads-explanation", link, openFilters); |
- }); |
+ return string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); |
+ } |
+ |
+ initLanguageSelection(); |
+ initMenu(); |
- getDocLink("contribute", (link) => |
+ const optionsTrigger = E("options-trigger"); |
+ |
+ optionsTrigger.addEventListener("click", (e) => |
{ |
- setLinks("share-headline", link); |
+ e.preventDefault(); |
+ openFilters(); |
}); |
- browser.runtime.sendMessage({ |
- type: "app.get", |
- what: "issues" |
- }, (issues) => |
- { |
- // Show warning if filterlists settings were reinitialized |
- if (issues.filterlistsReinitialized) |
- { |
- E("filterlistsReinitializedWarning").removeAttribute("hidden"); |
- setLinks("filterlistsReinitializedWarning", openFilters); |
- } |
- }); |
- |
- updateSocialLinks(); |
- |
- ext.onMessage.addListener((message) => |
- { |
- if (message.type == "subscriptions.respond") |
- { |
- updateSocialLinks(); |
- } |
- }); |
- browser.runtime.sendMessage({ |
- type: "subscriptions.listen", |
- filter: ["added", "removed", "updated", "disabled"] |
- }); |
- } |
- |
- function updateSocialLinks() |
- { |
- for (let network of ["twitter", "facebook", "gplus"]) |
- { |
- let link = E("share-" + network); |
- checkShareResource(link.getAttribute("data-script"), (isBlocked) => |
- { |
- // Don't open the share page if the sharing script would be blocked |
- if (isBlocked) |
- link.removeEventListener("click", onSocialLinkClick, false); |
- else |
- link.addEventListener("click", onSocialLinkClick, false); |
- }); |
- } |
- } |
- |
- function onSocialLinkClick(event) |
- { |
- if (window.matchMedia("(max-width: 970px)").matches) |
- return; |
- |
- event.preventDefault(); |
- |
- getDocLink(event.target.id, (link) => |
- { |
- openSharePopup(link); |
- }); |
+ setLinks("first-column-description", " https://adblockplus.org/terms"); |
+ setLinks("third-column-description", "https://adblockplus.org/acceptable-ads#optout"); |
+ setLinks("copyright-notice", "https://eyeo.com"); |
} |
function openFilters() |
{ |
browser.runtime.sendMessage({type: "app.open", what: "options"}); |
} |
document.addEventListener("DOMContentLoaded", onDOMLoaded, false); |