diff --git a/chrome/background.html b/chrome/background.html
index 4d6bec36..884d0e4f 100644
--- a/chrome/background.html
+++ b/chrome/background.html
@@ -1120,6 +1120,9 @@
settings.reblogLinks = getSetting("MissingE_dashLinksToTabs_reblogLinks",0);
settings.editLinks = getSetting("MissingE_dashLinksToTabs_editLinks",0);
break;
+ case "blockNotes":
+ settings.blocked = getSetting("MissingE_blockNotes_blocked",'{}');
+ break;
case "replyReplies":
settings.showAvatars = getSetting("MissingE_replyReplies_showAvatars",1);
settings.smallAvatars = getSetting("MissingE_replyReplies_smallAvatars",1);
@@ -1541,6 +1544,20 @@
else
activeScripts.timestamps = false;
}
+ if (sender.tab.url == request.url &&
+ MissingE.isTumblrURL(sender.tab.url,
+ ["dashboard",
+ "blog",
+ "likes",
+ "tagged",
+ "messages"])) {
+ if (getSetting("MissingE_blockNotes_enabled",1) == 1) {
+ activeScripts.blockNotes = true;
+ chrome.tabs.executeScript(sender.tab.id, {file: "core/blockNotes/blockNotes.js"});
+ }
+ else
+ activeScripts.blockNotes = false;
+ }
if (sender.tab.url == request.url &&
MissingE.isTumblrURL(sender.tab.url,
["dashboard",
diff --git a/core/blockNotes/blockNotes.js b/core/blockNotes/blockNotes.js
new file mode 100644
index 00000000..057f1043
--- /dev/null
+++ b/core/blockNotes/blockNotes.js
@@ -0,0 +1,158 @@
+/*
+ * 'Missing e' Extension
+ *
+ * Copyright 2011, Jeremy Cutler
+ * Released under the GPL version 3 licence.
+ * SEE: license/GPL-LICENSE.txt
+ *
+ * This file is part of 'Missing e'.
+ *
+ * 'Missing e' is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * 'Missing e' is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with 'Missing e'. If not, see .
+ */
+
+/*global extension, jQuery, MissingE */
+
+(function($){
+
+MissingE.packages.blockNotes = {
+ hideNotification: function(item) {
+ var i = $(item);
+ if(i.hasClass('first_notification')) {
+ var e = i.next('.notification');
+ if(e.hasClass('last_notification')) {
+ e.removeClass('last_notification');
+ e.addClass('single_notification');
+ } else {
+ e.addClass('first_notification');
+ }
+ }
+ if(i.hasClass('last_notification')) {
+ var e = i.prev('.notification');
+ if(e.hasClass('first_notification')) {
+ e.removeClass('first_notification');
+ e.addClass('single_notification');
+ } else {
+ e.addClass('last_notification');
+ }
+ }
+
+ i.hide();
+ },
+
+ loadNotification: function(item) {
+ var lang = $('html').attr('lang');
+
+ //Only operate on notifications
+ if (item.tagName === "LI" && $(item).hasClass("notification")) {
+ var index;
+ var links = $(item).find('a');
+ //Ensure it is a "like" notification
+ links.each(function(i,e) {
+ if($(e).html() == 'post') { //Kind of hackish
+ index = i;
+ return false;
+ }
+ });
+ if(index == undefined)
+ return false;
+
+ $(item).find('.block').html('block user'); //Make more explicit
+
+ //Find post ID from link url
+ var url = links.get(index).href;
+ var postId = url.split('/')[4];
+
+ //Add postId to notification
+ $(item).addClass('MissingE_blockNotes_'+postId);
+
+ //Build "block notes" link
+ var newlink = $('').addClass('block')
+ .addClass('MissingE_blockNotes')
+ .attr('MissingE_blockNotes_id',postId)
+ .attr('MissingE_blockNotes_link',url)
+ .attr('MissingE_blockNotes_text',links.get(index+1).innerHTML)
+ .html('block notes');
+
+ $(item).append(newlink);
+
+ if(MissingE.packages.blockNotes.settings['blocked'].hasOwnProperty(postId)) //If already blocked
+ MissingE.packages.blockNotes.hideNotification(item);
+ }
+ },
+
+ updateBlocked: function() {
+ if (extension.isFirefox ||
+ extension.isSafari) {
+ extension.sendRequest("change-setting", {name: 'MissingE_blockNotes_blocked', val: JSON.stringify(MissingE.packages.blockNotes.settings['blocked'])});
+ }
+ else {
+ extension.backupVal('MissingE_blockNotes_blocked', JSON.stringify(MissingE.packages.blockNotes.settings['blocked']) );
+ }
+ },
+
+ run: function() {
+ $('#posts li.notification').each(function(){
+ MissingE.packages.blockNotes.loadNotification(this);
+ });
+
+ extension.addAjaxListener(function(type,list) {
+ if (type === 'notes') { return; }
+ $.each(list, function(i,val) {
+ MissingE.packages.blockNotes.loadNotification($('#'+val).get(0));
+ });
+ });
+
+ $('body').delegate('.MissingE_blockNotes','click',function(event) {
+ MissingE.packages.blockNotes.settings['blocked'][$(this).attr('MissingE_blockNotes_id')] = {'text': $(this).attr('MissingE_blockNotes_text'), 'link': $(this).attr('MissingE_blockNotes_link') };
+ $('.MissingE_blockNotes_' + $(this).attr('MissingE_blockNotes_id')).each(function(i,e) { MissingE.packages.blockNotes.hideNotification(e); });
+ MissingE.packages.blockNotes.updateBlocked();
+ });
+ },
+
+ init: function() {
+ $('head').append('');
+ extension.sendRequest("settings", {component: "blockNotes"},
+ function(response) {
+ if (response.component === "blockNotes") {
+ var i;
+ MissingE.packages.blockNotes.settings = {};
+ for (i in response) {
+ if (response.hasOwnProperty(i) &&
+ i !== "component") {
+ if(i === 'blocked') {
+ MissingE.packages.blockNotes.settings[i] = JSON.parse(response[i]);
+ } else {
+ MissingE.packages.blockNotes.settings[i] = response[i];
+ }
+ }
+ }
+ MissingE.packages.blockNotes.run();
+ }
+ });
+ }
+};
+
+if (extension.isChrome ||
+ extension.isFirefox) {
+ MissingE.packages.blockNotes.init();
+}
+
+}(jQuery));
diff --git a/core/options.html b/core/options.html
index 8a54b641..af12733e 100644
--- a/core/options.html
+++ b/core/options.html
@@ -325,6 +325,22 @@
+
+
+
+
+
diff --git a/core/options.js b/core/options.js
index 80f5e086..90f9ccfc 100644
--- a/core/options.js
+++ b/core/options.js
@@ -200,6 +200,7 @@ MissingE.utilities.options = {
"dashLinksToTabs",
"safeDash",
"timestamps",
+ "blockNotes",
"magnifier",
"betterReblogs",
"gotoDashPost",
@@ -250,6 +251,31 @@ MissingE.utilities.options = {
MissingE.utilities.options.loadCheck(frm,'MissingE_sidebarTweaks_followingLink',0);
frm.MissingE_sidebarTweaks_retries.value = MissingE.utilities.options.getStorage('MissingE_sidebarTweaks_retries',MissingE.defaultRetries);
}
+ else if (v == "blockNotes") {
+ var blocked = JSON.parse(MissingE.utilities.options.getStorage('MissingE_blockNotes_blocked','{}'));
+ var even = 0;
+ for( var key in blocked ) {
+ if( blocked.hasOwnProperty(key) ) {
+ $('#blockNotes_options .options_table').append(
+ $('
')
+ .attr('id','blockNotes_row_'+key)
+ .addClass((even ? 'even' : 'odd'))
+ .html('' + blocked[key]['text'] + ' | Unblock | ')
+ );
+ even = (even + 1) % 2;
+ }
+ }
+ $('body').delegate(".blockNotes_unblock","click",function(event) {
+ var fields = $(this).attr("id").split("_");
+ var key = fields[fields.length - 1];
+ $('#blockNotes_row_'+key).hide();
+ var blocked = JSON.parse(MissingE.utilities.options.getStorage('MissingE_blockNotes_blocked','{}'));
+ if( blocked.hasOwnProperty(key) ) {
+ delete blocked[key];
+ MissingE.utilities.options.setStorage('MissingE_blockNotes_blocked',JSON.stringify(blocked));
+ }
+ });
+ }
else if (v == "dashLinksToTabs") {
MissingE.utilities.options.loadCheck(frm,'MissingE_dashLinksToTabs_newPostTabs',1);
MissingE.utilities.options.loadCheck(frm,'MissingE_dashLinksToTabs_sidebar',0);
diff --git a/firefox/missinge/lib/main.js b/firefox/missinge/lib/main.js
index 455edad4..f7e6d3de 100644
--- a/firefox/missinge/lib/main.js
+++ b/firefox/missinge/lib/main.js
@@ -129,6 +129,7 @@ var componentList = ["dashboardTweaks",
"dashLinksToTabs",
"safeDash",
"timestamps",
+ "blockNotes",
"magnifier",
"betterReblogs",
"gotoDashPost",
@@ -180,6 +181,7 @@ function getAllSettings(getStale) {
settings.MissingE_dashLinksToTabs_editLinks = getSetting("extensions.MissingE.dashLinksToTabs.editLinks",0);
settings.MissingE_timestamps_retries = getSetting("extensions.MissingE.timestamps.retries",MissingE.defaultRetries);
settings.MissingE_timestamps_format = getSetting("extensions.MissingE.timestamps.format",MissingE.defaultFormat);
+ settings.MissingE_blockNotes_blocked = getSetting("extensions.MissingE.blockNotes.blocked",'{}');
settings.MissingE_postingTweaks_photoReplies = getSetting("extensions.MissingE.postingTweaks.photoReplies",1);
settings.MissingE_postingTweaks_addUploader = getSetting("extensions.MissingE.postingTweaks.addUploader",1);
settings.MissingE_postingTweaks_quickButtons = getSetting("extensions.MissingE.postingTweaks.quickButtons",1);
@@ -1332,6 +1334,9 @@ function handleMessage(message, myWorker) {
settings.defaultTags = settings.defaultTags.replace(/, /g,',').split(',');
}
break;
+ case "blockNotes":
+ settings.blocked = getSetting("extensions.MissingE.blockNotes.blocked",'{}');
+ break;
case "postCrushes_fill":
case "postCrushes":
settings.prefix = getSetting("extensions.MissingE.postCrushes.prefix","Tumblr Crushes:");
@@ -1611,6 +1616,20 @@ function handleMessage(message, myWorker) {
else
activeScripts.postingTweaks = false;
}
+ if (!message.isFrame &&
+ MissingE.isTumblrURL(message.url,
+ ["dashboard",
+ "blog",
+ "likes",
+ "tagged",
+ "messages"])) {
+ if (getSetting("extensions.MissingE.blockNotes.enabled",1) == 1) {
+ injectScripts.push(data.url("core/blockNotes/blockNotes.js"));
+ activeScripts.blockNotes = true;
+ }
+ else
+ activeScripts.blockNotes = false;
+ }
if (!message.isFrame &&
MissingE.isTumblrURL(message.url, ["reblog"])) {
if (getSetting("extensions.MissingE.betterReblogs.enabled",1) == 1) {
diff --git a/missinge.safariextension/Info.plist b/missinge.safariextension/Info.plist
index ef921722..6874aabb 100644
--- a/missinge.safariextension/Info.plist
+++ b/missinge.safariextension/Info.plist
@@ -78,6 +78,7 @@
core/replyReplies/replyReplies_fill.js
core/safeDash/safeDash.js
core/timestamps/timestamps.js
+ core/blockNotes/blockNotes.js
core/massEditor/massEditor.js
core/postingTweaks/postingTweaks_post.js
core/common/zindexFix.js
diff --git a/missinge.safariextension/Settings.plist b/missinge.safariextension/Settings.plist
index 2cc1a70b..8e8058c4 100644
--- a/missinge.safariextension/Settings.plist
+++ b/missinge.safariextension/Settings.plist
@@ -130,6 +130,16 @@
Type
Hidden
+
+ DefaultValue
+ 1
+ Key
+ MissingE_blockNotes_enabled
+ Title
+
+ Type
+ Hidden
+
DefaultValue
1
@@ -550,6 +560,16 @@
Type
Hidden
+
+ DefaultValue
+ {}
+ Key
+ MissingE_blockNotes_blocked
+ Title
+
+ Type
+ Hidden
+
DefaultValue
1
diff --git a/missinge.safariextension/Settings.plist.template b/missinge.safariextension/Settings.plist.template
index 8af4565d..ad670e42 100644
--- a/missinge.safariextension/Settings.plist.template
+++ b/missinge.safariextension/Settings.plist.template
@@ -130,6 +130,16 @@
Type
Hidden
+
+ DefaultValue
+ 1
+ Key
+ MissingE_blockNotess_enabled
+ Title
+
+ Type
+ Hidden
+
DefaultValue
1
@@ -550,6 +560,16 @@
Type
Hidden
+
+ DefaultValue
+ {}
+ Key
+ MissingE_blockNotes_blocked
+ Title
+
+ Type
+ Hidden
+
DefaultValue
1
diff --git a/missinge.safariextension/global.html b/missinge.safariextension/global.html
index d7fc6639..50f08103 100644
--- a/missinge.safariextension/global.html
+++ b/missinge.safariextension/global.html
@@ -34,6 +34,7 @@
"dashLinksToTabs",
"safeDash",
"timestamps",
+ "blockNotes",
"magnifier",
"betterReblogs",
"gotoDashPost",
@@ -1175,6 +1176,7 @@
settings.MissingE_dashLinksToTabs_editLinks = getSetting("MissingE_dashLinksToTabs_editLinks",0);
settings.MissingE_timestamps_retries = getSetting("MissingE_timestamps_retries",MissingE.defaultRetries);
settings.MissingE_timestamps_format = getSetting("MissingE_timestamps_format",MissingE.defaultFormat);
+ settings.MissingE_blockNotes_blocked = getSetting("MissingE_timestamps_format",'{}');
settings.MissingE_postingTweaks_photoReplies = getSetting("MissingE_postingTweaks_photoReplies",1);
settings.MissingE_postingTweaks_addUploader = getSetting("MissingE_postingTweaks_addUploader",1);
settings.MissingE_postingTweaks_quickButtons = getSetting("MissingE_postingTweaks_quickButtons",1);
@@ -1259,6 +1261,9 @@
settings.randomQueue = getSetting("MissingE_dashboardTweaks_randomQueue",0);
settings.sortableNotes = getSetting("MissingE_dashboardTweaks_sortableNotes",1);
break;
+ case "blockNotes":
+ settings.blocked = getSetting("MissingE_blockNotes_blocked",'{}');
+ break;
case "dashLinksToTabs":
settings.newPostTabs = getSetting("MissingE_dashLinksToTabs_newPostTabs",1);
settings.sidebar = getSetting("MissingE_dashLinksToTabs_sidebar",0);
@@ -1562,6 +1567,19 @@
else
activeScripts.timestamps = false;
}
+ if (!request.message.isFrame &&
+ MissingE.isTumblrURL(request.message.url,
+ ["dashboard",
+ "blog",
+ "likes",
+ "tagged",
+ "messages"])) {
+ if (getSetting("MissingE_blockNotes_enabled",1) == 1) {
+ activeScripts.blockNotes = true;
+ }
+ else
+ activeScripts.blockNotes = false;
+ }
if (!request.message.isFrame &&
MissingE.isTumblrURL(request.message.url,
["dashboard",