Usuario:DJ Nietzsche/monobook.js

De Wikipedia, la enciclopedia libre

Nota: Después de guardar, debes refrescar la caché de tu navegador para ver los cambios. Internet Explorer: mantén presionada Ctrl mientras pulsas Actualizar. Firefox: mientras presionas Mayús pulsas el botón Actualizar, (o presiona Ctrl-Shift-R). Los usuarios de Google Chrome y Safari pueden simplemente pulsar el botón Recargar. Para más detalles e instrucciones acerca de otros exploradores, véase Ayuda:Cómo limpiar la caché.

/* 
Monobook desarrollado por [[Usuario:Axxgreazz]]. (versión 2.0)
*Puedes ver el manual completo y las funcionalidades contenidas aquí en [[Usuario:Axxgreazz/Monobook-Suite|la página del Monobook-Suite]]
*Si necesitas mayores detalles sobre la configuración revisa el [[Usuario:Axxgreazz/Monobook-Suite/Configuración|Manual de configuración del Monobook-Suite]].
*Si quieres configurarlo de manera rápida usa el [[Usuario:Axxgreazz/Monobook-Suite/Panel de control|Panel de control]]. */

//<pre><nowiki>

/* Sección 1: Inicialización de monobook (No modificar) */

incluir ("","","init.js");        
incluir ("","","funciones.js");   

/* Sección 2: Personalización de Modulos */
/* Copia cualquiera de los archivos indicados a continuación a tu espacio de usuario */
/* y personaliza tus botones de la barra de herramientas, busqueda y enlaces wiki */

incluir ("","","misparametros-suite.js");
incluir ("","","misfunciones.js");
incluir ("","","misbotones-suite.js");
incluir ("","","misbuscadores-suite.js");
incluir ("","","misenlaces-suite.js");
incluir ("","","misflotantes-suite.js");

/* Sección 3 : Modulos del monobook
/* Puedes incorporar un módulo de esta u otra wiki */
/* Tan sólo especifica el host de la wiki, el nombre del usuario y el nombre de archivo */

incluir ("","","toolbarextendido.js");   /*Módulo de Barra de herramientas */
incluir ("","","enlaceswiki.js");        /*Módulo de Enlaces Wiki */
incluir ("","","modulobusqueda.js");     /*Módulo de Búsqueda */
incluir ("","","popups.js");             /*Módulo de Popups */
incluir ("","","instaview.js");          /*Módulo de Instaview */
incluir ("","","recent.js");             /*Módulo Anti-vandalismo */
incluir ("","","reversion.js");          /*Módulo de Reversión */
incluir ("","","statuschanger.js");      /*Administración de estados */
incluir ("","","quickedit.js");          /*Edición rápida */
incluir ("","","panelcontrol.js");       /*Panel de control del Monobook */
incluir ("","","quickimgdelete.js");     /*Mantenimiento de imágenes */
incluir ("","","botoneraflotante.js");   /*Botonera flotante */

/* Sección 4: Función base (No modificar) */

function incluir(url,usuario,nombre)   
{
   if (url=="") {url = 'es.wikipedia.org'; }
   if (usuario=="") {usuario = 'Axxgreazz/Monobook-Suite'; };  /*no cambiar */
   mw.loader.load('//' + url + '/w/index.php?action=raw&ctype=text/javascript'
             + '&title=User:' + usuario + '/' + nombre);
}

//</nowiki></pre>

/*
 * Utilidad para señalar los enlaces a las contribuciones de direcciones IP a partir de rangos de IP
 * Autor: Jesús Martínez Novo - [[User:Ciencia Al Poder]]
 */
