MediaWiki:Gadget-stru-cercaredirectdisambigua.js

Da Cathopedia, l'enciclopedia cattolica.
Vai alla navigazione Vai alla ricerca

Nota: Dopo aver salvato le preferenze, perché i cambi abbiano effetto, devi bypassare la cache del tuo browser. Mozilla / Firefox / Safari: tieni premuto Shift mentre clicchi Reload, o premi Ctrl-Shift-R (Cmd-Shift-R per Apple Mac); Google Chrome: premi Ctrl o Shift mentre clicchi F5; IE: premi Ctrl mentre clicchi Refresh, o premi Ctrl-F5; Konqueror:: clicca semplicemente il pulsante di Reload, o premi F5; se usi Opera devi cancellare completamente la chache nel menu Tools→Preferences.

/**
 * Gadget-stru-cercaredirectdisambigua.js
 * In modalità modifica aggiunge un link nel menu laterale "Strumenti" che genera
 * un elenco dei redirect e disambigue presenti nella voce.
 * Riscritto da zero a partire da:
 * http://it.wikipedia.org/w/index.php?title=MediaWiki:Gadget-stru-cercaredirectdisambigua.js&oldid=48187910
 *
 * @author [[it:User:Rotpunkt]]
 */
/*jshint unused: false */
/*global mediaWiki, jQuery  */

( function ( mw, $ ) {
	'use strict';
	
	var $dialog;
	
	function showResults( data ) {
		if ( !$dialog ) {
			$dialog = $( '<div>' ).attr( 'id', 'gcrd-dialog' ).appendTo( 'body' );
		}
		$dialog.empty().append( typeof data === 'string' ? $( '<p>' ).text( data ) : data );	
		$dialog.dialog( {
			title: 'Accessorio trova redirect/disambigua',
			height: 350,
			buttons: {
				Ok: function() {
					$( this ).dialog( 'close' );
				}
			}
		} );
	}
	
	function compareText( a, b ) {
		return $( a ).text().toUpperCase() > $( b ).text().toUpperCase();	
	}
	
	function populateDiv( $div, data, linkclass ) {
		var uniquemap = {};
		$( data ).find( linkclass ).sort( compareText ).each( function( i, el ) {
			if ( !uniquemap[ $( el ).text() ] ) {
				uniquemap[ $( el ).text() ] = true;
				$( el ).attr( 'target', '_blank' ).removeClass().appendTo( $div ).append( '<br/>' );
			}
		} );
	}
	
	function getRedirectDisambig() {
		var url = mw.util.getUrl( mw.config.get( 'wgPageName' ) );
		$.get( url, function( data ) {
			var $div = $( '<div>' );
			$( '<h4>' ).text( 'Redirect:' ).appendTo( $div );
			populateDiv( $div, data, '.mw-redirect' );
			$( '<h4>' ).text( 'Disambigua:' ).appendTo( $div );
			populateDiv( $div, data, '.mw-disambig' );
			showResults( $div );
		} )
			.fail ( function() {
				showResults( 'Errore nel leggere la pagina ' + url );
  			} );
	}

	$( function () {
		var portletLink = mw.util.addPortletLink( 'p-tb', '#', 'Trova redirect/disambigua', 
												  't-redirdis', 'Trova redirect/disambigua', 'R' );
		$( portletLink ).click( function ( event ) {
			event.preventDefault();
			mw.loader.using( 'jquery.ui' )
				.done( getRedirectDisambig )
				.fail( function () {
					console.error( 'Impossibile avviare l\'accessorio "Cerca redirect/disambigua".' );
				} );
		} );
	} );
}( mediaWiki, jQuery ) );