| Index: stats.js |
| =================================================================== |
| new file mode 100644 |
| --- /dev/null |
| +++ b/stats.js |
| @@ -0,0 +1,135 @@ |
| +/* |
| + * This file is part of Adblock Plus <http://adblockplus.org/>, |
| + * Copyright (C) 2006-2013 Eyeo GmbH |
| + * |
| + * Adblock Plus is free software: you can redistribute it and/or modify |
| + * it under the terms of the GNU General Public License version 3 as |
| + * published by the Free Software Foundation. |
| + * |
| + * Adblock Plus is distributed in the hope that it will be useful, |
| + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| + * GNU General Public License for more details. |
| + * |
| + * You should have received a copy of the GNU General Public License |
| + * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| + */ |
| + |
| +(function() |
| +{ |
| + var backgroundPage = chrome.extension.getBackgroundPage(); |
| + var require = backgroundPage.require; |
| + var getStats = require("stats").getStats; |
| + var FilterNotifier = require("filterNotifier").FilterNotifier; |
| + |
| + var currentTabId; |
| + var shareURL = "https://adblockplus.org/"; |
| + |
| + var messageMark = {}; |
| + var shareLinks = { |
| + facebook: ["https://www.facebook.com/dialog/feed", { |
| + app_id: 475542399197328, |
|
Wladimir Palant
2013/09/24 12:43:36
Just realized that this by far exceeds the 32 bit
|
| + link: shareURL, |
| + redirect_uri: "https://www.facebook.com/", |
| + ref: "adcounter", |
| + name: messageMark, |
| + actions: JSON.stringify([ |
| + { |
| + name: i18n.getMessage("stats_share_download"), |
| + link: shareURL |
| + } |
| + ]) |
| + }], |
| + gplus: ["https://plus.google.com/share", { |
| + url: shareURL |
| + }], |
| + twitter: ["https://twitter.com/intent/tweet", { |
| + text: messageMark, |
| + url: shareURL, |
| + via: "AdblockPlus" |
| + }] |
| + }; |
| + |
| + function createShareLink(network, blockedCount) |
| + { |
| + var url = shareLinks[network][0]; |
| + var params = shareLinks[network][1]; |
| + |
| + var querystring = []; |
| + for (var key in params) |
| + { |
| + var value = params[key]; |
| + if (value == messageMark) |
| + value = i18n.getMessage("stats_share_message", blockedCount); |
| + querystring.push(encodeURIComponent(key) + "=" + encodeURIComponent(value)); |
| + } |
| + return url + "?" + querystring.join("&"); |
| + } |
| + |
| + function onLoad() |
| + { |
| + document.getElementById("shareBox").addEventListener("click", share, false); |
| + document.getElementById("share").addEventListener("click", toggleShareBox, false); |
| + |
| + // Update stats |
| + chrome.tabs.query({ |
| + active: true, |
| + windowId: chrome.windows.WINDOW_ID_CURRENT |
| + }, function(tabs) |
| + { |
| + if (tabs.length > 0) |
| + { |
| + currentTabId = tabs[0].id; |
| + updateStats(); |
| + |
| + FilterNotifier.addListener(onNotify); |
| + |
| + document.getElementById("statsContainer").removeAttribute("hidden"); |
| + } |
|
Wladimir Palant
2013/09/24 12:43:36
How about |else window.close()| here just in case?
Thomas Greiner
2013/09/24 14:40:58
Closing the popup right after a user clicked on th
Wladimir Palant
2013/09/25 08:44:51
You are right of course. I forgot that the stats a
|
| + }); |
| + } |
| + |
| + function onUnload() |
| + { |
| + FilterNotifier.removeListener(onNotify); |
| + } |
| + |
| + function onNotify(action, item) |
| + { |
| + if (action == "filter.hitCount") |
| + updateStats(); |
| + } |
| + |
| + function updateStats() |
| + { |
| + var statsPage = document.getElementById("statsPage"); |
| + var blockedPage = getStats("blocked", currentTabId).toLocaleString(); |
| + i18n.setElementText(statsPage, "stats_label_page", [blockedPage]); |
| + |
| + var statsTotal = document.getElementById("statsTotal"); |
| + var blockedTotal = getStats("blocked").toLocaleString(); |
| + i18n.setElementText(statsTotal, "stats_label_total", [blockedTotal]); |
| + } |
| + |
| + function toggleShareBox(ev) |
| + { |
| + var shareBox = document.getElementById("shareBox"); |
| + shareBox.hidden = !shareBox.hidden; |
| + } |
| + |
| + function share(ev) |
| + { |
| + // Easter Egg |
| + var blocked = getStats("blocked"); |
| + if (blocked <= 9000 || blocked >= 10000) |
| + blocked = blocked.toLocaleString(); |
| + else |
| + blocked = i18n.getMessage("stats_over", (9000).toLocaleString()); |
| + |
| + var url = createShareLink(ev.target.dataset.social, blocked); |
| + chrome.tabs.create({url: url}); |
| + } |
| + |
| + document.addEventListener("DOMContentLoaded", onLoad, false); |
| + window.addEventListener("unload", onUnload, false); |
| +})(); |