Minecraft Wiki Polska
Advertisement

Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.

  • Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
  • Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
  • Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
  • Opera: Naciśnij klawisze Ctrl+F5.
/* Night mode for Minecraft wiki by violine1101, 2017 */
var i18n = {
	activate: 'Aktivieren',
	activateTitle: 'Nachtmodus aktivieren',
	activatedLabel: 'Nachtmodus aktiviert',
	deactivate: 'Deaktivieren',
	deactivateTitle: 'Nachtmodus deaktivieren',
	deactivatedLabel: 'Nachtmodus deaktiviert',
	settings: 'Einstellungen',
	settingsTitle: 'Nachtmodus-Einstellungen ändern',
	settingsDialogTitle: 'Nachtmodus-Einstellungen',
	settingsEnabled: 'Nachtmodus aktiviert',
	settingsEnableAuto: 'Automatische zeitbedingte Aktivierung',
	settingsTime1: 'Nachtmodus automatisch zwischen',
	settingsTime2: 'und',
	settingsTime3: 'Uhr aktivieren',
	settingsInfo: 'Die Einstellungen werden nur auf diesem Gerät und in diesem Browser gespeichert.',
	settingsSave: 'Speichern',
	settingsCancel: 'Abbrechen'
};

var windowManager = new OO.ui.WindowManager();

function getCookieValue(a) {
	var b = document.cookie.match('(^|;)\\s*' + a + '\\s*=\\s*([^;]+)');
	return b ? b.pop() : '';
}

function loadSettings() {
	var cookie = document.cookie.match('(^|;)\\s*nightmode\\s*=\\s*([^;]+)');
	s = cookie ? JSON.parse( cookie.pop() ) : {
		enabled: false,
		auto: false,
		time: [ 0, 12 ]
	};
	if ( s.enabled == null ) s.enabled = false;
	if ( s.auto == null ) s.auto = false;
	if ( s.time == null ) s.time = [ 0, 12 ];
	
	if ( s.auto ) {
		var d = new Date();
		var n = d.getHours() * 2 + Math.floor( d.getMinutes() / 30 );
		
		if ( 
			( s.time[0] <= s.time[1] && n >= s.time[0] && n < s.time[1] )
			|| ( s.time[0] > s.time[1] && ( n >= s.time[0] || n < s.time[1] ) )
		) s.enabled = true;
		else s.enabled = false;
		
		document.cookie = 'nightmode=' + JSON.stringify( s ) + ';path=/';
	}
	return s;
}

var settings = loadSettings();

function NightmodeSettings( config ) {
	NightmodeSettings.super.call( this, config );
	var enabledOption;
	var autoOption;
	var beginSelect;
	var endSelect;
}
OO.inheritClass( NightmodeSettings, OO.ui.ProcessDialog ); 

NightmodeSettings.static.name = 'nightmode-settings';
NightmodeSettings.static.title = i18n.settingsTitle;
NightmodeSettings.static.actions = [
	{ action: 'save', label: i18n.settingsSave, flags: [ 'primary', 'constructive' ] },
	{ label: i18n.settingsCancel, flags: [ 'safe', 'destructive' ] }
];

function makeItems() {
	var arr = [];
	for ( var i = 0; i < 48; i++ ) arr[i] = Math.floor( i / 2 ) + ':' + ( i % 2 == 0 ? '00' : '30' );
	
	return arr.map( function ( val, i ) {
		return new OO.ui.MenuOptionWidget( {
			data: i,
			label: val
		} );
	} );
}

