User:Mysekurity/monobook.js

/* */

/**

* Here be all good stuff

* Original location: User:Alphax/monobook.js

* Forked from User:ABCD/monobook.js around April 2005

* Dual licensed under the GFDL and GPL

* See also: User:JesseW/monobook.js, and especially User:Essjay. I tip my hat to you, sir.

* And best of all: WP:US (stole most of it from there)

*/

/**** Add navigation popups ****/

// User:Lupin/popups.js - please include this line

document.write('');

afdh_signature = '~~'+'~';

afdh_summaryprompt = true;

afdh_shortcuts = Array();

afdh_shortcuts['d'] = 'Delete';

afdh_shortcuts['k'] = 'Keep';

afdh_shortcuts['m'] = 'Merge';

afdh_shortcuts['mv'] = 'Move';

afdh_shortcuts['rd'] = 'Redirect';

afdh_shortcuts['rw'] = 'Rewrite';

afdh_shortcuts['t'] = 'Transwiki';

afdh_shortcuts['wd'] = 'Weak delete';

afdh_shortcuts['sd'] = 'Strong delete';

afdh_shortcuts['sp'] = 'Speedy delete';

afdh_shortcuts['sk'] = 'Strong keep';

afdh_shortcuts['wk'] = 'Weak keep';

afdh_shortcuts['c'] = 'Comment';

afdh_commscs = Array();

afdh_commscs['pn'] = 'per nom.';

function afd_helper() {

if (auto_mod())

return;

var anchors = new Array();

{

var oldanchors = document.getElementById('bodyContent').getElementsByTagName('a');

for (var i=0; i < oldanchors.length; i++)

anchors[i] = oldanchors[i];

}

var url_re = /\?title=Wikipedia:Articles_for_deletion\/([^&]+)&action=edit&/;

var url, matches;

for (var i=0; i < anchors.length; i++) {

if (!(matches = anchors[i].href.match(url_re))

|| (matches[1].substr(0, 4) == 'Log/'))

continue;

var na = document.createElement('a');

na.href = "javascript:afd_vote('"+anchors[i].href.replace(/'/g, '\\\'')+"')";

na.title = "Vote on deletion of "+unescape(matches[1]);

var inlink = document.createElement('sup');

inlink.appendChild(document.createTextNode('vote'));

na.appendChild(inlink);

anchors[i].parentNode.insertBefore(na, anchors[i].nextSibling);

}

if (am_get_title().indexOf(':') == -1)

am_add_li('tb', 'javascript:afd_nominate()', 'Nominate AFD', '', 'Nominate this article for deletion');

}

function afd_vote(edit_link) {

var shortcuts_list = '';

for (var key in afdh_shortcuts)

shortcuts_list += key + ': ' + afdh_shortcuts[key] + '; ';

var vote = window.prompt("Enter your vote. (Shortcuts available are: "+shortcuts_list+")");

if (!vote) return;

if (afdh_shortcuts[vote.toLowerCase()])

vote = afdh_shortcuts[vote.toLowerCase()];

shortcuts_list = '';

for (var key in afdh_commscs)

shortcuts_list += key + ': ' + afdh_commscs[key] + '; ';

var comment = window.prompt("Enter your comment. (Shortcuts available are: "+shortcuts_list+")");

if (typeof comment != 'string') return;

if (afdh_commscs[comment.toLowerCase()])

comment = afdh_commscs[comment.toLowerCase()];

var summary = vote;

if (afdh_summaryprompt)

if (!(summary = window.prompt("Enter the edit summary:", summary)))

summary = vote;

var url = edit_link +

'&amaddafter='+escape("* "+vote+" "+comment+" "+afdh_signature+" ~~"+"~~"+"~") +

'&amsummary='+escape(summary);

if (window.location.href.indexOf("/Log/") == -1)

window.location.href = url;

else

window.open(url, "afd_helper_vote");

}

function afd_nominate() {

var title = am_get_title();

var log_date = window.prompt("This should be the date of the latest AFD log. Change it if necessary.", am_guess_date());

if (!log_date)

return;

var reason = window.prompt("Please justify your AFD nomination of "+title+":");

if (!reason)

return;

window.open(am_make_url(title, '{{'+'subst:afd}}', '', 'nomination for deletion'), 'afdhn1');

window.open(am_make_url('Wikipedia:Articles for deletion/Log/'+log_date, '', '{{'+'subst:afd3|pg='+title+'}}', 'Nominating '+title+' for deletion'), 'afdhn3');

window.location.href = am_make_url('Wikipedia:Articles for deletion/'+title, '', '{{'+'subst:afd2|pg='+title+'|text='+reason+' '+afdh_signature+" ~~"+"~~"+"~"+'}}', 'nominated for deletion');

}

