Benutzer:TMg/userHighlight.js

aus Wikipedia, der freien Enzyklopädie

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() {
	var list = window.userHighlightList
			? window.userHighlightList
			: mw.config.get( 'wgFormattedNamespaces' )[2] + ':' + mw.config.get( 'wgUserName' ),
		useRaw = list.indexOf( '|' ) === -1;
	if ( !/^((https?)?:\/)?\//.test( list ) ) {
		list = useRaw
			? '/w/index.php?title=' + list + '&action=raw'
			: '/w/api.php?action=query&prop=revisions&format=json&formatversion=2&rvprop=content&titles=' + list;
	}

	$.ajax( list, {
		dataType: 'html',
		error: function( o, s, e ) {
			alert( 'Fehler beim Laden von ' + list + ' (' + e + ').' );
		},
		success: function( result, s, o ) {
			var pages = useRaw
					? [ { revisions: [ { content: result } ] } ]
					: JSON.parse( result ).query.pages,
				regex = /\[\[:?((?:[^:#|"\u200E\]]+:)?)([^|"\u200E\]]+)/g,
				css = '',
				i,
				m;

			for ( var page in pages ) {
				// Transparente Farbe für moderne Browser, solide für ältere.
				var style = window.userHighlightStyle
					? window.userHighlightStyle
					: 'background: #CCE0FF; background-color: rgba(0, 102, 255, .2); border-radius: 2px;';

				var data = pages[page].revisions[0].content.split( /\{\{\s*(?:Farb)?legende?\s*\|\s*([#\w(, .%)]+)/i );
				for ( i = 0; i < data.length; i += 2 ) {
					var color = data[i - 1];
					if ( color ) {
						if ( color === 'transparent' ) {
							continue;
						}
						style = 'background: ' + color + '; border-radius: 2px;';
					}
					var selector = '';
					while ( m = regex.exec( data[i] ) ) {
						selector += ',a[href="/wiki/'
							+ encodeURI( m[1] + m[2].charAt( 0 ).toUpperCase() + m[2].slice( 1 ) )
							+ '"]';
					}
					css += selector.slice( 1 ) + ' { ' + style + ' }';
				}
			}

			// Solide Farbe vom Begriffsklärungs-Check transparent machen, wenn möglich.
			mw.util.addCSS( css.replace( /%20/g, '_' ).replace( /\/WP:/gi, '\/Wikipedia:' ) +
				'.bkl-link { background-color: rgba(255, 0, 0, .43); }' );
		}
	} );
} );