(function() {

var reIPContrib = /^Especial:Contribuciones\/([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$/;
var IPBlackList = [
	// Definir aquí los rangos de IP a señalar.
	//  Ejemplo:
	//	{range: '127.0.0.0/8'},
	//	{range: '172.16.0.0/12'},
	//	{range: '192.168.0.0/24'} <-- El último sin la coma al final!!
        {range: '79.108.0.0/22'},
        {range: '79.144.64.0/22'},
        {range: '79.144.65.0/24'},
        {range: '79.144.66.0/24'},
        {range: '79.144.67.0/24'},
        {range: '79.145.169.0/24'},
        {range: '79.145.232.0/22'},
        {range: '79.147.16.0/21'},
        {range: '79.147.248.0/23'},
        {range: '79.148.44.0/24'},
        {range: '79.151.96.0/25'},
        {range: '79.152.232.0/23'},
	{range: '79.153.234.0/23'},
        {range: '79.154.248.0/24'},
        {range: '79.154.24.0/22'},
        {range: '79.155.128.0/17'},
        {range: '79.157.96.0/19'},
        {range: '79.158.0.0/16'},
        {range: '80.30.104.0/21'}, 
        {range: '80.30.105.0/24'},
        {range: '80.30.106.0/24'},
        {range: '80.30.107.0/24'},
        {range: '80.30.108.0/24'},
        {range: '83.32.48.0/21'},
        {range: '83.40.28.0/22'},
        {range: '83.41.216.0/22'},
        {range: '83.45.128.0/22'},
        {range: '83.57.120.0/22'},
        {range: '83.61.208.0/21'},
        {range: '88.0.216.0/21'},
        {range: '88.3.104.0/21'},
        {range: '88.11.32.0/19'}
];

function checkForBlacklistedIP() {
	// Init cache object
	for (var i = 0; i < IPBlackList.length; i++) {
		IPBlackList[i].oIP = splitIP(IPBlackList[i].range);
	}
	var contLinks = $('#bodyContent').find('a.mw-userlink[title^="Especial:Contribuciones/"]').filter(checkJQAnchorIPBL);
	if (contLinks.length) {
		alert('IP sospechosas encontradas');
	} else {
		alert('No se han encontrado IP sospechosas');
	}
	contLinks.addClass('IPBlackList');
	return contLinks;
}

function checkJQAnchorIPBL() {
	var t = this.title;
	if (reIPContrib.test(t)) {
		var oIP = splitIP(t.substr('Especial:Contribuciones/'.length));
		var oBLIP = null;
		for (var i = 0; i < IPBlackList.length; i++) {
			oBLIP = IPBlackList[i].oIP;
			if (matchIP(oIP, oBLIP)) return true;
		}
	}
	return false;
}

function splitIP(ip) {
	var ip_net = ip.split('/');
	var ip_parts = ip_net[0].split('.');
	var netmask = 32;
	if (ip_net.length == 2) {
		netmask = parseInt(ip_net[1], 10);
	}
	return {ip: ip_parts, mask: netmask};
}

function matchIP(oIP, oRange) {
	var mask = oRange.mask;
	for (var i = 0; i < 4; i++) {
		if (mask / 8 > 1) {
			if (oIP.ip[i] != oRange.ip[i]) {
				return false;
			}
		} else {
			var bitmask = 8 - mask;
			if (bitmask == 0) return true;
			bitmask = Math.pow(2,bitmask);
			if ( (parseInt(oIP.ip[i], 10) & bitmask) == (parseInt(oRange.ip[i], 10) & bitmask) ) return true;
			return false;
		}
		mask -= 8;
	}
}

window.checkForBlacklistedIP = checkForBlacklistedIP;

}());

// Añadir enlace de chequeo en Especial:Contribuciones
if (window.wgNamespaceNumber == -1 && window.wgCanonicalSpecialPageName == 'Recentchanges') {
	$(function() {
		mw.util.addPortletLink('p-cactions', 'javascript:window.checkForBlacklistedIP();void(0);', 'Comprobar IP en ListaNegra');
	});
	// En vez de lo anterior, se puede hacer automáticamente así
	//$(checkForBlacklistedIP);
	// O incluso ponerlo fuera de este if, o cambiándolo para que funcione en otras páginas o en todas.
}