User:Pling/monobook.js

From Guild Wars 2 Wiki
Jump to navigationJump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/**
* Links in "user row"
**/
function addTopLink(label, url) {
	var userpage = document.getElementById('pt-userpage');
 
	if (userpage) {
		var link  = document.createElement('a');
		link.href = url;
		link.appendChild(document.createTextNode(label));
 
		var li    = document.createElement('li');
		li.appendChild(link);

		userpage.parentNode.insertBefore(li, userpage.parentNode.firstChild);
	}
}
addOnloadHook(function() {
	/**
	 * Format : addTopLink ('link label', 'link url');
	 **/
	addTopLink('del', '/wiki/Guild Wars 2 Wiki:List of candidates for deletion');
	addTopLink('m/s/m', '/wiki/Guild Wars 2 Wiki:List of proposed moves, splits and merges');
	addTopLink('checklog', '/wiki/Special:CheckUser/Log');
	addTopLink('patrol', '/index.php?title=Special%3ALog&type=patrol&user=&page=');
	addTopLink('images', '/index.php?title=Special:PrefixIndex&namespace=6&prefix=User_Pling');
	addTopLink('pages', '/index.php?title=Special:PrefixIndex&namespace=2&prefix=Pling');
});

/**
  *  All code below this comment is used for adding relevant, categorized pre-defined reasons
  *  on the deletion page.
  *
  *  @author Johan Sköld [ [[User:Galil]] ]
  **/
function addEvent(element, event, listener) {
	if (element.addEventListener)
		element.addEventListener(event, listener, false);
	else if (element.attachEvent)
		element.attachEvent('on'+event, listener);
	else
		element['on'+event] = listener;
}
 
function addList(id, label) {
	var wpReason = document.getElementById('wpReason');
 
	if (wpReason) {
		var list = document.createElement('ul');
		list.id  = id;
 
		wpReason.parentNode.insertBefore(document.createTextNode(label), wpReason);
		wpReason.parentNode.insertBefore(list, wpReason);
	}
}
 
function addReason(listId, reason) {
	var wpReason = document.getElementById('wpReason');
 
	if (wpReason) {
		var list  = document.getElementById(listId);
		if (!list)
			throw new Error("List does not exist.");
 
		var link  = document.createElement('a');
		link.href = 'javas' + 'cript:void(0);'; 
		addEvent(link, 'click', function() { wpReason.value = reason; });
		link.appendChild(document.createTextNode(reason));
 
		var item = document.createElement('li');
		item.appendChild(link);
 
		list.appendChild(item);
	}
}
 
addEvent(window, 'load', function() {
	if (/action=delete/i.test(document.location.search)) {
                 /**
		 *  This is where the magic happens. The format is quite easy to understand but if
		 *  you want help with it, feel free to ask me or poke as we both would probably be
		 *  able to help.
		 *
		 *  To add a list:
		 *      addList('list name', 'list label');
		 * 
		 *    * list name  = Unique name of the list. Can pretty much only contain letters,
		 *                   numbers, underscores and dashes.
		 *    * list label = Label of the list. This does not have to be unique.
		 *
		 *  To add a reason to a list:
		 *      addReason('list name', 'reason label');
		 *
		 *    * list name    = The unique name of the list to add the reason to.
		 *    * reason label = The actual reason. This is used both as label for the link 
		 *                     and inserted into the reason box.
		 **/
		addList('general', 'General speedy reasons');
		addReason('general', 'Vandalism');
		addReason('general', 'Link-spam');
		addReason('general', 'Test page');
		addReason('general', 'Author\'s request');
		addReason('general', 'Housekeeping');
		addReason('general', 'Attack page');
		addReason('general', 'Recreation of deleted page');
		
		// articles
		if (wgCanonicalNamespace == '') {
			addList('article', 'Article speedy reasons');
			addReason('article', 'No appropriate information');
			addReason('article', 'No verifiable source');
			addReason('article', 'Unrelated to Guild Wars 2');
		}
 
		// files
		if (wgCanonicalNamespace == 'File') {
			addList('file', 'Image speedy reasons');
			addReason('file', 'Redundant image');
			addReason('file', 'Corrupt or unviewable image');
			addReason('file', 'User\'s request');
  		}
 
		// categories
		if (wgCanonicalNamespace == 'Category') {
			addList('category', 'Category speedy reasons');
			addReason('category', 'Empty unused category');
  		}
 
		// users
		if (wgCanonicalNamespace == 'User' || (wgCanonicalNamespace == 'User_talk')) {
			addList('user', 'User speedy reasons');
			addReason('user', 'User\'s request');
			addReason('user', 'Unregistered user');
  		}
 
		// common reasons
		addList('common', 'Common deletion reasons');
		addReason('common', 'Deletion uncontested after three days');
		addReason('common', 'Associated page deleted');
		addReason('common', 'Move remnant');
		addReason('common', 'Copyright violation');
	}
});
/**
  *  End of "all code below this comment"!
  **/

/**
 * WikiSwap
 **/
function importScript(page, lang) {
     var url = wgScriptPath + '/index.php?title='
                            + encodeURIComponent(page.replace(' ','_'))
                            + '&action=raw&ctype=text/javascript&dontcountme=s';
     if (lang) url = 'http://' + lang + '.wikipedia.org' + url;
     var s = document.createElement('script');
     s.src = url;
     s.type='text/javascript';
     document.getElementsByTagName('head')[0].appendChild(s);
}
importScript('User:AT/wikiswap.js');

// This script modifies the output of the "Your signature with timestamp" edit button.
 
(function () {
    var oldAddButton = window.addButton;
    if (typeof(oldAddButton) != 'function') return;
    window.addButton = function () {
        if (arguments.length > 2)
            arguments[2] = arguments[2].replace(/^--(~+)$/, '$1');
        oldAddButton.apply(this, arguments);
    };
})();