By Shane O Sullivan
Has 1 other script.
/* vim: ts=4 noet ai :
$Id: $
Greasemonkey User Script; adds links to the bottom of blog posts
on Wordpress. These links include integration with
- Digg www.digg.com
- DotNetKicks www.dotnetkicks.com
- del.icio.us
- email
- Reddit reddit.com
- Live.com favorites.live.com
LICENSE
=======
This program 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 2 of the License, or (at your
option) any later version.
This program 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 this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
CHANGELOG
=========
Version 1.2
- initial release
*/
// ==UserScript==
// @name Wordpress Linker
// @namespace http://shaneosullivan.wordpress.com
// @description Add links to Wordpress posts to Digg and other sites.
// @include http:*wordpress.com/wp-admin/post-new.php*
// @include http:*wordpress.com/wp-admin/post.php?action=edit&post=*
// @exclude
// @version 1.2
// ==/UserScript==
// The SCRIPT object enables this script to automatically updated using
// the User Scripts Update script (http://userscripts.org/scripts/show/2296)
var SCRIPT = {
name: "Wordpress Linker",
namespace: "http://shaneosullivan.wordpress.com",
description: 'Add links to Wordpress posts to Digg and other sites.',
source: "http://userscripts.org/scripts/show/9421", // script homepage/description URL
identifier: "http://userscripts.org" // script URL
+ "/scripts/source/9421",
version: "1.0", // version
date: (new Date(2007, 5 - 1, 23)) // update date
.valueOf()
};
try {
addEventHandler(window, "load", function () {
try {
(unsafeWindow || window.wrappedJSObject || window)
.UserScriptUpdates.requestAutomaticUpdates(SCRIPT);
} catch (ex) {} }, false);
} catch (ex) {}
function myLog(msg) {
try {
unsafeWindow.console.log(msg);
} catch (e) {
GM_log(msg);
}
}
var PAGE_SCRAPERS = [
function () {
//wordpressPreview mode
var btn = document.getElementById("edButtonHTML");
if(!btn){return null;}
if(btn.getAttribute("class")=="edButtonFore"){return null;}
var iFrame = doc.getElementById('mce_editor_0');
if(!iFrame){return null;}
return {
element: iFrame.contentDocument.body,
param: "innerHTML",
title: document.getElementById("title").value
}
},
function () {
//Wordpress source code mode
var btn = document.getElementById("edButtonHTML");
if(!btn){return null;}
if(btn.getAttribute("class")!="edButtonFore"){return null;}
var textarea = doc.getElementById('content');
if(!textarea){return null;}
return {
element : textarea,
param : "value",
title: document.getElementById("title").value
}
}
];
var doc = unsafeWindow.document;
var buttons = [];
var button = doc.getElementById("publish");
if(!button) {
//The default behaviour is to only add the links when the article is published.
//To add the links when just saving drafts, uncomment the code below,
//and comment out the 'addListener(button , "click", doLinkAdd);' line below.
//Note that if you do this, save a draft then publish another day,
//the URL links will be wrong, so you're probably better off not doing it.
/*
var postDiv = doc.getElementById("poststuff");
if(postDiv) {
var inputs = postDiv.getElementsByTagName("p")[1].getElementsByTagName("input");
for(var count = 0; count < inputs.length; count++) {
if(inputs[count].defaultValue.indexOf("Save") > -1) {
buttons[buttons.length] = inputs[count];
}
}
}
*/
} else {
buttons[0] = button;
}
myLog("WordPress linker running");
var doLinkAdd = function(evt) {
try {
var pageInfo;
for(var i = 0; i < PAGE_SCRAPERS.length; i++){
pageInfo = PAGE_SCRAPERS[i]();
if(pageInfo){break;}
}
if(!pageInfo){
myLog("Failed to find an element to alter");
return;
}
//If the div is already inserted, do nothing
if(pageInfo.element[pageInfo.param].indexOf('href="http://www.digg.com/submit?') >-1
){
myLog("Found the links div in bodyElement with tagName" + pageInfo.element.tagName);
return;
}
var url = doc.location.protocol +"//"+doc.location.host;
var origPostTitle = pageInfo.title;
var badChars = ['?','#'];
for(var i = 0; i< badChars.length; i++)
{
if(origPostTitle.indexOf(badChars[i]) > -1)
{
origPostTitle = origPostTitle.replace(badChars[i], "");
}
}
//Remove all periods
origPostTitle = origPostTitle.replace(".","");
var titlePartsLC = origPostTitle.toLowerCase().split(" ");
var postTitle = origPostTitle.split(" ").join("+");
var today = new Date();
var month = today.getMonth()+1;
var day = today.getDate();
url += "/"+today.getFullYear();
url += "/" + (month < 10 ? "0" + month : month);
url += "/" + (day < 10 ? "0" + day : day);
url += "/" + titlePartsLC.join("-");
var hrefTitle = "Post '" + origPostTitle;
var content =
'\n<p><br/><strong>' +
'Share this post:'+
'</strong>'+
'<a href="http://www.digg.com/submit?url='+url+'&phase=2" target="_blank" title="'+hrefTitle+'">'+
'digg it'+
'</a>'+
'|'+
'<a href="http://www.dotnetkicks.com/submit/?url='+url+'&title='+postTitle+'" target="_blank" title="'+hrefTitle+'">' +
'kick it' +
'</a>' +
'|' +
'<a href="mailto:?body=Thought%20you%20might%20like%20this:%20'+url+'&subject='+postTitle+'" target="_blank" title="'+hrefTitle+'">'+
'Email it' +
'</a>' +
'|' +
'<a href="http://del.icio.us/post?url='+url+'&title='+postTitle+'" target="_blank" title="'+hrefTitle+'">'+
'bookmark it' +
'</a>' +
'|' +
'<a href="http://reddit.com/submit?url='+url+'&title='+postTitle+'" target="_blank" title="'+hrefTitle+'">'+
'reddit' +
'</a>' +
'|' +
'<a href="https://favorites.live.com/quickadd.aspx?marklet=1&mkt=en-us&url='+url+'&title='+postTitle+'&top=1" target="_blank" title="'+hrefTitle+'">' +
'liveIt' +
'</a>' +
'</p>';
pageInfo.element[pageInfo.param] += content;
} catch (e) {
myLog("caught exception "+e);
}
return true;
};
function addListener(node, name, fn, capture) {
var newFn = fn;
if(node.addEventListener) {
node.addEventListener(name, fn, capture);
} else {
name = name.indexOf("on") == 0 ? name : "on"+name;
if(typeof node[name] == "function") {
var oldEvt = node[name];
node[name] = newFn = function (e) {
fn(e);
return oldEvt(e);
}
} else {
node[name] = fn;
}
}
return newFn;
}
if(buttons.length > 0) {
myLog("WordPress linker after working on inputs");
for(var count = 0; count < buttons.length; count ++) {
addListener(buttons[count], "click", doLinkAdd);
}
} else {
myLog("WordPress linker couldn't find the button");
}