|
|
(70 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
| /* Any JavaScript here will be loaded for all users on every page load. */ | | /* Any JavaScript here will be loaded for all users on desktop */ |
|
| |
|
| /* Automatically add Aboutfile template to file upload description. Source: nl.wikipedia.org/wiki/MediaWiki:Common.js */ | | /* Alternating wiki logo */ |
| if (mw.config.get('wgCanonicalSpecialPageName') === 'Upload' && !document.getElementById('wpForReUpload') && !document.getElementsByClassName('mw-destfile-warning')[0] && !document.getElementsByClassName('error')[0]) {
| | $(function() { |
| function loadAutoAboutfileTemplate() { | | var logos = ['b/bc/Wiki.png', 'd/d7/Wiki_2.png', '9/97/Wiki_3.png', '6/6a/Wiki_4.png', '7/79/Wiki_5.png']; |
| uploadDescription = document.getElementById('wpUploadDescription');
| | $('#p-logo a').css('background-image', 'url(https://kh.wiki.gallery/images/' + logos[Math.floor(Math.random() * logos.length)] + ')'); |
| var doubleBracket = '{' + '{';
| | }); |
| uploadDescription.value = doubleBracket + 'aboutfile\n|description=\n|purpose=\n|game=\n|source=\n}}';
| |
| }
| |
| | |
| $(loadAutoAboutfileTemplate);
| |
| }
| |
|
| |
|
| /* Shrinking talk bubble sprites */ | | /* Add user subpages toolbox link */ |
| $(document).ready(function () { | | $(function() { |
| if (document.readyState != "complete") { | | if (mw.config.get('wgCanonicalNamespace') === 'User' && mw.config.get('skin') !== 'timeless') { |
| setTimeout(arguments.callee, 100); | | var subpagesLink = '/Special:PrefixIndex/User:' + mw.config.get('wgTitle').split('/')[0] + '/'; |
| return; | | mw.util.addPortletLink('p-tb', subpagesLink, 'User subpages', 't-subpages', 'Subpages for this user'); |
| } | | } |
| $("table.talkbubble").each(function () {
| |
| $(this).find("td").first().width(90).css("text-align", "center").find("img").each(function () {
| |
| if ($(this).width() > 90) $(this).css("height", "auto").width(90);
| |
| });
| |
| });
| |
| });
| |
|
| |
| // ===========
| |
| // Code for alternating wiki logo
| |
| // Author: Porplemontage
| |
| // =============
| |
| /*
| |
| var logos = ['/images/b/bc/Wiki.png', '/images/9/97/Wiki_3.png', '/images/d/d7/Wiki_2.png'];
| |
| $('#p-logo a').css('background-image', 'url(' + logos[Math.floor(Math.random() * logos.length)] + ')');
| |
| */
| |
|
| |
| // ==================
| |
| // Code for Template:Suite3
| |
| // Author: Soxra
| |
| // ==================
| |
|
| |
| $(document).ready(function () {
| |
| $(".morphMaster").each(function () {
| |
| var $master = $(this);
| |
| var $tabs = $master.find(".morphTabBox");
| |
| var $container = $master.find(".morphTabContainer");
| |
|
| |
| $tabs.find(".morphLink").click(function () {
| |
| var id = $(this).attr("id");
| |
| id = id.substr(0, id.length - 4);
| |
| $container.find(".morphContent").hide();
| |
| $container.find("#" + id + "Content").show();
| |
| });
| |
| });
| |
| }); | | }); |
|
| |
|
| // ================== | | /* Hide page previews when portals are used */ |
| // tabber.js
| | $(function() { |
| // Authors: Eric Fortin, Alexia E. Smith
| | if (document.getElementsByClassName('nav')[0] && document.getElementsByClassName('dropdown')[0]) |
| // ==================
| | $('head').append('<style type="text/css">.mwe-popups { display: none !important; }</style>'); |
| | |
| (function($) { | |
| $.fn.tabber = function() { | |
| return this.each(function() {
| |
| // create tabs
| |
| var $this = $(this),
| |
| tabContent = $this.children('.tabbertab'),
| |
| nav = $('<ul>').addClass('tabbernav');
| |
| tabContent.each(function() {
| |
| var anchor = $('<a>').text(this.title).attr('title', this.title).attr('href', 'javascript:void(0);');
| |
| $('<li>').append(anchor).appendTo(nav);
| |
| });
| |
| $this.prepend(nav);
| |
| | |
| /**
| |
| * Internal helper function for showing content
| |
| * @param string title to show, matching only 1 tab
| |
| * @return true if matching tab could be shown
| |
| */
| |
| function showContent(title) {
| |
| var content = tabContent.filter('[title="' + title + '"]');
| |
| if (content.length !== 1) return false;
| |
| tabContent.hide();
| |
| content.show();
| |
| nav.find('.tabberactive').removeClass('tabberactive');
| |
| nav.find('a[title="' + title + '"]').parent().addClass('tabberactive');
| |
| return true;
| |
| }
| |
| // setup initial state
| |
| var loc = location.hash.replace('#', '');
| |
| if ( loc == '' || !showContent(loc) ) {
| |
| showContent(tabContent.first().attr('title'));
| |
| }
| |
| | |
| // Repond to clicks on the nav tabs
| |
| nav.on('click', 'a', function(e) {
| |
| var title = $(this).attr('title');
| |
| e.preventDefault();
| |
| location.hash = '#' + title;
| |
| showContent( title );
| |
| });
| |
| | |
| $this.addClass('tabberlive');
| |
| });
| |
| };
| |
| })(jQuery);
| |
| | |
| $(document).ready(function() {
| |
| $('.tabber').tabber();
| |
| }); | | }); |
|
| |
| // ==================
| |
| // Auto-refresh recent changes
| |
| // Code courtesy of pcj of WoWWiki.
| |
| // ==================
| |
|
| |
| function setCookie(c_name, value, expiredays) {
| |
| var exdate = new Date();
| |
| exdate.setDate(exdate.getDate() + expiredays);
| |
| document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
| |
| }
| |
|
| |
| function getCookie(c_name) {
| |
| if (document.cookie.length > 0) {
| |
| c_start = document.cookie.indexOf(c_name + "=");
| |
| if (c_start != -1) {
| |
| c_start = c_start + c_name.length + 1;
| |
| c_end = document.cookie.indexOf(";", c_start);
| |
| if (c_end == -1) c_end = document.cookie.length;
| |
| return unescape(document.cookie.substring(c_start, c_end));
| |
| }
| |
| }
| |
| return "";
| |
| }
| |
|
| |
| var ajaxPages = new Array("Special:RecentChanges");
| |
| var ajaxRCOverride = false;
| |
| var rcRefresh = 30000;
| |
|
| |
| function ajaxRC() {
| |
| appTo = $(".firstHeading");
| |
| appTo.append(' <span style="position:absolute; margin-left:10px;"><span style="font-size: xx-small; cursor:help;" title="Automatically refresh the current page every ' + Math.floor(rcRefresh / 1000) + ' seconds">AUTO-REFRESH:</span><input type="checkbox" id="autoRefreshToggle"><span style="position:relative; top:5px; left:5px;" id="autoRefreshProgress"><img src="/images/loader.gif" border="0" alt="AJAX operation in progress" /></span></span>');
| |
| $("#autoRefreshToggle").click(function () {
| |
| setCookie("ajaxRC", $("#autoRefreshToggle").is(":checked") ? "on" : "off")
| |
| loadRCData()
| |
| });
| |
| $("#autoRefreshProgress").hide();
| |
| if (getCookie("ajaxRC") == "on" || ajaxRCOverride) {
| |
| $("#autoRefreshToggle").attr("checked", "checked");
| |
| setTimeout("loadRCData();", rcRefresh);
| |
| }
| |
| }
| |
|
| |
| function loadRCData() {
| |
| if (!$("#autoRefreshToggle").is(":checked")) return;
| |
| $('#autoRefreshProgress').show()
| |
| $(article).load(location.href + " " + article + " > *", function (data) {
| |
| $(article + " .mw-collapsible").makeCollapsible();
| |
| $('#autoRefreshProgress').hide()
| |
| if ($("#autoRefreshToggle").is(":checked")) setTimeout("loadRCData();", rcRefresh);
| |
| });
| |
| }
| |
|
| |
| $(function () {
| |
| article = "#bodyContent";
| |
| for (x in ajaxPages) {
| |
| if (mw.config.get('wgPageName') == ajaxPages[x] && $("#autoRefreshToggle").length == 0) ajaxRC();
| |
| }
| |
| });
| |
|
| |
| // ==================
| |
| // Countdown, rewrite by Pecoes
| |
| // Original script by Splarka + Eladkse
| |
| // ==================
| |
|
| |
| ;(function (module, mw, $) {
| |
|
| |
| 'use strict';
| |
|
| |
| var translations = $.extend(true, {
| |
| en: {
| |
| and: 'and',
| |
| second: 'second',
| |
| seconds: 'seconds',
| |
| minute: 'minute',
| |
| minutes: 'minutes',
| |
| hour: 'hour',
| |
| hours: 'hours',
| |
| day: 'day',
| |
| days: 'days'
| |
| }
| |
| }, module.translations || {}),
| |
| i18n = translations[
| |
| mw.config.get('wgContentLanguage')
| |
| ] || translations.en;
| |
|
| |
| var countdowns = [];
| |
|
| |
| var NO_LEADING_ZEROS = 1;
| |
|
| |
| function output (i, diff) {
| |
| /*jshint bitwise:false*/
| |
| var delta, result, parts = [];
| |
| delta = diff % 60;
| |
| parts.unshift(delta + ' ' + i18n[delta === 1 ? 'second' : 'seconds']);
| |
| diff = Math.floor(diff / 60);
| |
| delta = diff % 60;
| |
| parts.unshift(delta + ' ' + i18n[delta === 1 ? 'minute' : 'minutes']);
| |
| diff = Math.floor(diff / 60);
| |
| delta = diff % 24;
| |
| parts.unshift(delta + ' ' + i18n[delta === 1 ? 'hour' : 'hours' ]);
| |
| diff = Math.floor(diff / 24);
| |
| parts.unshift(diff + ' ' + i18n[diff === 1 ? 'day' : 'days' ]);
| |
| result = parts.pop();
| |
| if (countdowns[i].opts & NO_LEADING_ZEROS) {
| |
| while (parts.length && parts[0][0] === '0') {
| |
| parts.shift();
| |
| }
| |
| }
| |
| if (parts.length) {
| |
| result = parts.join(', ') + ' ' + i18n.and + ' ' + result;
| |
| }
| |
| countdowns[i].node.text(result);
| |
| }
| |
|
| |
| function end(i) {
| |
| var c = countdowns[i].node.parent();
| |
| switch (c.attr('data-end')) {
| |
| case 'remove':
| |
| c.remove();
| |
| countdowns.splice(i, 1);
| |
| return;
| |
| case 'stop':
| |
| output(i, 0);
| |
| countdowns.splice(i, 1);
| |
| return;
| |
| case 'toggle':
| |
| var toggle = c.attr('data-toggle');
| |
| if (toggle && $(toggle).length) {
| |
| $(toggle).css('display', 'inline');
| |
| c.css('display', 'none');
| |
| countdowns.splice(i, 1);
| |
| return;
| |
| }
| |
| break;
| |
| case 'callback':
| |
| var callback = c.attr('data-callback');
| |
| if (callback && $.isFunction(module[callback])) {
| |
| output(i, 0);
| |
| countdowns.splice(i, 1);
| |
| module[callback].call(c);
| |
| return;
| |
| }
| |
| break;
| |
| }
| |
| countdowns[i].countup = true;
| |
| output(i, 0);
| |
| }
| |
|
| |
| function update () {
| |
| var now = Date.now();
| |
| $.each(countdowns.slice(0), function (i, countdown) {
| |
| var diff = Math.floor((countdown.date - now) / 1000);
| |
| if (diff <= 0 && !countdown.countup) {
| |
| end(i);
| |
| } else {
| |
| output(i, Math.abs(diff));
| |
| }
| |
| });
| |
| if (countdowns.length) {
| |
| window.setTimeout(function () {
| |
| update();
| |
| }, 1000);
| |
| }
| |
| }
| |
|
| |
| function getOptions (node) {
| |
| /*jshint bitwise:false*/
| |
| var text = node.parent().attr('data-options'),
| |
| opts = 0;
| |
| if (text) {
| |
| if (/no-leading-zeros/.test(text)) {
| |
| opts |= NO_LEADING_ZEROS;
| |
| }
| |
| }
| |
| return opts;
| |
| }
| |
|
| |
| $(function () {
| |
| var countdown = $('.countdown');
| |
| if (!countdown.length) return;
| |
| $('.nocountdown').css('display', 'none');
| |
| countdown
| |
| .css('display', 'inline')
| |
| .find('.countdowndate')
| |
| .each(function () {
| |
| var $this = $(this),
| |
| date = (new Date($this.text())).valueOf();
| |
| if (isNaN(date)) {
| |
| $this.text('BAD DATE');
| |
| return;
| |
| }
| |
| countdowns.push({
| |
| node: $this,
| |
| opts: getOptions($this),
| |
| date: date,
| |
| });
| |
| });
| |
| if (countdowns.length) {
| |
| update();
| |
| }
| |
| });
| |
|
| |
| }(window.countdownTimer = window.countdownTimer || {}, mediaWiki, jQuery));
| |