MediaWiki:ManageBookCover.js

Матеріал з Вікіджерел

Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.

  • Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
  • Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
  • Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
  • Opera: натисніть Ctrl-F5
$(function () {
	var ns = mw.config.get( 'wgNamespaceNumber' );
	if( ns !== 0 ) return;

	var action = mw.config.get( 'wgAction' );
	if ( action !== 'view' ) return;

	var obj_div = document.getElementById('ukws-book-cover');
	if(obj_div == null) return;
	
	var textHTML = obj_div.innerHTML;

	var storageKey = 'managebookcoverstate';

	function getSelectedState() {
		var state;
		state = mw.storage.get( storageKey ) || mw.storage.session.get( storageKey );
		return state;
    }
    
   	function saveSelectedState( state ) {
		var result = mw.storage.set( storageKey, state ) || mw.storage.session.set( storageKey, state );
	}

	var choice_state = getSelectedState();

	var message = [
		"Обкладинку показати",
		"Обкладинку приховати"
	];

	if (choice_state == null) {
		choice_state = 1;
		saveSelectedState( choice_state );
	}

	var portletLink = mw.util.addPortletLink(
		"p-do",
		"#",
		message[choice_state],
		"d-manage_book_cover",
		"Приховати/показати обкладинку книги"
	);
	
	$( portletLink ).on( "click", function ( e ) {
		e.preventDefault();
		toggle();
	} );

	change_html();

	function toggle () {
		choice_state = 1 - choice_state;
		saveSelectedState( choice_state );
		change_html();
	}
	
	function change_html () {
		if (choice_state == 0) {
			obj_div.innerHTML = "";
			obj_div.style.visibility = "hidden";
		}
		else {
			obj_div.innerHTML = textHTML;
			obj_div.style.visibility = "visible";
		}
		$( "#d-manage_book_cover" ).children( "a" ).html( message[choice_state] );
	}

});