if (window.addEventListener) window.addEventListener("load",afd_helper,false);

else if (window.attachEvent) window.attachEvent("onload",afd_helper);

/**** Initialise on window load ****/

if (window.addEventListener) window.addEventListener("load",myLoadFuncs,false);

else if (window.attachEvent) window.attachEvent("onload",myLoadFuncs);

else

{

window.previousLoadFunction = window.onload;

window.onload = function()

{

window.previousLoadFunction();

myLoadFuncs();

}

}

/**** Load custom functions ****/

function myLoadFuncs()

{

// &action=purge

addPurge();

// §ion=0

addEditSection0();

// cause the personal menu looks bad

changeLinks();

// because edit summaries are good

addForceSummary();

// now add a million extra tabs

morelinks();

// and some stuff for the sidebar

addToolBoxLinks();

// make red talk page links start new sections

talkpageplus();

// for admins only...

// if(document.title.indexOf("Confirm delete - Delete") == 0) addVfdLink();

// change the title of the edit link

ta['ca-edit'] = ['e', 'Edit'];

// remove the logout access key

//ta['pt-logout'] = new Array(null, null);

// add the AFD helper

// afd_helper();

// re-render the title and accesskeys for stuff

akeytt();

}

// Adds "block" and "blocklog" tabs to User: and User talk: pages.

function add_block_tab(){

var c1 = document.getElementById('column-one');

var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];

// use the "edit this page" tab to get already-tidied url

var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;

// cut everything up to "title=" from the start and everything past "&action=edit" from the end

editlk = editlk.substring(editlk.indexOf('title=') + 6, editlk.lastIndexOf('&action=edit'));

editlk = editlk.substring(editlk.indexOf(':') + 1);

var slloc = editlk.indexOf('/');

if(slloc > 0) editlk = editlk.substring(0, slloc);

// add "block" tab

addTab('/wiki/Special:Blockip/' + editlk, 'block', 'ca-block');

// add "blocklog" tab

addTab('/wiki/Special:Log/block?page=User:' + editlk, 'blocklog', 'ca-blocklog');

}

function blockip()

{

if(document.title.indexOf('User:') == 0 || document.title.indexOf('User talk:') == 0)

add_block_tab();

else if(document.title.indexOf('Block user') == 0) // could stand to be more robust

do_blockip_stuff();

}

//***** Old AfD==

function afdold () {

var x = document.getElementById('ca-article');

var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];

if(!x) return;

if(x.children) x = x.children[0];

else x = x.childNodes[0];

addlilink(tabs, x.href.replace(/Special:Undelete/, "Wikipedia:Articles_for_deletion"), 'afd', '');

}

/**** Edit section 0 ****/

function addEditSection0()

{

ta['ca-edit-0'] = ['', 'Edit the zeroth section of this page'];

if(!document.getElementById) return;

var x = document.getElementById('ca-edit');

if(!x) return;

var y = document.createElement('LI');

y.id = 'ca-edit-0';

if(x.className == 'selected'){

if(/&action=edit§ion=0$/.test(window.location.href)){

x.className = 'istalk';

y.className = 'selected';

} else {

x.className = 'selected istalk';

}

} else if(x.className == 'selected istalk'){

if(/&action=edit§ion=0$/.test(window.location.href)){

x.className = 'istalk';

y.className = 'selected istalk';

} else {

y.className = 'istalk';

}

} else {

y.className = x.className;

x.className = 'istalk';

}

var z = document.createElement('A');

if(x.children){

z.href = x.children[0].href + '§ion=0';

z.appendChild(document.createTextNode('0'));

y.appendChild(z);

document.getElementById('p-cactions').children[1].insertBefore(y,x.nextSibling);

}else{

z.href = x.childNodes[0].href + '§ion=0';

z.appendChild(document.createTextNode('0'));

y.appendChild(z);

document.getElementById('p-cactions').childNodes[3].insertBefore(y,x.nextSibling);

}

}

/**** Add generic tab ****/

function addlilink(tabs, url, name, id){

var na = document.createElement('a');

na.href = url;

na.appendChild(document.createTextNode(name));

var li = document.createElement('li');

li.id = id;

li.appendChild(na);

tabs.appendChild(li);

return li;

}

/**** Add tab as menu ****/

function addlimenu(tabs, name, id)

{

var na = document.createElement('a');

na.href = '#';

var mn = document.createElement('ul');

na.appendChild(document.createTextNode(name));

var li = document.createElement('li');

li.id = id;

li.className = 'tabmenu';

li.appendChild(na);

li.appendChild(mn);

tabs.appendChild(li);

return li;

}

/**** Add purge tab ****/

function addPurge()

{

ta['ca-purge'] = ['g', 'Purge the internal cache for this page'];

if(!document.getElementById) return;

var x = document.getElementById('ca-history');

var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];

