User:Lar/moretabs/monobook.js

//

// must have brought DYK funcs in before calling this module as it depends on some of them

// generate and return date in the form "June 11, 2006" function cur_date { var months = new Array('January', 'February', 'March', 'April', 'May', 'June',                         'July', 'August', 'September', 'October', 'November', 'December'); var date = new Date; var moDayStr = months[date.getUTCMonth]+" "+date.getUTCDate; var t = moDayStr; return t; }

function cur_date_dashes { var date = new Date; var moDayYearStr = date.getUTCDate+"-"+date.getUTCMonth+"-"+date.getUTCFullYear; var t = moDayYearStr; return t; }

function cur_date_year { var months2 = new Array('January', 'February', 'March', 'April', 'May', 'June',                         'July', 'August', 'September', 'October', 'November', 'December'); var date = new Date; var yearStr = date.getUTCFullYear; var MoDayStr = months2[date.getUTCMonth]+" "+date.getUTCDate; var t = MoDayStr+", "+yearStr; return t; }

// for article talk page function afdresult {   var res = prompt("Result?","Keep - No Consensus"); if(!res) return; var afddate = prompt("Nomination date?",cur_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 = ''; }

// 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.

// SAME AS ABOVE?? ... almost, one has optional \n the other is mandatory 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; }

// do a newsletter delivery // edit summary should say //  Delivery of WP:Beatles newsletter WikiProject The Beatles/Outreach/Newsletter/Issue 005 // payload should be // //  == WikiProject The Beatles Newsletter, Issue 3, July 2006 == //

function newsletterDeliv { var f = document.editform, t = f.wpTextbox1; t.value += " \n"; f.wpSummary.value = "WikiProject The Beatles Newsletter, " +"Issue 8, December 2006";

} // cribbed from http://alexking.org/blog/2003/06/02/inserting-at-the-cursor-using-javascript/ function insertAtCursor(myField, myValue) { //IE support if (document.selection) { myField.focus; sel = document.selection.createRange; sel.text = myValue; } //MOZILLA/NETSCAPE support else if (myField.selectionStart || myField.selectionStart == '0') { var startPos = myField.selectionStart; var endPos = myField.selectionEnd; myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length); } else { myField.value += myValue; } }

//refactored notices

//var idString = prompt("ID string?"); //(Refactored to User_talk: per my policy) ~

