Browse Source

Started to add settings.

master
GRMrGecko 14 years ago
parent
commit
623d3ec596
  1. 17
      License.txt
  2. 22
      Settings.plist
  3. 22
      flashfire.js
  4. 18
      global.html
  5. 3
      preferences.css
  6. 82
      preferences.html

17
License.txt

@ -0,0 +1,17 @@
Copyright (c) 2010 Mr. Gecko's Media (James Coleman). All rights reserved. http://mrgeckosmedia.com/
Permission is granted, to any person obtaining a copy of this extension, to
use, copy, modify, merge, or redistribute this extension under the following terms:
1. THIS EXTENSION IS PROVIDED "AS IS" BY JAMES COLEMAN, WITHOUT WARRANTY OF
ANY KIND. IF YOUR SOFTWARE/EXTENSION/COMPUTER CRASH OR FAILS TO WORK IN ANY
WAY SHAPE OR FORM BECAUSE OF THIS EXTENSION, I (JAMES COLEMAN) AM NOT IN ANYWAY
RESPONSIBLE FOR YOUR PROBLEM. BUT, I MAY BE WILLING TO HELP YOU, NO PROMISES.
2. Redistributions of source code included in this extension must retain the
copyright notice above this license file without modifications.
3. Redistributions of binary must contain the copyright above this license file
without modifications.
4. Mr. Gecko's Media (James Coleman) is allowed to modify these terms with little or no notice to anyone.

22
Settings.plist

@ -4,9 +4,29 @@
<array>
<dict>
<key>DefaultValue</key>
<string></string>
<false/>
<key>Key</key>
<string>invisible</string>
<key>Title</key>
<string>Load invisible flash automatically</string>
<key>Type</key>
<string>CheckBox</string>
</dict>
<dict>
<key>DefaultValue</key>
<string>vimeo.com,mrgeckosmedia.net</string>
<key>Key</key>
<string>whitelist</string>
<key>Title</key>
<string>White list</string>
<key>Type</key>
<string>Hidden</string>
</dict>
<dict>
<key>Key</key>
<string>blacklist</string>
<key>Type</key>
<string>Hidden</string>
</dict>
</array>
</plist>

22
flashfire.js