if(!x) return;

if(x.children) x = x.children[0];

else x = x.childNodes[0];

addlilink(tabs, x.href.replace(/=history/, "=purge"), 'purge', 'ca-purge');

}

/**** Add afd header, footer and comment ****/

function closeafd(bold, notbold)

{

var txt = document.editform.wpTextbox1;

txt.value = "{{subst:vt}} " + bold + "" + notbold + ". – ~~~~\n" + txt.value

+ "\n{{subst:vb}}\n";

txt = document.editform.wpSummary;

txt.value = "close discussion: " + bold + notbold;

// I don't mind still watching them

// document.editform.wpWatchthis.checked = false;

}

/**** Generic custom talk message ****/

function autoMessage(msgtext, summary, saveopt)

{

var txt = document.editform.wpTextbox1;

document.editform.wpSummary.value = summary;

if(txt.value.length > 0) txt.value += '\n';

txt.value += msgtext;

if(saveopt == 'save')

{

document.editform.submit();

}

else if(saveopt == 'preview')

{

document.editform.wpPreview.click();

}

else if(saveopt == 'diff')

{

document.editform.wpDiff.click();

}

}

/**** Get the pagename for a specified thread ****/

function startThread()

{

var which = prompt("Thread number?");

var now = new Date();

if(which < 10) which = '0' + which;

var timestamp = now.getUTCFullYear() + '';

now.getUTCMonth() < 9 ? timestamp += '0' + (now.getUTCMonth() + 1) : timestamp += (now.getUTCMonth() + 1);

now.getUTCDate() < 10 ? timestamp += '0' + now.getUTCDate() : timestamp += now.getUTCDate();

return '{{User talk:Mysekurity/' + timestamp + '-' + which + '}}';

}

/**** Get the text for a specified test number ****/

function test(x)

{

var s = (x == '1' ? '' : x);

return ['{{subst:test' + s + '}} – ~~~~', '{{test' + s + '}}'];

}

/**** String replacement popup ****/

function replace()

{

var s = prompt("Search regexp?");

if(s){

var r = prompt("Replace regexp?");

var txt = document.editform.wpTextbox1;

txt.value = txt.value.replace(new RegExp(s, "g"), r);

}

}

/**** Talk page AFD result ****/

function afdresult()

