[Pkg-mozext-commits] [requestpolicy] 68/100: [bugfix] automatically update subscriptions.html on changes (when opened)

David Prévot taffit at moszumanska.debian.org
Fri Dec 12 22:57:00 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository requestpolicy.

commit b9138b0a18462fb4639256084c2f28029f0add9a
Author: myrdd <myrdd at users.noreply.github.com>
Date:   Thu Nov 6 14:12:28 2014 +0100

    [bugfix] automatically update subscriptions.html on changes (when opened)
    
    subscriptions.html shows the subscriptions; depending on the default policy, different
    list entries are displayed. So far the page has not been updated when the tab was open
    and the default policy was changed in another tab. See also 576d09d
---
 src/content/settings/subscriptions.html |  40 +++++------
 src/content/settings/subscriptions.js   | 115 ++++++++++++++++++++++----------
 2 files changed, 100 insertions(+), 55 deletions(-)

diff --git a/src/content/settings/subscriptions.html b/src/content/settings/subscriptions.html
index 9a409ff..944019c 100644
--- a/src/content/settings/subscriptions.html
+++ b/src/content/settings/subscriptions.html
@@ -39,7 +39,7 @@
         <div id="pagetitle" data-string="subscriptionPolicies"></div>
 
         <p class="learnmore">
-          <span data-string="subscriptionPoliciesDefinition"></span>
+          <span data-string="subscriptionPoliciesDefinition"/>
           <a href="https://www.requestpolicy.com/help-subscriptions.html"
              target="_blank" data-string="learnMore"></a></p>
 
@@ -47,10 +47,10 @@
           <tr data-default-policy="allow">
             <td data-string="privacy"></td>
             <td>
-              <div>
+              <div id="deny_trackers" class="subscription">
                 <label>
-                  <input type="checkbox" name="deny_trackers" id="sub-deny_trackers"/>
-                  <span data-string="subscriptionDenyTrackersDescription"></span>
+                  <input type="checkbox" name="deny_trackers"/>
+                  <span data-string="subscriptionDenyTrackersDescription"/>
                 </label>
               </div>
             </td>
@@ -58,22 +58,22 @@
           <tr data-default-policy="deny">
             <td data-string="usability"></td>
             <td>
-              <div>
+              <div id="allow_sameorg" class="subscription">
                 <label>
-                  <input type="checkbox" name="allow_sameorg" id="sub-allow_sameorg"/>
-                  <span data-string="subscriptionAllowSameOrgDescription"></span>
+                  <input type="checkbox" name="allow_sameorg"/>
+                  <span data-string="subscriptionAllowSameOrgDescription"/>
                 </label>
               </div>
-              <div>
+              <div id="allow_functionality" class="subscription">
                 <label>
-                  <input type="checkbox" name="allow_functionality" id="sub-allow_functionality"/>
-                  <span data-string="subscriptionAllowFunctionalityDescription"></span>
+                  <input type="checkbox" name="allow_functionality"/>
+                  <span data-string="subscriptionAllowFunctionalityDescription"/>
                 </label>
               </div>
-              <div>
+              <div id="allow_embedded" class="subscription">
                 <label>
-                  <input type="checkbox" name="allow_embedded" id="sub-allow_embedded"/>
-                  <span data-string="subscriptionAllowEmbeddedDescription"></span>
+                  <input type="checkbox" name="allow_embedded"/>
+                  <span data-string="subscriptionAllowEmbeddedDescription"/>
                 </label>
               </div>
             </td>
@@ -81,16 +81,16 @@
           <tr data-default-policy="deny">
             <td data-string="browser"></td>
             <td>
-              <div>
+              <div id="allow_mozilla" class="subscription">
                 <label>
-                  <input type="checkbox" name="allow_mozilla" id="sub-allow_mozilla"/>
-                  <span data-string="subscriptionAllowMozillaDescription"></span>
+                  <input type="checkbox" name="allow_mozilla"/>
+                  <span data-string="subscriptionAllowMozillaDescription"/>
                 </label>
               </div>
-              <div>
+              <div id="allow_extensions" class="subscription">
                 <label>
-                  <input type="checkbox" name="allow_extensions" id="sub-allow_extensions"/>
-                  <span data-string="subscriptionAllowExtensionsDescription"></span>
+                  <input type="checkbox" name="allow_extensions"/>
+                  <span data-string="subscriptionAllowExtensionsDescription"/>
                 </label>
               </div>
             </td>
