Zum Inhalt springen

„Benutzer:Fomafix/Gadget-redirecttitle.js“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Inhalt gelöscht Inhalt hinzugefügt
Überprüfe vor dem Verarbeiten, dass in der Antwort auch die Objekt-Struktur vorhanden ist. Sichere den ursprünglichen Titel in .data( 'title' ) http://api.jquery.com/data/, damit er nicht verloren geht und die Anfrage mehrfach ausgeführt werden k
Variabe redirects eingespart
Zeile 8: Zeile 8:
"use strict";
"use strict";
$( function () {
$( function () {
var api = new mw.Api(),
var api = new mw.Api(), target, targets = {}, titles = [];
mw.util.$content
target, targets = {}, titles = [],
redirects = mw.util.$content.find( 'a.mw-redirect' );
.find( 'a.mw-redirect' )
redirects.each( function ( index, object ) {
.each( function ( index, object ) {
var title = $( object ).data( 'title' ) || object.title;
var title = $( object ).data( 'title' ) || object.title;
if ( targets[ title ] ) {
if ( targets[ title ] ) {

Version vom 1. Juli 2012, 21:46 Uhr

/*
 * Dieses Gadget fügt bei Links auf Weiterleitungen das Weiterleitungsziel im Tooltip hinzu.
 */
mw.messages.set( 'redirect-title', '$1 → $2' );
/* If you just want the redirect destination as title use mw.messages.set( 'redirect-title', '$2' ); */

mw.loader.using( [ 'mediawiki.util', 'mediawiki.api' ], function () {
	"use strict";
	$( function () {
		var api = new mw.Api(), target, targets = {}, titles = [];
		mw.util.$content
		.find( 'a.mw-redirect' )
		.each( function ( index, object ) {
			var title = $( object ).data( 'title' ) || object.title;
			if ( targets[ title ] ) {
				targets[ title ].push( object );
			} else {
				targets[ title ] = [ object ];
			}
		} );
		for ( target in targets ) {
			titles.push( target );
			if ( titles.length >= 50 ) {
				query( titles );
				titles = [];
			}
		}
		if ( titles.length > 0 ) {
			query( titles );
		}

		function query( titles ) {
			api.post( {
				action: 'query',
				titles: titles.join( '|' ),
				redirects: true
			}, {
				ok: ok
			} );
		}

		function ok( res ) {
			if ( res.query && res.query.redirects ) {
				$.each( res.query.redirects, function ( index, redirect ) {
					$.each( targets[ redirect.from ], function ( index, object ) {
						if ( ! $( object ).data( 'title' ) ) {
							$( object ).data( 'title', object.title );
						}
						object.title = mw.msg( 'redirect-title', redirect.from, redirect.to );
					} );
				} );
			}
		}
	} );
} );