User:Wayward/monobook.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
The accompanying .css page for this skin is at User:Wayward/monobook.css. |
/* <pre><nowiki> */
/**
* [[User:Wayward]]'s monobook.js, based on [[User:Alphax/monobook.js]]
* Must use [[User:Wayward/monobook.css]] for full tab functionality
* Only tested with Firefox and admin rights
* Looks like hell on IE with the current .css and may not be fully functional
* A version of this script with more AfD helps can be found at [[User:Wayward/monobook.full]]
* Forked from [[User:ABCD/monobook.js]] around April 2005
* Dual licensed under the GFDL and GPL
* See also: [[User:JesseW/monobook.js]]
* And best of all: [[WP:US]]
*/
/**** Begin ****/
// [[User:Lupin/popups.js]] - please include this line
mw.loader.load(
'https://wiki.riteme.site/w/index.php?title=User:Lupin/popups.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s');
simplePopups=true;
popupAdminLinks=true;
popupStructure='menus';
/**** afd helper ****/
// From [[User:Jnothman/afd_helper/script.js]]
document.write('<script type="text/javascript" src="http://wiki.riteme.site/w/index.php?title=User:Jnothman/afd_helper/script.js&action=raw&ctype=text/javascript&dontcountme=s"><\/script>');
/**** Load custom functions ****/
$( myLoadFuncs );
function myLoadFuncs()
{
// &action=purge
addPurge();
// §ion=0
addEditSection0();
// cause the personal menu looks bad
changeLinks();
// load tabs
add_tabs();
// add toolbox links
addToolBoxLinks();
// add navigation bar links
addNavBarLinks();
// make red talk page links start new sections
talkpageplus();
// 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();
// add block and block IP tabs
blockip();
}
/**** 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').getElementsByTagName("ul")[0].insertBefore(y,x.nextSibling);
}
}
/**** 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();
}
/**** 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 block and blocklog tabs ****/
function addTab(url, name, id, title, key){
var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
addlilink(tabs, url, name, id, title, key);
}
// Adds a "blocklog" tab and fills in the username field on Special:Blockip, if a "&ip=username" is present.
function do_blockip_stuff()
{
var form = document.getElementById('blockip');
// focus on Reason field
form.wpBlockReason.focus();
var target = getParam('ip');
if(target == '') return;
// add "blocklog" tab
addTab('/wiki/Special:Log/block?page=User:' + target, 'blocklog', 'ca-blocklog');
}
// 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');
// add "edit count" tab
//addTab('http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?dbname=enwiki_p&user=' + editlk, 'ecount', 'ca-ecount');
}
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();
}
function getParam(name){
if(location.search){
for(var x in location.search.substring(1).split('&')){
var eq = x.indexOf('=');
if(x.substring(0, eq) == name) return x.substring(eq + 1);
}
}
return '';
}
/**** Talk message functions ****/
// Add date to talk page
function add_date(date)
{
var f = document.editform, t = f.wpTextbox1;
if (t.value.length > 0)
t.value += '\n';
t.value += date;
}
// 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 += "{{subst:uw-vandalism" + number + "|" + page + "|subst=subst:}} ~~~~";
f.wpSummary.value = "Your edits to [[" + page + "]]"
document.editform.wpWatchthis.checked = false;
document.editform.wpMinoredit.checked = false;
}
// Add duration for s/block
function duration(number)
{
var duration = prompt("Block duration")
var f = document.editform, t = f.wpTextbox1;
if (t.value.length > 0)
t.value += '\n';
t.value += "{{subst:uw-block2|time=" + duration + "|reason=[[Wikipedia:Vandalism|repeated abuse of editing privileges]]|subst=subst:}}";
f.wpSummary.value = "You have been blocked for " + duration + ""
document.editform.wpWatchthis.checked = false;
document.editform.wpMinoredit.checked = false;
}
// Add page for rvfd
function rvfd(number)
{
var page = prompt("Vandalism to which AfD candidate?")
var f = document.editform, t = f.wpTextbox1;
if (t.value.length > 0)
t.value += '\n';
t.value += "{{subst:rvfd|" + page + "}} ~~~~";
f.wpSummary.value = "Your edits to [[" + page + "]]"
document.editform.wpWatchthis.checked = false;
document.editform.wpMinoredit.checked = false;
}
// Add vanity article
function vanity(number)
{
var page = prompt("Article")
var f = document.editform, t = f.wpTextbox1;
if (t.value.length > 0)
t.value += '\n';
t.value += "{{subst:vanity|" + page + "}} ~~~~";
f.wpSummary.value = "[[" + page + "]]"
document.editform.wpWatchthis.checked = false;
document.editform.wpMinoredit.checked = false;
}
// Appends msg to the currently editted page, sets the summary to summ,
// marks or unmarks the "Watch this page" checkbox according to watch,
// and marks or unmarks the "Minor edit" checkbox
function edit_summary_watch(msg, summ, watch, minor)
{
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;
f.wpMinoredit.checked = minor;
}
// Places perm block and name block tags at top of edit section,
// marks or unmarks the "Watch this page" checkbox according to watch,
// and marks or unmarks the "Minor edit" checkbox
function perm_name_block(msg, summ, watch, minor)
{
var f = document.editform, t = f.wpTextbox1;
if (t.value.length > 0)
t.value += '\n';
var temp = t.value;
t.value = msg + '\n\n' + temp;
f.wpSummary.value = summ;
f.wpWatchthis.checked = watch;
f.wpMinoredit.checked = minor;
}
/**** Integrate tabs and talk message functions ****/
// adds various tabs and menu tabs
function add_tabs()
{
var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
// 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:add_date("==" + "{{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}\, {{subst:CURRENTYEAR}}" + "==", 1)','Add Date', '');
addlilink(talkm,'javascript:testn(1)', 'Test1', '');
addlilink(talkm,'javascript:testn(2)','Test2', '');
addlilink(talkm,'javascript:testn(3)','Test3', '');
addlilink(talkm,'javascript:testn(4)','Test4', '');
addlilink(talkm,'javascript:duration(1)', 'Temp Block', '');
addlilink(talkm,'javascript:perm_name_block("{{subst:uw-block3|time=duration|reason=repeated [[Wikipedia:Vandalism|abuse of editing privileges]]|subst=subst:}}", "You have been indefinitely blocked", true, false, 1)','Perm Block', '');
addlilink(talkm,'javascript:perm_name_block("{{subst:usernameblock}} ~~~~", "{{usernameblock}}", true, false, 1)','Name Block', '');
addlilink(talkm,'javascript:edit_summary_watch("{{subst:uw-bv|subst=subst:}} ~~~~", "Vandalism", false, false, 1)','BV', '');
addlilink(talkm,'javascript:vanity(1)', 'Vanity', '');
addlilink(talkm,'javascript:edit_summary_watch("{{subst:spam1}} ~~~~", "Adding links to Wikipedia", false, false, 1)','Spam1', '');
addlilink(talkm,'javascript:edit_summary_watch("{{subst:spam2}} ~~~~", "Spamming", false, false, 1)','Spam2', '');
addlilink(talkm,'javascript:edit_summary_watch("{{subst:spam3}} ~~~~", "Last warning for spamming", false, false, 1)','Spam3', '');
addlilink(talkm,'javascript:edit_summary_watch("{{subst:spam4}} ~~~~", "You have been blocked for spamming", false, false, 1)','Spam4', '');
addlilink(talkm,'javascript:rvfd(1)', 'rvfd', '');
addlilink(talkm,'javascript:edit_summary_watch("{{subst:blanking}} ~~~~", "Blanking pages", false, false, 1)','blanking', '');
addlilink(talkm,'javascript:edit_summary_watch("{{subst:nothanks|}} ~~~~", "About your edits", false, false, 1)','nothanks', '');
addlilink(talkm,'javascript:edit_summary_watch("{{subst:nothanks-sd|pg=page name|url=url of source}} ~~~~", "{{nothanks-sd}}", false, false, 1)','nothanks-sd', '');
addlilink(talkm,'javascript:edit_summary_watch("{{subst:Welcome}} ~~~~", "Welcome to Wikipedia!", true, false, 1)','Welcome', '');
addlilink(talkm,'javascript:edit_summary_watch("{{subst:Anon}} ~~~~", "Welcome to Wikipedia!", true, false, 1)','Anon', '');
}
}
/**** Add links to the toolbox ****/
function addToolBoxLinks()
{
var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0];
addlilink(tb, '/wiki/Special:Ipblocklist', 'IPBlocklist', '');
addlilink(tb, '/w/index.php?title=Special:Ipblocklist&action=unblock&ip=', 'Unblock page', '');
addlilink(tb, '/wiki/Wikipedia:Template messages/User_talk_namespace', 'Talk templates', '');
addlilink(tb, '/wiki/Wikipedia:Template_messages', 'Templates', '');
addlilink(tb, '/wiki/WP:CSD', 'SD criteria', '');
addlilink(tb, 'http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?dbname=enwiki_p&user=Wayward', 'My edit count', '');
//addlilink(tb, '/wiki/Special:Log/delete', 'Delete log', '');
//addlilink(tb, '/wiki/Category:Wikipedia spam cleanup', 'Spam cleanup', '');
username_a = document.URL.match(/:.*:(.*)/);
username=username_a[1];
addlilink(tb, 'http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?dbname=enwiki_p&user=' + username, 'User\'s edit count', '');
addlilink(tb, '/wiki/Special:Log', 'Log', '');
addlilink(tb, '/wiki/Category:Requests for unblock', 'Unblock requests', '');
}
/**** Add links to the navigation bar ****/
function addNavBarLinks()
{
var navbar = document.getElementById('p-navigation').getElementsByTagName('ul')[0];
var afdtime = new Date();
var months = ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'];
addlilink(navbar, '/wiki/Wikipedia:Articles_for_deletion/Log/' + afdtime.getUTCFullYear()
+ '_' + months[afdtime.getUTCMonth()] + '_' + afdtime.getUTCDate(), 'Todays AfD', '');
afdtime.setUTCDate(afdtime.getUTCDate() - 5);
addlilink(navbar, '/wiki/Wikipedia:Articles_for_deletion/Log/' + afdtime.getUTCFullYear()
+ '_' + months[afdtime.getUTCMonth()] + '_' + afdtime.getUTCDate(), '5-day-old AfD', '');
var username=document.getElementById("pt-userpage").textContent;
//addlilink(navbar, '/w/index.php?title=User:' + username + '/Status&action=edit', 'Edit my status', '');
addlilink(navbar, '/w/index.php?title=User:' + username + '/monobook.js&action=edit', 'monobook.js', '');
addlilink(navbar, '/w/index.php?title=User:' + username + '/monobook.css&action=edit', 'monobook.css', '');
addlilink(navbar, '/wiki/User:Wayward/Sandbox', 'My sandbox', '');
}
/**** 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 += '§ion=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('history'));
// var talkmessagetext = 'You have ';
// talkmessagebox.innerHTML = talkmessagetext;
// talkmessagebox.appendChild(newmessagelink);
talkmessagebox.appendChild(document.createTextNode(' ('));
talkmessagebox.appendChild(historylink);
talkmessagebox.appendChild(document.createTextNode(')'));
}
/**** Add "unwatch" link to watchlist ****/
*/
$(function () {
// Check if we're on the watchlist
if (!wgCanonicalSpecialPageName || wgCanonicalSpecialPageName != "Watchlist") return;
if (!document.forms[0] || !document.forms[0].namespace) return;
// Unwatch links go back to watchlist with "Removing requested items from watchlist..." message
var query_prefix = "title="+encodeURIComponent(mw.config.get('wgPageName'))+"&action=submit&remove=1&id[]=";
// ...or...
// Unwatch links go to "Removed from watchlist" page
//var query_prefix = "action=unwatch&title=";
// get list of all links in content:
var links = document.getElementById('content').getElementsByTagName('a');
// make a static copy of the nodelist and lose the original for speed
// while we're at it, prune the uninteresting links from the list
var linksCopy = new Array ();
for (var i = 0; i < links.length; i++) {
if (/[?&]action=history([&#]|$)/.test(links[i].href)) linksCopy.push(links[i]);
}
links = linksCopy;
for (var i = 0; i < links.length; i++) {
// create unwatch link and append it after history link
var unwatch = document.createElement('a');
unwatch.href = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + "/index.php?" + query_prefix + encodeURIComponent(links[i].title);
unwatch.title = "Unwatch "+links[i].title;
unwatch.appendChild(document.createTextNode("unwatch"));
links[i].parentNode.insertBefore(unwatch, links[i].nextSibling);
// insert a delimiter between the two links
var delim = links[i].previousSibling;
delimText = (delim.nodeType == 3 ? delim.nodeValue : ""); // kluge to handle case where "diff" is unlinked
delim = document.createTextNode(delimText.replace(/^.*diff/, ""));
links[i].parentNode.insertBefore(delim, unwatch);
}
});
//
/**** End ****/
/* </nowiki></pre> */