@@ -102,4 +102,4 @@
 </table>
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/src/content/settings/subscriptions.js b/src/content/settings/subscriptions.js
index 9044f1c..6854cc0 100644
--- a/src/content/settings/subscriptions.js
+++ b/src/content/settings/subscriptions.js
@@ -1,4 +1,4 @@
-PAGE_STRINGS = [
+var PAGE_STRINGS = [
   'yourPolicy',
   'defaultPolicy',
   'subscriptions',
@@ -22,40 +22,93 @@ $(function () {
 
 var prefsChangedObserver = null;
 
+/**
+ * @param {String} policy
+ *                 "allow" or "deny"
+ */
+function getDefaultPolicyElements(policy) {
+  var selector = '[data-default-policy=' + policy + ']';
+  var matches = document.body.querySelectorAll(selector);
+  var elements = Array.prototype.slice.call(matches);
+  return elements;
+}
+
+function displayDefaultPolicyElements(policy, display) {
+  // note: display could be undefined.
+  display = display === false ? false : true;
+  var elements = getDefaultPolicyElements(policy);
+  for (var i = 0, len = elements.length; i < len; i++) {
+    if (display) {
+      elements[i].removeAttribute("style");
+    } else {
+      elements[i].style.display = 'none';
+    }
+  }
+}
+
+function getInputElement(subName) {
+  var elements = document.body.querySelectorAll('input[name=' + subName + ']');
+  if (elements.length <= 0) {
+    return null;
+  }
+  return elements[0];
+}
+
+function getAllSubscriptionElements() {
+  var divs = document.getElementsByClassName("subscription");
+  var elements = [];
+  for (var i = 0, len = divs.length; i < len; ++i) {
+    var div = divs[i];
+    elements.push({
+        id: div.id,
+        div: div,
+        input: getInputElement(div.id)});
+  }
+  return elements;
+}
 
 function updateDisplay() {
   var userSubs = rpService._subscriptions;
   var subsInfo = userSubs.getSubscriptionInfo();
-  for (var subName in subsInfo['official']) {
-    var el = document.getElementById('sub-' + subName);
-    if (!el) {
-      //throw 'Unable to find element with id: sub-' + subName;
-      continue;
-    }
-    el.checked = true;
+  var allSubElements = getAllSubscriptionElements();
+  debugger;
+  for (var i = 0, len = allSubElements.length; i < len; ++i) {
+    var element = allSubElements[i];
+    element.input.checked = (element.id in subsInfo['official']);
   }
+
+  if (rpService._defaultAllow) {
+    var currentPolicy = 'allow', otherPolicy = 'deny';
+  } else {
+    var currentPolicy = 'deny', otherPolicy = 'allow';
+  }
+  displayDefaultPolicyElements(currentPolicy, true);
+  displayDefaultPolicyElements(otherPolicy, false);
 }
 
-function onload() {
-  updateDisplay();
+
+
+function handleSubscriptionCheckboxChange(event) {
   var userSubs = rpService._subscriptions;
 
-  function handleSubscriptionChange(event) {
-    var subName = event.target.name;
-    var enabled = event.target.checked;
-    var subInfo = {};
-    subInfo['official'] = {};
-    subInfo['official'][subName] = true;
-    if (enabled) {
-      userSubs.addSubscription('official', subName);
-      observerService.notifyObservers(null, SUBSCRIPTION_ADDED_TOPIC,
-            JSON.stringify(subInfo));
-    } else {
-      userSubs.removeSubscription('official', subName);
-      observerService.notifyObservers(null, SUBSCRIPTION_REMOVED_TOPIC,
-            JSON.stringify(subInfo));
-    }
+  var subName = event.target.name;
+  var enabled = event.target.checked;
+  var subInfo = {};
+  subInfo['official'] = {};
+  subInfo['official'][subName] = true;
+  if (enabled) {
+    userSubs.addSubscription('official', subName);
+    observerService.notifyObservers(null, SUBSCRIPTION_ADDED_TOPIC,
+          JSON.stringify(subInfo));
+  } else {
+    userSubs.removeSubscription('official', subName);
+    observerService.notifyObservers(null, SUBSCRIPTION_REMOVED_TOPIC,
+          JSON.stringify(subInfo));
   }
+}
+
+function onload() {
+  updateDisplay();
 
   var available = {
     'allow_embedded' : {},
@@ -66,20 +119,12 @@ function onload() {
     'deny_trackers' : {}
   };
   for (var subName in available) {
-    var el = document.getElementById('sub-' + subName);
+    var el = getInputElement(subName);
     if (!el) {
       Logger.dump('Skipping unexpected official subName: ' + subName);
       continue;
     }
-    el.addEventListener('change', handleSubscriptionChange);
-  }
-
-  var selector = '[data-default-policy=' +
-    (rpService._defaultAllow ? 'deny' : 'allow') + ']';
-  var matches = document.body.querySelectorAll(selector);
-  var hideElements = Array.prototype.slice.call(matches);
-  for (var i = 0; i < hideElements.length; i++) {
-    hideElements[i].style.display = 'none';
+    el.addEventListener('change', handleSubscriptionCheckboxChange);
   }
 
   prefsChangedObserver = new common.PrefsChangedObserver(

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/requestpolicy.git



More information about the Pkg-mozext-commits mailing list