Участник:Skmp/userwarner personal.js

Материал из Википедии — свободной энциклопедии
/*
	Для отключения перехода к странице обсуждения участника, добавьте следующую
	строчку в ваш common.js, после строки импорта этого крипта:
	
	userwarner_noredirect = true;
*/

function userwarner_waiting_html(text) {
	return `<div style="align-items: center;position: fixed;\
display: flex;justify-content: center;top: 50%;left: 50%;width: 300px;\
height: 80px;margin: -40px 0 0 -150px;\
background-color: #ffe8bf;font-size: 14px;font-style: italic;\
border-radius: 5px;z-index: 10000000;" id="userwarner-waiting-box">${ text }\
</div>`;
}

function userwarner_report_warn_text(username) {
	return `<onlyinclude>
{{ЗКА:Быстрый запрос|
<!-- Не редактируйте строку ниже, если не являетесь администратором -->
| статус =
<!-- Формат при редактировании этого поля:
   • u/Jimmy Wales — участник или IP-адрес;
   • название страницы — без префикса.
-->
| вопрос = u/${ username }
<!-- Дополнительные действия для выполнения запроса, пояснения администраторам и т. п. -->
| пояснение = Вандализм <small>([[У:Skmp/userwarner.js|UW]])</small>
<!-- Не редактируйте строку ниже -->
| автор = {{под` + `ст:зкаб|}}
<!-- Администраторам: вставьте {{подст:зкаб|}} -->
| администратор =
}}
</onlyinclude>`
}

var userwarner_bel_warn = `Здравствуйте! Пожалуйста, не заменяйте название государства «Белоруссия» → «Беларусь», так как в Википедии принято использовать первый вариант. Подробнее об этом Вы можете прочитать на странице '''[[Википедия:Список рекомендованных вариантов написания#Государства]]'''. По этой причине Ваши правки будут отменены.
: Подробнее о работе и правилах в Википедии Вы можете посмотреть здесь:
* [[Википедия:Первые шаги]]
* [[Википедия:Пять столпов]]
* [[Википедия:Список рекомендованных вариантов написания]]`

$(function () {
	if(mw.config.get('wgCanonicalSpecialPageName') === 'Contributions' || mw.config.get('wgNamespaceNumber') === 3) {
		mw.loader.using('mediawiki.util').done( function () {
			// Украл из Участник:Higimo/remove.js :)
			var menu = 'bel=Не Беларусь|biog1=Без АИ в СОВР|v1=Ванд ПДН|v2=Ванд|v3=Ванд Последнее|v4im=Ванд Первое и последнее|report=На ЗКАБ|'.replace(/(.*?)=(.*?)\|/g, `<li><a id="uw-link-$1" href="javascript:userwarner_send('$1')">$2</a></li>`);
			
			$('#p-search').before('<div class="vectorMenu"><h3><span>UW</span></h3><ul class="menu">' + menu + '</ul></div>');
			$('#uw-link-report').css("color", "#ad0606");
		});
	}
});

function userwarner_send(type) {
	$.getJSON(mw.config.get('wgScriptPath') + '/api.php?action=tokens&format=json', function (resp) {
		var user_talk_addr = '';
		var username = '';
		
		var report_page_addr = 'Википедия:Запросы_к_администраторам/Быстрые';
		
		var currently_in_talk = false;
		
		if(mw.config.get('wgCanonicalSpecialPageName') === 'Contributions') {
			username = mw.config.get('wgPageName').split('/', 2)[1];
			user_talk_addr = 'Обсуждение_участника:' + username;
		} else if(mw.config.get('wgNamespaceNumber') === 3) {
			user_talk_addr = mw.config.get('wgPageName');
			username = user_talk_addr.split(":", 2)[1];

			currently_in_talk = true;
		}
		
		//const user_talk_addr = 'Участник:Sk4mp/Песочница/2';
		
		var warn_sectionname = '';
		var warn_message = '';
		var warn_summary = '';
		
		switch(type) {
			case "bel": 
				warn_sectionname = '«Белоруссия» → «Беларусь»';
				
				warn_message = userwarner_bel_warn;
				warn_summary = 'Не Беларусь';

				break;
			case "biog1": 
				warn_sectionname = 'Предупреждение от {' + '{подст:сегодня}' + '}: биографии современников';
				
				warn_message = '{{uw-biog1}}';
				warn_summary = 'Биографии современников';

				break;
			case "v1": 
				warn_sectionname = 'Сообщение от {' + '{подст:сегодня}' + '}';

				warn_message = '{{uw-vandalism1}}';
				warn_summary = 'Вандализм (мягкое)';

				break;
			case "v2": 
				warn_sectionname = 'Предупреждение от {' + '{подст:сегодня}' + '}: вандализм';
				warn_message = '{{uw-vandalism2}}';
				warn_summary = 'Вандализм';

				break;
			case "v3": 
				warn_sectionname = 'Предупреждение от {' + '{подст:сегодня}' + '}: вандализм';

				warn_message = '{{uw-vandalism3}}';
				warn_summary = 'Вандализм (последнее)';

				break;
			case "v4im": 
				warn_sectionname = 'Предупреждение от {' + '{подст:сегодня}' + '}: вандализм';

				warn_message = '{{uw-vandalism4im}}';
				warn_summary = 'Вандализм (первое и последнее)';

				break;
		}

		var post_options = {};

		if(type === "report") {
			$("body").append(userwarner_waiting_html("Записываем запрос на ЗКАБ..."));
			post_options = {
		    	action: 'edit',
		    	title: report_page_addr,
		    	token: resp.tokens.edittoken,
		    	summary: 'Новый запрос: ' + username + ' ([[У:Sk4mp/userwarner.js|UW]])',
		    	section: 'new',
		    	sectiontitle: "u/{{под" + "ст:зкаб|" + username + "}}",
		    	appendtext: userwarner_report_warn_text(username)
		    }
		} else {
			$("body").append(userwarner_waiting_html("Записываем предупреждение..."));
			post_options = {
		    	action: 'edit',
		    	title: user_talk_addr,
		    	token: resp.tokens.edittoken,
		    	summary: 'Предупреждение участника с помощью [[У:Sk4mp/userwarner.js|UW]] — ' + warn_summary,
		    	section: 'new',
		    	sectiontitle: warn_sectionname,
		    	appendtext: warn_message + ' ~~' + '~~'
		    }
		}

		$.post(mw.config.get('wgScriptPath') + '/api.php', post_options, function() {
	    	if(currently_in_talk) {
	    		if(type !== "report") window.location = mw.config.get('wgServer') + '/wiki/' + user_talk_addr;
	    	} else if(userwarner_noredirect) {
	    		$("#userwarner-waiting-box").text("Готово!");
	    		$("#userwarner-waiting-box").css("background-color", "#caffbf");

				setTimeout(function () { $("#userwarner-waiting-box").remove(); }, 1000);
	    	} else {
	    		if(type !== "report") window.location = mw.config.get('wgServer') + '/wiki/' + user_talk_addr;
	    	}
	    });
	});
}