<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://www.posmotreli.su/index.php?action=history&amp;feed=atom&amp;title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%3A%D0%9B%D1%83%D1%84%D1%84%D0%B8%2Fimport.js</id>
	<title>Участник:Луффи/import.js - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://www.posmotreli.su/index.php?action=history&amp;feed=atom&amp;title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%3A%D0%9B%D1%83%D1%84%D1%84%D0%B8%2Fimport.js"/>
	<link rel="alternate" type="text/html" href="https://www.posmotreli.su/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9B%D1%83%D1%84%D1%84%D0%B8/import.js&amp;action=history"/>
	<updated>2026-09-11T20:32:07Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://www.posmotreli.su/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9B%D1%83%D1%84%D1%84%D0%B8/import.js&amp;diff=399589&amp;oldid=prev</id>
		<title>imported&gt;Луффи в 20:44, 2 июля 2023</title>
		<link rel="alternate" type="text/html" href="https://www.posmotreli.su/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9B%D1%83%D1%84%D1%84%D0%B8/import.js&amp;diff=399589&amp;oldid=prev"/>
		<updated>2023-07-02T20:44:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/*&lt;br /&gt;
	CC-BY-SA 4.0 Основано на u:higimo/remove.js?oldid=107716412 // v5.0.4&lt;br /&gt;
	Вынесение на КБУ (+ отсроченное), КУ (+ множественное, + оставлено), КУЛ, КПМ.&lt;br /&gt;
	Подключение (на своём /common.js):&lt;br /&gt;
	var g_user_alert = 0 // указать, чтоб не уведомлять автора&lt;br /&gt;
	importScript('у:Землеройкин/remove.js');&lt;br /&gt;
*/&lt;br /&gt;
$(document).ready(function() {&lt;br /&gt;
	var config = mw.config.get(['skin', 'wgNamespaceIds', 'wgFormattedNamespaces', 'wgNamespaceNumber', 'wgPageName', 'wgPageContentModel', 'wgIsRedirect', 'wgUserName']),&lt;br /&gt;
		/*&lt;br /&gt;
			Пространства имён, в которых будет включён удалятор&lt;br /&gt;
		*/&lt;br /&gt;
		rmNamespaces = (typeof g_rm_namespaces == 'undefined') ? [0, 2, 4, 6, 10, 14, 100, 104, 828] : g_rm_namespaces,&lt;br /&gt;
		/*&lt;br /&gt;
			Все кнопки меню&lt;br /&gt;
		*/&lt;br /&gt;
		menu_raw = {imp:'КУЛ', rnm:'КПМ', tRm:'КУ', mRm:'Много КУ', fRm:'КБУ', merge:'КОБ', split:'КРАЗД', recov:'ВУС', ret:'Оставить', noRnm:'Не переименовано'},&lt;br /&gt;
		/*&lt;br /&gt;
			Доступные кнопки&lt;br /&gt;
		*/&lt;br /&gt;
		rmActions = (typeof g_rm_actions == 'undefined') ? Object.keys(menu_raw) : g_rm_actions,&lt;br /&gt;
		/*&lt;br /&gt;
			Переменная, управляющая функцией оповещения создателя статьи&lt;br /&gt;
		*/&lt;br /&gt;
		setAlert = (typeof g_user_alert == 'undefined') ? 1 : g_user_alert,&lt;br /&gt;
		/*&lt;br /&gt;
			Индикатор ошибки api&lt;br /&gt;
		*/&lt;br /&gt;
		isError,&lt;br /&gt;
		/*&lt;br /&gt;
			Здесь хранятся параметры номинации&lt;br /&gt;
		*/&lt;br /&gt;
		param,&lt;br /&gt;
		/*&lt;br /&gt;
			Возможные разделы КБУ в зависимости от пространства имён&lt;br /&gt;
		*/&lt;br /&gt;
		fastRemovePrefix = (config.wgIsRedirect ? 'ОП' : 'О') + ({0:'Сd', 2:'У', 3:'У', 6:'Ф', 14:'К'}[config.wgNamespaceNumber] || ''),&lt;br /&gt;
		/*&lt;br /&gt;
			Список всех доступных причин КБУ&lt;br /&gt;
			Коды для админов, текст для остальных.&lt;br /&gt;
			Используется максимально короткий шаблон.&lt;br /&gt;
			Третий параметр — условие для появления &amp;lt;input&amp;gt;&lt;br /&gt;
		*/&lt;br /&gt;
		fastRemove = [&lt;br /&gt;
			['подст:ds',		'ds Отсроченное'				],&lt;br /&gt;
			['уд-бессвязно',	'О1 Бессвязный текст'			],&lt;br /&gt;
			['уд-тест',			'О2 Тестовая страница'			],&lt;br /&gt;
			['уд-ванд',			'О3 Вандальная страница'		],&lt;br /&gt;
			['уд-повторно',		'О4 Уже удалялось'				],&lt;br /&gt;
			['уд-автор',		'О5 По просьбе автора'			],&lt;br /&gt;
			['уд-обс',			'О6 Ненужная подстраница'		],&lt;br /&gt;
			['уд-переим',		'О7 Для переименования',		'страницу'],&lt;br /&gt;
			['уд-дубль',		'О8 Дубликат',					'страницу'],&lt;br /&gt;
			['уд-реклама',		'О9 Реклама или спам'			],&lt;br /&gt;
			['db-badtalk',		'О10 Нецелевая СО'				],&lt;br /&gt;
			['уд-копивио',		'О11 Нарушение АП',				'ссылку'],&lt;br /&gt;
			['уд-пусто',		'С1 Пусто или коротко'			],&lt;br /&gt;
			['уд-иностр',		'С2 Не на русском'				],&lt;br /&gt;
			['уд-ссылки',		'С3 Лишь ссылки'				],&lt;br /&gt;
			['уд-нз',			'С5 Явно незначимо'				],&lt;br /&gt;
			['уд-в никуда',		'П1 Перенапр. в никуда'			],&lt;br /&gt;
			['db-redirspace',	'П2 Межпростр. перенапр.'		],&lt;br /&gt;
			['уд-опечатка',		'П3 Перенапр. с опечаткой'		],&lt;br /&gt;
			['уд-падеж',		'П4 Не именительный падеж'		],&lt;br /&gt;
			['уд-смысл',		'П5 Неверное перенапр.'			],&lt;br /&gt;
			['db-redirtalk',	'П6 Перенапр. на СО'			],&lt;br /&gt;
			['db-duplicate',	'Ф1 Копия файла',				'файл'],&lt;br /&gt;
			['db-badimage',		'Ф2 Повреждённый файл'			],&lt;br /&gt;
			['подст:nld',		'Ф3 Нет данных о лицензии'		],&lt;br /&gt;
			['подст:nsd',		'Ф3 Нет данных о источнике'		],&lt;br /&gt;
			['подст:nad',		'Ф3 Нет данных о авторе'		],&lt;br /&gt;
			['подст:dd',		'Ф3 Сомнительные данные файла'	],&lt;br /&gt;
			['подст:ofud',		'Ф4 Неиспользуемый КДИ'			],&lt;br /&gt;
			['подст:dfud',		'Ф5 Нет КДИ'					],&lt;br /&gt;
			['db-badfairuse',	'Ф6 Неоправданное КДИ'			],&lt;br /&gt;
			['NCT',				'Ф8 Есть на Складе',			'файл'],&lt;br /&gt;
			['подст:Nothost',	'Ф9 Файл — ВП:НЕХОСТИНГ'		],&lt;br /&gt;
			['уд-пусткат',		'К1 Пустая категория'			],&lt;br /&gt;
			['уд-перекат',		'К2 Переименованная кат.',		'категорию'],&lt;br /&gt;
			['уд-владелец',		'У1 По желанию владельца'		],&lt;br /&gt;
			['уд-анон',			'У2 Устаревшая СО анонима'		],&lt;br /&gt;
			['уд-несущ',		'У3 Несуществующий участник'	],&lt;br /&gt;
			['уд-нецелевое',	'У4 Нецелевое использ. ЛП'		],&lt;br /&gt;
			['уд-неактив',		'У5 Подстраница неактивного'	],&lt;br /&gt;
			['db',				'Особый случай',				'причину']&lt;br /&gt;
		].filter(function(arr) {&lt;br /&gt;
			return fastRemovePrefix.indexOf(arr[1].charAt(0)) &amp;gt;= 0&lt;br /&gt;
		}),&lt;br /&gt;
		/*&lt;br /&gt;
			Функция запроса к API.&lt;br /&gt;
			Токен и формат каждый раз дополняется перед запросом.&lt;br /&gt;
			Аргументы:&lt;br /&gt;
				1. Передаваемые параметры&lt;br /&gt;
				2. Режим запроса (query, edit или parse)&lt;br /&gt;
				3. Колбек&lt;br /&gt;
			void apiReq(object, string, function(result, status))&lt;br /&gt;
		*/&lt;br /&gt;
		apiReq = function(par, mode, clbck) {&lt;br /&gt;
			par.format = 'json'&lt;br /&gt;
			par.token  = mw.user.tokens.get('csrfToken')&lt;br /&gt;
			par.action = mode&lt;br /&gt;
			$.post('/w/api.php', par, clbck)&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
			Функция получения даты.&lt;br /&gt;
			Необходимо, например, для КУ-запросов.&lt;br /&gt;
			Есть возможность указать собственную дату для подытоживания номинации.&lt;br /&gt;
			['1051-32-33', '20 апреля 2014'] getDate(string)&lt;br /&gt;
		*/&lt;br /&gt;
		getDate = function(s) {&lt;br /&gt;
			var d = (!!s) ? new Date(s) : new Date()&lt;br /&gt;
			return [d.toISOString().substr(0, 10), d.getUTCDate() + ' ' +&lt;br /&gt;
				'января,февраля,марта,апреля,мая,июня,июля,августа,сентября,октября,ноября,декабря'.split(',')[d.getUTCMonth()] +&lt;br /&gt;
				' ' + d.getUTCFullYear()]&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
			Функция получения &amp;lt;input&amp;gt;&lt;br /&gt;
			* Атрибут «h» используется в КБУ, указывая type&lt;br /&gt;
			* Атрибут placeholder используется везде, для улучшения UI&lt;br /&gt;
			* Атрибут id используется везде для получения информации из поля&lt;br /&gt;
			string getInput(string, string, bool)&lt;br /&gt;
		*/&lt;br /&gt;
		getInput = function(id, p, h) {&lt;br /&gt;
			return '&amp;lt;input id=' + id + ' type=' + (h ? 'hidden' : 'text') + ' placeholder=&amp;quot;' + p + '&amp;quot; class=messagebox&amp;gt;'&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
			Определяет СО страницы&lt;br /&gt;
		*/&lt;br /&gt;
		getSO = function(pg) {&lt;br /&gt;
			var tmp = /([^:]*:)?(.*)/.exec(pg)&lt;br /&gt;
			if (tmp[1]) {&lt;br /&gt;
				var ns = config.wgNamespaceIds[tmp[1].slice(0, -1).toLowerCase().replace(/ /g, '_')]&lt;br /&gt;
				if (ns != undefined)&lt;br /&gt;
					return config.wgFormattedNamespaces[ns | 1] + ':' + tmp[2]&lt;br /&gt;
			}&lt;br /&gt;
			return 'Обсуждение:' + pg&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
			Функция получения текста страницы, null если ошибка&lt;br /&gt;
			getText(string, function(string))&lt;br /&gt;
		*/&lt;br /&gt;
		getText = function(pg, clbck) {&lt;br /&gt;
			apiReq({&lt;br /&gt;
				prop: 'wikitext',&lt;br /&gt;
				page: pg&lt;br /&gt;
			}, 'parse', function(txt) {&lt;br /&gt;
				clbck(txt.parse ? txt.parse.wikitext['*'] : null)&lt;br /&gt;
			})&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
			Функция отправки уведомления пользователю&lt;br /&gt;
			По выполнению вызывает callback&lt;br /&gt;
			userAlert(string, function(error))&lt;br /&gt;
		*/&lt;br /&gt;
		userAlert = function(pg, clbck) {&lt;br /&gt;
			apiReq({&lt;br /&gt;
				prop: 'revisions',&lt;br /&gt;
				rvprop: 'user',&lt;br /&gt;
				rvdir: 'newer',&lt;br /&gt;
				titles: pg&lt;br /&gt;
			}, 'query', function (t) {&lt;br /&gt;
				var i = t.query.pages&lt;br /&gt;
				if (!('-1' in i)) {&lt;br /&gt;
					var rvdata = i[Object.keys(i)[0]].revisions[0]&lt;br /&gt;
					if (!('anon' in rvdata) &amp;amp;&amp;amp; !rvdata.userhidden &amp;amp;&amp;amp; (rvdata.user &amp;amp;&amp;amp; rvdata.user !== config.wgUserName)) {&lt;br /&gt;
						apiReq({&lt;br /&gt;
							title: 'оу:' + rvdata.user,&lt;br /&gt;
							section: 'new',&lt;br /&gt;
							sectiontitle: 'Удалятор: [[:' + pg + ']]',&lt;br /&gt;
							summary: param.sum,&lt;br /&gt;
							text: 'Страница [[:' + pg + ']], созданная вами, ' + (param[3] ? '' : 'предложена ') + param[1] + '. ' +&lt;br /&gt;
								(param.place ? 'Обсуждение — на странице [[' + param.place + '#' + param.sectionNW + ']]. ' : '') +&lt;br /&gt;
								'~~\~~&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;Это автоматическое уведомление, сгенерированное [[у:Землеройкин/remove.js|скриптом «Удалятор»]].&amp;lt;/small&amp;gt;'&lt;br /&gt;
						}, 'edit', function(t) {&lt;br /&gt;
							clbck(t.error)&lt;br /&gt;
						})&lt;br /&gt;
					}&lt;br /&gt;
					else clbck('не нужно')&lt;br /&gt;
				}&lt;br /&gt;
				else clbck('страница удалена')&lt;br /&gt;
			})&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
			Функция работы с текстом статьи.&lt;br /&gt;
			Определяет необходимые шаблоны и устанавливает их на СО или статью.&lt;br /&gt;
			changeArticle(string, function(object))&lt;br /&gt;
		*/&lt;br /&gt;
		changeArticle = function(pg, clbck) {&lt;br /&gt;
			if (/(noRnm|ret)/g.test(param[0]))&lt;br /&gt;
				changeArticleDenom(pg, clbck)&lt;br /&gt;
			else&lt;br /&gt;
				changeArticleNom(pg, clbck)&lt;br /&gt;
		},&lt;br /&gt;
		// Закрытие номинации (снять в статье, установить на СО)&lt;br /&gt;
		changeArticleDenom = function(pg, clbck) {&lt;br /&gt;
			getText(pg, function(article) {&lt;br /&gt;
				var tpl = RegExp('{\{(' + param[3] + ')\\|(\\d{4}-\\d\\d-\\d\\d)\\|?(.*?)}}', 'gi').exec(article)&lt;br /&gt;
				if (tpl == null) {&lt;br /&gt;
					clbck({					&lt;br /&gt;
						code: 'ошибка',&lt;br /&gt;
						info: 'Невозможно снять шаблон «' + param[3] + '».'&lt;br /&gt;
					})&lt;br /&gt;
					return&lt;br /&gt;
				}&lt;br /&gt;
				param.date = getDate(tpl[2])&lt;br /&gt;
				param.place = 'ВП:' + param[3].replace(/\|.*/, '') + '/' + param.date[1]&lt;br /&gt;
				if (param[0] == 'noRnm') { //не переименовано&lt;br /&gt;
					param.sectionNW = pg + ' → ' + tpl[3]&lt;br /&gt;
					param.tplpar = pg + '|' + tpl[3]&lt;br /&gt;
				}&lt;br /&gt;
				if (param[0] == 'ret') { //оставлено&lt;br /&gt;
					param.sectionNW = tpl[3].length ? tpl[3] : pg&lt;br /&gt;
					param.tplpar = 'l1=' + param.sectionNW&lt;br /&gt;
				}&lt;br /&gt;
				param.sum = '[[у:Землеройкин/remove.js|Удалятор]]: номинация [[' + (param.place ? param.place + '#' : '') + param.sectionNW + ']] — ' + param[2]&lt;br /&gt;
&lt;br /&gt;
				apiReq({&lt;br /&gt;
					summary: param.sum,&lt;br /&gt;
					title: getSO(pg),&lt;br /&gt;
					prependtext: '{{' + param[2] + '|' + param.date[1] + '|' + param.tplpar + '}}\n'&lt;br /&gt;
				}, 'edit')&lt;br /&gt;
&lt;br /&gt;
				article = article.replace(RegExp('(&amp;lt;noin.*?&amp;gt;)?{\{(' + param[3] + ')\\|.*?}}\n?(&amp;lt;\/noin.*?&amp;gt;)?\n?', 'gi'), '')&lt;br /&gt;
				apiReq({&lt;br /&gt;
					title: pg,&lt;br /&gt;
					text: article,&lt;br /&gt;
					summary: param.sum&lt;br /&gt;
				}, 'edit', function(t) {&lt;br /&gt;
					clbck(t.error)&lt;br /&gt;
				})&lt;br /&gt;
			})&lt;br /&gt;
		},&lt;br /&gt;
		// Открытие номинации (установка шаблона в статье)&lt;br /&gt;
		changeArticleNom = function(pg, clbck) {&lt;br /&gt;
			getText(pg, function(article) {&lt;br /&gt;
				if (article == null) {&lt;br /&gt;
					clbck({&lt;br /&gt;
						code: 'ошибка',&lt;br /&gt;
						info: 'Страница «' + pg + '» не существует.'&lt;br /&gt;
					})&lt;br /&gt;
					return&lt;br /&gt;
				}&lt;br /&gt;
				var tpl = ''&lt;br /&gt;
				if (param[0] == 'fRm') {&lt;br /&gt;
					tpl = fastRemove[$('#rmSel').val()][0] + '|1=' + $('#fiRm').val()&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					tpl = param.tplpar&lt;br /&gt;
					if (param[0] == 'merge') {&lt;br /&gt;
						tpl = ('|' + tpl + '|').replace('|' + pg + '|', '|').slice(1, -1)&lt;br /&gt;
					}&lt;br /&gt;
					tpl = param[2] + '|' + param.date[0] + (tpl.length ? '|' + tpl : '')&lt;br /&gt;
				}&lt;br /&gt;
				apiReq({&lt;br /&gt;
					title: pg,&lt;br /&gt;
					text: (tpl.length ? '&amp;lt;noinclude&amp;gt;{{' + tpl + '}}\n&amp;lt;/noinclude&amp;gt;' : '') + article,&lt;br /&gt;
					summary: param.sum&lt;br /&gt;
				}, 'edit', function(t) {&lt;br /&gt;
					clbck(t.error)&lt;br /&gt;
				})&lt;br /&gt;
			})&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
			Функция установки номинации на соответствующую страницу&lt;br /&gt;
			void setNominate(callback)&lt;br /&gt;
		*/&lt;br /&gt;
		setNominate = function(clbck) {&lt;br /&gt;
			apiReq({&lt;br /&gt;
				title: param.place,&lt;br /&gt;
				createonly: '1',&lt;br /&gt;
				text: '{{' + param[4] + '-Навигация}}\n',&lt;br /&gt;
				summary: '[[у:Землеройкин/remove.js|Удалятор]]: автоматическая шапка',&lt;br /&gt;
			}, 'edit', function(t) {&lt;br /&gt;
				apiReq({&lt;br /&gt;
					title: param.place,&lt;br /&gt;
					section: 'new',&lt;br /&gt;
					sectiontitle: param.section,&lt;br /&gt;
					summary: param.sum,&lt;br /&gt;
					text: param.msg + ' ~~\~~'&lt;br /&gt;
				}, 'edit', function(t) {&lt;br /&gt;
					clbck(t.error)&lt;br /&gt;
				})&lt;br /&gt;
			})&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
			Заполнение параметров номинации (переменная param).&lt;br /&gt;
				.date — дата номинации&lt;br /&gt;
				.msg — текст номинации&lt;br /&gt;
				.place — место обсуждения (ВП:к_чему-то-там... или пусто, если КБУ)&lt;br /&gt;
				.section — заголовок раздела номинации&lt;br /&gt;
				.sectionNW — то же, без викификации&lt;br /&gt;
				.tplpar — параметры шаблона, для установки в статье&lt;br /&gt;
				.sum — описание правок скрипта&lt;br /&gt;
			Возвращает массив страниц для обработки (до 5 шт. для МногоКУ, 2 для КОБ, 0 для ВУС, иначе 1)&lt;br /&gt;
		*/&lt;br /&gt;
		setParam = function() {&lt;br /&gt;
			var	i,&lt;br /&gt;
				pg = config.wgPageName.replace(/_/g, ' '),&lt;br /&gt;
				ttl = $('#rmHeader').val(),&lt;br /&gt;
				ttl2 = $('#rmHeader2').length ? $('#rmHeader2').val() : '',&lt;br /&gt;
				msg = $('#rmMsg').val(),&lt;br /&gt;
				pgs = [pg]&lt;br /&gt;
&lt;br /&gt;
			if (/(noRnm|ret)/g.test(param[0]))&lt;br /&gt;
				return pgs&lt;br /&gt;
&lt;br /&gt;
			param.date = getDate()&lt;br /&gt;
			param.msg = msg ? msg.trim() : ''&lt;br /&gt;
			param.place = param[0] != 'fRm' ? 'ВП:' + param[2] + '/' + param.date[1] : ''&lt;br /&gt;
&lt;br /&gt;
			param.section =	param[0] == 'mRm' ? ttl	: '[[:' + pg + ']]'&lt;br /&gt;
			param.tplpar = ''&lt;br /&gt;
			if (param[0] == 'rnm') {&lt;br /&gt;
				param.tplpar = ttl&lt;br /&gt;
				param.section += ' → [[:' + ttl + ']]'&lt;br /&gt;
			}&lt;br /&gt;
			else if (param[0] == 'merge') {&lt;br /&gt;
				param.tplpar = pg + '|' + ttl&lt;br /&gt;
				param.section += ' и [[:' + ttl + ']]'&lt;br /&gt;
			}&lt;br /&gt;
			else if (param[0] == 'split') {&lt;br /&gt;
				param.tplpar = '[[:' + ttl + ']]' + (ttl2 ? ' и [[:' + ttl2 + ']]' : '')&lt;br /&gt;
				param.section += ' → ' + param.tplpar&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			param.sectionNW = param.section.replace(/\[\[:/g, '').replace(/]]/g, '')&lt;br /&gt;
			param.sum = '[[у:Землеройкин/remove.js|Удалятор]]: номинация [[' + (param.place ? param.place + '#' : '') + param.sectionNW + ']]' + (param[0] == 'fRm' ? ' ' + param[2] : '')&lt;br /&gt;
&lt;br /&gt;
			if (param[0] == 'mRm') {&lt;br /&gt;
				pgs = []&lt;br /&gt;
				param.msg = '=== По всем ===\n' + param.msg&lt;br /&gt;
				for (i = 4; i &amp;gt;= 0; i--) {&lt;br /&gt;
					pg = $('#rmArticle' + i).val()&lt;br /&gt;
					if (pg.length) {&lt;br /&gt;
						pgs.push(pg)&lt;br /&gt;
						param.msg = '=== [[:' + pg + ']] ===\n' + param.msg&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			else if (param[0] == 'merge') {&lt;br /&gt;
				pgs.push(ttl)&lt;br /&gt;
			}&lt;br /&gt;
			else if (param[0] == 'recov') {&lt;br /&gt;
				pgs = []&lt;br /&gt;
			}&lt;br /&gt;
			return pgs&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
			Вывод сообщений об ошибках&lt;br /&gt;
		*/&lt;br /&gt;
		logError = function(s, err) {&lt;br /&gt;
			if (err &amp;amp;&amp;amp; err.code) isError = 1&lt;br /&gt;
			$('#rmWindow').append(&lt;br /&gt;
				'&amp;lt;br&amp;gt;' + s + ' — ' + (&lt;br /&gt;
					err ? (err.code ? '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;&amp;lt;small&amp;gt;' + err.code + ': ' + err.info + '&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;' : err)&lt;br /&gt;
						: 'OK'&lt;br /&gt;
				)&lt;br /&gt;
			)&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
			Обработка массива страниц&lt;br /&gt;
		*/&lt;br /&gt;
		processPages = function(pgs) {&lt;br /&gt;
			if (pgs.length) {&lt;br /&gt;
				var pg = pgs.pop()&lt;br /&gt;
				changeArticle(pg, function(err) {&lt;br /&gt;
					logError('Правка статьи «' + pg + '»', err)&lt;br /&gt;
					if (isError) {&lt;br /&gt;
						finalizeWindow()&lt;br /&gt;
						return&lt;br /&gt;
					}&lt;br /&gt;
					if (setAlert) {&lt;br /&gt;
						userAlert(pg, function(err) {&lt;br /&gt;
							logError('Уведомление создателя', err)&lt;br /&gt;
							processPages(pgs)&lt;br /&gt;
						})&lt;br /&gt;
					}&lt;br /&gt;
					else processPages(pgs)&lt;br /&gt;
				})&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				if (param[4]) {&lt;br /&gt;
					setNominate(function(err) {&lt;br /&gt;
						logError('Запись номинации', err)&lt;br /&gt;
//						window.open('/wiki/' + param.place + '#' + encodeURI(param.sectionNW.replace(/ /g, '_')))&lt;br /&gt;
						finalizeWindow()&lt;br /&gt;
					})&lt;br /&gt;
				}&lt;br /&gt;
				else finalizeWindow()	&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
			Вызывается, когда всё сделано&lt;br /&gt;
		*/&lt;br /&gt;
		finalizeWindow = function() {&lt;br /&gt;
			if (isError) {&lt;br /&gt;
				$('.mw-small-spinner').remove()&lt;br /&gt;
				$('#rmWindow')&lt;br /&gt;
					.append('&amp;lt;p class=&amp;quot;error&amp;quot;&amp;gt;При выполнении скрипта случились ошибки. Поправьте всё, что надо, вручную.')&lt;br /&gt;
					.children().prop('disabled', false)&lt;br /&gt;
				$('#rmBtn').attr('disabled', 1)&lt;br /&gt;
				$('#rmClose').text('Закрыть')&lt;br /&gt;
			}&lt;br /&gt;
			else location.reload()&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
			Функция создания модального окна&lt;br /&gt;
		*/&lt;br /&gt;
		modalHandler = function() {&lt;br /&gt;
			var i,&lt;br /&gt;
				content = ''&lt;br /&gt;
&lt;br /&gt;
			if (param[0] == 'mRm') {&lt;br /&gt;
				content += getInput('rmHeader', 'Заголовок номинации')&lt;br /&gt;
				for (i = 0; i &amp;lt; 5; i++) {&lt;br /&gt;
					content += getInput('rmArticle' + i, 'Статья' + (i + 1))&lt;br /&gt;
				}		&lt;br /&gt;
			}&lt;br /&gt;
			if (param[0] == 'fRm') {&lt;br /&gt;
				content += '&amp;lt;select id=rmSel class=messagebox&amp;gt;'&lt;br /&gt;
				for (i = 0; i &amp;lt; fastRemove.length; i++) {&lt;br /&gt;
					content += '&amp;lt;option value=' + i + '&amp;gt;' + fastRemove[i][1] + '&amp;lt;/option&amp;gt;'&lt;br /&gt;
				}&lt;br /&gt;
				content += '&amp;lt;/select&amp;gt;' + getInput('fiRm', '', 1)&lt;br /&gt;
			}&lt;br /&gt;
			if (param[0] == 'rnm') {&lt;br /&gt;
				content += getInput('rmHeader', 'Новое название')&lt;br /&gt;
			}&lt;br /&gt;
			if (param[0] == 'merge') {&lt;br /&gt;
				content += getInput('rmHeader', 'Объединить с…')&lt;br /&gt;
			}&lt;br /&gt;
			if (param[0] == 'split') {&lt;br /&gt;
				content += getInput('rmHeader', 'Разделить на эту')&lt;br /&gt;
				content += getInput('rmHeader2', 'И на эту')&lt;br /&gt;
			}&lt;br /&gt;
			if (param[4]) {&lt;br /&gt;
				content += '&amp;lt;textarea id=rmMsg placeholder=&amp;quot;Текст номинации без «~~\~~».&amp;quot; rows=4&amp;gt;&amp;lt;/textarea&amp;gt;'&lt;br /&gt;
			}&lt;br /&gt;
			$('#content').prepend(&lt;br /&gt;
				'&amp;lt;div id=rmWindow style=&amp;quot;padding:2em;margin:1em;border:1px solid #985; background: #fec;&amp;quot;&amp;gt;' +&lt;br /&gt;
				'&amp;lt;h1&amp;gt;Удалятор: ' + param[2] + '&amp;lt;/h1&amp;gt;' + content +&lt;br /&gt;
				'&amp;lt;br&amp;gt;&amp;lt;label&amp;gt;&amp;lt;input name=&amp;quot;rmUAlert&amp;quot; type=checkbox ' + ((setAlert) ? 'checked' : '') + '&amp;gt;Оповестить автора&amp;lt;/label&amp;gt;&amp;lt;br&amp;gt;' +&lt;br /&gt;
				'&amp;lt;button id=rmBtn class=mw-ui-button&amp;gt;Отправить&amp;lt;/button&amp;gt;&amp;lt;button id=rmClose class=mw-ui-button&amp;gt;Отмена&amp;lt;/button&amp;gt;'&lt;br /&gt;
			)&lt;br /&gt;
			if (param[0] == 'mRm') $('#rmArticle0').val(config.wgPageName.replace(/_/g, ' '))&lt;br /&gt;
&lt;br /&gt;
			$('#rmSel').change(function() {&lt;br /&gt;
				var i = fastRemove[this.value][2]&lt;br /&gt;
				$('#fiRm').attr({type: (i ? 'text' : 'hidden'), placeholder: 'Укажите ' + i})&lt;br /&gt;
			})&lt;br /&gt;
			$('#rmClose').click(function() {&lt;br /&gt;
				$('#rmWindow').remove()&lt;br /&gt;
			})&lt;br /&gt;
&lt;br /&gt;
			$('#rmBtn').click(function() {&lt;br /&gt;
				$('#rmWindow')&lt;br /&gt;
					.append('&amp;lt;b class=mw-small-spinner&amp;gt;&amp;lt;/b&amp;gt;')&lt;br /&gt;
					.children().attr('disabled', '1')&lt;br /&gt;
				setAlert = $('[name=&amp;quot;rmUAlert&amp;quot;]').is(':checked')&lt;br /&gt;
				var pgs = setParam()&lt;br /&gt;
				processPages(pgs)&lt;br /&gt;
			})&lt;br /&gt;
			/*&lt;br /&gt;
				Реализация ctrl+enter события&lt;br /&gt;
			*/&lt;br /&gt;
			$(window).keydown(function (e) {&lt;br /&gt;
				if (e.ctrlKey &amp;amp;&amp;amp; e.keyCode == 13)&lt;br /&gt;
					$('#rmBtn').click()&lt;br /&gt;
			})&lt;br /&gt;
		};&lt;br /&gt;
	/*&lt;br /&gt;
		Добавление выпадающего меню на все страницы&lt;br /&gt;
	*/&lt;br /&gt;
	if ((rmNamespaces.indexOf(config.wgNamespaceNumber &amp;amp; ~1) &amp;gt;= 0) &amp;amp;&amp;amp; (config.wgPageContentModel == 'wikitext')) {&lt;br /&gt;
		var menuLocation = 'p-cactions';&lt;br /&gt;
		var nextNode = '#ca-move';&lt;br /&gt;
		if ( config.skin === 'timeless' || config.skin === 'minerva' ) {&lt;br /&gt;
			menuLocation = 'p-tb';&lt;br /&gt;
			nextNode = null;&lt;br /&gt;
		}&lt;br /&gt;
		if ( config.skin === 'vector' || config.skin === 'vector-2022' ) {&lt;br /&gt;
			nextNode = null;&lt;br /&gt;
			var $menuClone = $( '#p-variants' ).eq( 0 ).clone();&lt;br /&gt;
			&lt;br /&gt;
			$menuClone.attr( 'id', 'p-remove-js' )&lt;br /&gt;
				.attr( 'aria-labelledby', 'p-remove-js-label' )&lt;br /&gt;
				.removeClass( 'emptyPortlet' );&lt;br /&gt;
			&lt;br /&gt;
			$menuClone.find( 'ul' ).empty();&lt;br /&gt;
			$menuClone.find( 'input' ).attr( 'aria-labelledby', 'p-remove-js-label' );&lt;br /&gt;
			$menuClone.find( 'label' ).attr( 'id', 'p-remove-js-label' ).find( 'span' ).text( 'Удалятор' );&lt;br /&gt;
			$( '#p-views' ).after( $menuClone );&lt;br /&gt;
			menuLocation = 'p-remove-js';&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		for (var a of rmActions) {&lt;br /&gt;
			var portletLink = mw.util.addPortletLink( menuLocation, '#', menu_raw[ a ], 'ca-remove-' + a, null, null, nextNode );&lt;br /&gt;
			$( portletLink ).find( 'a' ).click(function( e ) {&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
				var i = $( this ).parent().attr( 'id' ).replace( 'ca-remove-', '' );&lt;br /&gt;
				param = (&lt;br /&gt;
					// [текущее действие, комментарий, шаблон/место обсуждения, поддерживаемые шаблоны&lt;br /&gt;
					i == 'imp'	? [ i, 'к срочному улучшению',		'к улучшению',		'',	'КУЛ'] :&lt;br /&gt;
					i == 'rnm'	? [ i, 'к переименованию',			'к переименованию',	'',	'КПМ'] :&lt;br /&gt;
					i == 'tRm'	? [ i, 'к удалению',				'к удалению',		'',	'КУ'] :&lt;br /&gt;
					i == 'mRm'	? [ i, 'к удалению',				'к удалению',		'',	'КУ'] :&lt;br /&gt;
					i == 'merge'? [ i, 'к объединению с другой',	'к объединению',	'',	'КОБ'] :&lt;br /&gt;
					i == 'split'? [ i, 'к разделению',				'к разделению',		'',	'КР'] :&lt;br /&gt;
					i == 'fRm'	? [ i, 'к [[ВП:КБУ|быстрому удалению]]',	'к быстрому удалению'] :&lt;br /&gt;
					i == 'recov'? [ i, '',							'к восстановлению',	'',	'ВУС'] :&lt;br /&gt;
					i == 'ret'	? [ i, 'оставлена',					'оставлено',		'к удалению|ку'] :&lt;br /&gt;
					i == 'noRnm'? [ i, 'не переименована',			'не переименовано',	'к переименованию|кпм|rename'] :&lt;br /&gt;
					0&lt;br /&gt;
				)&lt;br /&gt;
				isError = 0&lt;br /&gt;
				modalHandler()&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
})&lt;/div&gt;</summary>
		<author><name>imported&gt;Луффи</name></author>
	</entry>
</feed>