[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