MediaWiki:Common.js
From Observer GigaFlow Support | VIAVI Solutions Inc.
Note: After saving, 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: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Clear the cache in Tools → Preferences
/* Any JavaScript here will be loaded for all users on every page load. */ (function ($, mw, store) { "use strict"; var articles; if (store && store.getItem('commonjs')) { console.log('You have chosen to disable site-wide JavaScript ' + 'in MediaWiki:Common.js. Please remove \'commonjs\' ' + 'from localStorage to re-enable site-wide JavaScript.'); return; } window.UserTagsJS = { modules: {}, tags: { heroicuser: { u:'Most Heroic Contributor' }, imageeditor: { u:'Image Editor' }, retired: { u:'Retired Clasher' }, } }; UserTagsJS.modules.custom = {}; UserTagsJS.modules.inactive = 30; UserTagsJS.modules.newuser = true; UserTagsJS.modules.autoconfirmed = true; UserTagsJS.modules.mwGroups = [ 'bureaucrat', 'sysop', 'chatmoderator', 'threadmoderator', 'rollback', 'patroller', 'bannedfromchat', 'bot', 'bot-global', ]; UserTagsJS.modules.metafilter = { bureaucrat: ['founder'], sysop: ['founder', 'bureaucrat'], chatmoderator: ['founder', 'bureaucrat', 'sysop'], threadmoderator: ['founder', 'bureaucrat', 'sysop', 'chatmoderator'], imageeditor: ['founder', 'bureaucrat', 'sysop', 'chatmoderator', 'threadmoderator'], rollback: ['founder', 'bureaucrat', 'sysop', 'chatmoderator', 'threadmoderator', 'imageeditor'], }; UserTagsJS.modules.custom = { 'FaceBound': ['imageeditor'], // Image Editor }; if (typeof(window.SpoilerAlert) === 'undefined') { window.SpoilerAlert = { question: 'Chief! This page contains sneak peeks. Are you sure you ' + 'want to enter?', yes: 'Yes, please', no: 'No, let it be a surprise', isSpoiler: function () { return (-1 !== wgCategories.indexOf('Spoiler') && Boolean($('.spoiler').length)); } }; } window.LockForums = { expiryDays: 90, // Number of days until forum is locked to new replies expiryMessage: 'Forums are automatically locked when the most recent post is older than <expiryDays> days.', warningDays: 14, // Number of days until a warning is given to potential replies ignoreDeletes: true, // Ignore deleted messages when calculating age of last post warningPopup: true, // Pop up a warning dialog that must be confirmed for posts on older forums banners: true, // Add a banner to the top of aged forums }; /* Articles are interwiki links so that other wikis can use them. */ articles = [ 'w:c:spottra:MediaWiki:Common.js/Numeral.js', // Defines num.format('<fmt>') 'w:c:spottra:MediaWiki:Common.js/AjaxGallery.js', 'u:dev:Countdown/code.js', 'u:dev:SpoilerAlert/code.js', 'u:dev:TopEditors/code.js', 'u:dev:WallGreetingButton/code.js', 'u:dev:ExtendedNavigation/code.js', 'u:dev:LockForums/code.js', 'u:dev:LockOldBlogs/code.js', 'w:c:clashofclans:MediaWiki:Common.js/RGBColor.js', 'w:c:clashofclans:MediaWiki:Common.js/Usernames.js', 'u:dev:UserTags/code.js', 'w:c:clashofclans:MediaWiki:Common.js/Sliders.js', 'w:c:clashofclans:MediaWiki:Common.js/GemCalculators.js', 'w:c:clashofclans:MediaWiki:Common.js/Experience.js', 'w:c:clashofclans:MediaWiki:Common.js/TroopInfo.js', 'w:c:clashofclans:MediaWiki:Common.js/BuildingInfo.js', 'w:c:clashofclans:MediaWiki:Common.js/AchievementInfo.js', 'w:c:clashofclans:MediaWiki:Common.js/Tabber2.js', 'w:c:clashofclans:MediaWiki:Common.js/ImageHover.js', 'w:c:clashofclans:MediaWiki:Common.js/CumulativeCosts.js', 'w:c:clashofclans:MediaWiki:Common.js/UnitComparator.js', 'w:c:clashofclans:MediaWiki:Common.js/ModeToggle.js', 'w:c:clashofclans:MediaWiki:Common.js/PageVerify.js', 'w:c:clashofclans:MediaWiki:Common.js/GorillaMan.js', 'w:c:clashofclans:MediaWiki:Common.js/Lugia.js', 'w:c:clashofclans:MediaWiki:Common.js/BadgeGenerator.js', 'w:c:clashofclans:MediaWiki:Common.js/Protection.js', 'w:c:clashofclans:MediaWiki:Common.js/AvailableBuildings.js', ]; // Use Wikia's importArticles() function to load JavaScript files window.importArticles({ type: 'script', articles: articles }); console.log('Site-wide JavaScript in MediaWiki:Common.js will load the ' + 'following JavaScript files:\n ' + articles.join('\n ')); // Moves Clash Royale link to page header $('#ClashRoyaleLink').appendTo('header#WikiaPageHeader'); }(jQuery, mediaWiki, window.localStorage)); // Change Random Page button to only go to pages in the mainspace $('.wds-dropdown a[data-tracking=explore-random], ul.tools li a[data-name=random]').attr("href", "/wiki/Special:Random/main"); /** Collapsible tables ********************************************************* * * Description: Allows tables to be collapsed, showing only the header. See * http://www.mediawiki.org/wiki/Manual:Collapsible_tables. * Maintainers: [[en:User:R. Koot]] */ var autoCollapse = 2; var collapseCaption = 'hide'; var expandCaption = 'show'; function collapseTable(tableIndex) { var Button = document.getElementById('collapseButton' + tableIndex); var Table = document.getElementById('collapsibleTable' + tableIndex); if (!Table || !Button) return false; var Rows = Table.rows; if (Button.firstChild.data == collapseCaption) { for (var i = 1; i < Rows.length; i ++) Rows[i].style.display = 'none'; Button.firstChild.data = expandCaption; } else { for (var i = 1; i < Rows.length; i ++) Rows[i].style.display = Rows[0].style.display; Button.firstChild.data = collapseCaption; } } function createCollapseButtons() { var tableIndex = 0; var NavigationBoxes = new Object(); var Tables = document.getElementsByTagName('table'); for (var i = 0; i < Tables.length; i ++) { if (hasClass(Tables[i], 'collapsible')) { /* only add button and increment count if there is a header row to work with */ var HeaderRow = Tables[i].getElementsByTagName('tr')[0]; if (!HeaderRow) continue; var Header = HeaderRow.getElementsByTagName('th')[0]; if (!Header) continue; NavigationBoxes[tableIndex] = Tables[i]; Tables[i].setAttribute('id', 'collapsibleTable' + tableIndex); var Button = document.createElement('span'); var ButtonLink = document.createElement('a'); var ButtonText = document.createTextNode(collapseCaption); // Styles are declared in [[MediaWiki:Common.css]] Button.className = 'collapseButton'; ButtonLink.style.color = Header.style.color; ButtonLink.setAttribute('id', 'collapseButton' + tableIndex); ButtonLink.setAttribute('href', "javascript:collapseTable(" + tableIndex + ");" ); ButtonLink.appendChild(ButtonText); Button.appendChild(document.createTextNode('[')); Button.appendChild(ButtonLink); Button.appendChild(document.createTextNode(']')); Header.insertBefore(Button, Header.childNodes[0]); tableIndex ++; } } for (var i = 0; i < tableIndex; i ++) { if (hasClass(NavigationBoxes[i], 'collapsed') || (tableIndex >= autoCollapse && hasClass(NavigationBoxes[i], 'autocollapse'))) collapseTable(i); else if (hasClass(NavigationBoxes[i], 'innercollapse')) { var element = NavigationBoxes[i]; while (element = element.parentNode) { if (hasClass(element, 'outercollapse')) { collapseTable(i); break; } } } } } addOnloadHook(createCollapseButtons); /** Test if an element has a certain class ******************************** * * Description: Uses regular expressions and caching for better performance. * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]] */ var hasClass = (function() { var reCache = {}; return function(element, className) { return ( reCache[className] ? reCache[className] : (reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test(element.className); }; })(); function hasClassTest(element, className) { // No reason to have two functions that do the same thing // return element.className.indexOf(className) != -1; return hasClass(element, className); }