MediaWiki:Gadget-NSUpload.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 () {
'use strict';
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) !== 'UploadWizard' ) {
return;
}
var namespaces = [
{ label: '— Kein Namensraum (öffentlich) —', value: '' },
{ label: 'Library', value: 'Library' },
{ label: 'Rezept', value: 'Rezept' },
{ label: 'Private', value: 'Private' },
{ label: 'Notes', value: 'Notes' },
{ label: 'FSK18', value: 'FSK18' }
];
function stripPrefix( val ) {
namespaces.forEach( function ( ns ) {
if ( ns.value && val.indexOf( ns.value + ':' ) === 0 ) {
val = val.slice( ns.value.length + 1 );
}
} );
return val;
}
function hasPrefix( val ) {
var found = false;
namespaces.forEach( function ( ns ) {
if ( ns.value && val.indexOf( ns.value + ':' ) === 0 ) {
found = true;
}
} );
return found;
}
function getNsPrefix() {
return $( '#ns-upload-selector' ).val() || '';
}
function buildSelector() {
var $wrapper = $( '<div>' ).attr( 'id', 'ns-upload-wrapper' ).css( {
'margin': '0 0 12px 0',
'padding': '8px 12px',
'background': '#f8f9fa',
'border': '1px solid #a2a9b1',
'font-size': '1em'
} );
var $label = $( '<label>' )
.attr( 'for', 'ns-upload-selector' )
.text( 'Namensraum für Upload: ' )
.css( 'font-weight', 'bold' );
var $select = $( '<select>' )
.attr( 'id', 'ns-upload-selector' )
.css( 'margin-left', '8px' );
namespaces.forEach( function ( ns ) {
$( '<option>' ).val( ns.value ).text( ns.label ).appendTo( $select );
} );
$select.on( 'change', function () {
var nsPrefix = $( this ).val();
var $dest = $( '#wpDestFile' );
if ( $dest.length ) {
var val = stripPrefix( $dest.val() );
$dest.val( nsPrefix ? nsPrefix + ':' + val : val );
}
$( '.mwe-upwiz-titleDetailsWidget-title input.oo-ui-inputWidget-input' ).each( function () {
var tval = stripPrefix( $( this ).val() );
$( this ).val( nsPrefix ? nsPrefix + ':' + tval : tval ).trigger( 'change' );
} );
} );
return $wrapper.append( $label, $select );
}
var lastDestVal = '';
var lastTitleVals = {};
function applyPrefixToField( $field, idx ) {
var nsPrefix = getNsPrefix();
if ( !nsPrefix ) return;
var val = $field.val();
if ( val === '' ) return;
var key = idx !== undefined ? idx : 0;
if ( val === lastTitleVals[ key ] ) return;
if ( !hasPrefix( val ) ) {
lastTitleVals[ key ] = nsPrefix + ':' + val;
$field.val( nsPrefix + ':' + val ).trigger( 'change' );
}
}
setInterval( function () {
// Wrapper neu injizieren falls verschwunden
if ( !$( '#ns-upload-wrapper' ).length ) {
var $container = $( '#mwe-upwiz-content' );
if ( $container.length ) {
$container.prepend( buildSelector() );
}
}
// wpDestFile beobachten
var $dest = $( '#wpDestFile' );
if ( $dest.length ) {
var destVal = $dest.val();
if ( destVal !== lastDestVal ) {
lastDestVal = destVal;
var nsPrefix = getNsPrefix();
if ( nsPrefix && destVal !== '' && !hasPrefix( destVal ) ) {
lastDestVal = nsPrefix + ':' + destVal;
$dest.val( nsPrefix + ':' + destVal );
}
}
}
// Titelfelder beobachten
$( '.mwe-upwiz-titleDetailsWidget-title input.oo-ui-inputWidget-input' ).each( function ( i ) {
applyPrefixToField( $( this ), i );
} );
}, 300 );
}() );