Користувач:Andriy.v/Gadget-MassRevDelete.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
if (window.MassRevDelete === undefined) {
	window.MassRevDelete = {
		install: function () {
			var mrd = this;
			$("#firstHeading").append('<span style="margin-left:20px; font-size:20px">[<span id="mrd-link" style="color:#0645ad; cursor:pointer;">Масове приховування</span>]</span>');
			$("#mrd-link").click(function () {
				mrd.interface();
			});
		},
		interface: function () {
			var mrd = this;
			$('.mw-contributions-list').prepend('<div class="mw-checkbox-toggle-controls">Виберіть: <a class="mw-checkbox-all" role="button" tabindex="0">все</a>, <a class="mw-checkbox-none" role="button" tabindex="0">нічого</a>, <a class="mw-checkbox-invert" role="button" tabindex="0">інвертувати</a> Причина:<select id="RevDeleteReason"><optgroup label="Типові причини вилучення"><option value="[[ВП:АП|Порушення авторських прав]]">[[ВП:АП|Порушення авторських прав]]</option><option value="[[ВП:БЛОК|Недоречна особиста інформація]]">[[ВП:БЛОК|Недоречна особиста інформація]]</option><option value="Непристойний вміст">Непристойний вміст</option><option value="Грубе порушення [[ВП:НО]]">Грубе порушення [[ВП:НО]]</option><option value="[[ВП:СПАМ|Спам/реклама]]">[[ВП:СПАМ|Спам/реклама]]</option><option value="Помилкова дія">Помилкова дія</option><option value="Застаріла [[ВП:КДВ|невільна версія файлу]]">Застаріла [[ВП:КДВ|невільна версія файлу]]</option></optgroup></select><button id="submit-button" type="submit" style="align:right">Затвердити</button></div>');
			$('[data-mw-revid]').append('<div class="hide-cb" style="text-align:right; display:none;">Приховати: <input class="text-checkbox" type="checkbox">текст</input><input class="com-checkbox" type="checkbox">коментар</input><input class="name-checkbox" type="checkbox">ім\'я</input></div>');
			if ($('.mw-contributions-blocked-notice').html() != undefined || $('.mw-contributions-blocked-notice-partial').html() != undefined)
				for (i=1; $('.mw-revdelundel-link').eq(i).html() != undefined; i++)
					$('.mw-revdelundel-link').eq(i).html('<input class="rev-checkboxes" type="checkbox" >');
			else
				$('.mw-revdelundel-link').html('<input class="rev-checkboxes" type="checkbox" >');
			$("a.mw-checkbox-all").click(function(){
				$('.rev-checkboxes').prop('checked', true);
				$('.hide-cb').show();
			});
			$("a.mw-checkbox-none").click(function(){
				$('.rev-checkboxes').prop('checked', false);
				$('.hide-cb').hide();
			});
			$("a.mw-checkbox-invert").click(function(){
				$('.rev-checkboxes').prop('checked', function(i, val) {
					$('.hide-cb').toggle();
					return !val;
				});
			});
			$('.rev-checkboxes').change(function(){
				for (i=0;$('.rev-checkboxes').eq(i).html() != undefined;i++) {
					if($('.rev-checkboxes').eq(i).is(':checked'))
						$('.hide-cb').eq(i).show();
					else
						$('.hide-cb').eq(i).hide();
					}
				});
			$('#submit-button').click(function() {
				mrd.getrevtohide();
			});
		},
		getrevtohide: function () {
			var mrd = this;
			var pages = [];
			var ids = [];
			var nhide = [];
			var hide = [];
			for (i=0; $('.mw-revdelundel-link').eq(i).html() !== undefined; i++) {
				if ($('.rev-checkboxes').eq(i).is(':checked')) {
					pages.push($('a.mw-contributions-title').eq(i).text());
					if ($('.mw-contributions-blocked-notice').html() != undefined || $('.mw-contributions-blocked-notice-partial').html() != undefined)
						ids.push($('li').eq(i+1).attr('data-mw-revid'));
					else
						ids.push($('li').eq(i).attr('data-mw-revid'));
					if($('.text-checkbox').eq(i).is(':checked'))
						hide.push("content");
					if($('.com-checkbox').eq(i).is(':checked'))
						hide.push("comment");
					if($('.name-checkbox').eq(i).is(':checked'))
						hide.push("user");
					if (hide.length == 0) {
						alert('Ви не вказали ціль приховування принаймні в одній версії');
						return;
					}
					hide = hide.join("|");
					nhide.push(hide);
					hide = [];
					}
				}
			var redpages = pages;
			var rednhide = nhide;
			for (var i in pages) {
				for (var j in pages) { 
					if (pages[i] == pages[j] && j != i && nhide[i] == nhide[j]) {
						ids[i] = ids[i] + "|" + ids[j];
						ids.splice(j,1);
						redpages.splice(j,1);
						rednhide.splice(j,1);
						j--;
					}
				}
			}
			console.log(redpages);
			console.log(ids);
			console.log(rednhide);
			var reason = document.querySelector('#RevDeleteReason').value;
			//var reason = "Тест";
			for (i in pages)
				mrd.revisiondelete(pages[i], ids[i], nhide[i], reason);
			setTimeout(function(){
				location.reload(); },1000
			);
		},
		revisiondelete: function(page, ids, select, summary) {
			var params = {
				action: 'revisiondelete',
				type: 'revision',
				target: page,
				ids: ids,
				format: 'json',
				hide: select,
				reason: summary,
			},
			api = new mw.Api();
			api.postWithToken( 'csrf', params ).done().fail(function (error) {
				alert(error);
			});
		}
	};
}
if (mw.config.get('wgCanonicalSpecialPageName') === "Contributions" && $.inArray(mw.config.get('wgUserGroups'), ["sysop"]) && $('#mrd-link').text() == "") {
	MassRevDelete.install();
}