User:Alphax/monobook.js

/* */

/** * Monobook scripts by Alphax and others * Original location: User:Alphax/monobook.js * Forked from User:ABCD/monobook.js around April 2005 * Some material from User:JesseW/monobook.js * Other scripts from WP:US * Dual licensed under the GFDL and GPL

/**** Add Godmode-lite ****/

// this one breaks popups // document.write('<\/SCRIPT>');

// and this one is dead as well... // document.write('<\/SCRIPT>');

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

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

document.write('<\/script>');

// customisations = see Tools/Navigation popups for more

popupFixRedirs = true; popupRedirAutoClick = 'wpPreview'; popupFixDabs = true; popupStructure = 'menus';

/**** Live RC filter ****/

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

document.write('<\/script>');

/**** afd helper ****/

// From User:Jnothman/afd_helper/script.js

document.write('<\/script>');

/**** Interiot's javascript edit counter ****/

if (document.title.indexOf('User:Interiot/Tool2/code.js') != -1) { document.write('<\/script>'); }

/**** Initialise on window load and load custom functions ****/

addOnloadHook( myLoadFuncs );

function myLoadFuncs {   // &action=purge addPurge; // &section=0 addEditSection0; // cause the personal menu looks bad changeLinks; // because edit summaries are good // Now done automatically // 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 page']; // remove the logout access key //ta['pt-logout'] = new Array(null, null); // re-render the title and accesskeys for stuff akeytt; // add history link to new messages box newmessagehistory; }

/**** 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&section=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&section=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 + '&section=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 + '&section=0'; z.appendChild(document.createTextNode('0')); y.appendChild(z); document.getElementById('p-cactions').getElementsByTagName("ul")[0].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'); if(id) 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]; var pf = document.createElement('form'); pf.action = '?action=purge'; pf.method = 'POST'; pf.id = 'pf'; x.appendChild(pf); addlilink(tabs, 'javascript:document.getElementById("pf").submit;', 'purge', 'ca-purge'); }

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

function closeafd(bold, notbold) {   var txt = document.editform.wpTextbox1; txt.value = " " + bold + "" + notbold + ". – ~\n" + txt.value + "\n\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 ''; }

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

function test(x) {   var s = (x == '1' ? '' : x); return [' – ~', '']; }

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

function blank(x) {   var s = (x == '1' ? '' : x); return [' – ~', '']; }

/**** 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 += ''; 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-preferences').firstChild.innerHTML = 'preferences'; document.getElementById('pt-watchlist').firstChild.innerHTML = 'watchlist'; document.getElementById('pt-mycontris').firstChild.innerHTML = 'contributions'; // Get the top toolbar var toplinks = document.getElementById('p-personal').getElementsByTagName('ul')[0]; // remove the logout button entirely toplinks.removeChild(document.getElementById('pt-logout')); // add a clock addlilink(toplinks, '#', '', 'utcdate'); showtime; }

/**** Now using the version I developed on commons ****/

function addForceSummary {   if(!/&action=edit/.test(window.location.href) && !/&action=submit/.test(window.location.href)) return; if(/&section=new/.test(window.location.href)) return; if(!document.forms.editform) return; document.forms.editform.wpSave.onclick = forceSummary; document.forms.editform.wpSave.onfocus = forceSummary; }

function forceSummary {   // Section names be damned if (!document.forms.editform.wpSummary.value.replace(/^(?:\/\\*.*\\*\/)? *(.*) *$/,'$1'))   {        var r = prompt('Are you sure you want to submit without adding a summary?\nTo add a summary, type it in the box below:',document.forms.editform.wpSummary.value); if(r == null) { return false; } document.forms.editform.wpSummary.value = r;   } return true; }

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

function afddelete{ var form = document.forms.deleteconfirm; form.wpReason.value = '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) {       /**** AFD closing ****/ 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', ''); /**** 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]; /**** Set up Welcome messages ****/ addlimenu(talkm, 'welcome', 'welcmess'); var welcmess = document.getElementById('welcmess').getElementsByTagName('ul')[0]; addlilink(welcmess, 'javascript:autoMessage(" ~", "Welcome to Wikipedia!", "save")', 'personal', ''); addlilink(welcmess, 'javascript:autoMessage(" Thanks, ~", "Create an account!", "save")', 'anon', ''); addlilink(welcmess, 'javascript:autoMessage(" ~", "Welcome to Wikipedia!", "save")', 'oldwelcome', ''); /**** Set up Test series ****/ addlimenu(talkm, 'test[x]', 'testx'); var testx = document.getElementById('testx').getElementsByTagName('ul')[0]; addlilink(testx, 'javascript:autoMessage(" ~", "", "save")', 'selftest', ''); addlilink(testx, 'javascript:autoMessage(test(1)[0], test(1)[1], "save")', 'test', ''); addlilink(testx, 'javascript:autoMessage(test(2)[0], test(2)[1], "save")', 'test2', ''); addlilink(testx, 'javascript:autoMessage(test(3)[0], test(3)[1], "save")', 'test3', ''); addlilink(testx, 'javascript:autoMessage(test(4)[0], test(4)[1], "save")', 'test4', ''); addlilink(testx, 'javascript:autoMessage(test(5)[0], test(5)[1], "save")', 'test5', ''); /**** Set up Blanking series ****/ addlimenu(talkm, 'blanking', 'blankmess'); var blankmess = document.getElementById('blankmess').getElementsByTagName('ul')[0]; addlilink(blankmess, 'javascript:autoMessage(blank(1)[0], blank(1)[1], "save")', 'blank', ''); addlilink(blankmess, 'javascript:autoMessage(blank(2)[0], blank(2)[1], "save")', 'blank2', ''); addlilink(blankmess, 'javascript:autoMessage(test("2a")[0], test("2a")[1], "save")', 'test2a', ''); addlilink(blankmess, 'javascript:autoMessage(blank(3)[0], blank(3)[1], "save")', 'blank3', ''); addlilink(blankmess, 'javascript:autoMessage(blank(4)[0], blank(4)[1], "save")', 'blank4', ''); addlilink(blankmess, 'javascript:autoMessage(blank(5)[0], blank(5)[1], "save")', 'blank5', ''); /**** Generic talk messages ****/ addlilink(talkm, 'javascript:autoMessage(startThread, "new thread", "save")', 'thread', ''); addlilink(talkm, 'javascript:autoMessage(" ~", "Edit summary", "save")', 'summary', ''); addlilink(talkm, 'javascript:autoMessage(" ~", "", "save")', 'bv', ''); }   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']; }   else if((document.title.indexOf("User:") == 0) || (document.title.indexOf("User talk:") == 0)) {       addlimenu(tabs, 'User functions', 'userf'); var userf = document.getElementById('userf').getElementsByTagName('ul')[0]; var username = getUserName; // add "block" tab addlilink(userf, '/wiki/Special:Blockip/' + username, 'block user'); // add "blocklog" tab addlilink(userf, '/wiki/Special:Log/block?page=User:' + username, 'block log', ''); // add "unblock" tab addlilink(userf, '/w/index.php?title=Special:Ipblocklist&action=unblock&ip=' + username, 'unblock user', ''); // add "contributions" tab addlilink(userf, '/wiki/Special:Contributions/' + username, 'contributions', ''); // add "edit count" tab addlilink(userf, 'http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?user=' + username + '&dbname=enwiki_p', 'interiot\'s tool', ''); // add "whois" tab addlilink(userf, 'http://www.samspade.org/t/lookat?a=' + username, 'whois user', ''); // add another "whois" tab addlilink(userf, 'http://www.dnsstuff.com/tools/whois.ch?ip=' + username, 'whois (2)', ''); // add "proxycheck" tab addlilink(userf, 'http://wikipedia.quyme.com/proxycheck.php?ip=' + username, 'open proxy check', ''); } }

