Usuario:Leoncastro/Taller/MediaWiki:Gadget-newpages.js
Apariencia
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é.
//<nowiki>
/* jshint esversion: 6 */
( function ( $, mw ) {
// system structure
const pageStructure = {
'Newpages' : { list: '.mw-special-Newpages li.not-patrolled', anchor: 'a.mw-newpages-pagename' },
'Whatlinkshere' : { list: '.mw-special-Whatlinkshere #mw-whatlinkshere-list li', anchor: 'a' },
};
// internal className strings
const with_problems = 'with-problems';
// message strings
const strAPIReadError = 'Error en la recuperación de datos de la API';
var pageName = mw.config.get( 'wgCanonicalSpecialPageName' );
var categories = [
// +0
'Categoría:Wikipedia:Borrar (definitivo)',
'Categoría:Wikipedia:Plagios obvios',
// +7
'Categoría:Wikipedia:Artículos propuestos para borrado',
// +30
'Categoría:Wikipedia:Artículos nuevos sin referencias',
'Categoría:Wikipedia:Artículos sin contextualizar',
'Categoría:Wikipedia:Artículos sospechosos de fuente primaria',
'Categoría:Wikipedia:Artículos sospechosos de violar los derechos de autor',
'Categoría:Wikipedia:Infraesbozos',
'Categoría:Wikipedia:Plantillas para borrar',
'Categoría:Wikipedia:Posible promoción o publicidad',
'Categoría:Wikipedia:Sin relevancia aparente',
'Categoría:Wikipedia:Traducción automática',
];
function getTitleFromLink ( href )
{
const uriRegexp = /^\/w(?:iki)?\/(?:index.php\?title\=)?|\&redirect\=no/g;
return decodeURIComponent( href.replace( uriRegexp, '' ).replace( /_/g, ' ' ) );
}
function getTitlesFromPage ()
{
return $( pageStructure[pageName].list ).map( function ( index, item ) {
var anchor = $( item ).find( pageStructure[pageName].anchor );
var title = getTitleFromLink( anchor.attr( 'href' ) );
return title;
} ).toArray();
}
var longquery = {};
function apiQueryCats ( query, result, queryContinue )
{
if ( !queryContinue )
{
queryContinue = { 'continue': '' };
}
$.get( mw.util.wikiScript('api'), $.extend( {}, query, queryContinue ) )
.done( function ( json ) {
if ( json )
{
if ( json.query && json.query.pages )
{
$.extend( longquery, json.query.pages );
}
if ( json['continue'] )
{
apiQueryCats( query, result, json['continue'] );
}
else
{
result.resolve( longquery );
}
}
} )
.fail( function (e) {
mw.notify( strAPIReadError );
} );
}
function apiBuildList ( titles )
{
var looping = $.Deferred();
var listing = $.Deferred();
var query = {
action: 'query',
format: 'json',
prop: 'categories',
clcategories: categories.join( '|' ),
cllimit: 'max'
};
while ( titles.length > 0 )
{
apiQueryCats( $.extend( {}, query, { titles: titles.splice( 0, 50 ).join( '|' ) } ), looping );
}
$.when( looping ).done( function ( pages ) {
var list = [];
for ( var pageid in pages )
{
var item = pages[ pageid ];
if ( item.categories )
{
list.push( item.title );
}
}
listing.resolve( list );
longquery = {};
} );
return $.when( listing );
}
function exec ()
{
apiBuildList( getTitlesFromPage() ).done( function ( list ) {
$( pageStructure[pageName].list ).each( function ( index, item ) {
var anchor = $( item ).find( pageStructure[pageName].anchor );
var title = getTitleFromLink( anchor.attr( 'href' ) );
if ( $.inArray( title, list ) >= 0 )
{
$( item ).addClass( with_problems );
}
} );
} );
}
function init ()
{
mw.loader.load('//es.wikipedia.org/w/index.php?title=Usuario:Leoncastro/Taller/MediaWiki:Gadget-newpages.css&action=raw&ctype=text/css', 'text/css');
exec();
}
if ( 'Special' === mw.config.get( 'wgCanonicalNamespace' ) &&
( 'Newpages' === pageName || 'Whatlinkshere' === pageName ) )
{
mw.loader.using( [ 'mediawiki.util', 'mediawiki.api' ] ).then( init );
}
} ( jQuery, mediaWiki ) );
//</nowiki>