MediaWiki:Gadget-AdvancedSearchHelper.js

Versione del 31 lug 2017 alle 23:06 di Valerio Bozzolan (discussione | contributi) (fields everywhere)

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.

/**
 * Inserisce nella pagina alcuni campi di ricerca avanzata.
 *
 * Oltre al '#advanced-search-helper-container', nella pagina deve essere inserito almeno un "inputbox".
 *
 * @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 L10N = {
		search: 'Cerca',
		prefix: 'Prefisso',
		inTitle: 'Parte del titolo',
		inSource: 'Nel codice',
		inCategory: 'Categoria',
		linksTo: 'Collegamento a',
		exclude: 'Escludi',
		moreLike: 'Parla simile'
	};

	var $container = $('#advanced-search-helper-container').empty();
	var $formContainer = $('<div class="mw-inputbox-centered">');
	var $checkboxContainer = $('<div class="mw-inputbox-element mw-ui-checkbox">');
	var $inputText = $('<input type="text" class="searchboxInput mw-ui-input mw-ui-input-inline" />');
	var $checkbox = $('<input type="checkbox" />');
	var $label = $('<label>');
	var $button = $('<input class="mw-ui-button" />');
	var $form = $('<form>');
	var $p = $('<p>');

	var searches = [];

	function $fullCheckbox( label ) {
		var $myCheckbox = $checkbox.clone();
		this.i = this.i || 0;
		var id = 'mw-inputbox-asd-' + this.i;
		return $checkboxContainer.clone()
			.append( $myCheckbox
				.prop('id', id)
			)
			.append( $label.clone()
				.prop('for', id)
				.html( label )
			);
	}

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

	function addSearchField( field, label ) {
		var $inputTextPrefix = $inputText.clone()
			.attr('placeholder', label);

		var $excludeCheckbox = $fullCheckbox( L10N.exclude );

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

	var $mainInputSearch = $inputText.clone()
		.prop('size', 50)
		.prop('name', 'search')
		.prop('placeholder', L10N.search);

	$form.append(
		$formContainer.clone().append(
			$p.clone().append( $mainInputSearch )
		)
	);

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

	$form.append(
		$formContainer.clone().append(
			$p.clone().append(
				$button.clone()
					.prop('type', 'submit')
					.attr('value', L10N.search )
			)
		)
	)

	$form.submit( function () {
		$mainInputSearch.val(
			$mainInputSearch.val() + " " +
			searches.join(' ')
		);
		searches = [];
	} );

	$container.append( $form );

} )( mediaWiki, jQuery );