Benutzer:TMg/forceEditSummary.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
$( function () {
	// Look for Edit or MovePage. Return as fast as possible if not applicable.
	var field = $( 'input[name=wpSummary], input[name=wpReason]' );
	// Don't do anything if the wpforceeditsummary setting is active.
	if ( !field.length || field.hasClass( 'mw-summarymissed' ) ) {
		return;
	}

	var button = $( 'input[name=wpSave], input[name=wpMove]' );
	if ( !button.length ) {
		return;
	}

	function isRedirect() {
		var textbox = $( 'textarea[name=wpTextbox1]' );
		return /^#(REDIRECT|WEITERLEITUNG)\b/.test( textbox.val() );
	}

	function isSummaryEmpty() {
		var m = /\bsummary=([^&]+)/.exec( location.search );
		try {
			if ( m && field.val().replace( /^\/\*.*?\*\/ /, '' ) === decodeURI( m[1] ) ) {
				return true;
			}
		} catch ( e ) {
			/* ignore malformed URIs */
		}
		return /(?:^|^\/\*.*\*\/|;)\s*$/.test( field.val() );
	}

	function onKeyUp() {
		if ( !isSummaryEmpty() ) {
			clearEmptySummaryWarning();
		}
	}

	function clearEmptySummaryWarning() {
		field.removeClass( 'mw-summary-empty' );
		// Stop executing the keyup event handler.
		field.unbind( 'keyup', onKeyUp );
	}

	button.click( function ( e ) {
		/* Ignore triggered fake events */
		if ( !e.originalEvent ) {
			return true;
		}

		if ( isSummaryEmpty() && !isRedirect() && !field.hasClass( 'mw-summary-empty' ) ) {
			field.addClass( 'mw-summary-empty' );
			field.focus();
			var d = field.get( 0 ),
				v = field.val();
			// Setting the value does not move the cursor in all browsers.
			if ( d.setSelectionRange ) {
				d.setSelectionRange( v.length, v.length );
			} else {
				field.val( v );
			}
			field.keyup( onKeyUp );
			return false;
		}

		clearEmptySummaryWarning();
		return true;
	} );

	mw.loader.using( [ 'mediawiki.util' ], function () {
		mw.util.addCSS( 'input#wpSummary.mw-summary-empty, input#wpSummary.mw-summary-empty:focus'
			+ '{ background-color: #FDD; border-color: #C00; box-shadow: 0 0 1em #F00; }' );
	} );
} );