Usuario:Peter Bowman/brokenWikilinks.js
Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.
- Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
- Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
- Internet Explorer/Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
- Opera: Presiona Ctrl+F5.
( function( $, mw ) {
var wikilinks;
function queryCORS() {
var titles = [];
for ( var title in wikilinks )
titles.push( title );
if ( titles.length === 0 )
return;
$.ajax( {
url: 'https://es.wikipedia.org/w/api.php',
dataType: 'json',
data: {
action: 'query',
format: 'json',
origin: 'https://es.wiktionary.org',
prop: 'info',
redirects: 1,
titles: titles.join( '|' )
},
xhrFields: {
withCredentials: true
},
success: function( data ) {
if ( !data.query )
return;
if ( data.query.normalized ) {
for ( var i = 0; i < data.query.normalized.length; i++ ) {
var rec = data.query.normalized[ i ];
if ( wikilinks[ rec.from ] )
wikilinks[ rec.from ].normalized = rec.to;
}
}
for ( var pageid in data.query.pages ) {
var page = data.query.pages[ pageid ];
if ( page.missing === '' ) {
if ( data.query.normalized && wikilinks[ page.title ] ) {
wikilinks[ page.title ].missing = true;
} else {
for ( var key in wikilinks ) {
if ( wikilinks[ key ].normalized == page.title ) {
wikilinks[ key ].missing = true;
break;
}
}
}
}
}
process();
}
} );
}
function getHeader( $node ) {
var $header = null;
if (
( $header = $node.prev( 'h2' ) ).length === 1 // &&
//$header.children( '#V.C3.A9ase_tambi.C3.A9n' ).length !== 0
)
return $header;
else
return null;
}
function process() {
for ( var title in wikilinks ) {
if ( !wikilinks[ title ].missing )
continue;
var $node = wikilinks[ title ].$node;
var $header = null;
if ( $node.parent().prop( 'nodeName' ) == 'LI' ) {
$node = $node.parent();
var $ul = $node.parent();
if ( $ul.children().length === 1 ) {
$header = getHeader( $node = $ul );
}
} else {
$header = getHeader( $node );
}
$node.remove();
if ( $header )
$header.remove();
}
}
function init() {
wikilinks = {};
$( 'b>a[href^="//es.wikipedia.org/wiki/"]' ).each( function() {
var title = this.getAttribute( 'title' );
if ( !title )
return true;
title = title.substring( title.indexOf( ':' ) + 1 );
if ( title.indexOf( ':' ) > -1 )
return true;
wikilinks[ title ] = {
$node: $( this ).parent()
};
} );
queryCORS();
}
if (
mw.config.get( 'wgNamespaceNumber' ) === 0 &&
mw.config.get( 'wgAction' ) == 'view'
) {
$( document ).ready( function() {
init();
} );
}
} ) ( jQuery, mediaWiki );