MediaWiki:Gadget-AdvancedSearchHelper.js
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 = {
specialSearch: 'Speciale:Ricerca',
main: 'Principale',
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" value="1" />');
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 $hidden(name, value) {
return $('<input type="hidden">')
.attr('name', name)
.attr('value', value);
}
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()
.attr('size', 50)
.attr('name', 'search')
.attr('placeholder', L10N.search);
$form.append( $hidden('fulltext', 1) );
$form.append( $hidden('title', L10N.specialSearch ) );
$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);
$nsContainer = $formContainer.clone();
var namespaces = mw.config.get('wgFormattedNamespaces');
for( ns in namespaces ) {
$nsContainer.append(
$fullCheckbox( namespaces[ ns ] || L10N.main )
.find('input')
.attr('name', 'ns' + ns)
.end()
);
}
$form.append( $nsContainer );
$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 );