Browse Source

FlashFire Start

master
GRMrGecko 14 years ago
commit
4ab4b8d480
  1. 252
      Action.ai
  2. BIN
      Action.png
  3. 55
      Info.plist
  4. 12
      Settings.plist
  5. 100
      flashfire.css
  6. 118
      flashfire.js
  7. 17
      global.html

252
Action.ai
File diff suppressed because it is too large
View File

BIN
Action.png

After

Width: 14  |  Height: 14  |  Size: 1.1 KiB

55
Info.plist

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Author</key>
<string>Mr. Gecko's Media</string>
<key>CFBundleDisplayName</key>
<string>FlashFire</string>
<key>CFBundleIdentifier</key>
<string>com.MrGeckosMedia.FlashFire</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleShortVersionString</key>
<string>0.1</string>
<key>CFBundleVersion</key>
<string>0.1</string>
<key>Chrome</key>
<dict>
<key>Global Page</key>
<string>global.html</string>
</dict>
<key>Content</key>
<dict>
<key>Scripts</key>
<dict>
<key>Start</key>
<array>
<string>flashfire.js</string>
</array>
</dict>
<key>Stylesheets</key>
<array>
<string>flashfire.css</string>
</array>
</dict>
<key>Description</key>
<string>Blocks Flash</string>
<key>ExtensionInfoDictionaryVersion</key>
<string>1.0</string>
<key>Permissions</key>
<dict>
<key>Website Access</key>
<dict>
<key>Include Secure Pages</key>
<true/>
<key>Level</key>
<string>All</string>
</dict>
</dict>
<key>Update Manifest URL</key>
<string>http://mrgeckosmedia.com/FlashFire.plist</string>
<key>Website</key>
<string>http://mrgeckosmedia.com/</string>
</dict>
</plist>

12
Settings.plist

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>DefaultValue</key>
<string></string>
<key>Key</key>
<string>whitelist</string>
</dict>
</array>
</plist>

100
flashfire.css

@ -0,0 +1,100 @@
.flashfireBlocked {
background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255, 255, 255, 0.15)), to(rgba(0, 0, 0, 0.15))) !important;
border:1px solid rgba(0, 0, 0, 0.5) !important;
display: table !important;
-webkit-user-select: none !important;
font-family:"Lucida Grande", "Helvetica Neue", Helvetica, sans-serif !important;
}
.flashfireBlocked:active {
background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(0, 0, 0, 0.15)), to(rgba(255, 255, 255, 0.15))) !important;
}
.flashfireBlocked .container {
position: relative !important;
width: inherit !important;
height: inherit !important;
margin: 0px !important;
}
.flashfireBlocked .vText {
display: table-cell !important;
vertical-align: middle !important;
width: inherit !important;
height: inherit !important;
}
.flashfireBlocked .hText {
float: left !important;
position: relative !important;
left: 50% !important;
height: auto !important;
width: auto;
}
.flashfireBlocked .textContainer {
float: left !important;
position: relative !important;
left: -50% !important;
width: auto !important;
height: auto !important;
}
.flashfireBlocked .textContainer.rotate {
left: -90% !important;
-webkit-transform: rotate(-90deg);
}
.flashfireBlocked .textContainer .text {
border-radius: 4.0px !important;
border: 3px solid rgba(0, 0, 0, 0.3) !important;
font-size: 20px !important;
width: auto !important;
color: rgba(0, 0, 0, 0.3) !important;
font-weight: bold !important;
padding: 14px 5px 7px 5px !important;
-webkit-user-select: none !important;
cursor: default !important;
background: none !important;
position: relative !important;
height: auto !important;
line-height: 0 !important;
}
.flashfireBlocked .textContainer.mini .text {
border-radius: 4.0px !important;
font-size: 8px !important;
border: 1px solid rgba(0, 0, 0, 0.3) !important;
padding: 6px 3px 4px 3px !important;
}
.flashfireBlocked .textContainer .textInset {
border: 0px !important;
font-size: 20px !important;
width: auto !important;
color: rgba(255, 255, 255, 0.45) !important;
font-weight: bold !important;
padding: 16px 7px 10px 8px !important;
-webkit-user-select: none !important;
cursor: default !important;
background: none !important;
height: auto !important;
line-height: 0 !important;
position: absolute !important;
top: 1px !important;
right: 1px !important;
}
.flashfireBlocked .textContainer.mini .textInset {
font-size: 8px !important;
padding: 6px 3px 10px 8px !important;
}
.flashfireBlocked .action {
position: absolute !important;
left: 10px !important;
top: 10px !important;
width: 14px !important;
height: 14px !important;
background: url("action.png") no-repeat !important;
opacity: 0.25 !important;
-webkit-transition-property: opacity;
-webkit-transition-duration: 0.5s;
z-index: 2 !important;
}
.flashfireBlocked .action:hover {
opacity: 0.5 !important;
}

118
flashfire.js

