MediaWiki:Common.js

/* @author: UltimateSupreme(http://naruto.wikia.com/wiki/User:UltimateSupreme) */ /** * 10:03, September 27, 2014 (UTC) * http://naruto.wikia.com/wiki/MediaWiki:Common.js * This is the central JavaScript file for the Wiki. Any code placed in here will * run on every page for every user (logged in or not) on every skin (Oasis or * Monobook). * Only JS which works on both Oasis and Monobook should be here, if it doesn't work * on one or the other then use MediaWiki:Wikia.js (Oasis) or MediaWiki:Monobook.js */ (function (window, $, mw) {	"use strict";	// Bulk loading scripts.	// scriptList are scripts to load everywhere	// pageScriptList are scripts which only certain pages need.	var scriptList = [],		pageScriptList = [];					/* Scripts to be loaded everywhere */	// Make WantedFiles File:xxx entries become links to Special:Upload (bug fix)	scriptList.push('MediaWiki:Common.js/FixWantedFiles.js');	// Configure AjaxRC	(window.ajaxPages = (window.ajaxPages || [])).push( "Special:RecentChanges", "Special:Watchlist", "Special:Log", "Special:Contributions", "Special:NewFiles", "Special:NewPages", "Special:ListFiles", "Special:WikiActivity" );	window.AjaxRCRefreshText = 'Auto-Refresh';	window.AjaxRCRefreshHoverText = 'Automatically refresh every 60secs';	window.ajaxCallAgain = ($.isArray(window.ajaxCallAgain) && window.ajaxCallAgain) || [];	scriptList.push('u:dev:AjaxRC/code.js');	// ArchiveTool	window.archiveListTemplate = 'ArchiveList';	window.archivePageTemplate = 'ArchivePage';	scriptList.push('u:dev:ArchiveTool/code.js');	// User tags	window.UserTagsJS = {		tags: {			bureaucrat: {				link: 'Project:Bureaucrat'			},			sysop: {				link: 'Project:Sysop',				title: 'System-Operator ( Administrator )'			},			rollback: {				link: 'Project:Rollback'			},			inactive: {				title: 'The user hasn\'t edited for last 30 days'			}		},		modules: {			inactive: 30,			mwGroups: [				'bureaucrat', 'rollback', 'sysop', 'bot', 'bot-global'			],			autoconfirmed: false,			newuser: true,			metafilter: {				sysop: ['bureaucrat'],				bot: ['bot-global'] },			custom: { Wikia: 'bot-global', Default: 'bot-global' }		}	};	scriptList.push('u:dev:UserTags/code.js'); // Null Edit button // Conditionally load purge button if page cannot be edited if ($("#ca-edit").length || $("a[data-id='editprofile']").length) { scriptList.push('u:dev:NullEditButton/code.js'); } else { scriptList.push('u:dev:PurgeButton/code.js'); }	// List Files. See Narutopedia:ListFiles scriptList.push('u:dev:ListFiles/code.js'); // Warnings scriptList.push('MediaWiki:Common.js/Warnings.js'); // Lock forums if not commented for 90 days // Place a warning after 30 days window.LockForums = { expiryDays: 90, expiryMessage: "This thread hasn't been commented on for over  days. There is no need to reply.", warningDays: 30, banners: true, ignoreDeletes: true, warningPopup: true, };	scriptList.push('u:dev:LockForums/code.js'); // Reference Popups, like on Wikipedia scriptList.push('u:dev:ReferencePopups/code.js'); /* Page specific scripts */ // List Duplicate images if (mw.config.get('wgPageName') === 'Narutopedia:Duplicate_Images') { pageScriptList.push('u:dev:DupImageList/code.js'); }	// Tag users in the forums if (mw.config.get('wgNamespaceNumber') === 1201) { pageScriptList.push('MediaWiki:Common.js/ForumTags.js'); }	// Custom Special:[Multiple]Upload UI	if (({ Upload: 1, MultipleUpload: 1 })[mw.config.get('wgCanonicalSpecialPageName')] === 1) { pageScriptList.push(			'MediaWiki:Common.js/FairUseUpload.js',			'MediaWiki:Common.js/FixMultipleUpload.js' // Fix the Special:MultipleUpload page		); }					/* Small scripts which donot need a seperate page (Snippets) */ // Remove red-links (deleted pages) from Recent Changes // [They stay red, they just don't link to ?action=edit] if (({ Recentchanges: 1, Log: 1 })[mw.config.get('wgCanonicalSpecialPageName')] === 1) { var deNewRC = function { $('a.new').each(function {					this.href = this.href.replace(/\?[^?]*$/, '');				}); };		$(deNewRC); window.ajaxCallAgain.push(deNewRC); }	// Oasis-only scripts if (mw.config.get('skin') === 'oasis') { // Add Edit Button for forum posts if (mw.config.get('wgNamespaceNumber') === 1201) { $('nav .edit-message').each(function {				$(this).closest('.buttons').prepend(' Edit ');			}); }		// Internationalization notice scriptList.push('u:dev:LWN/code.js'); }	// Custom edit buttons if (mw.toolbar) { mw.toolbar.addButton(			'https://images.wikia.nocookie.net/central/images/c/c8/Button_redirect.png',			'Redirect',			'#REDIRECT ',			'',			'Insert text',			'mw-editbutton-redirect'		); mw.toolbar.addButton(			'https://images.wikia.nocookie.net/__cb20100821183407/bleach/en/images/e/e1/O_Accent_Button.png',			'Add the ō character',			'ō',			,			,			'mw-editbutton-macron-o'		); mw.toolbar.addButton(			'https://images.wikia.nocookie.net/__cb20100821183407/bleach/en/images/d/db/U_Accent_Button.png',			'Add the ū character',			'ū',			,			,			'mw-editbutton-macron-u'		); mw.toolbar.addButton(			'https://images.wikia.nocookie.net/naruto/images/7/79/Button_reflink.png',			'Add a Chapter Reference',			' ',			'\'\'Naruto\'\' chapter 0, page 0',			'mw-editbutton-ref'		); }	// HOOK: Verbatim imports embedded on particular pages. if ($.isArray(window.pageNeededScripts)) { pageScriptList.push.apply(pageScriptList, window.pageNeededScripts); try { delete window.pageNeededScripts; } catch (e) { window.pageNeededScripts = null; } // IE8 sucks. }	// Import all scripts in bulk (and minified) window.importArticles({		type: 'script',		articles: scriptList	}, {		type: 'script',		articles: pageScriptList	}); }(window, jQuery, mediaWiki)); /**        Toggles the display of elements on a page         Author/contact: Austin Che http://openwetware.org/wiki/User:Austin_J._Che        See http://openwetware.org/wiki/OpenWetWare:Toggle for examples and documentation     */ // indexed array of toggler ids to array of associated toggle operations // each operation is a two element array, the first being the type, the second a class name or array of elements // operation types are strings like "_reset" or "" for the default toggle operation var togglers = new Array;     var allClasses = new Object; // associative map of class names to page elements function toggler(id) {    var toBeToggled = togglers[id];    if (!toBeToggled)        return;    // if some element is in list more than once, it will be toggled multiple times    for (var i = 0; i < toBeToggled.length; i++)    {        // get array of elements to operate on        var toggles = toBeToggled[i][1]; if (typeof(toggles) == "string") {           if (toggles.charAt(0) == '-') {               // treat as an element ID, not as class toggles = document.getElementById(toggles.substring(1)); if (toggles) toggles = new Array(toggles); }           else toggles = allClasses[toggles]; }       if (!toggles || !toggles.length) continue; var op = toBeToggled[i][0]; // what the operation will be       switch (op) {           case "_reset": for (var j in toggles) toggles[j].style.display = toggles[j]._toggle_original_display; break; case "_show": for (var j in toggles) toggles[j].style.display = ''; break; case "_hide": for (var j in toggles) toggles[j].style.display = 'none'; break; case "": default: // Toggle for (var j in toggles) toggles[j].style.display = ((toggles[j].style.display == 'none') ? '' : 'none'); break; }   } } function createTogglerLink(toggler, id) {   var toggle = document.createElement("a"); toggle.className = 'toggler-link'; toggle.setAttribute('id', 'toggler' + id); toggle.setAttribute('href', 'javascript:toggler("' + id + '");'); var child = toggler.firstChild; toggler.removeChild(child); toggle.appendChild(child); toggler.insertBefore(toggle, toggler.firstChild); } function toggleInit {   var togglerElems = new Array; var toggleGroup = new Array; // initialize/clear any old information togglers = new Array; allClasses = new Object; allClasses.watch = undefined; allClasses.unwatch = undefined; // make list of all document classes var elems = document.getElementsByTagName("*"); var numelems = elems.length; for (var i = 0; i < elems.length; i++) {       var elem = elems[i]; if (!elem.className) continue; elem._toggle_original_display = elem.style.display; var togglerID = -1; var elemClasses = elem.className.split(' '); // get list of classes for (var j = 0; j < elemClasses.length; j++) {           var elemClass = elemClasses[j]; if (! allClasses[elemClass]) allClasses[elemClass] = new Array; allClasses[elemClass].push(elem); // all the special classes begin with _toggle if (elemClass.substring(0, 7) != "_toggle") continue; if (elemClass == "_togglegroup") toggleGroup = new Array; else if (elemClass == "_toggle") toggleGroup.push(elem); else if (elemClass.substring(0, 12) == "_toggle_init") {               // set initial value for display (ignore the original CSS set value) // understands _toggle_initshow and _toggle_inithide var disp = elemClass.substring(12); if (disp == "show") elem.style.display = ''; else if (disp == "hide") elem.style.display = 'none'; elem._toggle_original_display = disp; }           else if (elemClass.substring(0, 8) == "_toggler") {               if (togglerID == -1) {                   togglerID = togglers.length; togglers[togglerID] = new Array; togglerElems[togglerID] = elem; }               // all classes are of form _toggler_op-CLASS // figure out what class we're toggling // if none is specified, then we use the current toggle group var toBeToggled; var hyphen = elemClass.indexOf('-'); if (hyphen != -1) toBeToggled = elemClass.substring(hyphen+1); else {                   toBeToggled = toggleGroup; hyphen = elemClass.length; }               var op = elemClass.substring(8, hyphen); togglers[togglerID].push(new Array(op, toBeToggled)); }       }    }    // add javascript links to all toggler elements for (var i = 0; i < togglerElems.length; i++) createTogglerLink(togglerElems[i], i); } function owwsitesearch(f){ f.q.value='site:http://openwetware.org/wiki/'+ f.base.value+'++'+f.qfront.value } addOnloadHook(toggleInit);