Skip to content

Commit

Permalink
add reblog for asks when reblog yourself is off and reblog asks is on
Browse files Browse the repository at this point in the history
  • Loading branch information
jcutler committed Dec 1, 2011
1 parent 1794802 commit 87f7017
Show file tree
Hide file tree
Showing 5 changed files with 201 additions and 23 deletions.
3 changes: 0 additions & 3 deletions TODO
Expand Up @@ -6,7 +6,4 @@ https://addons.mozilla.org/en-US/developers/docs/sdk/1.2/dev-guide/addon-develop
- Need new build scripts
- Need readme for linking

Add reblog button to permalink pages when reblogYourself is off
- also, only reblog yourself add when no follow/unfollow button

FULL TEST, ALL BROWSERS
68 changes: 66 additions & 2 deletions chrome/background.html
Expand Up @@ -40,6 +40,10 @@
var cacheElements = 0;
var cacheClear;
var clearQueues;
var askerTable = {};
var askerWaiters = {};
var askerTableCopy = {};
var askerTableClear;
var fiveMinutes = 300000;
var tenSeconds = 10000;
var debugMode = false;
Expand Down Expand Up @@ -86,6 +90,22 @@
}
});

askerTableClear = setInterval(function() {
var i;
for (i in askerTableCopy) {
if (askerTableCopy.hasOwnProperty(i) &&
askerTable.hasOwnProperty(i)) {
delete askerTable[i];
}
}
askerTableCopy = {};
for (i in askerTable) {
if (askerTable.hasOwnProperty(i)) {
askerTableCopy[i] = true;
}
}
}, fiveMinutes);

