Benutzer:P.Copp/scripts/wlchanges.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
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
if( wgCanonicalSpecialPageName == 'Watchlist' ) addOnloadHook( function() {
	var content = document.getElementById( 'bodyContent' )
		|| document.getElementById( 'mw_contentholder' ) || document.getElementById( 'article' );
	var uls = getElementsByClassName( content, 'ul', 'special' );

	var h4 = content.getElementsByTagName( 'h4' )[0];
	var showlink = document.createElement( 'a' );
	showlink.appendChild( document.createTextNode( 'Alle anzeigen' ) );
	showlink.href = '#';
	showlink.onclick = function() {
		for( var i = 0; i < uls.length; i++ ) {
			var lis = uls[i].getElementsByTagName( 'li' );
			for( var j = 0; j < lis.length; j++ ) lis[j].style.display = 'list-item';
		}
		document.cookie = 'wlchangesrevid=0; expires=Tue, 01 Jan 2030 00:00:00 GMT';
		showlink.style.display = 'none';
		hidelink.style.display = 'inline';
		return false;
	};
	showlink.style.display = 'none';
	showlink.style.marginLeft = '1em';
	h4.appendChild( showlink );
	var hidelink = showlink.cloneNode( false );
	hidelink.appendChild( document.createTextNode( 'Alle ausblenden' ) );
	hidelink.onclick = function() {
		var toprevid = getRevId(uls[0].getElementsByTagName('li')[0]);
		hideAllBefore(toprevid);
		document.cookie = 'wlchangesrevid='+toprevid+'; expires=Tue, 01 Jan 2030 00:00:00 GMT';
		return false;
	};
	h4.appendChild( hidelink );

	function getRevId( li ) {
		var links = li.getElementsByTagName( 'a' );
		for( var i = 0; i < links.length; i++ ) {
			var revid = links[i].href.match( /&diff=([^&]*)/ );
			if( revid ) return revid[1];
		}
	}
	function hideAllBefore( revid ) {
		var hide = false;
		hidelink.style.display = 'none';
		for( var i = 0; i < uls.length; i++ ) {
			var lis = uls[i].getElementsByTagName( 'li' );
			for( var j = 0; j < lis.length; j++ ) {
				if( !hide ) {
					var id = getRevId( lis[j] );
					if( id && id <= revid ) hide = true;
				}
				if( hide ) lis[j].style.display = 'none';
				else hidelink.style.display = 'inline';
			}
		}
		if( hide ) showlink.style.display = 'inline';
	}
	function createHideLink( revid ) {
		var span = document.createElement( 'span' );
		span.appendChild( document.createTextNode( '(' ) );
		var link = document.createElement( 'a' );
		link.appendChild( document.createTextNode( 'g' ) );
		link.title = 'Eintrag und alle früheren als gelesen markieren';
		link.href = '#';
		link.onclick = function() {
			hideAllBefore( revid );
			document.cookie = 'wlchangesrevid='+revid+'; expires=Tue, 01 Jan 2030 00:00:00 GMT';
			return false;
		};
		span.appendChild( link );
		span.appendChild( document.createTextNode( ')' ) );
		return span;
	}
	for( var i = 0; i < uls.length; i++ ) {
		var lis = uls[i].getElementsByTagName( 'li' );
		for( var j = 0; j < lis.length; j++ ) {
			var revid = getRevId( lis[j] );
			if( revid ) lis[j].insertBefore( createHideLink( revid ), lis[j].firstChild );
		}
	}
	var revid = document.cookie.match( /wlchangesrevid=([^;]*)/ );
	if( revid ) hideAllBefore( revid[1] );	
});