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('