diff options
author | Benjamin Barenblat <bbaren@google.com> | 2019-05-09 16:34:32 -0400 |
---|---|---|
committer | Benjamin Barenblat <bbaren@google.com> | 2019-05-09 16:34:32 -0400 |
commit | 1277f853696c26dba7960462ee49c5d9d39eab47 (patch) | |
tree | a6729619754afc4839298c175727ff31984f2dc4 | |
parent | dcf999ad1f5c048adaf504ac2515bb814adb4b09 (diff) |
Add option to go directly to the latest capturev1.1.0
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | background.js | 10 | ||||
-rw-r--r-- | manifest.json | 9 | ||||
-rw-r--r-- | options.html | 21 | ||||
-rw-r--r-- | options.js | 47 |
5 files changed, 85 insertions, 4 deletions
@@ -14,7 +14,7 @@ NAME = wayback_machine_button -FILES = background.js manifest.json $(ICONS) +FILES = background.js manifest.json options.html options.js $(ICONS) ICONS = icon128.png icon16.png icon48.png .PHONY: all diff --git a/background.js b/background.js index 6beab65..4494843 100644 --- a/background.js +++ b/background.js @@ -13,7 +13,15 @@ // the License. chrome.pageAction.onClicked.addListener(function(tab) { - chrome.tabs.update(null, {url: 'https://web.archive.org/web/*/' + tab.url}); + chrome.storage.sync.get({ + clickBehavior: 'search', + }, function(items) { + let waybackStem = 'https://web.archive.org/web/*/'; + if (items.clickBehavior == 'direct') { + waybackStem = 'https://web.archive.org/web/'; + } + chrome.tabs.update(null, {url: waybackStem + tab.url}); + }); }); chrome.runtime.onInstalled.addListener(function() { diff --git a/manifest.json b/manifest.json index 586022a..7985aeb 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Wayback Machine Lookup", - "version": "1.0.1", + "version": "1.1.0", "description": "Reopen the current tab in the Wayback Machine", "icons": { "16": "icon16.png", @@ -17,8 +17,13 @@ "scripts": ["background.js"] }, "minimum_chrome_version": "33", + "options_ui": { + "chrome_style": true, + "page": "options.html" + }, "permissions": [ "activeTab", - "declarativeContent" + "declarativeContent", + "storage" ] } diff --git a/options.html b/options.html new file mode 100644 index 0000000..1ea1d58 --- /dev/null +++ b/options.html @@ -0,0 +1,21 @@ +<!-- Copyright 2019 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); you may not +use this file except in compliance with the License. You may obtain a copy of +the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +License for the specific language governing permissions and limitations under +the License. --> +<!DOCTYPE html> +<title>Wayback Machine Lookup</title> +<form id="clickBehavior"> + Clicking the button:<br> + <label><input type="radio" name="clickBehavior" value="search"> Searches for the page in the Wayback Machine.</label><br> + <label><input type="radio" name="clickBehavior" value="direct"> Opens the most recent capture of the page.</label> +</form> +<script src="options.js"></script> diff --git a/options.js b/options.js new file mode 100644 index 0000000..b456900 --- /dev/null +++ b/options.js @@ -0,0 +1,47 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy of +// the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. + +const DEFAULT_OPTIONS = { + clickBehavior: 'search', +}; + +document.addEventListener('DOMContentLoaded', function() { + chrome.storage.sync.get(DEFAULT_OPTIONS, function(items) { + for (let button of document.forms.clickBehavior) { + if (button.value == items.clickBehavior) { + button.checked = true; + break; + } + } + }); +}); + +function saveOptions() { + let clickBehavior = DEFAULT_OPTIONS.clickBehavior; + for (let button of document.forms.clickBehavior) { + if (button.checked) { + clickBehavior = button.value; + break; + } + } + chrome.storage.sync.set({ + clickBehavior: clickBehavior, + }); +} + +for (let button of document.forms.clickBehavior) { + button.addEventListener('change', function(event) { + saveOptions(); + }); +} |