/**** get the username for a page ****/ function getUserName {   switch (wgCanonicalNamespace) {       case 'User': case 'User_talk': return wgPageName.split('/')[0].split(":")[1]; default: return null; } }

/**** Add links to the toolbox ****/

function addToolBoxLinks {   var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0]; var afdtime = new Date; var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; afdtime.setUTCDate(afdtime.getUTCDate - 7); addlilink(tb, '/wiki/Special:Newpages', 'New pages', ''); addlilink(tb, '/wiki/Special:Shortpages', 'Short pages', ''); addlilink(tb, '/wiki/Special:Log', 'Logs', ''); // addlilink(tb, '/wiki/Template:Deletiontools', 'Deletion tools', ''); addlilink(tb, '/wiki/Wikipedia:Articles_for_deletion/Log/' + afdtime.getUTCFullYear       + '_' + months[afdtime.getUTCMonth] + '_' + afdtime.getUTCDate, 'Week old AfD', ''); addlilink(tb, '/wiki/Wikipedia:Disambiguation_pages_with_links', 'Dab list', ''); addlilink(tb, '/wiki/Wikipedia:Template_messages/User_talk_namespace', 'Talk messages', ''); addlilink(tb, '/wiki/User:Alphax/special', 'Special characters', ''); addlilink(tb, '/wiki/User:Alphax/monobook.js', 'Monobook.js', ''); addlilink(tb, '/wiki/User:Alphax/monobook.css', 'Monobook.css', ''); addlilink(tb, '/wiki/User:Alphax/Sandbox', 'My sandbox', ''); addlilink(tb, '/wiki/WP:ICT', 'Image Copyright tags', ''); }

/**** Get a clock that autoupdates! ****/

function showtime {   var timerID; var now = new Date; var timeValue = now.toUTCString.replace(/GMT/, "UTC"); document.getElementById('utcdate').firstChild.innerHTML = timeValue; timerID = setTimeout('showtime', 100); }

/**** Auto start new topics when hitting empty talk pages from the content page ****/

function talkpageplus {   var talkpagelink = document.getElementById('ca-talk'); if (talkpagelink.className == 'new') {       talkpagelink.firstChild.href += '&section=new'; } }

/**** Add history link to the "You have new messages" box ****/

function newmessagehistory {   var divs = document.getElementsByTagName('div'); var talkmessagebox; for(var x = 0; x < divs.length; ++x) {       if(divs[x].className.indexOf('usermessage') != -1) {           talkmessagebox = divs[x]; x = divs.length; // force break }   }    divs = ''; // release divs? if(!talkmessagebox) return false; var newmessagelink = talkmessagebox.getElementsByTagName('a')[0]; var historylink = document.createElement('a'); historylink.href = newmessagelink.href.replace(/\/wiki\//, '/w/index.php?title=') + '&action=history'; historylink.className = 'extiw'; historylink.appendChild(document.createTextNode('changes')); // var talkmessagetext = 'You have '; // talkmessagebox.innerHTML = talkmessagetext; // talkmessagebox.appendChild(newmessagelink); talkmessagebox.appendChild(document.createTextNode(' ('));   talkmessagebox.appendChild(historylink);    talkmessagebox.appendChild(document.createTextNode(')')); }

/* */