Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: static/js/index.js

Issue 29727563: Fixes #35 - Progressively enhance install button with appropriate links and text (Closed) Base URL: https://hg.adblockplus.org/web.adblockplus.org
Left Patch Set: Rebase Created April 3, 2018, 4:04 p.m.
Right Patch Set: Addressed comments #21 Created April 16, 2018, 4 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « static/css/index.css ('k') | static/js/vendor/bowser.js » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 "use strict"; 1 "use strict";
juliandoucette 2018/04/04 10:18:23 Why is this necessary?
ire 2018/04/05 14:32:43 I originally added it because it was in the main.j
juliandoucette 2018/04/06 12:35:22 Ack. I don't really think it's necessary. Therefo
ire 2018/04/06 13:21:48 Acknowledged.
2 2
3 (function() 3 (function()
4 { 4 {
5 var supportedPlatforms = { 5 var supportedPlatforms = {
6
6 // Desktop browsers 7 // Desktop browsers
juliandoucette 2018/04/04 10:18:23 NIT: Please put one blank line above to make this
ire 2018/04/05 14:32:44 Done.
7 "chrome": { 8 "chrome": "https://chrome.google.com/webstore/detail/cfhdojbkjhnklbpkdaibdcc ddilifddb",
8 installer: "https://chrome.google.com/webstore/detail/cfhdojbkjhnklbpkdaib dccddilifddb", 9 "opera": "https://addons.opera.com/extensions/details/opera-adblock/?display =en-US",
9 label: "Chrome" 10 "yandexbrowser": "https://chrome.google.com/webstore/detail/cfhdojbkjhnklbpk daibdccddilifddb",
10 }, 11 "msie": "https://update.adblockplus.org/latest/adblockplusie.exe",
11 "opera": { 12 "msedge": "https://www.microsoft.com/store/p/adblock-plus/9nblggh4r9nz",
12 installer: "https://addons.opera.com/extensions/details/opera-adblock/?dis play=en-US", 13 "firefox": "https://update.adblockplus.org/latest/adblockplusfirefox.xpi",
13 label: "Opera" 14 "safari": "https://update.adblockplus.org/latest/adblockplussafari.safariext z",
14 },
15 "yandexbrowser": {
16 installer: "https://chrome.google.com/webstore/detail/cfhdojbkjhnklbpkdaib dccddilifddb",
17 label: "Yandex Browser"
18 },
19 "msie": {
20 installer: "https://update.adblockplus.org/latest/adblockplusie.exe",
21 label: "Internet Explorer"
22 },
23 "msedge": {
24 installer: "https://www.microsoft.com/store/p/adblock-plus/9nblggh4r9nz",
25 label: "Micrsoft Edge"
26 },
27 "firefox": {
28 installer: "https://update.adblockplus.org/latest/adblockplusfirefox.xpi",
29 label: "Firefox"
30 },
31 "safari": {
32 installer: "https://update.adblockplus.org/latest/adblockplussafari.safari extz",
33 label: "Safari"
34 },
35 "maxthon": "", 15 "maxthon": "",
36 16
37 // Mobile platforms 17 // Mobile platforms
38 "ios": { 18 "ios": "https://eyeo.to/adblockbrowser/ios/abp-website",
39 installer: "https://eyeo.to/adblockbrowser/ios/abp-website", 19 "android": "https://eyeo.to/adblockbrowser/android/abp-website"
40 label: "iOS",
41 },
42 "android": {
43 installer: "https://eyeo.to/adblockbrowser/android/abp-website",
44 label: "Android"
45 }
46 }; 20 };
47 21
48 function setupHeroDownloadButton() 22 function setupHeroDownloadButton()
49 { 23 {
50 var heroDownloadButton = document.getElementById("hero-download-button"); 24 var detectedPlatform = Object.keys(supportedPlatforms)
51 var detectedPlatform; 25 .find(bowser.hasOwnProperty.bind(bowser));
52
53 for (var key in supportedPlatforms) if (bowser[key]) detectedPlatform = key;
juliandoucette 2018/04/04 10:18:23 NITs - It took me a minute to figure out what you
ire 2018/04/05 14:32:43 I'll go with your implementation. Done.
54 26
55 if (!detectedPlatform) return; 27 if (!detectedPlatform) return;
56 28
57 document.body.classList.add(detectedPlatform); 29 document.body.classList.add(detectedPlatform);
58 30
59 if (detectedPlatform === "maxthon") return; 31 if (detectedPlatform == "maxthon") return;
60 32
61 heroDownloadButton.href = supportedPlatforms[detectedPlatform].installer; 33 var heroDownloadButton = document.getElementById("hero-download-button");
34 heroDownloadButton.href = supportedPlatforms[detectedPlatform];
62 heroDownloadButton.textContent = document 35 heroDownloadButton.textContent = document
63 .getElementById("hero-download-button-template") 36 .getElementById("download-label-" + detectedPlatform)
64 .innerHTML 37 .textContent;
65 .replace("browser", supportedPlatforms[detectedPlatform].label);
juliandoucette 2018/04/04 10:18:23 "browser" is not fixed in the include. Therefore,
juliandoucette 2018/04/04 10:18:23 I think the browser name itself is translated in s
ire 2018/04/05 14:32:43 Done.
ire 2018/04/05 14:32:43 Done.
66 38
67 heroDownloadButton.addEventListener("click", function(event) 39 heroDownloadButton.addEventListener("click", function(event)
juliandoucette 2018/04/04 10:18:23 I think chrome.webstore.install works on other chr
ire 2018/04/05 14:32:43 You're right. I switch to checking for the "chrome
68 { 40 {
69 if (detectedPlatform !== "chrome") return; 41 if (typeof chrome == "undefined") return;
70 event.preventDefault(); 42 event.preventDefault();
71 chrome.webstore.install(); 43
44 try
45 {
46 chrome.webstore.install();
47 }
48 catch(error)
49 {
50 window.location = "/" + this.hreflang + "/download";
51 }
72 }); 52 });
73 } 53 }
74 54
75 if (bowser) setupHeroDownloadButton(); 55 if (typeof bowser != "undefined") setupHeroDownloadButton();
76 56
77 }()); 57 }());
LEFTRIGHT

Powered by Google App Engine
This is Rietveld