From 6f2e449e617d4bc01ae10fd9ab3a1cd7593920d0 Mon Sep 17 00:00:00 2001 From: Deathamns Date: Wed, 5 Nov 2014 17:01:18 +0100 Subject: [PATCH] Preferences button for Safari Brings back the possibility to click a checkbox which opens the extension settings from Safari's Preferences/Extensions. --- src/.jshintrc => .jshintrc | 0 meta/config.json | 5 ++++- meta/safariextz/Settings.plist | 22 ++++++++++++++++++++++ src/Info.plist | 2 +- src/Settings.plist | 22 ++++++++++++++++++++++ src/js/vapi-background.js | 6 ++++++ src/js/vapi-client.js | 10 +++++----- tools/build_meta.py | 8 +++++--- 8 files changed, 65 insertions(+), 10 deletions(-) rename src/.jshintrc => .jshintrc (100%) create mode 100644 meta/safariextz/Settings.plist create mode 100644 src/Settings.plist diff --git a/src/.jshintrc b/.jshintrc similarity index 100% rename from src/.jshintrc rename to .jshintrc diff --git a/meta/config.json b/meta/config.json index 8d9af82c4..6bae27b02 100644 --- a/meta/config.json +++ b/meta/config.json @@ -16,7 +16,10 @@ }, "safariextz": { "app_id": "net.gorhill.uBlock", - "manifest": "Info.plist", + "manifest": { + "Info": "Info.plist", + "Settings": "Settings.plist" + }, "file_ext": ".safariextz", "developer_identifier": "", "cert_dir": "../meta/safariextz/certs/", diff --git a/meta/safariextz/Settings.plist b/meta/safariextz/Settings.plist new file mode 100644 index 000000000..40cc1ff16 --- /dev/null +++ b/meta/safariextz/Settings.plist @@ -0,0 +1,22 @@ + + + + + + DefaultValue + + FalseValue + + Key + open_prefs + Secure + + Title + Click to see the Preferences + TrueValue + + Type + CheckBox + + + diff --git a/src/Info.plist b/src/Info.plist index bcb06731b..2ac5baa23 100644 --- a/src/Info.plist +++ b/src/Info.plist @@ -15,7 +15,7 @@ CFBundleShortVersionString 0.7.0.9 CFBundleVersion - 1455205 + 1455425 Chrome Database Quota diff --git a/src/Settings.plist b/src/Settings.plist new file mode 100644 index 000000000..40cc1ff16 --- /dev/null +++ b/src/Settings.plist @@ -0,0 +1,22 @@ + + + + + + DefaultValue + + FalseValue + + Key + open_prefs + Secure + + Title + Click to see the Preferences + TrueValue + + Type + CheckBox + + + diff --git a/src/js/vapi-background.js b/src/js/vapi-background.js index cad732e02..b5502faa8 100644 --- a/src/js/vapi-background.js +++ b/src/js/vapi-background.js @@ -287,6 +287,12 @@ if (self.chrome) { ] ); + safari.extension.settings.addEventListener('change', function(e) { + if (e.key === 'open_prefs') { + vAPI.tabs.open({url: 'dashboard.html', active: true}); + } + }, false); + vAPI.storage = { _storage: safari.extension.settings, diff --git a/src/js/vapi-client.js b/src/js/vapi-client.js index 0b9e22e48..26c0b0858 100644 --- a/src/js/vapi-client.js +++ b/src/js/vapi-client.js @@ -56,10 +56,10 @@ if (self.chrome) { vAPI.chrome = true; vAPI.messaging = { port: null, + channels: {}, + listeners: {}, requestId: 0, connectorId: uniqueId(), - listeners: {}, - channels: {}, connector: messagingConnector, setup: function() { this.port = chrome.runtime.connect({name: this.connectorId}); @@ -111,10 +111,10 @@ if (self.chrome) { // relevant? // https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html#//apple_ref/doc/uid/TP40009977-CH14-SW12 vAPI.messaging = { - connectorId: uniqueId(), - requestId: 0, - listeners: {}, channels: {}, + listeners: {}, + requestId: 0, + connectorId: uniqueId(), connector: messagingConnector, setup: function() { this._connector = function(msg) { diff --git a/tools/build_meta.py b/tools/build_meta.py index 4aa2be136..8fe24d19a 100644 --- a/tools/build_meta.py +++ b/tools/build_meta.py @@ -5,7 +5,7 @@ import re import json from time import strftime from datetime import datetime -from shutil import rmtree as rmt +from shutil import rmtree as rmt, copy from collections import OrderedDict from xml.sax.saxutils import escape @@ -99,11 +99,13 @@ with open(pj(src_dir, vendors['crx']['manifest']), 'wt', encoding='utf-8', newli ) -with open(pj(src_dir, vendors['safariextz']['manifest']), 'wt', encoding='utf-8', newline='\n') as f: +with open(pj(src_dir, vendors['safariextz']['manifest']['Info']), 'wt', encoding='utf-8', newline='\n') as f: config['app_id'] = vendors['safariextz']['app_id'] config['description'] = descriptions[config['def_lang']] - with open(pj(meta_dir, 'safariextz', vendors['safariextz']['manifest']), 'r') as cf: + with open(pj(meta_dir, 'safariextz', vendors['safariextz']['manifest']['Info']), 'r') as cf: cf_content = cf.read() f.write(cf_content.format(**config)) + +copy(pj(meta_dir, 'safariextz', vendors['safariextz']['manifest']['Settings']), pj(src_dir, vendors['safariextz']['manifest']['Settings']))