_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

MediaWiki:Gadget-stru-cercaredirectdisambigua.js

Nel mondo di oggi, MediaWiki:Gadget-stru-cercaredirectdisambigua.js è diventata una questione rilevante che ha un impatto su diversi settori della società. Fin dalla sua nascita, MediaWiki:Gadget-stru-cercaredirectdisambigua.js ha generato una serie di discussioni e dibattiti che hanno catturato l'attenzione degli esperti e del grande pubblico. In questo articolo esploreremo in modo approfondito i diversi aspetti legati a MediaWiki:Gadget-stru-cercaredirectdisambigua.js, analizzandone l'origine, l'evoluzione e le ripercussioni in vari ambiti. Affronteremo anche le diverse opinioni e prospettive che esistono attorno a MediaWiki:Gadget-stru-cercaredirectdisambigua.js, nonché le possibili soluzioni o misure proposte per affrontare le sfide che pone. Questo articolo cerca di fornire una visione completa e aggiornata su MediaWiki:Gadget-stru-cercaredirectdisambigua.js, con l'obiettivo di favorire un dibattito informato e arricchente su questo argomento così attuale oggi.
/**
 * 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 ]
 */
/*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 ) {
				uniquemap = 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 ) );