User:Bmicomp/monobook.js
From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Firefox/Mozilla/Safari: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Internet Explorer: press Ctrl-F5, Opera/Konqueror: press F5.
If a message on your talk page led you here, please be wary of who left it. The code below could contain malicious content capable of compromising your account; if your account appears to be compromised, it will be blocked. If you are unsure whether the code is safe, you can ask at the appropriate village pump.
////////////////////////////////////////// // Tabs by Korath // Modified by Bmicomp // returns <li><a href="url">name</a></li> ///////////////////////////////////////// function addlilink(url, name) { var na = document.createElement('a'); na.setAttribute('href', url); var txt = document.createTextNode(name); na.appendChild(txt); var li = document.createElement('li'); li.appendChild(na); return li; } function addlilink2(url, name) { var na = document.createElement('a'); na.setAttribute('href', url); var txt = document.createTextNode(name); na.appendChild(txt); var li = document.createElement('li'); li.style.marginLeft ="0em"; li.style.marginRight ="0em"; li.style.paddingLeft ="0em"; li.style.paddingRight ="0em"; li.appendChild(na); return li; } function addlilink3(url, name) { var na = document.createElement('a'); na.setAttribute('href', url); var txt = document.createTextNode(name); na.appendChild(txt); var li = document.createElement('li'); li.style.marginLeft ="0em"; li.style.paddingLeft ="0em"; li.appendChild(na); return li; } function addlilink4(url, name) { var na = document.createElement('a'); na.setAttribute('href', url); var txt = document.createTextNode(name); na.appendChild(txt); var li = document.createElement('li'); li.style.marginRight ="0em"; li.style.paddingRight ="0em"; li.appendChild(na); return li; } // appends msg to the currently-editted page, sets the summary to summ, // and marks or unmarks the Watch this page checkbox according to watch. function edit_summary_watch(msg, summ, watch) { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value += msg; f.wpSummary.value = summ; f.wpWatchthis.checked = watch; } // appends msg to the currently-editted page, sets the summary to summ, // and marks or unmarks the Watch this page checkbox according to watch. function add_del_tag(msg, summ, watch) { var f = document.editform, t = f.wpTextbox1; msg += '\n'; msg += t.value; t.value = msg; f.wpSummary.value = summ; f.wpWatchthis.checked = watch; } function myTime() { var regexp = /(([2][0-3]|[0-1][0-9]):([0-5][0-9]), (January|February|March|April|May|June|July|August|September|October|November|December) ([1-2][0-9]|[3][0-1]|[1-9]) \d\d\d\d)( \(UTC\))/g; RegExp.input = document.body.innerHTML; var test = regexp.exec(); if (test[1]) {window.alert(test[1]);} var theHTML = document.body.innerHTML; var newHTML = theHTML.replace(regexp,cDate("$1") + " (CDT)"); document.body.innerHTML = newHTML; window.alert("woot"); } function cDate (thematch) { window.alert("thematch" + thematch); var theDate = new Date(); theDate.setTime(Date.parse(thematch)-18000000); return theDate; } // adds various tabs to call the above function add_tabs() { var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0]; // Only add for pages with "Editing User talk:" somewhere in the title if (document.title.indexOf("Editing User talk:") != -1) { tabs.appendChild(addlilink2('javascript:edit_summary_watch("{{" + "subst:Test1}} -- ~" + "~" + "~" + "~", "{{" + "Test1}}", true, 1)',"Test1")); tabs.appendChild(addlilink2('javascript:edit_summary_watch("{{" + "subst:Test2}} -- ~" + "~" + "~" + "~", "{{" + "Test2}}", true, 1)',"2")); tabs.appendChild(addlilink2('javascript:edit_summary_watch("{{" + "subst:Test3}} -- ~" + "~" + "~" + "~", "{{" + "Test3}}", true, 1)',"3")); tabs.appendChild(addlilink2('javascript:edit_summary_watch("{{" + "subst:Test4}} -- ~" + "~" + "~" + "~", "{{" + "Test4}}", true, 1)',"4")); tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:Test5}} -- ~" + "~" + "~" + "~", "{{" + "Test5}}", true, 1)',"5")); tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:Vanity|}} -- ~" + "~" + "~" + "~", "{{" + "Vanity}}", true, 1)',"Vanity")); tabs.appendChild(addlilink4('javascript:edit_summary_watch("{{" + "subst:spam1}} -- ~" + "~" + "~" + "~", "{{" + "spam1}}", true, 1)',"Spam1")); tabs.appendChild(addlilink3('javascript:edit_summary_watch("{{" + "subst:spam2}} -- ~" + "~" + "~" + "~", "{{" + "spam2}}", true, 1)',"2")); tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:blanking}} -- ~" + "~" + "~" + "~", "{{" + "blanking}}", true, 1)',"blank")); tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:nothanks|}} -- ~" + "~" + "~" + "~", "{{" + "nothanks}}", true, 1)',"nothanks")); } if (document.title.indexOf("Editing User talk:") == -1 && document.title.indexOf("Editing User:") == -1 && document.title.indexOf("Editing ") == 0) { tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "d}}", "{{" + "d}}", true, 1)',"d")); tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "db|}}", "{{" + "db}}", true, 1)',"db")); tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "dv}}", "{{" + "dv}}", true, 1)',"dv")); tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "db|Very short article providing little or no context}}", "{{" + "db|Very short article providing little or no context}}", true, 1)',"nc")); tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "db|Short article that serve no purpose but to disparage their subject}}", "{{" + "db|Short article that serve no purpose but to disparage their subject}}", true, 1)',"attack")); tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "nonsense}}", "{{" + "nonsense}}", true, 1)',"nonsense")); tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "PotentialVanity}}", "{{" + "PotentialVanity}}", true, 1)',"pv")); tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "stub}}", "stubify", false, 1)',"stub")); } if (document.title.indexOf("Editing") != 0) { tabs.appendChild(addlilink('javascript:myTime()', "time")); } } if (window.addEventListener) window.addEventListener("load", add_tabs, false); else if (window.attachEvent) window.attachEvent("onload", add_tabs); /////////////////////////////////////////////////////////////////// // AutoVFD by Korath // This needs to change depending on skin used. ////////////////////////////////////////////////////////////////// function add_link2(url, name) { var na = document.createElement('a'); na.setAttribute('href', url); na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); li.appendChild(na); var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; tabs.appendChild(li); } function strip_namespace(target) { var colon = target.indexOf(':'); if (colon != -1) { var spaces = new Array('User', 'Wikipedia', 'Image', 'MediaWiki', 'Template', 'Help', 'Category'); var ns = target.substring(0, colon); if (ns == '' || ns == 'Talk') return target.substring(colon + 1); else for (var i = 0; i < spaces.length; ++i) { if (ns == spaces[i] || ns == spaces[i] + '_talk') return target.substring(colon + 1); } } return target; } function afd() { document.editform.wpTextbox1.value = '{' + '{' + 'subst:afd}}\n' + document.editform.wpTextbox1.value; document.editform.wpSummary.value = 'afd'; var target = document.editform.action; target = target.substring(target.indexOf('title=') + 6, target.lastIndexOf('&action=submit')); var months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); var date = new Date(); date = date.getUTCFullYear() + '_' + months[date.getUTCMonth()] + '_' + date.getUTCDate(); var pagename = strip_namespace(target); window.open('/w/index.php?title=Wikipedia:Articles_for_deletion/' + pagename + '&action=edit&fakeaction=afdsub&faketarget=' + target, 'Afd ' + unescape(target), 'status,toolbar,location,menubar,directories,resizeable,scrollbars'); window.open('/w/index.php?title=Wikipedia:Articles_for_deletion/Log/' + date + '&action=edit&fakeaction=afdlist&faketarget=' + pagename, 'AfdLog ' + unescape(target), 'status,toolbar,location,menubar,directories,resizeable,scrollbars'); } function autoafd() { if (document.title.indexOf('Editing ') == 0) { var action = ''; var target = ''; if (location.search) { var l = location.search.substring(1).split('&'); for (var i = 0; i < l.length; ++i) { var eq = l[i].indexOf('='); var name = l[i].substring(0, eq); if (name == 'fakeaction') action = l[i].substring(eq + 1); else if (name == 'faketarget') target = unescape(l[i].substring(eq + 1)).replace(/_/g, ' '); } } if (action == 'afdlist') { document.editform.wpTextbox1.value += '{{' + 'subst:afd3|pg=' + target + '}}\n'; document.editform.wpSummary.value = '[[Wikipedia:Articles for deletion/' + target + ']]'; } else if (action == 'afdsub') { if (document.editform.wpTextbox1.value.length > 0) { target = document.editform.action; target = unescape(target.substring(target.indexOf('title=') + 6, target.lastIndexOf('&action=submit'))).replace(/_/g, ' '); window.alert("There's an old afd at the default location already.\n\n" + 'Please either move it out of the way (and update existing links to it), or file the Afd by hand in another location (such as [[' + target + ' (2)]]).'); } else document.editform.wpTextbox1.value += '{' + '{' + 'subst:afd2|pg=' + target + '|text=' + '}' + '}' + '-- ~' + '~' + '~' + '~\n' + '\n*\'\'\' \'\'\'\n*\'\'\' \'\'\'\n*\'\'\' \'\'\'\n'; } else if(document.title.indexOf("Editing User talk:") == -1) add_link2('javascript:afd()', 'Afd'); } } if (window.addEventListener) window.addEventListener('load', autoafd, false); else if (window.attachEvent) window.attachEvent('onload', autoafd); /////////////////////////////////////////////////////////////////// // AutoCopyvio - Created by bmicomp from modified autovfd ////////////////////////////////////////////////////////////////// function add_link2(url, name) { var na = document.createElement('a'); na.setAttribute('href', url); na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); li.appendChild(na); var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; tabs.appendChild(li); } function strip_namespace(target) { var colon = target.indexOf(':'); if (colon != -1) { var spaces = new Array('User', 'Wikipedia', 'Image', 'MediaWiki', 'Template', 'Help', 'Category'); var ns = target.substring(0, colon); if (ns == '' || ns == 'Talk') return target.substring(colon + 1); else for (var i = 0; i < spaces.length; ++i) { if (ns == spaces[i] || ns == spaces[i] + '_talk') return target.substring(colon + 1); } } return target; } function copyvio() { document.editform.wpTextbox1.value = '{' + '{' + 'copyvio|url=}}'; document.editform.wpSummary.value = 'copyvio'; var target = document.editform.action; target = target.substring(target.indexOf('title=') + 6, target.lastIndexOf('&action=submit')); var months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); var date = new Date(); // date = months[date.getUTCMonth()] + '_' + date.getUTCDate(); var datestring = date.getUTCFullYear() + '_' + months[date.getUTCMonth()] + '_' + date.getUTCDate(); var pagename = strip_namespace(target); window.open('/w/index.php?title=Wikipedia:Copyright_problems/' + datestring + '&action=edit&fakeaction=copyviolist&faketarget=' + pagename, 'status,toolbar,location,menubar,directories,resizeable,scrollbars'); } function autocopyvio() { if (document.title.indexOf('Editing ') == 0) { var action = ''; var target = ''; if (location.search) { var l = location.search.substring(1).split('&'); for (var i = 0; i < l.length; ++i) { var eq = l[i].indexOf('='); var name = l[i].substring(0, eq); if (name == 'fakeaction') action = l[i].substring(eq + 1); else if (name == 'faketarget') target = unescape(l[i].substring(eq + 1)).replace(/_/g, ' '); } } if (action == 'copyviolist') { // var index = document.editform.wpTextbox1.value.lastIndexOf("\n==Footer=="); /* if (index == -1) { window.alert("Couldn't find footer\n\n"); } else { */ // var firsthalf = document.editform.wpTextbox1.value.substr(0,index); // var secondhalf = document.editform.wpTextbox1.value.substr(index); document.editform.wpTextbox1.value += '*[[' + target + ']] <span class="plainlinks">([http://en.wikipedia.org/{{localurl:' + target + '|action=history}} history] · [http://en.wikipedia.org/{{localurl:' + target + '|diff=0}} last edit])</span>' + ' from [' + '] ~' + '~~' + '~'; document.editform.wpSummary.value = 'Copyvio ' + '[[' + target + ']]'; } // } else if (document.title.indexOf("Editing User talk:") == -1) add_link2('javascript:copyvio()', 'copyvio'); } } if (window.addEventListener) window.addEventListener('load', autocopyvio, false); else if (window.attachEvent) window.attachEvent('onload', autocopyvio); ///////////////////// // Blocktab by Korath ///////////////////// // Returns <li><a href="url">name</a></li> function addlilink(url, name) { var na = document.createElement('a'); na.setAttribute('href', url); var txt = document.createTextNode(name); na.appendChild(txt); var li = document.createElement('li'); li.appendChild(na); return li; } // Adds a "blocklog" tab and fills in the username field on Special:Blockip, if a "&faketarget=username" is present. function do_blockip_stuff() { // focus on Reason field document.getElementsByName('wpBlockReason')[0].focus(); // Look for a &faketarget= for the username/ip var l = location.search.substring(1).split('&'); var target = ''; for (var i = 0; i < l.length; ++i) { var n = l[i].indexOf('='); if (l[i].substring(0, n) == 'faketarget') { target = l[i].substring(n + 1); break; } } if (target == '') return; // put account name in "IP Address/username" field var addr = document.getElementsByName('wpBlockAddress')[0]; addr.value = unescape(target); // add "blocklog" tab var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0]; tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + target, 'blocklog')); } // Opens the block log in the current window, and Special:Blockip in a popup. // Width, height, top, and left are chosen for a 1600x1200 display. //function blockpage_and_log(target) //{ // window.open('Special_Blockip.html?foo=blarg&faketarget=' + target, 'Block', 'width=1600,height=600,top=600,left=0'); // document.location.href = 'http://en.wikipedia.org/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + target; //} // Adds "block" and "blocklog" tabs to User: and User talk: pages. function add_block_tab() { var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].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 tabs.appendChild(addlilink('/w/index.php?title=Special%3ABlockip&faketarget=' + editlk, 'block')); // To open the block page and block log simultaneously, replace the above line with: // tabs.appendChild(addlilink('javascript:blockpage_and_log("' + editlk + '")', 'Block')); // and uncomment the blockpage_and_log() function above. // add "blocklog" tab tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + editlk, 'blocklog')); } function do_onload() { if (document.title.indexOf('User:') == 0 || document.title.indexOf('User talk:') == 0 || document.title.indexOf('Editing User:') == 0 || document.title.indexOf('Editing User talk:') == 0) add_block_tab(); else if (document.title.indexOf('Block user') == 0) // could stand to be more robust do_blockip_stuff(); } if (window.addEventListener) window.addEventListener("load", do_onload, false); else if (window.attachEvent) window.attachEvent("onload", do_onload);