@ -26,10 +26,10 @@ function handleBeforeLoadEvent(event) {
}
}
//console.log(safari.self.tab.canLoad(event, {name: "getSettings", data: ""}));
if (safari.self.tab.canLoad(event, {name: "getSetting", setting: "invisible"})==true && element.style.display=="none")
return;
event.preventDefault();
blockElement(element);
}
}
@ -83,7 +83,6 @@ function displayContextMenu(event) {
var element = event.target;
var left = event.pageX;
var top = event.pageY;
console.log(event);
while (element.className!="flashfireBlocked")
element = element.parentNode;
@ -124,6 +123,23 @@ function displayContextMenu(event) {
autoLoadElement.innerHTML = "Automatically Load Flash on &quot;" + window.location.host + "&quot;";
menuElement.appendChild(autoLoadElement);
var autoHideElement = document.createElement("li");
autoHideElement.className = "flashfireMenuItem";
autoHideElement.innerHTML = "Automatically Hide Flash on &quot;" + window.location.host + "&quot;";
menuElement.appendChild(autoHideElement);
var prefSeparatorElement = document.createElement("li");
prefSeparatorElement.className = "flashfireMenuSeparator";
menuElement.appendChild(prefSeparatorElement);
var preferencesElement = document.createElement("li");
preferencesElement.className = "flashfireMenuItem";
preferencesElement.innerHTML = "FlashFire Preferences...";
var prefWidth = 445;
var prefHeigth = 500;
preferencesElement.onclick = function() {window.open(safari.extension.baseURI + "preferences.html", "FlashFire Preferences", "width=" + prefWidth + ",height=" + prefHeigth + ",left=" + (screen.availWidth-prefWidth)/2 + ",top=" + (screen.availHeight-prefHeigth)/2 + ",resizable=no,scrollbars=no,menubar=no,status=no,location=no")}
menuElement.appendChild(preferencesElement);
document.body.appendChild(menuElement);
var closeContentMenu = function(event) {

18
global.html

@ -2,15 +2,25 @@
<script>
safari.application.addEventListener("message", handleMessage, false);
var FFWhitelist = safari.extension.settings["whitelist"].split(",");
var FFBlacklist = safari.extension.settings["blacklist"].split(",");
function handleMessage(theEvent) {
if (theEvent.name=="canLoad") {
var message = theEvent.message;
console.log(message);
if (message.name=="getSettings") {
console.log("Get Settings");
var data = message.data;
theEvent.message = safari.extension.settings.bob;
if (message.name=="getSetting") {
console.log("Get Setting");
theEvent.message = safari.extension.settings[message.setting];
} else if (message.name=="getSetting") {
console.log("Set Setting");
safari.extension.settings[message.setting] = message.data;
}
} else if (theEvent.name=="getPreferences") {
var preferences = {invisible: safari.extension.settings["invisible"], whitelist: FFWhitelist, blacklist: FFBlacklist}
safari.application.activeBrowserWindow.activeTab.page.dispatchMessage("preferences", preferences);
} else if (theEvent.name=="setInvisible") {
safari.extension.settings["invisible"] = theEvent.message;
}
}
safari.application.addEventListener("message", handleMessage, false);

3
preferences.css

@ -0,0 +1,3 @@
.flashfireTitle {
font-weight: bold;
}

82
preferences.html

@ -0,0 +1,82 @@
<!DOCTYPE HTML>
<html>
<head>
<title>FlashFire Preferences</title>
<script type="text/javascript">
var FFWhitelist = null;
function handleMessage(theEvent) {
if (theEvent.name=="preferences") {
console.log(theEvent.message);
document.getElementById("invisible").checked = theEvent.message.invisible;
FFWhitelist = theEvent.message.whitelist;
var whitelist = document.getElementById("whitelist");
for (i=0; i<FFWhitelist.length; i++) {
var item = document.createElement("option");
item.value = FFWhitelist[i];
item.innerHTML = FFWhitelist[i];
whitelist.appendChild(item);
}
document.getElementById("loading").style.display = "none";
document.getElementById("settings").style.display = "block";
}
}
function setInvisible() {
safari.self.tab.dispatchMessage("setInvisible", document.getElementById("invisible").checked);
}
function whitelistSelect() {
document.getElementById("whitelistRemoveButton").disabled = true;
var options = document.getElementById("whitelist").options;
for (i=0; i<options.length; i++) {
if (options[i].selected==true) {
document.getElementById("whitelistRemoveButton").disabled = false;
break;
}
}
}
function whitelistRemove() {
var options = document.getElementById("whitelist").options;
for (i=0; i<options.length; i++) {
if (options[i].selected==true) {
console.log("Removing");
document.getElementById("whitelist").removeChild(options[i]);
document.getElementById("whitelistRemoveButton").disabled = true;
break;
}
}
}
function whitelistAdd() {
var site = document.getElementById("whitelistField").value;
if (site=="")
return;
var found = false;
for (i=0; i<FFWhitelist.length; i++) {
if (FFWhitelist[i]==site)
found = true;
}
if (!found) {
var item = document.createElement("option");
item.value = site;
item.innerHTML = site;
whitelist.appendChild(item);
}
document.getElementById("whitelistField").value = "";
return false;
}
safari.self.tab.dispatchMessage("getPreferences");
safari.self.addEventListener("message", handleMessage, false);
</script>
<link rel="stylesheet" href="preferences.css" type="text/css" media="screen" />
</head>
<body>
<div id="settings" style="display: none">
<label for="invisible"><input type="checkbox" id="invisible" name="invisible" value="true" onclick="setInvisible();"> Load invisible flash automatically</label><br />
<br /><div class="flashfireTitle">Whitelist</div>
<select name="whitelist" id="whitelist" size="10" style="width: 400px" onchange="whitelistSelect()"></select><br />
<form onsubmit="return whitelistAdd();"><input type="text" id="whitelistField" size="54"><input type="submit" value="Add"><input type="button" id="whitelistRemoveButton" value="Remove" onclick="whitelistRemove()" disabled></form>
</div>
<div id="loading" style="text-align: center">Loading Preferences...</div>
</body>
</html>
Loading…
Cancel
Save