[tbb-commits] [torbutton/master] Bug 25016: Remove 2017 donation banner
gk at torproject.org
gk at torproject.org
Fri Feb 2 08:11:51 UTC 2018
commit 1cf0f11380c6f9fddf2fef54966390801ba7a2b1
Author: Arthur Edelstein <arthuredelstein at gmail.com>
Date: Wed Jan 24 20:37:49 2018 -0800
Bug 25016: Remove 2017 donation banner
The campaign is finished, so we can remove the banner.
I'm leaving in the strings in case we want to use
some of them next year.
---
src/chrome/content/aboutTor/aboutTor-content.js | 5 --
src/chrome/content/aboutTor/aboutTor.xhtml | 19 +---
src/chrome/content/aboutTor/donation_banner.js | 105 ----------------------
src/chrome/content/aboutTor/onion-hand.png | Bin 69055 -> 0 bytes
src/chrome/content/torbutton.js | 4 +-
src/chrome/skin/donation_banner.css | 113 -----------------------
src/modules/donation-banner.js | 115 ------------------------
7 files changed, 2 insertions(+), 359 deletions(-)
diff --git a/src/chrome/content/aboutTor/aboutTor-content.js b/src/chrome/content/aboutTor/aboutTor-content.js
index 95e8abd..ec515bb 100644
--- a/src/chrome/content/aboutTor/aboutTor-content.js
+++ b/src/chrome/content/aboutTor/aboutTor-content.js
@@ -105,11 +105,6 @@ var AboutTorListener = {
else
body.removeAttribute("showmanual");
- if (aData.bannerData)
- body.setAttribute("banner-data", aData.bannerData);
- else
- body.removeAttribute("banner-data");
-
// Setting body.initialized="yes" displays the body, which must be done
// at this point because our remaining initialization depends on elements
// being visible so that their size and position are accurate.
diff --git a/src/chrome/content/aboutTor/aboutTor.xhtml b/src/chrome/content/aboutTor/aboutTor.xhtml
index 0fca4b9..7ae4b8b 100644
--- a/src/chrome/content/aboutTor/aboutTor.xhtml
+++ b/src/chrome/content/aboutTor/aboutTor.xhtml
@@ -21,8 +21,6 @@
<title>&aboutTor.title;</title>
<link rel="stylesheet" type="text/css" media="all"
href="resource://torbutton/chrome/skin/aboutTor.css"/>
- <link rel="stylesheet" type="text/css" media="all"
- href="resource://torbutton/chrome/skin/donation_banner.css"/>
<script type="text/javascript;version=1.7">
<![CDATA[
window.addEventListener("pageshow", function() {
@@ -33,21 +31,6 @@ window.addEventListener("pageshow", function() {
</script>
</head>
<body dir="&locale.dir;">
- <div id="banner">
- <div id="banner-contents-container">
- <div id="banner-tagline"><span></span></div>
- <div id="banner-slogan"><span></span></div>
- <a id="banner-donate-button-link"
- href="https://www.torproject.org/donate/donate-pdr-tbb">
- <div id="banner-donate-button">
- <div id="banner-donate-button-inner">
- <span></span>
- </div>
- </div>
- </a>
- </div>
- </div>
- <div id="banner-spacer"></div>
<div id="torstatus" class="top">
<div id="torstatus-version"/>
<div id="torstatus-image"/>
@@ -129,6 +112,6 @@ window.addEventListener("pageshow", function() {
<p>&aboutTor.footer.label;
<a href="&aboutTor.learnMore.link;">&aboutTor.learnMore.label;</a></p>
</div>
- <script src="resource://torbutton/chrome/content/aboutTor/donation_banner.js"></script>
+
</body>
</html>
diff --git a/src/chrome/content/aboutTor/donation_banner.js b/src/chrome/content/aboutTor/donation_banner.js
deleted file mode 100644
index 85f6af1..0000000
--- a/src/chrome/content/aboutTor/donation_banner.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/* jshint esnext:true */
-
-let sel = selector => document.querySelector(selector);
-
-// Shrink the font size if the text in the given element is overflowing.
-let fitTextInElement = function (element) {
- element.style.fontSize = "8px";
- let defaultWidth = element.scrollWidth,
- defaultHeight = element.scrollHeight;
- let bestSize;
- for (let testSize = 8; testSize <= 40; testSize += 0.5) {
- element.style.fontSize = `${testSize}px`;
- if (element.scrollWidth <= defaultWidth &&
- element.scrollHeight <= defaultHeight) {
- bestSize = testSize;
- } else {
- break;
- }
- }
- element.style.fontSize = `${bestSize}px`;
-};
-
-// Increase padding at end to "squeeze" text, until just before
-// it gets squeezed so much that it gets longer vertically.
-let avoidWidows = function (element) {
- element.style.paddingRight = "0px";
- let originalWidth = element.scrollWidth;
- let originalHeight = element.scrollHeight;
- let bestPadding;
- for (let testPadding = 0; testPadding < originalWidth; testPadding += 0.5) {
- element.style.paddingRight = `${testPadding}px`;
- if (element.scrollHeight <= originalHeight) {
- bestPadding = testPadding;
- } else {
- break;
- }
- }
- element.style.paddingRight = `${bestPadding}px`;
- if (window.getComputedStyle(element).direction === "rtl") {
- element.style.paddingLeft = element.style.paddingRight;
- element.style.paddingRight = "0px";
- }
-};
-
-// Resize the text inside banner to fit.
-let updateTextSizes = function () {
- fitTextInElement(sel("#banner-tagline"));
- fitTextInElement(sel("#banner-slogan"));
- fitTextInElement(sel("#banner-donate-button-inner"));
- avoidWidows(sel("#banner-tagline span"));
-};
-
-// Returns a random integer x, such that 0 <= x < max
-let randomInteger = max => Math.floor(max * Math.random());
-
-// The main donation banner function.
-let runDonationBanner = function ({ taglines, slogan, mozilla, donate, shortLocale }) {
- try {
- sel("#banner-tagline span").innerText = taglines[randomInteger(taglines.length)];
- sel("#banner-slogan span").innerText = slogan;
- let donateButtonText = sel("#banner-donate-button-inner span");
- let rtl = window.getComputedStyle(donateButtonText).direction === "rtl";
- donateButtonText.innerHTML = donate + " " + (rtl ? "◀" : "▶");
- sel("#banner").style.display = "flex";
- sel("#banner-spacer").style.display = "block";
- addEventListener("resize", updateTextSizes);
- updateTextSizes();
- // Add a suffix corresponding to locale so we can send user
- // to a correctly-localized donation page via redirect.
- sel("#banner-donate-button-link").href += "-" + shortLocale;
- sel("#torstatus-image").style.display = "none";
- } catch (e) {
- // Something went wrong.
- console.error(e);
- sel("#banner").style.display = "none";
- sel("#bannerSpacer").style.display = "none";
- sel("#torstatus-image").style.display = "block";
- }
-};
-
-// Calls callback(attributeValue) when the specified attribute changes on
-// target. Returns a zero-arg function that stops observing.
-let observeAttribute = function (target, attributeName, callback) {
- let observer = new MutationObserver(mutations => {
- mutations.forEach(mutation => {
- if (mutation.type === "attributes" &&
- mutation.attributeName === attributeName) {
- callback(target.getAttribute(attributeName));
- }
- });
- });
- observer.observe(target, { attributes: true });
- return () => observer.disconnect();
-};
-
-// Start the donation banner if "toron" has been set to "yes".
-let stopObserving = observeAttribute(document.body, "toron", value => {
- stopObserving();
- if (value === "yes") {
- let bannerDataJSON = document.body.getAttribute("banner-data");
- if (bannerDataJSON && bannerDataJSON.length > 0) {
- runDonationBanner(JSON.parse(bannerDataJSON));
- }
- }
-});
diff --git a/src/chrome/content/aboutTor/onion-hand.png b/src/chrome/content/aboutTor/onion-hand.png
deleted file mode 100644
index 00a5a41..0000000
Binary files a/src/chrome/content/aboutTor/onion-hand.png and /dev/null differ
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 9abc1c5..64aa5b0 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -13,7 +13,6 @@ let { showDialog } = Cu.import("resource://torbutton/modules/utils.js", {});
let { unescapeTorString } = Cu.import("resource://torbutton/modules/utils.js", {});
let SecurityPrefs = Cu.import("resource://torbutton/modules/security-prefs.js", {});
let { bindPrefAndInit, observe } = Cu.import("resource://torbutton/modules/utils.js", {});
-let { bannerData } = Cu.import("resource://torbutton/modules/donation-banner.js", {});
const k_tb_last_browser_version_pref = "extensions.torbutton.lastBrowserVersion";
const k_tb_browser_update_needed_pref = "extensions.torbutton.updateNeeded";
@@ -451,8 +450,7 @@ var torbutton_abouttor_message_handler = {
torOn: torbutton_tor_check_ok(),
updateNeeded: torbutton_update_is_needed(),
showManual: torbutton_show_torbrowser_manual(),
- toolbarButtonXPos: torbutton_get_toolbarbutton_xpos(),
- bannerData: bannerData(),
+ toolbarButtonXPos: torbutton_get_toolbarbutton_xpos()
};
},
diff --git a/src/chrome/skin/donation_banner.css b/src/chrome/skin/donation_banner.css
deleted file mode 100644
index dd9d7be..0000000
--- a/src/chrome/skin/donation_banner.css
+++ /dev/null
@@ -1,113 +0,0 @@
-#banner {
- -khtml-user-select: none; /* Konqueror */
- -moz-user-select: none; /* Firefox */
- -ms-user-select: none; /* Internet Explorer/Edge */
- -webkit-touch-callout: none; /* iOS Safari */
- -webkit-user-select: none; /* Chrome/Safari/Opera */
- display: none;
- height: 150px;
- justify-content: center;
- left: 0px;
- margin-top: 0px;
- min-width: 900px;
- opacity: 1;
- position: absolute;
- user-select: none;
- width: 100%;
- z-index: 1;
-}
-#banner:before {
- background-color: #406;
- background-image: url('resource://torbutton/chrome/content/aboutTor/onion-hand.png');
- background-position: center;
- background-size: cover;
- content: "";
- height: 150px;
- left: 0px;
- position: absolute;
- top: 0px;
- width: 100%;
-}
-#banner:-moz-dir(rtl):before {
- transform: scaleX(-1);
-}
-#banner-contents-container {
- align-items: center;
- height: 100%;
- max-width: 700px;
- position: relative;
- width: 700px;
-}
-#banner-tagline {
- align-items: center;
- bottom: 60px;
- color: white;
- display: flex;
- font-family: monospace;
- font-size: 8px;
- font-weight: bold;
- left: 85px;
- position: absolute;
- right: 0px;
- text-align: start;
- text-transform: uppercase;
- top: 10px;
-}
-#banner-tagline:-moz-dir(rtl) {
- left: 0px;
- right: 85px;
-}
-#banner-slogan {
- align-items: center;
- bottom: 30px;
- color: #f8f8a0;
- display: flex;
- font-family: monospace;
- font-weight: bold;
- left: 85px;
- position: absolute;
- right: 285px;
- text-align: start;
- top: 90px;
- white-space: nowrap;
-}
-#banner-slogan:-moz-dir(rtl) {
- left: 285px;
- right: 85px;
-}
-#banner-donate-button {
- background-color: #13a513;
- border: 0px;
- bottom: 10px;
- color: #fbf7ef;
- font-family: sans-serif;
- font-size: 12px;
- font-weight: bold;
- left: 430px;
- letter-spacing: -0.00em;
- position: absolute;
- right: 0px;
- top: 100px;
-}
-#banner-donate-button:-moz-dir(rtl) {
- left: 0px;
- right: 430px;
-}
-#banner-donate-button:hover {
- background-color: #38bc38;
-}
-#banner-donate-button-inner {
- bottom: 6px;
- display: flex;
- justify-content: center;
- left: 8px;
- position: absolute;
- right: 8px;
- top: 6px;
-}
-#banner-spacer {
- display: none;
- height: 150px;
- position: relative;
- top: 0;
-}
diff --git a/src/modules/donation-banner.js b/src/modules/donation-banner.js
deleted file mode 100644
index 6c205fe..0000000
--- a/src/modules/donation-banner.js
+++ /dev/null
@@ -1,115 +0,0 @@
-/* jshint esversion:6 */
-
-const Cu = Components.utils;
-
-// ### Import Mozilla Services
-Cu.import("resource://gre/modules/Services.jsm");
-
-// A list of locales for which the banner has been translated.
-const kBannerLocales = [
- "de",
- "en",
- "es",
- "fa",
- "fr",
- "it",
- "nl",
- "pl",
- "pt",
- "ru",
- "sv",
- "tr",
-];
-
-// A list of donation page locales (at least redirects should exist).
-const kDonationPageLocales = [
- "ar",
- "de",
- "en",
- "es",
- "fa",
- "fr",
- "it",
- "ja",
- "ko",
- "nl",
- "pl",
- "pt",
- "ru",
- "tr",
- "vi",
- "zh",
-];
-
-const kPropertiesURL = "chrome://torbutton/locale/aboutTor.properties";
-const gStringBundle = Services.strings.createBundle(kPropertiesURL);
-
-// Check if we should show the banner, depends on
-// browser locale, current date, and how many times
-// we have already shown the banner.
-const shouldShowBanner = function (shortLocale) {
- try {
- // If our override test pref is true, then just show the banner regardless.
- if (Services.prefs.prefHasUserValue("extensions.torbutton.testBanner") &&
- Services.prefs.getBoolPref("extensions.torbutton.testBanner") === true) {
- return true;
- }
- // Don't show a banner if update is needed.
- let updateNeeded = Services.prefs.getBoolPref("extensions.torbutton.updateNeeded");
- if (updateNeeded) {
- return false;
- }
- // Only show banner when we have that locale and if a donation redirect exists.
- if (kBannerLocales.indexOf(shortLocale) === -1 ||
- kDonationPageLocales.indexOf(shortLocale) === -1) {
- return false;
- }
- // Only show banner between 2017 Oct 23 and 2018 Jan 25.
- let now = new Date();
- let start = new Date(2017, 9, 23);
- let end = new Date(2018, 0, 26);
- let shownCountPref = "extensions.torbutton.donation_banner2017.shown_count";
- if (now < start || now > end) {
- // Clean up pref if not in use.
- Services.prefs.clearUserPref(shownCountPref);
- return false;
- }
- // Only show banner 50 times.
- let count = 0;
- if (Services.prefs.prefHasUserValue(shownCountPref)) {
- count = Services.prefs.getIntPref(shownCountPref);
- }
- if (count >= 50) {
- return false;
- }
- Services.prefs.setIntPref(shownCountPref, count+1);
- return true;
- } catch (e) {
- return false;
- }
-};
-
-// Read data needed for displaying banner on page.
-var bannerData = function () {
- // Read short locale.
- let locale = Services.prefs.getCharPref("general.useragent.locale");
- let shortLocale = locale.match(/[a-zA-Z]+/)[0].toLowerCase();
- if (!shouldShowBanner(shortLocale)) {
- return null;
- }
- // Load tag lines.
- let taglines = [];
- for (let index = 0; index < 5; ++index) {
- let tagline = gStringBundle.GetStringFromName(
- "aboutTor.donationBanner.tagline" + (index + 1));
- taglines.push(tagline);
- }
- // Read slogan, mozilla, and donate button text.
- let slogan = gStringBundle.GetStringFromName("aboutTor.donationBanner.slogan");
- let mozilla = gStringBundle.GetStringFromName("aboutTor.donationBanner.mozilla");
- let donate = gStringBundle.GetStringFromName("aboutTor.donationBanner.donate");
- return JSON.stringify({ taglines, slogan, mozilla, donate, shortLocale });
-};
-
-// Export utility functions for external use.
-var EXPORTED_SYMBOLS = ["bannerData"];
More information about the tbb-commits
mailing list