{

var res = prompt("Result?");

if(!res) return;

var afddate = prompt("Nomination date?");

document.editform.wpSummary.value = 'AFD result - ' + res.replace(/'/g, '');

var txt = document.editform.wpTextbox1;

if(txt.value.length > 0) txt.value += '\n';

txt.value += '{{oldafdfull|date=' + afddate + ' {{subst:CURRENTYEAR}}|result=' + res + '|votepage={{subst:PAGENAME}}}} – ~~~~';

txt.focus();

}

/**** Make old AfD's appear or disappear ****/

function hideafd()

{

var divs = document.getElementsByTagName("div");

for(var x = 0; x < divs.length; ++x)

if(divs[x].className.indexOf("vfd") != -1)

divs[x].style.display = "none";

// needed to shrink the page - rendering bug

document.getElementById('footer').style.display = 'none';

}

function showafd()

{

var divs = document.getElementsByTagName("div");

for(var x = 0; x < divs.length; ++x)

if(divs[x].className.indexOf("vfd") != -1)

divs[x].style.display = "";

// might as well put it back...

document.getElementById('footer').style.display = '';

}

/**** Make the top links look better ****/

function changeLinks()

{

if(!document.getElementById) return;

// remove the "my" bits

document.getElementById('pt-mytalk').firstChild.innerHTML = 'talk';

document.getElementById('pt-watchlist').firstChild.innerHTML = 'watchlist';

document.getElementById('pt-mycontris').firstChild.innerHTML = 'contributions';

// add a clock

var toplinks = document.getElementById('p-personal').getElementsByTagName('ul')[0];

addlilink(toplinks, '#', '', 'utcdate');

showtime();

}

/**** Not sure how this works ****/

function afddelete(){

var form = document.forms.deleteconfirm;

form.wpReason.value = 'Wikipedia:Articles for deletion/' + unescape(window.location.href.replace(/^.*\?title=([^&]+)&action=delete.*$/, '$1').replace(/_/g, ' ')) + '';

form.wpConfirm.checked = true;

}

/**** Mega Tab Adding ****

*

* I'm making this comment block REALLY REALLY BIG so I can find it

*

* Possibly the most useful bit of this entire file, it adds various tabs depending on

* what page we are on

*

*/

function morelinks()

{

var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];

if(document.title.indexOf("Editing Wikipedia:Articles for deletion") == 0)

{

/**** I'm insane! ****/

addlimenu(tabs, 'afd actions', 'afda');

var afda = document.getElementById('afda').getElementsByTagName('ul')[0];

addlilink(afda, 'javascript:closeafd("keep", "")', 'keep', '');

addlilink(afda, 'javascript:closeafd("merge and redirect", " to " + prompt("Merge and redirect to?") + "")', 'merge', '');

addlilink(afda, 'javascript:closeafd("redirect", " to " + prompt("Redirect to?") + "")', 'redir', '');

addlilink(afda, 'javascript:closeafd("transwiki", " to " + prompt("Transwiki to?"))', 'trans', '');

addlilink(afda, 'javascript:closeafd("transwiki", " to Wiktionary")', 'wikt', '');

addlilink(afda, 'javascript:closeafd("speedy delete", "")', 'speedy', '');

addlilink(afda, 'javascript:closeafd("delete", "")', 'del', '');

addlilink(afda, 'javascript:closeafd(prompt("Result?"), "")', 'other', '');

addlilink(tabs, 'javascript:replace()', 'replace', '');

/**** Finish insanity ****/

/**** The "Make it Awesome!" button ****

document.editform.wpSummary.value = 'This vote brought to you by the "Make it Awesome!" button';

var txt = document.editform.wpTextbox1;

if(txt.value.length > 0) txt.value += '\n';

txt.value += "*Make it awesome! ~~~~";

document.editform.submit();

**** Finish making it awesome ****/

}

else if(document.title.indexOf("Confirm delete - Delete") == 0)

{

addlilink(tabs, 'javascript:afddelete()', 'afd', '');

}

else if(document.title.indexOf("Editing User talk:") == 0)

{

addlilink(tabs, 'javascript:replace()', 'replace', '');

addlimenu(tabs, 'talk messages', 'talkm');

var talkm = document.getElementById('talkm').getElementsByTagName('ul')[0];

addlilink(talkm, 'javascript:autoMessage("{{subst:User:Mysekurity/Welcome}} ~~~~", "Welcome to Wikipedia!", "save")', 'Welcome!', '');

addlilink(talkm, 'javascript:autoMessage("{{subst:User:Mysekurity/Semi}} ~~~~", "Semi-protection", "save")', 'GWB semi', '');

addlilink(talkm, 'javascript:autoMessage("{{subst:anon}} Thanks, ~~~~", "Create an account!", "save")', 'anon', '');

addlilink(talkm, 'javascript:autoMessage(startThread(), "new thread", "save")', 'thread', '');

addlilink(talkm, 'javascript:autoMessage("{{subst:edit summary}} ~~~~", "Edit summary", "save")', 'summary', '');

addlilink(talkm, 'javascript:autoMessage("{{subst:spam1}} ~~~~", "Spam", "save")', 'Spam1', '');

addlilink(talkm, 'javascript:autoMessage("{{subst:spam2}} ~~~~", "Spam", "save")', 'Spam2', '');

addlilink(talkm, 'javascript:autoMessage("{{subst:blanking}} ~~~~", "{{blanking}}", "save")', 'blanking', '');

addlilink(talkm, 'javascript:autoMessage("{{subst:bv}} ~~~~", "{{bv}}", "save")', 'bv', '');

addlilink(talkm, 'javascript:autoMessage(test(1)[0], test(1)[1], "save")', 'test', '');

addlilink(talkm, 'javascript:autoMessage(test(2)[0], test(2)[1], "save")', 'test2', '');

addlilink(talkm, 'javascript:autoMessage(test("2a")[0], test("2a")[1], "save")', 'test2a', '');

addlilink(talkm, 'javascript:autoMessage(test(3)[0], test(3)[1], "save")', 'test3', '');

addlilink(talkm, 'javascript:autoMessage(test(4)[0], test(4)[1], "save")', 'test4', '');

addlilink(talkm, 'javascript:autoMessage(test(5)[0], test(5)[1], "save")', 'test5', '');

}

else if(document.title.indexOf("Editing ") == 0)

{

addlilink(tabs, 'javascript:replace()', 'replace', '');

addlilink(tabs, 'javascript:afdresult()', 'afd result', '');

}

else if(document.title.indexOf("Wikipedia:Articles for deletion") == 0)

{

addlilink(tabs, 'javascript:hideafd()', 'hide closed', 'ca-hide');

ta['ca-hide'] = ['', 'Hide closed AFDs'];

addlilink(tabs, 'javascript:showafd()', 'show closed', 'ca-show');

ta['ca-show'] = ['', 'Show closed AFDs'];

}

}

///////////////////////////////////////////////////////////////////

// AutoCopyvio - Created by bmicomp from modified autovfd

// from Wikipedia:WikiProject User scripts/Scripts/Autocopyvio.js

//////////////////////////////////////////////////////////////////

document.write('