| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * This file is part of Adblock Plus <http://adblockplus.org/>, |    2  * This file is part of Adblock Plus <http://adblockplus.org/>, | 
|    3  * Copyright (C) 2006-2013 Eyeo GmbH |    3  * Copyright (C) 2006-2013 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 var backgroundPage = ext.backgroundPage.getWindow(); |   18 var backgroundPage = ext.backgroundPage.getWindow(); | 
|   19 var imports = ["require", "isWhitelisted", "extractHostFromURL", "refreshIconAnd
     ContextMenu"]; |   19 var imports = ["require", "isWhitelisted", "extractHostFromURL", "refreshIconAnd
     ContextMenu", "openOptions"]; | 
|   20 for (var i = 0; i < imports.length; i++) |   20 for (var i = 0; i < imports.length; i++) | 
|   21   window[imports[i]] = backgroundPage[imports[i]]; |   21   window[imports[i]] = backgroundPage[imports[i]]; | 
|   22  |   22  | 
|   23 var Filter = require("filterClasses").Filter; |   23 var Filter = require("filterClasses").Filter; | 
|   24 var FilterStorage = require("filterStorage").FilterStorage; |   24 var FilterStorage = require("filterStorage").FilterStorage; | 
 |   25 var Prefs = require("prefs").Prefs; | 
|   25  |   26  | 
|   26 var tab = null; |   27 var tab = null; | 
|   27  |   28  | 
|   28 function init() |   29 function init() | 
|   29 { |   30 { | 
 |   31   // Mark page as local to hide non-relevant elements | 
 |   32   ext.windows.getLastFocused(function(win) | 
 |   33   { | 
 |   34     win.getActiveTab(function(tab) | 
 |   35     { | 
 |   36       if (!/^https?:\/\//.exec(tab.url)) | 
 |   37         document.body.classList.add("local"); | 
 |   38     }); | 
 |   39   }); | 
 |   40    | 
|   30   // Attach event listeners |   41   // Attach event listeners | 
|   31   $("#enabled").click(toggleEnabled); |   42   document.getElementById("enabled").addEventListener("click", toggleEnabled, fa
     lse); | 
|   32   $("#clickHideButton").click(activateClickHide); |   43   document.getElementById("clickhide").addEventListener("click", activateClickHi
     de, false); | 
|   33   $("#cancelButton").click(cancelClickHide); |   44   document.getElementById("clickhide-cancel").addEventListener("click", cancelCl
     ickHide, false); | 
|   34   $("#optionsButton").click(openOptions); |   45   document.getElementById("options").addEventListener("click", function() | 
|   35  |   46   { | 
 |   47     openOptions(); | 
 |   48   }, false); | 
 |   49    | 
 |   50   // Set up collapsing of menu items | 
 |   51   var collapsers = document.getElementsByClassName("collapse"); | 
 |   52   for (var i = 0; i < collapsers.length; i++) | 
 |   53   { | 
 |   54     var collapser = collapsers[i]; | 
 |   55     collapser.addEventListener("click", toggleCollapse, false); | 
 |   56     if (!Prefs[collapser.dataset.option]) | 
 |   57       document.getElementById(collapser.dataset.collapsable).classList.add("coll
     apsed"); | 
 |   58   } | 
 |   59    | 
|   36   // Ask content script whether clickhide is active. If so, show cancel button. |   60   // Ask content script whether clickhide is active. If so, show cancel button. | 
|   37   // If that isn't the case, ask background.html whether it has cached filters. 
     If so, |   61   // If that isn't the case, ask background.html whether it has cached filters. 
     If so, | 
|   38   // ask the user whether she wants those filters. |   62   // ask the user whether she wants those filters. | 
|   39   // Otherwise, we are in default state. |   63   // Otherwise, we are in default state. | 
|   40   ext.windows.getLastFocused(function(win) { |   64   ext.windows.getLastFocused(function(win) | 
|   41     win.getActiveTab(function(t) { |   65   { | 
 |   66     win.getActiveTab(function(t) | 
 |   67     { | 
|   42       tab = t; |   68       tab = t; | 
|   43       document.getElementById("enabled").checked = !isWhitelisted(tab.url); |   69       document.getElementById("enabled").classList.toggle("off", isWhitelisted(t
     ab.url)); | 
|   44       document.getElementById("enabledCheckboxAndLabel").style.display = "block"
     ; |   70        | 
|   45  |   71       tab.sendMessage({type: "get-clickhide-state"}, function(response) | 
|   46       tab.sendMessage({type: "get-clickhide-state"}, function(response) { |   72       { | 
|   47         if(response.active) |   73         document.body.classList.toggle("clickhide-active", response.active); | 
|   48           clickHideActiveStuff(); |  | 
|   49         else |  | 
|   50           clickHideInactiveStuff(); |  | 
|   51       }); |   74       }); | 
|   52     }); |   75     }); | 
|   53   }); |   76   }); | 
|   54 } |   77 } | 
|   55 $(init); |   78 window.addEventListener("DOMContentLoaded", init, false); | 
|   56  |   79  | 
|   57 function toggleEnabled() |   80 function toggleEnabled() | 
|   58 { |   81 { | 
|   59   var checked = document.getElementById("enabled").checked; |   82   var enabledButton = document.getElementById("enabled") | 
|   60   if (checked) |   83   var disabled = enabledButton.classList.toggle("off"); | 
 |   84   if (disabled) | 
 |   85   { | 
 |   86     var host = extractHostFromURL(tab.url).replace(/^www\./, ""); | 
 |   87     var filter = Filter.fromText("@@||" + host + "^$document"); | 
 |   88     if (filter.subscriptions.length && filter.disabled) | 
 |   89       filter.disabled = false; | 
 |   90     else | 
 |   91     { | 
 |   92       filter.disabled = false; | 
 |   93       FilterStorage.addFilter(filter); | 
 |   94     } | 
 |   95   } | 
 |   96   else | 
|   61   { |   97   { | 
|   62     // Remove any exception rules applying to this URL |   98     // Remove any exception rules applying to this URL | 
|   63     var filter = isWhitelisted(tab.url); |   99     var filter = isWhitelisted(tab.url); | 
|   64     while (filter) |  100     while (filter) | 
|   65     { |  101     { | 
|   66       FilterStorage.removeFilter(filter); |  102       FilterStorage.removeFilter(filter); | 
|   67       if (filter.subscriptions.length) |  103       if (filter.subscriptions.length) | 
|   68         filter.disabled = true; |  104         filter.disabled = true; | 
|   69       filter = isWhitelisted(tab.url); |  105       filter = isWhitelisted(tab.url); | 
|   70     } |  106     } | 
|   71   } |  107   } | 
|   72   else |  108    | 
|   73   { |  | 
|   74     var host = extractHostFromURL(tab.url).replace(/^www\./, ""); |  | 
|   75     var filter = Filter.fromText("@@||" + host + "^$document"); |  | 
|   76     if (filter.subscriptions.length && filter.disabled) |  | 
|   77       filter.disabled = false; |  | 
|   78     else |  | 
|   79     { |  | 
|   80       filter.disabled = false; |  | 
|   81       FilterStorage.addFilter(filter); |  | 
|   82     } |  | 
|   83   } |  | 
|   84  |  | 
|   85   refreshIconAndContextMenu(tab); |  109   refreshIconAndContextMenu(tab); | 
|   86 } |  110 } | 
|   87  |  111  | 
|   88 function activateClickHide() |  112 function activateClickHide() | 
|   89 { |  113 { | 
|   90   clickHideActiveStuff(); |  114   document.body.classList.add("clickhide-active"); | 
|   91   tab.sendMessage({type: "clickhide-activate"}); |  115   tab.sendMessage({type: "clickhide-activate"}); | 
|   92  |  116    | 
|   93   // Close the popup after a few seconds, so user doesn't have to |  117   // Close the popup after a few seconds, so user doesn't have to | 
|   94   activateClickHide.timeout = window.setTimeout(window.close, 5000); |  118   activateClickHide.timeout = window.setTimeout(window.close, 5000); | 
|   95 } |  119 } | 
|   96  |  120  | 
|   97 function cancelClickHide() |  121 function cancelClickHide() | 
|   98 { |  122 { | 
|   99   if (activateClickHide.timeout) |  123   if (activateClickHide.timeout) | 
|  100   { |  124   { | 
|  101     window.clearTimeout(activateClickHide.timeout); |  125     window.clearTimeout(activateClickHide.timeout); | 
|  102     activateClickHide.timeout = null; |  126     activateClickHide.timeout = null; | 
|  103   } |  127   } | 
|  104   clickHideInactiveStuff(); |  128   document.body.classList.remove("clickhide-active"); | 
|  105   tab.sendMessage({type: "clickhide-deactivate"}); |  129   tab.sendMessage({type: "clickhide-deactivate"}); | 
|  106 } |  130 } | 
|  107  |  131  | 
|  108 function openOptions() |  132 function toggleCollapse(event) | 
|  109 { |  133 { | 
|  110   backgroundPage.openOptions(); |  134   var collapser = event.currentTarget; | 
 |  135   Prefs[collapser.dataset.option] = !Prefs[collapser.dataset.option]; | 
 |  136   collapser.parentNode.classList.toggle("collapsed"); | 
|  111 } |  137 } | 
|  112  |  | 
|  113 function clickHideActiveStuff() |  | 
|  114 { |  | 
|  115   document.getElementById("enabledCheckboxAndLabel").style.display = "none"; |  | 
|  116   document.getElementById("clickHideInactiveStuff").style.display = "none"; |  | 
|  117   document.getElementById("clickHideActiveStuff").style.display = "inherit"; |  | 
|  118 } |  | 
|  119  |  | 
|  120 function clickHideInactiveStuff() |  | 
|  121 { |  | 
|  122   document.getElementById("enabledCheckboxAndLabel").style.display = "block"; |  | 
|  123   document.getElementById("clickHideActiveStuff").style.display = "none"; |  | 
|  124   document.getElementById("clickHideInactiveStuff").style.display = "inherit"; |  | 
|  125 } |  | 
| OLD | NEW |