MediaWiki:Gadget-stru-cercaredirectdisambigua.js

Da Semi del Verbo, l'enciclopedia dell'influenza del Vangelo sulla cultura
Versione del 30 ago 2020 alle 22:39 di Johnrdorazio (discussione | contributi) (una versione importata)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.

  • Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
  • Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
  • Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
  • Opera: premi 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 () {
		if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) {
			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( function () {
						getRedirectDisambig();
					} )
					.fail( function () {
						console.error( 'Impossibile avviare l\'accessorio "Cerca redirect/disambigua".' );
					} );
			} );
		}
	} );
}( mediaWiki, jQuery ) );