MediaWiki:Monobook.js
From Wikizilla, the kaiju encyclopedia
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.
/* Any JavaScript here will be loaded for users using the MonoBook skin */ /*<nowiki>*/ /** additional monobook scripts **/ /**** function displayTimer.js * by Patrick Westerhoff [poke] */ addOnloadHook(function () { if ( typeof( timerDisplay ) !== 'undefined' && timerDisplay === false ) return; var date; var timerParent = document.getElementById( 'p-personal' ).getElementsByTagName( 'ul' )[0]; var timerLink = document.createElement( 'a' ); var timerObj = document.createElement( 'li' ); timerLink.href = '/wiki/' + wgPageName + '?action=purge'; timerLink.title = 'Purge the server cache and update the contents of this page.' timerObj.id = 'pt-timer'; timerObj.style.textTransform = 'none'; timerObj.style.fontWeight = 'bold'; timerObj.style.fontSize = '100%'; timerObj.appendChild( timerLink ); timerParent.insertAfter( timerObj, timerParent.firstChild ); function actualizeUTC () { timerDate = new Date(); timerLink.innerHTML = ( timerDate.getUTCHours() < 10 ? '0' : '' ) + timerDate.getUTCHours() + ':' + ( timerDate.getUTCMinutes() < 10 ? '0' : '' ) + timerDate.getUTCMinutes() + ':' + ( timerDate.getUTCSeconds() < 10 ? '0' : '' ) + timerDate.getUTCSeconds() + ' (UTC)'; } function actualizeCustom () { timerDate = new Date(); timerDate.setMinutes( timerDate.getMinutes() + timerDate.getTimezoneOffset() + timerTimezone * 60 ); timerLink.innerHTML = ( timerDate.getHours() < 10 ? '0' : '' ) + timerDate.getHours() + ':' + ( timerDate.getMinutes() < 10 ? '0' : '' ) + timerDate.getMinutes() + ':' + ( timerDate.getSeconds() < 10 ? '0' : '' ) + timerDate.getSeconds() + ' (UTC' + ( timerTimezone < 0 ? '' : '+' ) + timerTimezone + ')'; } // start if ( typeof( timerTimezone ) !== 'number' ) { actualizeUTC(); setInterval( actualizeUTC, 1000 ); } else { actualizeCustom(); setInterval( actualizeCustom, 1000 ); } }); /*</nowiki>*/ /* MediaWiki:Monobook.js v2.39 <pre> */ /* alternateBG: Agrega un class al body durante los primeros 30 min de cada hora */ (function () { var d = new Date(); if (d.getMinutes() < 30) { try { document.body.className += ' alternateBG'; } catch(e) { (typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(function(){$(document.body).addClass('alternateBG');}); } } }()); function FondoFooter() { $('#globalWrapper').append($('#footer')); } (typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(FondoFooter); /* fin alternateBG */ /* MONOBOOK SIDEBAR */ // Para editar los elementos del sidebar, cambiar [[MediaWiki:Monobook.js/Sidebar.js]] window.wgSidebar = (window.wgSidebar||{}); importScript('MediaWiki:Monobook.js/Sidebar.js'); /* * MonobookSidebar v1.2: Permite definir submenús para elementos del Sidebar de MonoBook, agregando clases * especiales al pasar con el puntero por encima para permitir el efecto en todos los navegadores. * * Copyright (C) 2010 - 2014 Jesús Martínez Novo ([[User:Ciencia Al Poder]]) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version */ var MonobookSidebar = { re_s: / /g, re_p: /%/g, loadedMenus: [], init: function() { if (!window.wgSidebar) return; for (var menu in wgSidebar) { var item = document.getElementById(MonobookSidebar.getId(menu)); if (!item) continue; var menuId = $(item).parents().get(2).id; // Check it's a valid portlet item if (!menuId || menuId === '') continue; // Generate menu hierarchy MonobookSidebar.buildSubmenu(item, wgSidebar[menu]); // Set events MonobookSidebar.setEvents(menuId); } }, buildSubmenu: function(el, arr) { var ul = document.createElement('ul'); ul.className = 'sub-menu'; for (var i = 0; i < arr.length; i++) { var li = document.createElement('li'); if (typeof arr[i] == 'string') { li.appendChild(MonobookSidebar.linkFromText(arr[i])); } else { for (var menukey in arr[i]) { li.appendChild(MonobookSidebar.linkFromText(menukey)); MonobookSidebar.buildSubmenu(li, arr[i][menukey]); } } ul.appendChild(li); } el.appendChild(ul); el.className = 'with-sub-menu'; var em = document.createElement('em'); em.appendChild(document.createTextNode('\u203A')); el.firstChild.appendChild(em); }, setEvents: function(menuId) { for (var i = 0; i < MonobookSidebar.loadedMenus; i++) { if (MonobookSidebar.loadedMenus[i] == menuId) return; } $('#'+menuId).children().eq(1).children().eq(0).bind('mouseover',MonobookSidebar.mouseover).bind('mouseout',MonobookSidebar.mouseout); MonobookSidebar.loadedMenus.push(menuId); }, mouseover: function(e) { var target = e.target; while (target.tagName.toLowerCase() != 'div') { if (target.tagName.toLowerCase() == 'a') { target = target.parentNode; } if (target.tagName.toLowerCase() == 'li') { $(target).addClass('hover'); } target = target.parentNode; } }, mouseout: function(e) { var target = e.target; while (target.tagName.toLowerCase() != 'div') { if (target.tagName.toLowerCase() == 'a') { target = target.parentNode; } if (target.tagName.toLowerCase() == 'li') { $(target).removeClass('hover'); } target = target.parentNode; } }, linkFromText: function(txt) { var article = '', caption = '', sepPos = txt.indexOf('|'); if (sepPos > 0) { article = txt.substr(0, sepPos); caption = txt.substr(sepPos+1); } else { article = caption = txt; } var a = document.createElement('a'); if (article.length > 7 && article.substr(0,7) == 'http://') { a.setAttribute('href',article); } else { a.setAttribute('href', mw.util.getUrl(article)); } a.appendChild(document.createTextNode(caption)); return a; }, getId: function(name) { return 'n-' + encodeURIComponent(name.replace(MonobookSidebar.re_s, '-')).replace(MonobookSidebar.re_p, '.'); } }; // Mueve cambios recientes a toolbox function PosicionaElementosToolbox() { $('#p-tb').children().eq(1).children().eq(0) // Opciones en páginas de usuario .prepend($('#t-emailuser')) .prepend($('#t-blockip')) .prepend($('#t-log')) .prepend($('#t-contributions')) // 'Enlace permanente' y 'Versión para imprimir' .prepend($('#t-permalink')) .prepend($('#t-print')) // Opciones principales .prepend($('#t-specialpages')) .prepend($('#t-recentchangeslinked')) .prepend($('#t-whatlinkshere')) .prepend($('#t-multiupload')) .prepend($('#t-upload')) .prepend($('#n-randompage')) .prepend($('#t-googlesearch')) .prepend($('#n-recentchanges')); if ($('#t-multiupload').length === 0 && $('#t-upload').length == 1) { $('<li id="t-multiupload"><a href="/wiki/Special:MultipleUpload">Upload multiple files</a></li>').insertAfter('#t-upload'); } $('#t-contributions').before('<hr style="margin: 5px; margin-bottom: -1px; background-color: #E2A600;" />'); $('#t-print').before('<hr style="margin: 5px; margin-bottom: -1px; background-color: #E2A600;" />'); $('#t-upload').before('<hr style="margin: 5px; margin-bottom: -1px; background-color: #E2A600;" />'); $('#t-whatlinkshere').before('<hr style="margin: 5px; margin-bottom: -1px; background-color: #E2A600;" />'); // wikicities $('#p-wikicities-nav').children('div').eq(0).children('hr').eq(0).next('ul').eq(0).children('li').eq(0).attr('id','n-activityfeed'); $('#n-activityfeed').children('a').eq(0).text('Actividad reciente').attr('href','/wiki/Special:RecentChanges'); $('#p-lang').before($('#p-wikicities-nav')); } (typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(PosicionaElementosToolbox); // UserWikiInfo if ((mw.config.get('wgNamespaceNumber', 0) == -1 && mw.config.get('wgCanonicalSpecialPageName', '') == 'Contributions') || (mw.config.get('wgCanonicalNamespace', '') == 'User' || mw.config.get('wgCanonicalNamespace', '') == 'User_talk')) { (typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(function() { if (!window.disableUserWikiInfo) { mw.loader.using(['mediawiki.api'], function() { importScript('MediaWiki:Common.js/Clases/UserWikiInfo.js'); }); } }); } /* WMU en Monobook */ if (mw.config.get('wgAction', '') == 'edit' || mw.config.get('wgAction', '') == 'submit') { /*GLOBAL WMU VARS*/ window.wmu_back = "back"; window.wmu_imagebutton = "Add images"; window.wmu_close = "close"; window.wmu_no_preview = "Images can't be added from the page in preview mode"; window.wmu_warn1 = "You should specify the text you want to look for"; window.wmu_warn2 = "Select the file you want to upload"; window.wmu_warn3 = "You must specify the name of the file first!"; window.wmu_bad_extension = "This type of file is not allowed. Allowed extensions may be found in [[Special:Version]]."; window.wmu_show_message = "show message"; window.wmu_hide_message = "hide message"; window.wmu_show_license_message = "show license"; window.wmu_hide_license_message = "hide license"; window.wmu_max_thumb = "The maximum size of the thumbnail has been surpassed. It will now return to its original size."; importScript('MediaWiki:Common.js/Extra/WikiaWMU.js'); importStylesheetURI(mw.config.get('wgExtensionsPath')+'/wikia/WikiaMiniUpload/css/WMU.css?'+mw.config.get('wgStyleVersion')); } /* fin WMU en Monobook */ // Añade un aviso al salir de una página cuando se está editando var LeaveEditingWarning = (function() { var _MESSAGE = 'Hay cambios sin guardar que se perderán si abandonas esta página.', _enabled = false, _originalText = null, _forceWarn = false, _triggerWarn = false, _submit = false, _timer = null, _init = function() { if (mw.config.get('wgAction') != 'submit') { _originalText = $('#wpTextbox1').val(); } }, _enable = function() { if (_enabled) return; _enabled = true; if (mw.config.get('wgAction') == 'submit') { _forceWarn = true; } else { $('#wpTextbox1').bind('change', _onInputChange); // El "change" solo se activa al salir del textbox. Comprobamos periódicamente window.setInterval(_onInputChange, 5000); } $('#editform').bind('submit', _onFormSubmit); $(window).bind('beforeunload.LeaveEditingWarning', _onBeforeUnload); }, _disable = function() { if (!_enabled) return; _enabled = false; _forceWarn = false; _triggerWarn = false; $('#editform').unbind('submit', _onFormSubmit); $('#wpTextbox1').unbind('change', _onInputChange); if (_timer) { window.clearInterval(_timer); _timer = null; } $(window).unbind('beforeunload.LeaveEditingWarning'); }, _onFormSubmit = function(e) { _submit = true; }, _onInputChange = function(e) { if (_originalText !== null && _originalText !== $('#wpTextbox1').val()) { _triggerWarn = true; } else { _triggerWarn = false; } }, _onBeforeUnload = function() { if (_timer) { window.clearInterval(_timer); _timer = null; } if (!_submit && (_forceWarn || _triggerWarn)) { if (window.event) { window.event.returnValue = _MESSAGE; } return _MESSAGE; } }; if (mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit') { (typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(_init); if (!window.LeaveEditingWarning || window.LeaveEditingWarning.enabled !== false) { (typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(_enable); } } return { enable: _enable, disable: _disable }; })(); // Wikia ha cambiado el texto del título de las imágenes. Restaurando... if (mw.config.get('wgNamespaceNumber') == 6) { (typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(function() { $('#firstHeading').text(mw.config.get('wgPageName').replace(/_/g, ' ')); }); } // Añade un 'span' que sirve para añadir una imagen de fondo a la barra de categorías function ImagenCatlinks() { $('#mw-normal-catlinks').before('<span id="catlinks-background-image"> </span>'); } (typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(ImagenCatlinks); (typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(function() { if (!mw.config.get('wgNoWarnOnLogout', false)) { $('#pt-logout').children().eq(0).bind('click', function() { return confirm('Si continúas dejarás de estar identificado. Podrás volver a iniciar sesión en cualquier momento. ¿Deseas continuar?'); }); } }); // PARCHE PARA WIKIA: Arreglar las sugerencias de búsqueda (typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(function() { if (!mw.config.get('wgMWSuggestTemplate') && mw.loader.getVersion('mediawiki.legacy.mwsuggest')) { mw.config.set('wgMWSuggestTemplate', mw.util.wikiScript('api') + '?action=opensearch&search={searchTerms}&namespace={namespaces}&suggest'); mw.config.set('wgSearchNamespaces', [0, 6, 10, 14, 110]); importScriptURI(mw.config.get('stylepath') + '/common/mwsuggest.js'); window.setTimeout(function() { if (window.os_MWSuggestInit) { window.os_MWSuggestInit(); } }, 1000); } }); /** * MonobookSidebar: Sets sidebar submenus for elements of MonoBook, adding special * classes to pass the pointer over to allow the effect on all browsers. * * Date: 15 October 2010 * Copyright © 2010 Jesús Martínez Novo ([[User:Ciencia Al Poder]]) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version */ MonobookSidebar = { re_s: / /g, re_p: /%/g, loadedMenus: [], init: function() { if ( !window.wgSidebar ) { return; } for ( var menu in wgSidebar ) { var item = document.getElementById( MonobookSidebar.getId( menu ) ); if ( !item ) { continue; } var menuId = jQuery( item ).parents().get( 2 ).id; // Check it's a valid portlet item if ( !menuId || menuId == '' ) { continue; } // Generate menu hierarchy MonobookSidebar.buildSubmenu( item, wgSidebar[menu] ); // Set events MonobookSidebar.setEvents( menuId ); } }, buildSubmenu: function( el, arr ) { var ul = document.createElement( 'ul' ); ul.className = 'sub-menu'; for ( var i = 0; i < arr.length; i++ ) { var li = document.createElement( 'li' ); if ( typeof arr[i] == 'string' ) { var a = MonobookSidebar.linkFromText( arr[i] ); li.appendChild( a ); } else { for ( var menukey in arr[i] ) { a = MonobookSidebar.linkFromText( menukey ); li.appendChild( a ); MonobookSidebar.buildSubmenu( li, arr[i][menukey] ); } } ul.appendChild( li ); } el.appendChild( ul ); el.className = 'with-sub-menu'; var em = document.createElement( 'em' ); em.appendChild( document.createTextNode( '\u203A' ) ); el.firstChild.appendChild( em ); }, setEvents: function( menuId ) { for ( var i = 0; i < MonobookSidebar.loadedMenus; i++ ) { if ( MonobookSidebar.loadedMenus[i] == menuId ) { return; } } jQuery( '#' + menuId ).children().eq( 1 ).children().eq( 0 ) .bind( 'mouseover', MonobookSidebar.mouseover ) .bind( 'mouseout', MonobookSidebar.mouseout ); MonobookSidebar.loadedMenus.push( menuId ); }, mouseover: function( e ) { var target = e.target; while ( target.tagName.toLowerCase() != 'div' ) { if ( target.tagName.toLowerCase() == 'a' ) { target = target.parentNode; } if ( target.tagName.toLowerCase() == 'li' ) { jQuery( target ).addClass( 'hover' ); } target = target.parentNode; } }, mouseout: function( e ) { var target = e.target; while ( target.tagName.toLowerCase() != 'div' ) { if ( target.tagName.toLowerCase() == 'a' ) { target = target.parentNode; } if ( target.tagName.toLowerCase() == 'li' ) { jQuery( target ).removeClass( 'hover' ); } target = target.parentNode; } }, linkFromText: function( txt ) { var article = '', caption = '', sepPos = txt.indexOf( '|' ); if ( sepPos > 0 ) { article = txt.substr( 0, sepPos ); caption = txt.substr( sepPos + 1 ); } else { article = caption = txt; } article = article.replace( MonobookSidebar.re_s, '_' ); // removed encodeURIComponent(), it was messing things up --Jack Phoenix var a = document.createElement( 'a' ); if ( article.length > 7 && article.substr( 0, 7 ) == 'http://' ) { a.setAttribute( 'href', article ); } else { article = article.replace( MonobookSidebar.re_s, '_' ); // removed encodeURIComponent(), it was messing things up --Jack Phoenix // Replace encoded colons with normal colons -- added this. --Jack Phoenix article = article.replace( '%3A', ':' ); // added code ends here a.setAttribute( 'href', wgArticlePath.replace( '$1', article ) ); } a.appendChild( document.createTextNode( caption ) ); return a; }, getId: function( name ) { return 'n-' + encodeURIComponent( name.replace( MonobookSidebar.re_s, '-' ) ).replace( MonobookSidebar.re_p, '.' ); } }; /* Calling this code to initialize */ jQuery( MonobookSidebar.init );