MediaWiki:Gadget-SimilarTitles.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.

/**
 * Similar titles
 *
 * When creating a new page, it shows a list of similar titles, to avoid duplicates.
 * 
 * @author [[w:it:Utente:Valerio Bozzolan]] and contributors
 * @license [[GNU GPL v3+]] or [[CC BY SA 4.0]] at your opinion
 */

window.similarTitlesOpts = {
	// Where to put the tip
	container:     '#contenitore-titoli-simili', // Vedi [[Template:Pagina inesistente]]

	// Header of the tip
	preContainer:  "<p><b>Verifica però che le seguenti voci non siano quello che stavi cercando:</b></p>",

	// Footer of the tip
	postContainer: "",

	// Max length of the page quote
	maxQuote:      100,

	// How many similar pages to be shown
	maxResults:    5
};

$( function () {
	var conf = mw.config.get( [
		'wgAction',
		'wgArticleId',
		'wgNamespaceNumber',
		'wgPageName',
	] );
	if( 'edit' !== conf.wgAction || 0 !== conf.wgNamespaceNumber || 0 !== conf.wgArticleId ) {
		return;
	}
	var data = {
		action:  'opensearch',
		search:  conf.wgPageName,
		profile: 'normal',
		limit:   window.similarTitlesOpts.maxResults
	};
	mw.loader.using( 'mediawiki.api', function () {
		( new mw.Api() ).get( data ).done( function ( results ) {
			var s       = results[0];
			var titles  = results[1];
			var quotes  = results[2];
			var urls    = results[3];
			if( titles.length ) {
				$container = $( window.similarTitlesOpts.container );
				$container.append( window.similarTitlesOpts.preContainer );
				for( var i = 0; i < titles.length; i++ ) {
					var title = titles[ i ];
					var quote = quotes[ i ];
					var url   = urls  [ i ];
					$p = $('<p>').append(
						$('<a>').attr( 'href', url )
						        .text( title )
								.attr( 'target', '_blank' )
					);
					if( quote ) {
						var quoteLimit = window.similarTitlesOpts.maxQuote;
						if( quote.length > quoteLimit ) {
							quote = quote.substring( 0, quoteLimit) + '&hellip;';
						}
						$p.append( ' &ndash; «' + quote + '»' );
			 		}
					$container.append( $p );
				}
				$container.append( window.similarTitlesOpts.postContainer );
			}
		} );
	} );
} );