@ -0,0 +1,118 @@
document.addEventListener("beforeload", handleBeforeLoadEvent, true);
var elementsBlocked = new Array();
function handleBeforeLoadEvent(event) {
const element = event.target;
if (element instanceof HTMLEmbedElement || element instanceof HTMLObjectElement) {
if (element.allowedToLoad)
return;
if (element instanceof HTMLEmbedElement) {
var source = element.getAttribute("src");
if (!source.match("swf"))
return;
} else if (element instanceof HTMLObjectElement) {
var foundFile;
var elementNodes = element.childNodes;
for (i=0; i<elementNodes.length; i++) {
if (elementNodes[i].nodeName=="PARAM" && elementNodes[i].name.match("movie")) {
foundFile = elementNodes[i].value.match("swf");
if (!foundFile) {
var type = element.getAttribute("type");
if (type!=null && (!type.match("flash") && !type.match("shockwave") && !type.match("futuresplash")))
return;
}
}
}
}
//console.log(safari.self.tab.canLoad(event, {name: "getSettings", data: ""}));
event.preventDefault();
blockElement(element);
}
}
function unblockElement(event) {
var element = event.target;
while (element.className!="flashfireBlocked")
element = element.parentNode;
var elementID = element.getAttribute("elementID");
var blockedElement = elementsBlocked[elementID];
blockedElement.allowedToLoad = true;
element.parentNode.replaceChild(blockedElement, element);
event.stopPropagation();
event.preventDefault();
}
function blockElement(element) {
if (element.getAttribute("elementID")!=null)
return;
var elementID = elementsBlocked.length;
element.setAttribute("elementID", elementID);
elementsBlocked[elementID] = element;
var text = "Flash";
var flashfireBlockedDiv = document.createElement("div");
flashfireBlockedDiv.setAttribute("elementID", elementID);
flashfireBlockedDiv.style = element.style;
flashfireBlockedDiv.style.width = element.offsetWidth + "px";
flashfireBlockedDiv.style.height = element.offsetHeight + "px";
flashfireBlockedDiv.className = "flashfireBlocked";
flashfireBlockedDiv.onclick = unblockElement;
var flashfireContainerDiv = document.createElement("div");
flashfireContainerDiv.className = "container";
flashfireBlockedDiv.appendChild(flashfireContainerDiv);
var flashfireVDiv = document.createElement("div");
flashfireVDiv.className = "vText";
flashfireContainerDiv.appendChild(flashfireVDiv);
var flashfireHDiv = document.createElement("div");
flashfireHDiv.className = "hText";
flashfireVDiv.appendChild(flashfireHDiv);
var flashfireTextContainerDiv = document.createElement("div");
flashfireTextContainerDiv.className = "textContainer";
flashfireHDiv.appendChild(flashfireTextContainerDiv);
var flashfireTextInsetDiv = document.createElement("div");
flashfireTextInsetDiv.className = "textInset";
flashfireTextInsetDiv.innerHTML = text;
flashfireTextContainerDiv.appendChild(flashfireTextInsetDiv);
var flashfireTextDiv = document.createElement("div");
flashfireTextDiv.className = "text";
flashfireTextDiv.innerHTML = text;
flashfireTextContainerDiv.appendChild(flashfireTextDiv);
var flashfireActionDiv = document.createElement("div");
flashfireActionDiv.className = "action";
flashfireContainerDiv.appendChild(flashfireActionDiv);
setTimeout(function(){element.parentNode.replaceChild(flashfireBlockedDiv, element);}, 5);
var changeSize = function() {
if (flashfireBlockedDiv.offsetWidth>0 && flashfireTextDiv.offsetWidth>0 && flashfireBlockedDiv.offsetHeight>0 && flashfireTextDiv.offsetHeight>0) {
if ((flashfireBlockedDiv.offsetWidth - 4) < flashfireTextDiv.offsetWidth || (flashfireBlockedDiv.offsetHeight - 4) < flashfireTextDiv.offsetHeight) {
flashfireTextContainerDiv.className += " mini";
}
if ((flashfireBlockedDiv.offsetWidth - 4) < flashfireTextDiv.offsetWidth) {
flashfireTextContainerDiv.className += " rotate";
flashfireHDiv.style.width = 17;
}
if ((flashfireBlockedDiv.offsetWidth - 2) <= flashfireHDiv.offsetWidth || (flashfireBlockedDiv.offsetHeight - 17) <= flashfireTextDiv.offsetHeight) {
flashfireHDiv.style.width = "inherit";
flashfireTextContainerDiv.style.display = "none";
}
} else {
setTimeout(changeSize, 100);
}
};
changeSize();
}

17
global.html

@ -0,0 +1,17 @@
<!DOCTYPE HTML>
<script>
safari.application.addEventListener("message", handleMessage, false);
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;
}
}
}
safari.application.addEventListener("message", handleMessage, false);
</script>
Loading…
Cancel
Save