cacheClear = setInterval(function() {
cache = {};
cacheElements = 0;
Expand Down Expand Up @@ -856,9 +876,53 @@
else if (request.greeting == "importOptions") {
receiveOptions(request, sendResponse);
}
else if (request.greeting == "getAsker") {
if (askerTable[sender.tab.url]) {
debug("Found saved asker for '" + sender.tab.url + "'");
var name = askerTable[sender.tab.url].asker;
var isSure = askerTable[sender.tab.url].isSure;
if (--askerTable[sender.tab.url].count == 0) {
debug("Deleting saved asker for '" + sender.tab.url + "'");
delete askerTable[sender.tab.url];
}
if (name && name !== "") {
sendResponse({name: name, isSure: isSure, url: sender.tab.url});
}
}
else {
if (askerWaiters[sender.tab.url]) {
debug("Creating new askerWaiter for '" + sender.tab.url + "'");
askerWaiters[sender.tab.url].push(sendResponse);
}
else {
debug("Adding askerWaiter for '" + sender.tab.url + "'");
askerWaiters[sender.tab.url] = [sendResponse];
}
}
}
else if (request.greeting == "sendAsker") {
chrome.tabs.sendRequest(sender.tab.id, {greeting: "sendAsker",
name: request.name, url: request.url, isSure: request.isSure});
if (askerWaiters[sender.tab.url]) {
debug("Found existing askerWaiter for '" + sender.tab.url + "'");
var callback = askerWaiters[sender.tab.url].pop();
if (askerWaiters[sender.tab.url].length === 0) {
debug("Deleting existing askerWaiter queue for '" + sender.tab.url + "'");
delete askerWaiters[sender.tab.url];
}
if (request.name && request.name !== "") {
callback({name: request.name, isSure: request.isSure, url: sender.tab.url});
}
}
else {
if (askerTable[sender.tab.url]) {
debug("Found existing askerTable entry for '" + sender.tab.url + "'");
askerTable[sender.tab.url].count++;
}
else {
debug("Creating askerTable entry for '" + sender.tab.url + "'");
askerTable[sender.tab.url] = {asker: request.name,
isSure: request.isSure, count:1};
}
}
}
else if (request.greeting == "uploader") {
$.ajax({
Expand Down
131 changes: 116 additions & 15 deletions core/betterReblogs/betterReblogs_post.js
Expand Up @@ -166,6 +166,7 @@ MissingE.packages.betterReblogsPost = {
run: function(frameURL) {
if (/http:\/\/www\.tumblr\.com\/dashboard\/iframe/.test(location.href) &&
location.href === frameURL) {
var settings = this.settings;
var st = document.createElement('style');
st.type = 'text/css';
st.innerHTML = '.MissingE_reblog { ' +
Expand All @@ -179,10 +180,107 @@ MissingE.packages.betterReblogsPost = {
'.MissingE_reblog_fail .half ' +
'{ background-position:-50px 0; }';
document.getElementsByTagName('head')[0].appendChild(st);
var acct, i;
for (i=0; i<document.forms.length; i++) {
if (/\/(un)?follow/
.test(document.forms[i].getAttribute('action'))) {
acct = document.forms[i].id.value;
break;
}
}
if (acct && settings.reblogAsks === 1) {
extension.sendRequest("tumblrPermission", {user: acct},
function(response) {
if (!response.allow) {
var div = document.getElementsByTagName("div")[0];
var controls;
if (div) { controls = div.getElementsByTagName("a"); }
var noReblog = true;
for (i=0; i<controls.length; i++) {
if (/\/reblog\//.test(controls[i].href)) {
noReblog = false;
break;
}
}
if (noReblog) {
var url, redir;
var loc = location.href;
var last = controls[controls.length-1];
var gdp = document
.getElementById('MissingE_gotoDashPost_link');
if (gdp) {
last = gdp;
}
loc = loc.substring(loc.indexOf("src=")+4);
redir = loc.substring(0,loc.indexOf("&"));
loc = loc.replace(/%3A/gi,":")
.replace(/%2F/gi,"/");
url = "/reblog/";
if (/&pid=(\d*)/.test(loc)) {
url += loc.match(/&pid=(\d*)/)[1] + "/";
url += loc.match(/&rk=(\w*)/)[1];
url += '?redirect_to=' + redir;

var link = document.createElement('a');
link.setAttribute('href', url);
link.setAttribute('target', '_top');

var dashimg = null;
for (i=controls.length-1; i>=0; i--) {
if (controls[i].href ===
'http://www.tumblr.com/dashboard') {
dashimg = controls[i]
.getElementsByTagName('img')[0];
break;
}
}
var suffix = '';
var lang = 'en';
if (dashimg) {
suffix = dashimg.src.match(/alpha([^\.]*)(.*)/);
if (suffix !== null && suffix.length > 2) {
lang = suffix[1].match(/[a-z]+/);
if (lang === null || lang.length === 0) {
lang = 'en';
}
else {
lang = lang[0];
}
suffix = suffix[1] + suffix[2];
}
}
else {
suffix = '.png';
}

var icon = document.createElement('img');
icon.style.height='20px';
icon.style.width='64px';
icon.style.borderWidth='0';
icon.style.display='block';
icon.style.cssFloat='left';
icon.style.cursor='pointer';
icon.alt=MissingE.getLocale(lang).reblog;
icon.src = 'http://assets.tumblr.com/images/' +
'iframe_reblog_alpha' + suffix;
link.appendChild(icon);
div.insertBefore(link,last);
var evt = document.createEvent("HTMLEvents");
evt.initEvent("MissingEaddReblog", true, true);
link.dispatchEvent(evt);
}
}
}
});
}
extension.addListener("sendAsker", MissingE.packages.betterReblogsPost
.receiveAsker);
if (extension.isSafari ||
extension.isFirefox) {
if (extension.isChrome) {
extension.sendRequest("getAsker",
MissingE.packages
.betterReblogsPost.receiveAsker);
}
else {
extension.sendRequest("getAsker");
}
if (!MissingE.packages.betterReblogsPost.addTags()) {
Expand Down Expand Up @@ -229,22 +327,25 @@ MissingE.packages.betterReblogsPost = {

init: function() {
if (MissingE.isTumblrURL(location.href, ["iframe"])) {
if (extension.isFirefox) {
extension.sendRequest("settings",
{component: "betterReblogs",
subcomponent: "post"},
function(response) {
if (response.component !== "betterReblogs") {
return;
extension.sendRequest("settings",
{component: "betterReblogs",
subcomponent: "post"},
function(response) {
if (response.component === "betterReblogs") {
var i;
MissingE.packages.betterReblogsPost.settings = {};
for (i in response) {
if (response.hasOwnProperty(i) &&
i !== "component") {
MissingE.packages.betterReblogsPost
.settings[i] = response[i];
}
}
MissingE.packages.betterReblogsPost.run(location.href);
});
}
else {
MissingE.packages.betterReblogsPost.run(location.href);
}
}
})
}
else {
else if (document.getElementById("tumblr_controls")) {
MissingE.packages.betterReblogsPost.runPermalink();
}
}
Expand Down
10 changes: 8 additions & 2 deletions missinge.safariextension/extension.js
Expand Up @@ -23,7 +23,11 @@

/*global safari */

var MissingE = {
(function(){

if (typeof MissingE !== "undefined") { return; }

MissingE = {
packages: {},
utilities: {
exportSettings: function(callback) {
Expand Down Expand Up @@ -73,7 +77,7 @@ var MissingE = {
}
};

var extension = {
extension = {
isChrome: false,
isFirefox: false,
isOpera: false,
Expand Down Expand Up @@ -185,3 +189,5 @@ var extension = {
safari.self.tab.dispatchMessage(name, request);
}
};

}());
12 changes: 11 additions & 1 deletion missinge.safariextension/global.html
Expand Up @@ -72,7 +72,7 @@
return defVal;
}
else {
if (/[^0-9]/.test(retval)) {
if (/[^\d]/.test(retval)) {
return retval;
}
else {
Expand Down Expand Up @@ -1592,6 +1592,16 @@
"core/common/widenIframe.css",
"http://*");

safari.extension.addContentScriptFromURL(safari.extension.baseURI +
"extension.js",
"http://*", null, true);
safari.extension.addContentScriptFromURL(safari.extension.baseURI +
"core/utils.js",
"http://*", null, true);
safari.extension.addContentScriptFromURL(safari.extension.baseURI +
"core/betterReblogs/betterReblogs_post.js",
"http://*", null, true);

onStart(currVersion, prevVersion);
getExternalVersion();
fixupSettings();
Expand Down

0 comments on commit 87f7017

Please sign in to comment.