Участник:Dibot/pat.js

Материал из Википедии — свободной энциклопедии
<
Участник:Dibot
// Скрипт для показа младших флагов с миграцией на гаджет
// Аналогично [[user:Dima st bk/otkat.js]]
( function() {
	if ( mw.config.get( 'wgUserName' ) === null ) {
		return;
	}
	
	const optionName = 'gadget-markothers';
	const notifOptions = {
		type: 'warn',
		autoHide: false,
	};
	if ( mw.user.options.get( optionName ) == 1 ) {
		mw.notify( $( '<span>Пожалуйста, удалите скрипт pat.js <a href="/wiki/Special:Preferences#mw-prefsection-rendering">из своих личных скриптов (например, common.js)</a>.</span>' ), notifOptions );
		return;
	}
	
	// из https://github.com/jwbth/convenient-discussions/blob/406e50b5f40700642457b1871efe7d735954df42/src/js/BootProcess.js#L651
	const $message = $( '<span><a data-enable href>Нажмите, чтобы включить <b>гаджет показа малых флагов</b></a> вместо скрипта pat.js, чтобы показ малых флагов работал быстрее. Удалите после этого pat.js <a href="/wiki/Special:Preferences#mw-prefsection-rendering">из своих личных скриптов (например, common.js)</a>.</span>' );
	$message.find( 'a[data-enable]' ).on('click', ( e ) => {
		e.preventDefault();
		mw.loader.using( 'mediawiki.api', function() {
			new mw.Api().saveOption( optionName, 1 ).then(
				() => {
					mw.notify( 'Успех', { type: 'success' } );
				},
				() => {
					mw.notify( 'Ошибка', { type: 'error' } );
				}
			);
		} );
	});
	mw.notify( $message, notifOptions );

	mw.loader.using( [ 'ext.gadget.markadmins', 'ext.gadget.markothers' ], function() {
		mw.log.warn( 'pat.js (отметка малых флагов): пожалуйста, замените скрипт на гаджет — см. [[Википедия:Гаджеты/Флаги участников]] или настройки → Гаджеты → Участники.' );
	} );
}() );