Користувач:Avatar6/MediaWiki:Gadget-SpeedyDeletion.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
/* 
 * Скрипт для швидкої номінації статтей на швидке вилучення
 * Ліцензія: GNU GPL
 * Версія: 2.0 06.06.2015
 * Автор першої версії: анонімний розробник, зв'язок — xzs.jx@yandex.ru
 * Адаптовано з РуВікі у версії 68977088 (v.1.9 02.03.2013)
 * Практично повністю переписано 06.06.2015
 * Модифіковано користувачем Andriy.v 
*/

//<nowiki>
if ( typeof( window.SpeedyDeletion ) == 'undefined' ) {
	window.SpeedyDeletion  = {
		reasons: [ 
			{ tmpl: 'catempty', reason: 'Порожня категорія' },
			{ tmpl: 'test', reason: 'Незв\'язний вміст / Тест' },
			{ tmpl: 'vand', reason: 'Вандалізм' },
			{ tmpl: 'repost', reason: 'Ідентична копія раніше вилученої сторінки' },
			{ tmpl: 'author', reason: 'За запитом єдиного автора' },
			{ tmpl: 'misuse', reason: 'Нецільове використання сторінки' },
			{ tmpl: 'empty', reason: 'Порожня або дуже коротка стаття' },
			{ tmpl: 'lang', reason: 'Неукраїномовна стаття або машинний переклад' },
			{ tmpl: 'na', reason: 'Стаття, що складається з одних внутрішніх чи зовнішніх посилань' },
			{ tmpl: 'nn', reason: 'Стаття про безсумнівно незначимі речі' },
			{ tmpl: 'duplicate', reason: 'Дублікат уже існуючої статті' },
			{ tmpl: 'spam', reason: 'Явний спам' },
			{ tmpl: 'redirtypo', reason: 'Перенаправлення з грубою помилкою' },
			{ tmpl: 'wrr', reason: 'Некоректне перенаправлення' },
			{ tmpl: 'redirtalk', reason: 'Перенаправлення між сторінками обговорення' },
			{ tmpl: 'u1', reason: 'Сторінка користувача або в особистому просторі за запитом її власника' },
			{ tmpl: 'move', reason: 'Для звільнення шляху перейменування сторінки' },
			{ tmpl: '', reason: 'Інша причина' }
		],
		
		
		install: function () {
			var sd = this;
			this.title = "Швидке вилучення";
			if( $( '#SD-dialog' ).length === 0 ) {
				 $( "#mw-content-text" ).append('<div id="SD-dialog" style="display:none;" title="' + this.title + '">Критерії швидкого вилучення<br/><form id="SD-radiobox"></form></div>');
				 $.each(this.reasons, function() {
					if(this.tmpl === 'duplicate') {
						$('#SD-radiobox').append('<input type="radio" name="SD-radio" id="sd-duplicate">' + this.reason + '<br/>');
						$('#SD-radiobox').append('<input id="SD-duplicate" style="display:none; width:100%"><br/>');
						} else if(this.tmpl === 'move') {
							$('#SD-radiobox').append('<input type="radio" name="SD-radio" id="sd-move">' + this.reason + '<br/>');
							$('#SD-radiobox').append('<input id="SD-move" style="display:none; width:100%"><br/>');
							} else if(this.tmpl === '') {
								$('#SD-radiobox').append('<input type="radio" name="SD-radio" id="sd-other">' + this.reason + '<br/>');
								$('#SD-radiobox').append('<input id="SD-othreason" style="display:none; width:100%"><br/>');
								} else {
								$('#SD-radiobox').append('<input type="radio" name="SD-radio" id="' + this.tmpl + '">' + this.reason + '<br/>');
								}
				 });
				$('#SD-radiobox').append('<input type="checkbox" id="SpeedyDeletion-forcewrap" checked/>Помістити шаблон швидкого вилучення в тег &lt;noinclude&gt;<br/>');
				$('#SD-dialog input:radio').change(function(){
					if($(this).attr('id') == 'sd-other'){
						$('#SD-othreason').show(500);
					} else if($(this).attr('id') == 'sd-duplicate'){
							$('#SD-duplicate').show(500);
					} else if($(this).attr('id') == 'sd-move'){
							$('#SD-move').show(500);		
						} else {
							$('#SD-duplicate').hide(500);						
							$('#SD-othreason').hide(500);
							$('#SD-move').hide(500);
						}
				});
			}
			mw.loader.using( 'jquery.ui', function() {
				$( '#SD-dialog' ).dialog({
					width: 400,
					buttons: {
						'Надіслати' : function() {
							sd.check();
						},
					}
				});
			});
			
		},
		
		check: function() {
			if($.inArray('Статті до швидкого вилучення', mw.config.get('wgCategories')) >= 0) {
				alert('Сторінка вже номінована на швидке вилучення.');
				return;
			}			
			if(!$('#SD-dialog input:checked')) {
				alert('Оберіть причину!');
				return;
			} else {
				if($('#SD-dialog input:checked').attr('id') == 'sd-other' && this.isEmpty($('#SD-othreason').val())) {
					alert('Введіть причину!');
					$('#SD-othreason').focus();
					return;
					} else if ($('#SD-dialog input:checked').attr('id') == 'sd-duplicate' && this.isEmpty($('#SD-duplicate').val())) {
						alert('Введіть назву сторінки!');
						$('#SD-duplicate').focus();	
						return;
						} else if($('#SD-dialog input:checked').attr('id') == 'sd-duplicate') {
							this.prep = "{{db-duplicate|" + $('#SD-duplicate').val() + "}}";
							} else if ($('#SD-dialog input:checked').attr('id') == 'sd-move' && this.isEmpty($('#SD-move').val())) {
								alert('Введіть назву сторінки!');
								$('#SD-move').focus();	
								return;
								} else if($('#SD-dialog input:checked').attr('id') == 'sd-move') {
									this.prep = "{{db-move|" + $('#SD-move').val() + "}}";
									} else if($('#SD-dialog input:checked').attr('id') == 'sd-other') {
										this.prep = "{{db|" + $('#SD-othreason').val() + "}}";
										} else {
											this.prep = "{{db-" + $('#SD-dialog input:checked').attr('id') + "}}";
									}
				this.execute();
			}
		},
		
		execute: function() {
			var tpl = this.prep, sd = this, par;
			if($('#SpeedyDeletion-forcewrap').prop( "checked" )) {
				this.prep = '<noinclude>' + this.prep + '</noinclude>';
			}
			this.wait("Додавання шаблону на сторінку");
			par = mw.config.get( 'wgIsRedirect' ) ? 'appendtext' : 'prependtext';
			this.writeInPage( mw.config.get( 'wgPageName' ), this.prep + "\n", "Номінація на швидке вилучення (" + tpl + ") за допомогою [[MediaWiki:Gadget-SpeedyDeletion.js]]", par, null, function () {
				sd.wait("Перезавантаження сторінки");
				setTimeout(function(){
					$( '#SD-dialog' ).dialog('close');
					location.reload(); 	},1000);
			});
		},
		
		wait: function(mes) {
			$('#SD-dialog').dialog("close");
			$('#SD-dialog').prop('title', 'Зачекайте, будь ласка...');
			if($('#SD-dialog').length !== 0) {
				$('#SD-dialog').html('<p style="font-size: 120%; font-weight:bold;">' + mes + '</p>');
			} else {
				$( "#mw-content-text" ).append('<div id="SD-dialog" style="display:none;"><p style="font-size: 120%; font-weight:bold;">' + mes + '</p></div>');
			}
			$('#SD-dialog').dialog({
				modal: true,
				buttons: false,
				close: function(event, ui)
			        {
						$(this).dialog('destroy').remove();
			        }
			});
		},
		
		writeInPage: function ( title, content, summary, option, section, success ) {
			var param = {
				action: 'edit',
				title: title, 
				summary: summary, 
				watchlist: 'watch',
				token: mw.user.tokens.get('csrfToken'),
				format: 'json'
			};
			param[option || 'text'] = content;
			if (section || section === 0) 
				param.section = section;
			$.post(mw.util.wikiScript('api'), param, function() {
				if (typeof(success) === 'function')
					success();
			});
		},
		
		isEmpty: function( str ) {
			return (!/\S/.test(str));
		},
	};
}

// Якщо ми не на службовій сторінці, не на сторінці файлів, а на існуючій сторінці, яку можна редагувати, додає вкладку
$(document).ready(function () {
	if( mw.config.get('wgCanonicalNamespace') != 'Special' && mw.config.get('wgCanonicalNamespace') !== 'File' && mw.config.get('wgCanonicalNamespace') !== 'MediaWiki' && $("#ca-viewsource").length === 0 && mw.config.get('wgArticleId') ) {
		mw.util.addPortletLink("p-cactions", "javascript:SpeedyDeletion.install()", "ШВ", "ca-contrib", "Номінувати на швидке вилучення");
	}
});
//</nowiki>