MediaWiki:Gadget-stru-cercaredirectdisambigua.js

Questa pagina definisce alcuni parametri di aspetto e comportamento generale di tutte le pagine. Per personalizzarli vedi Aiuto:Stile utente.


Nota: dopo aver salvato è necessario pulire la cache del proprio browser per vedere i cambiamenti (per le pagine globali è comunque necessario attendere qualche minuto). Per Mozilla / Firefox / Safari: fare clic su Ricarica tenendo premuto il tasto delle maiuscole, oppure premere Ctrl-F5 o Ctrl-R (Command-R su Mac); per Chrome: premere Ctrl-Shift-R (Command-Shift-R su un Mac); per Konqueror: premere il pulsante Ricarica o il tasto F5; per Opera può essere necessario svuotare completamente la cache dal menù Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.

/**
 * 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 ) );