NightmodeSettings.prototype.initialize = function () {
	NightmodeSettings.super.prototype.initialize.apply( this, arguments );
	
	var dialog = this;
	
	this.enabledOption = new OO.ui.ToggleSwitchWidget( {
		value: settings.enabled,
		label: i18n.settingsEnabled
	} );

	this.autoOption = new OO.ui.ToggleSwitchWidget( {
		value: settings.auto,
		label: i18n.settingsEnabled
	} ).on( 'change', function( v ) {
		dialog.beginSelect.setDisabled( !v );
		dialog.endSelect.setDisabled( !v );
	} );
	
	this.beginSelect = new OO.ui.DropdownWidget( {
		menu: {
			items: makeItems()
		},
		$overlay: this.$overlay
	} );
	this.beginSelect.setDisabled( !this.autoOption.getValue() );
	this.beginSelect.$element.css( { 'width': '15%', 'min-width': '80px', 'vertical-align': 'middle' } );
	this.beginSelect.getMenu().selectItemByData( settings.time[0] );
	this.beginSelect.getMenu().$element.css( { 'z-index': 10 } );

	this.endSelect = new OO.ui.DropdownWidget( {
		menu: {
			items: makeItems()
		},
		$overlay: this.$overlay
	} );
	this.endSelect.getMenu().$element.css( { 'z-index': 10 } );
	this.endSelect.$element.css( { 'width': '15%', 'min-width': '80px', 'vertical-align': 'middle' } );
	this.endSelect.getMenu().selectItemByData( settings.time[1] );
	this.endSelect.setDisabled( !this.autoOption.getValue() );

	var infoLayout = new OO.ui.PanelLayout( {
		expanded: false,
		padded: true
	} );
	infoLayout.$element.append(
		new OO.ui.IconWidget( {
			icon: 'info'
		} ).$element,
		new OO.ui.LabelWidget( { label: $( '<i>' ).html( i18n.settingsInfo ) } ).$element
	);
	
	var fieldset = new OO.ui.FieldsetLayout();
	fieldset.addItems( [ 
		new OO.ui.FieldLayout( this.enabledOption, {
			label: i18n.settingsEnabled,
			align: 'inline'
		} ),
		new OO.ui.FieldLayout( this.autoOption, {
			label: i18n.settingsEnableAuto,
			align: 'inline'
		} ),
		new OO.ui.HorizontalLayout( {
			items: [
				new OO.ui.LabelWidget( { label: i18n.settingsTime1 } ),
				this.beginSelect,
				new OO.ui.LabelWidget( { label: i18n.settingsTime2 } ),
				this.endSelect,
				new OO.ui.LabelWidget( { label: i18n.settingsTime3 } )
			]
		} ),
		infoLayout
	] );
	
	this.content = new OO.ui.PanelLayout( {
		scrollable: false,
		padded: true
	} );
	this.content.$element.append(
		fieldset.$element
	);
	
	this.$body.append( this.content.$element );
};

NightmodeSettings.prototype.getActionProcess = function ( action ) {
	var dialog = this;
	if ( action ) {
		settings = {
			enabled: this.enabledOption.getValue(),
			auto: this.autoOption.getValue(),
			time: [ this.beginSelect.getMenu().getSelectedItem().getData(), this.endSelect.getMenu().getSelectedItem().getData() ]
		};
		document.cookie = 'nightmode=' + JSON.stringify( settings ) + ';path=/';
		updateNightmode();
		return new OO.ui.Process( function () {
			dialog.close( { action: action } );
		} );
	}
	return NightmodeSettings.super.prototype.getActionProcess.call( this, action );
};

var nightmodeSettings = new NightmodeSettings( {
	size: 'large'
} );

function updateNightmode() {
	$( 'body' ).toggleClass( 'nightmode', settings.enabled );
	if ( settings.enabled ) {
		$( '#p-nightmode-label' ).html( i18n.activatedLabel );
		$( '.nightmode-toggle a' ).attr( 'title', i18n.deactivateTitle ).html( i18n.deactivate );
	}
	else {
		$( '#p-nightmode-label' ).html( i18n.deactivatedLabel );
		$( '.nightmode-toggle a' ).attr( 'title', i18n.activateTitle ).html( i18n.activate );
	}
}

windowManager.addWindows( [ nightmodeSettings ] );
$( 'body' ).append( windowManager.$element );

if ( settings.enabled ) $( 'body' ).addClass( 'nightmode' );

var portals = $( '.portal:not(#p-socialProfiles):not(#p-sitePromos)' );

$( portals[portals.length - 1] ).after(
	$( '<div>', { 'class': 'portal persistent', 'id': 'p-nightmode' } ).append(
		$( '<h3>', { 'id': 'p-nightmode-label' } ).html( settings.enabled ? i18n.activatedLabel : i18n.deactivatedLabel ),
		$( '<div>', { 'class': 'body' } ).append(
			$( '<ul>', { 'id': 'p-nightmode-list' } ).append(
				$( '<li>', { 'class': 'nightmode-toggle' } ).append(
					$( '<a>',
						{
							'title': ( settings.enabled ? i18n.deactivateTitle : i18n.activateTitle),
							'href': ''
						} )
					.html( settings.enabled ? i18n.deactivate : i18n.activate )
					.click( function( e ) {
						e.preventDefault();
						settings.enabled = !settings.enabled;
						document.cookie = 'nightmode=' + JSON.stringify( settings ) + ';path=/';
						updateNightmode();
					} )
				),
				$( '<li>', { 'class': 'nightmode-settings' } ).append(
					$( '<a>', { 'title': i18n.settingsTitle, 'href': '' } ).html( i18n.settings ).click( function( e ) {
						e.preventDefault();
						
						settings = loadSettings();
						windowManager.openWindow( nightmodeSettings );
					} )
				)
			)
		)
	)
);
Advertisement