Benutzer:TMg/signatureDateFormat.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
// <nowiki> zur Umgehung von [[phab:T10761]]
$( function () {
	var ns = mw.config.get( 'wgNamespaceNumber' );
	// Nur in Diskussions-Namensräumen und dem Wikipedia-Namensraum
	if ( ns < 1 || ( !( ns % 2 ) && ns !== 4 ) ) {
		return;
	}

	var action = mw.config.get( 'wgAction' );
	if ( action !== 'view' && action !== 'edit' && action !== 'submit' ) {
		return;
	}

	var format = mw.user.options.get( 'date' );
	if ( !format ) {
		return;
	}

	// Deutsch, Englisch, Französisch, Italienisch, Portugiesisch, Spanisch
	var months = {
		'JAN': '01', 'ENE': '01', 'GEN': '01',
		'FEB': '02', 'FEV': '02', 'FÉV': '02',
		'MÄR': '03', 'MAR': '03',
		'APR': '04', 'ABR': '04', 'AVR': '04',
		'MAI': '05', 'MAY': '05', 'MAG': '05',
		'JUN': '06', 'GIU': '06', 'JUI': '06',
		'JUL': '07', 'JUI': '07', 'LUG': '07',
		'AUG': '08', 'AGO': '08', 'AOÛ': '08',
		'SEP': '09', 'SET': '09',
		'OKT': '10', 'OCT': '10', 'OTT': '10', 'OUT': '10',
		'NOV': '11',
		'DEZ': '12', 'DEC': '12', 'DÉC': '12', 'DIC': '12'
	};
	// Ausgabeformat "2012-06-07T16:52:15"
	var replacementBase = function ( a, t, d, m, y ) {
		return y + '-' + ( months[ m.slice( 0, 3 ).toUpperCase() ] || m ) +
			( d.length > 1 ? '-' : '-0' ) + d + 'T' + t.slice( 0, 2 ) + ':' + t.slice( 3 );
	}
	var replacement = replacementBase;

	if ( format.slice( 0, 4 ) === 'dmyt' ) {
		// Ausgabeformat "7. Jun. 2012, 16:52"
		replacement = '$2. $3 $4, $1';
	} else if ( format === 'ymd' ) {
		// Ausgabeformat "16:52, 2012 Jun. 7"
		replacement = '$1, $4 $3 $2';
	} else if ( format.slice( 0, 3 ) !== 'ISO' ) {
		return;
	}

	// Möglichst flexibles, aber sicher erkennbares deutsches Datumsformat
	var regex = /\b(\d+:\d+:?\d*), +(\d+)\. +([A-Z][a-zä]+\.?) +(\d+)(?= +\([A-Z]+\))/g;
	switch ( mw.config.get( 'wgContentLanguage' ) ) {
		case 'commons':
		case 'en':
			regex = /\b(\d+:\d+:?\d*), +(\d+) +([A-Z][a-z]+) +(\d+)(?= +\([A-Z]+\))/g;
			break;
		case 'es':
			regex = /\b(\d+:\d+:?\d*) +(\d+) +([a-z]+) +(\d+)(?= +\([A-Z]+\))/g;
			break;
		case 'fr':
			regex = /\b(\d+) +([a-zéû]+) +(\d+) +à +(\d+:\d+:?\d*)(?= +\([A-Z]+\))/g;
			if ( format.slice( 0, 4 ) === 'dmyt' ) {
				replacement = '$1. $2 $3, $4';
			} else if ( format === 'ymd' ) {
				replacement = '$4, $3 $2 $1';
			} else {
				replacement = function ( a, d, m, y, t ) {
					return replacementBase( a, t, d, m, y );
				}
			}
			break;
		case 'it':
			regex = /\b(\d+:\d+:?\d*), +(\d+) +([a-z]+) +(\d+)(?= +\([A-Z]+\))/g;
			break;
		case 'pt':
			regex = /\b(\d+h\d+)min +de +(\d+) +de +([a-z]+) +de +(\d+)(?= +\([A-Z]+\))/g;
			break;
	}

	mw.hook( 'wikipage.content' ).add( function ( $content ) {
		// Im Bearbeitungsmodus nur den Vorschaubereich formatieren
		if ( action !== 'view' ) {
			$content = $content.find( '#wikiPreview' );
		}
		if ( $content.length ) {
			var e = $content[ 0 ];
			e.innerHTML = e.innerHTML.replace( regex, replacement );
		}
	} );
} );
// </nowiki>