Skip to content

Instantly share code, notes, and snippets.

@Illyism
Created August 3, 2010 11:40
Show Gist options
  • Save Illyism/506220 to your computer and use it in GitHub Desktop.
Save Illyism/506220 to your computer and use it in GitHub Desktop.
An userscript/greasemonkey script for wikiHow
// ==UserScript==
// @name wikiHow Plus
// @namespace http://www.wikihow.com
// @description Does nifty stuff on wikiHow, like autowelcome.
// @include http://*wikihow.com/*
// @version 0.2
// ==/UserScript==
// Options:
// - Plus -
// - Welcome
// - text
// - anon
var options = [ {title:'plus-welcome-text', display:'Welcome Template', def: '{{welcome1}}'},
{title:'plus-welcome-anon', display:'Anon Welcome Template', def: '{{welcome-anon}}'}
];
// --- AUTOWELCOME ---
if ('autowelcome' == 'autowelcome') {
if(welcome == undefined) {
var welcome={
edit: {},
link: {newUserLog:{},redLinkTalk:{},tab:{}},
options: {}
};
//config
welcome.edit.summary = "Welcome to wikiHow!";
welcome.edit.text = localStorage['plus-welcome-text'] || '{{welcome1}}';
welcome.edit.textAnon = localStorage['plus-welcome-anon'] || '{{welcome-anon}}';
welcome.edit.button = 'wpSave';
welcome.link.newUserLog.defaultColor = "blue";
welcome.link.newUserLog.clickedColor = "green";
welcome.link.newUserLog.text = "[welcome]";
welcome.link.redLinkTalk.defaultColor = "blue";
welcome.link.redLinkTalk.clickedColor = "green";
welcome.link.redLinkTalk.text = "welcome";
welcome.link.redLinkTalk.blink = false;
welcome.link.tab.text = "welcome!";
welcome.link.tab.accessKey = 'a';
welcome.options.newUserLogaddReloadButton = true;
welcome.options.newUserLogEnabled = true;
welcome.options.redLinkTalkEnabled = true;
welcome.options.addTab = true;
welcome.options.askIfPageIsNotBlank = true;
welcome.options.maxLinks = 250;
welcome.options.warnIfOverMaxLinks = false;
var usercreationlog = new RegExp('User creation log');
var doctitle = document.title;
//end config
}
var alinks = document.getElementById('article').getElementsByTagName('a');
for(var i=0, j=0; i<alinks.length; i++) {
var lin = alinks[i];
if(lin.className == "new" && (/User_talk?:/i).test(lin.href) && lin.href.substr('http://www.wikihow.com/index.php?title='.length).indexOf('/') == -1) {
var url = lin.href;
url = url.replace('User:', 'User_talk:');
var charao = (url.indexOf('?') != -1)?'&':'?';
url += charao+"autowelcome=true"
var nlin = document.createElement('a');
var space = document.createTextNode(" | ");
nlin.appendChild(document.createTextNode(welcome.link.redLinkTalk.text));
nlin.style.color = welcome.link.redLinkTalk.defaultColor;
nlin.href = url;
nlin.id = "id_welcome_"+j;
nlin.class = 'welcome_auto';
nlin.name = "anchor_welcome";
if(welcome.link.redLinkTalk.blink) nlin.style.textDecoration = 'blink';
try { //alert(lin+lin.href+lin.className+lin.innerHTML+lin.nextSibling);
if(lin.nextSibling) {
lin.parentNode
.insertBefore(
nlin,
lin.nextSibling
);
lin.parentNode
.insertBefore(
space,
lin.nextSibling
);
} else {
lin.parentNode
.appendChild(
nlin
);
lin.parentNode
.appendChild(
space
);
}
j++;
} catch(e) {
//alert(lin+lin.href+lin.className+lin.innerHTML+lin.nextSibling);
//alert(e.toString());
}
}
}
if(window.location.href.indexOf('autowelcome=true') != -1) {
if(window.location.href.indexOf('hasdone=true') != -1) {
location.href = location.href.split('autowelcome=true')[0];
} else {
var noarticle = document.getElementById('noarticletext').innerHTML;
if (noarticle.length>=5) {
var textbox = document.getElementById('article').getElementsByTagName('textarea')[0];
var targetcid = textbox.id.replace('comment_text_', '');
var sumbitbtn = document.getElementById('postcommentbutton_' + targetcid);
var newtext = welcome.edit.text;
textbox.value = newtext;
sumbitbtn.click();
}
}
}
}
// --- END AUTOWELCOME ---
// --- TALK ---
if ('talk' == 'talk') {
var talk = {
test: {
title: document.title,
matches: [/\w+_talk:*/,/Discussion:*/],
}
};
var isTalk = false;
for (var i=0;i<talk.test.matches.length;i++) {
if (talk.test.matches[i].test(talk.test.title)) isTalk = true;
}
function emoticon(text) {
var txtarea = document.getElementsByTagName('textarea')[0];
var text = ' ' + text + ' ';
if (txtarea.createTextRange && txtarea.caretPos) {
var caretPos = txtarea.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
} else {
txtarea.value += text;
}
}
if (isTalk) {
var insert = '<td><table><tr id="EmoticonTable"><td><a href="javascript:emoticon(\'{{smiley|biggrin}}\')"><img border="0" title="Very Happy" alt=" " src="http://pad.wikihow.com/images/4/44/Icon_biggrin.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|smile}}\')"><img border="0" title="Smile" alt=" " src="http://pad2.wikihow.com/images/6/69/Icon_smile.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|sad}}\')"><img border="0" title="Sad" alt=" " src="http://pad3.wikihow.com/images/1/13/Icon_sad.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|surprised}}\')"><img border="0" title="Surprised" alt=" " src="http://pad2.wikihow.com/images/6/67/Icon_surprised.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|eek}}\')"><img border="0" title="Shocked" alt=" " src="http://pad2.wikihow.com/images/f/f6/Icon_eek.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|arrow}}\')"><img border="0" title="Arrow" alt=" " src="http://pad2.wikihow.com/images/c/ca/Icon_arrow.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|wink}}\')"><img border="0" title="Wink" alt=" " src="http://pad.wikihow.com/images/f/fa/Icon_wink.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|confused}}\')"><img border="0" title="Confused" alt=" " src="http://pad2.wikihow.com/images/e/e4/Icon_confused.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|neutral}}\')"><img border="0" title="Neutral" alt=" " src="http://pad3.wikihow.com/images/7/72/Icon_neutral.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|cool}}\')"><img border="0" title="Cool" alt=" " src="http://pad3.wikihow.com/images/6/6c/Icon_cool.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|mad}}\')"><img border="0" title="Mad" alt=" " src="http://pad3.wikihow.com/images/0/05/Icon_mad.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|idea}}\')"><img border="0" title="Idea" alt=" " src="http://pad3.wikihow.com/images/9/91/Icon_idea.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|razz}}\')"><img border="0" title="Razz" alt=" " src="http://pad2.wikihow.com/images/1/1e/Icon_razz.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|evil}}\')"><img border="0" title="Evil or Very Mad" alt=" " src="http://pad3.wikihow.com/images/1/19/Icon_evil.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|exclaim}}\')"><img border="0" title="Exclamation" alt=" " src="http://pad3.wikihow.com/images/0/05/Icon_exclaim.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|twisted}}\')"><img border="0" title="Twisted Evil" alt=" " src="http://pad3.wikihow.com/images/b/ba/Icon_twisted.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|question}}\')"><img border="0" title="Question" alt=" " src="http://pad.wikihow.com/images/0/02/Icon_question.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|lol}}\')"><img border="0" title="Laughing" alt=" " src="http://pad.wikihow.com/images/1/10/Icon_lol.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|mrgreen}}\')"><img border="0" title="Mr. Green" alt=" " src="http://pad3.wikihow.com/images/1/19/Icon_mrgreen.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|rolleyes}}\')"><img border="0" title="Rolling Eyes" alt=" " src="http://pad.wikihow.com/images/d/d0/Icon_rolleyes.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|cry}}\')"><img border="0" title="Crying or Very sad" alt=" " src="http://pad.wikihow.com/images/f/fc/Icon_cry.gif"></a></td><td><a href="javascript:emoticon(\'{{smiley|redface}}\')"><img border="0" title="Embarassed" alt=" " src="http://pad.wikihow.com/images/8/88/Icon_redface.gif"></a></td></tr></table></td>';
insert += '<script>' + emoticon.toString() + '</script>';
var num = parseInt(document.forms[1].elements[1].name.replace('comment_text_',''));
var ttp = document.getElementsByName('postcommentForm_'+num)[0].parentNode.getElementsByTagName('tbody')[0].childNodes[1];
var insertnode = document.createElement('tr');
insertnode.innerHTML = insert;
ttp.parentNode.insertBefore(insertnode, ttp.nextSibling);
}
}
// --- END TALK ---
// --- BUNCH ---
if ('bunch' == 'bunch') {
if (document.title == "Bunch patrol - wikiHow") {
var bunch = document.createElement('input');
bunch.type="button";
bunch.value="Check all";
bunch.setAttribute('onclick', "checkall(true)");
document.getElementsByName('checkform')[0].appendChild(bunch)
}
}
// --- END BUNCH ---
// --- BROKEN REDIRECTS ---
if ('bredir' == 'bredir') {
if (document.title == "Broken redirects - wikiHow") {
var list = document.getElementsByClassName('new');
for (var i=0;i<list.length;i++) {
var btn = document.createElement('a');
btn.href= list[i].href.replace('.com/', '.com/Special:undelete/');
btn.title = 'Check Deletions';
btn.innerHTML = '(deletions)';
list[i].parentNode.appendChild(document.createTextNode(' '));
list[i].parentNode.appendChild(btn);
}
}
}
// --- END BROKEN REDIRECTS ---
// --- BROKEN REDIRECTS ---
if ('options' == 'options') {
if (window.location.href == "http://www.wikihow.com/Special:Plus" || window.location.href == "http://www.wikihow.com/index.php?title=Special:Plus" ) {
document.getElementsByClassName('firstHeading')[0].innerHTML = 'wikiHow Plus - Options';
var c = '';
for (var i=0;i<options.length;i++) {
c += options[i].display + ': <input id="'+options[i].title+'" onchange="localStorage[\''+options[i].title+'\'] = this.value" value="'+localStorage[options[i].title]+'"/><br/>'
}
document.getElementsByClassName('article_inner')[1].innerHTML = c;
}
}
// --- END BROKEN REDIRECTS ---
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment