Benutzer:TMg/advancedSearch.js/namespaceFilters.js
Erscheinungsbild
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
( function ( mw, $ ) {
'use strict';
function isLoaded() {
if ( !mw.libs ) {
mw.libs = {};
}
if ( !mw.libs.advancedSearch ) {
mw.libs.advancedSearch = {};
}
if ( mw.libs.advancedSearch.namespaceFiltersLoaded ) {
return true;
}
mw.libs.advancedSearch.namespaceFiltersLoaded = true;
return false;
}
if ( isLoaded() ) {
return;
}
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) !== 'Search' ) {
return;
}
var $search = $( 'form#powersearch' );
if ( !$search.length ) {
return;
}
var presets = [
{
id: 'articles',
filter: '#mw-search-ns0'
},
{
id: 'images',
filter: '#mw-search-ns6'
},
{
id: 'project',
filter: '#mw-search-ns4, #mw-search-ns10, #mw-search-ns12, #mw-search-ns100, #mw-search-ns828'
},
{
id: 'talk',
filter: function ( index, checkbox ) {
return /[13579]$/.test( checkbox.id );
}
},
{
id: 'all',
filter: '*'
}
];
var i18n = {
'de': {
articles: 'Artikel',
images: 'Dateien',
project: 'Projektnamensräume',
talk: 'Diskussionsseiten',
all: 'Alle',
'individual-namespaces': 'Individuelle Namensräume:'
},
'en': {
articles: 'Articles',
images: 'Files',
project: 'Project namespaces',
talk: 'Talk pages',
all: 'All',
'individual-namespaces': 'Individual namespaces:'
}
};
/**
* @param {string} key
* @return {string}
*/
function msg( key ) {
var lang = mw.config.get( 'wgUserLanguage' );
return i18n[lang] && i18n[lang][key] || i18n.en[key] || '<' + key + '>';
}
function updatePresetStates() {
presets.forEach( function ( preset ) {
var $checkboxGroup = $( 'form#powersearch input[id^=mw-search-ns]' )
.filter( preset.filter ),
allChecked = true;
$checkboxGroup.each( function ( index, checkbox ) {
if ( !checkbox.checked ) {
allChecked = false;
return false;
}
} );
$( '#' + preset.id ).prop( 'checked', allChecked );
} );
}
mw.loader.using( [ 'oojs-ui' ], function () {
var $headline = $( '#mw-searchoptions h4' )
.css( {
color: '#666',
float: 'none',
'font-weight': 'normal',
'margin-bottom': '0.3em'
} ),
$individualNamespaces = $( '#mw-searchoptions' )
.css( {
background: 'linear-gradient(rgba(0, 0, 0, 0.1), #fff 0.5em)',
'box-sizing': 'border-box',
'margin-top': '-1px',
'max-width': '50em',
'padding-top': '1em'
} )
.hide(),
$presetsBar = $( '.mw-search-profile-tabs' )
.css( {
'background-image': 'url(//de.wikipedia.org/w/load.php?modules=oojs-ui.styles.indicators&image=down)',
'background-position': '99%',
'background-repeat': 'no-repeat',
'background-size': '18px',
'border-color': '#a2a9b1',
'border-radius': '2px',
'box-sizing': 'border-box',
cursor: 'pointer',
'margin-top': '0.3em',
'max-width': '50em',
padding: '0.4em 0.7em',
position: 'relative'
} )
.append( $( '<b>' ).append( $headline.text() ), '\n' )
.click( function ( e ) {
$individualNamespaces.toggle();
} );
$headline.text( msg( 'individual-namespaces' ) );
$individualNamespaces.find( 'table' ).css( { float: 'none', margin: 0 } );
$individualNamespaces.find( 'tr:first-child td:first-child' ).css( { 'min-width': '12em' } );
presets.forEach( function ( preset ) {
var $checkbox = $( '<input>' )
.attr( { id: preset.id, type: 'checkbox' } )
.css( { 'vertical-align': 'middle' } )
.click( function ( e ) {
e.stopPropagation();
if ( !e.originalEvent ) {
return;
}
$( 'form#powersearch input[id^=mw-search-ns]' )
.filter( preset.filter )
.prop( 'checked', e.target.checked );
updatePresetStates();
} ),
$label = $( '<label>' )
.attr( { for: preset.id } )
.css( {
cursor: 'pointer',
padding: '0.4em 0.2em',
'white-space': 'nowrap'
} )
.click( function ( e ) {
e.stopPropagation();
} )
.append( $checkbox, '\n', msg( preset.id ) );
$presetsBar.append( $label, '\n' );
} );
// $presetsBar.append( $( '<span>▼</span>' ).css( { float: 'right' } ) );
$( 'form#powersearch input[id^=mw-search-ns]' ).click( function ( e ) {
if ( !e.originalEvent ) {
return;
}
updatePresetStates();
} );
updatePresetStates();
$( '.search-types, #mw-search-togglebox, #mw-search-togglebox + .divider' )
.hide();
} );
} )( mediaWiki, jQuery );