MediaWiki:Gadget-AdvancedSearchHelper.js

Versione del 30 ago 2020 alle 22:40 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.
/**
 * Aggiunge altri campi a [[Speciale:Ricerca]]
 *
 * Creato da una geniale idea di [[Utente:Superchilum]]:
 * [[Speciale:PermaLink/89685164#Accessorio per ricerca avanzata]]
 * [[Discussioni utente:Valerio Bozzolan#Accessorio per ricerca avanzata]]
 *
 * Some features now are provided by the cute [[meta:WMDE_Technical_Wishes/AdvancedSearch]],
 * so soon this gadget will become unuseful and should be disabled.
 *
 * @author [[Utente:Valerio Bozzolan]]
 * @license [[GNU AGPL]] or [[GNU GPL v3+]] or [[GNU FDL]] or [[CC BY-SA 4.0]] at your opinion
 */
( function ( mw, $ ) {

	var cfg = {
		ACTIVATION_PAGE: 'Speciale:Ricerca'
	};

	if( ! mw || mw.config.get('wgPageName') !== cfg.ACTIVATION_PAGE ) {
		return;
	}

	var L10N = {
		prefix: 'Prefisso',
		inTitle: 'Nel titolo',
		inSource: 'Nel codice',
		inCategory: 'Nella categoria',
		linksTo: 'Nei collegamenti a',
		exclude: 'Escludi',
		moreLike: 'Parla simile',
		hasTemplate: 'Include il template'
	};

	var $form = $('form#powersearch');
	var $container = $('#mw-searchoptions');

	if( ! $form.length ) {
		$form = $('form#search')
		$container = $form;
	}

	var $mainInputSearch = $form.find('input[name=search]');
	var $formContainer = $('<div class="mw-inputbox-centered">');
	var $inputText = $('<input type="text" class="searchboxInput mw-ui-input mw-ui-input-inline" />');
	var $checkbox = $('<input type="checkbox" value="1" />');
	var $label = $('<label>');
	var $button = $('<input class="mw-ui-button" />');
	var $p = $('<p>');

	var searches = [];

	function addSearchPart(field, value) {
		searches.push( field + ':"' + value + '"' );
	}

	function addSearchField( field, label ) {
		this.id = this.id || 1;

		var $inputTextPrefix = $inputText.clone()
			.attr('placeholder', label);

		var $excludeCheckbox = $checkbox.clone()
			.prop('id', id);

		$container.append(
			$formContainer.clone().append(
				$p.clone()
					.append( $inputTextPrefix )
					.append( $excludeCheckbox )
					.append( $label.clone()
						.prop('for', id)
						.html( L10N.exclude )
					)
			)
		);

		this.id++;

		$form.submit( function () {
			var v = $inputTextPrefix.val();
			if( v ) {
				if( $excludeCheckbox.is(':checked') ) {
					field = '-' + field;
				}
				addSearchPart( field, v );
			}
		} );
	}

	addSearchField('prefix',      L10N.prefix);
	//addSearchField('intitle',     L10N.inTitle);
	addSearchField('insource',    L10N.inSource);
	//addSearchField('incategory',  L10N.inCategory);
	addSearchField('linksto',     L10N.linksTo);
	//addSearchField('hastemplate', L10N.hasTemplate);
	//addSearchField('morelike',    L10N.moreLike);

	$form.submit( function () {
		var val = $mainInputSearch.val();
		if( val !== '' ) {
			searches.unshift(val);
		}
		$mainInputSearch.val( searches.join(' ') );
		searches = [];
	} );

} )( mediaWiki, jQuery );