function refactorTo { var f = document.editform, t = f.wpTextbox1; var toUser = prompt("user that we are refactoring to?"); //check for empty string if ( toUser=='') { toUser+='Fred'; }

var myValue="(Refactored to User_talk:"+toUser+" per my policy) ~";

// insert at cursor insertAtCursor(t, myValue); f.wpSummary.value = "refactor to user_talk:" + toUser +""; }

function refactorFrom { var f = document.editform, t = f.wpTextbox1; var fromUser = prompt("user that we are refactoring from (blank for Lar)?"); //check for empty string if ( fromUser=='') { fromUser+='Lar'; }

var myValue="(Refactored from User_talk:"+fromUser+" per my policy) ";

// insert at cursor insertAtCursor(t, myValue); f.wpSummary.value = "refactor from user_talk:"+fromUser+" and reply"; }

// add a // at the end of the current edit contents.

function addCiteWeb { var urlString=prompt("URL string?");           // prompt for URL var date = new Date; var f = document.editform, t = f.wpTextbox1;  // t points to the edit box

//check for empty string if (urlString=='') { urlString+=' '; }

var myValue=" ";

// insert at end // t.value += myValue;

// insert at cursor insertAtCursor(t, myValue); }

// add a 00:49, 27 May 2006 // at the end of the current edit contents. // will have problems at the change in years since it depends on date.getUTCFullYear function addUnsigned2 { // sample string to paste in is "18:32, 18 June 2006 FredUser" or "00:49, 27 May 2006 Timothy Usher " var date = new Date; var idString = prompt("ID string?"); var f = document.editform, t = f.wpTextbox1;

// a regexp for the date part of the string would be a better way to do this...  //... but slicing on year should almost always work

var pipeLoc= idString.indexOf(date.getUTCFullYear); // assume 4 digit year, breaks after 9999 var idStringPiped= idString.substr(0,pipeLoc+4)+'|'+idString.substr(pipeLoc+5,idString.length);

t.value += "" + idStringPiped + ""; f.wpSummary.value = "add Unsigned2 using string:" + idString; }

//Add test-n templates to user talk pages function testn(number) { var page = prompt("Vandalism to which article?") var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value += "" + page + " ~"; f.wpSummary.value = "Your edits to " + page + "" document.editform.wpWatchthis.checked = false; }

// adds various tabs and menu tabs function add_more_tabs { var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; var username=document.getElementById("pt-userpage").textContent;

// Only add for pages with "Editing User talk:" somewhere in the title if (document.title.indexOf("Editing User talk:") != -1) {     addlimenu(tabs, 'Talk messages', 'talkm'); var talkm = document.getElementById('talkm').getElementsByTagName('ul')[0]; addlilink(talkm,'javascript:updated_dyk','DYK-Auth'); addlilink(talkm,'javascript:updated_dyk_nom','DYK-Nom'); addlilink(talkm,'javascript:addUnsigned2','Unsigned2'); addlilink(talkm,'javascript:refactorTo','refactor TO'); addlilink(talkm,'javascript:refactorTo','refactor FROM'); addlilink(talkm,'javascript:newsletterDeliv','Newsletter'); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "Welcome to Wikipedia!", true, 1)','Welcome', ''); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "Welcome to Wikipedia!", true, 1)','Anon', ''); addlilink(talkm, 'javascript:testn(1)', 'Test1', ''); addlilink(talkm,'javascript:testn(2)','Test2', ''); addlilink(talkm,'javascript:testn("2a")','Test2a', ''); addlilink(talkm,'javascript:testn(3)','Test3', ''); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "Last warning", false, 1)','Test4', ''); addlilink(talkm,'javascript:edit_summary_watch("24 hours", "You have been blocked", false, 1)','Test5', ''); addlilink(talkm,'javascript:edit_summary_watch("24 hours", "You have been blocked", false, 1)','S/block', ''); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "Vandalism", false, 1)','BV', ''); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "About the page you created", false, 1)','Vanity', ''); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "Adding links to Wikipedia", false, 1)','Spam1', ''); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "Spamming", false, 1)','Spam2', ''); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "Last warning for spamming", false, 1)','Spam3', ''); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "You have been blocked for spamming", false, 1)','Spam4', ''); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "", false, 1)','rvfd', ''); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "Blanking pages", false, 1)','blanking', ''); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "About your edits", false, 1)','nothanks', ''); addlilink(talkm,'javascript:edit_summary_watch(" -- ~", "", false, 1)','nothanks-sd', ''); }

// Only add for pages with "Editing Talk:" somewhere in the title if (document.title.indexOf("Editing Talk:") != -1) { addlimenu(tabs, 'artTalk msgs', 'talkm'); var talkm = document.getElementById('talkm').getElementsByTagName('ul')[0]; addlilink(talkm,'javascript:dyk_talk','DYK'); addlilink(talkm,'javascript:afdresult','AfDres'); addlilink(talkm,'javascript:addUnsigned2','Unsigned2'); addlilink(talkm,'javascript:refactorTo','refactor TO'); addlilink(talkm,'javascript:refactorTo','refactor FROM'); }

// AfD tabs if(document.title.indexOf("Editing Wikipedia:Articles for deletion") != -1){ addlimenu(tabs, 'AfD actions', 'afda'); var afda = document.getElementById('afda').getElementsByTagName('ul')[0]; addlilink(afda,'javascript:addUnsigned2','Unsigned2'); addlilink(afda, 'javascript:closevfd("Delete", "")', 'Delete', ''); addlilink(afda, 'javascript:closevfd("Speedy Delete", "")', 'SD', ''); addlilink(afda, 'javascript:closevfd("Keep", "")', 'Keep', ''); addlilink(afda, 'javascript:closevfd("Keep (No consensus)", "")', 'Keep, NC', ''); addlilink(afda, 'javascript:closevfd("Merge and Redirect", " to " + prompt("Merge and redirect to?") + "")', 'M&R', ''); addlilink(afda, 'javascript:closevfd("Redirect", " to " + prompt("Redirect to?") + "")', 'Redirect', ''); addlilink(afda, 'javascript:closevfd("Ttranswiki", " to " + prompt("Transwiki to?"))', 'Transwiki', ''); addlilink(afda, 'javascript:closevfd("Transwiki", " to Wiktionary")', 'WIKT', ''); addlilink(afda, 'javascript:closevfd(prompt("Result?"), "")', 'Other', '');

}  if(document.title.indexOf("Wikipedia:Articles for deletion") ==0 ){     //Add show/hide closed AfDs 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']; }

if (document.title.indexOf("Editing User:" + username + "/Status") == 0){ addlimenu(tabs, 'Change my status', 'mystatus'); var mystatus = document.getElementById('mystatus').getElementsByTagName('ul')[0]; addlilink(mystatus, 'javascript:edit_status("in")', 'In', ''); addlilink(mystatus, 'javascript:edit_status("out")', 'Out', ''); addlilink(mystatus, 'javascript:edit_status("around")', 'Around', ''); }

if (document.title.indexOf("Block user") == 0) { addlilink(tabs, 'javascript:blockuser("", "indefinite")', "username"); addlilink(tabs, 'javascript:blockuser("imposter", "indefinite")', "imposter"); addlilink(tabs, 'javascript:blockuser("please contact an administrator for verification purposes, as described on this page", "indefinite")', "verification"); addlilink(tabs, 'javascript:blockuser("vandalism only account", "indefinite")', "vandalism only"); addlilink(tabs, 'javascript:blockuser("", "indefinite")', "willy"); addlilink(tabs, 'javascript:blockuser("", "indefinite")', "communism"); addlilink(tabs, 'javascript:blockuser("", "24 hours")', "revert"); addlilink(tabs, 'javascript:blockuser("vandalism - AOL", "15 minutes")', "AOL") addlilink(tabs, 'javascript:blockuser("vandalism - shared IP", "3 hours")', "shared") addlilink(tabs, 'javascript:blockuser("vandalism - returning", "1 week")', "returning"); addlilink(tabs, 'javascript:blockuser("vandalism", "24 hours")', "vandalism"); }

// if we are editing and it's SOME kind of talk page... //  if ( (document.title.indexOf("Editing") ==0) && (document.title.indexOf("Talk") != -1) ) //  { //      addlimenu(tabs, 'any Talk', 'anytalkm'); //     var anytalkm = document.getElementById('anytalkm').getElementsByTagName('ul')[0]; //     addlilink(anytalkm,'javascript:addUnsigned2','Unsigned2'); //  }

if (document.title.indexOf("Editing") != -1) {    addlimenu(tabs, 'refsL', 'refsL'); var refsL = document.getElementById('refsL').getElementsByTagName('ul')[0]; addlilink(refsL,'javascript:addCiteWeb','CiteWeb'); }

}

function closevfd(bold, notbold){ var form = document.editform; var txt = form.wpTextbox1; txt.value = " " + bold + "" + notbold + ". --~\n" + txt.value + "\n\n"; form.wpSummary.value = "Close discussion: " + bold + notbold; form.wpWatchthis.checked = false; }

/////////////////////////////////////////////////////////////////// // 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 vfd { 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=vfdsub&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=vfdlist&faketarget=' + pagename,             'VfdLog ' + unescape(target),              'status,toolbar,location,menubar,directories,resizeable,scrollbars'); }

function autovfd { 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 == 'vfdlist') {         document.editform.wpTextbox1.value += '\n'; document.editform.wpSummary.value = 'Articles for deletion/' + target + ''; }     else if (action == 'vfdsub') {         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 vfd at the default location already.\n\n" +                          'Please either move it out of the way (and update existing links to it), or file the Vfd 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 add_link2('javascript:vfd', 'Afd'); } }

/////////////////////////////////////////////////////////////////// // AutoCopyvio - Created by bmicomp from modified autovfd //////////////////////////////////////////////////////////////////

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 + ' (history &middot; last edit) ' + ' from [' + '] ~' + '' + '~'; document.editform.wpSummary.value = 'Copyvio ' +  + target + ; } //       }      else add_link2('javascript:copyvio', 'copyvio'); } }

//