// <nowiki>
// Скрипт для подстановки в текст шаблона Rq со всеми параметрами, кроме тематики.
// Добавляет сам себя в HTML-код панели быстрой вставки.
// Набор параметров шаблона можно указать в monobook.js, задав массив строк под именем parameters.
// Если шаблона на странице нет, скрипт подставляет его в конец
// Если шаблон есть, то он будет заменён шаблоном с указанными параметрами.
// Если шаблонов несколько, заменён будет первый из них.
// В планах:
// * Добавление параметра тематики;
// * Заполнение чекбоксов в соответствии с параметрами при открытии страницы редактирования с помощью регулярных выражений;
// * Упрощение интерфейса.
// Начало.
var parameters;
// Проверка, задан ли пользователем другой набор параметров шаблона:
if (parameters == null) {
var parameters = ['birth', 'cat', 'check', 'checktranslate', 'cleanup', 'coord', 'death', 'global', 'grammar', 'imdb', 'img', 'infobox', 'isbn', 'iwiki', 'linkless', 'looplink', 'patronymic', 'recat', 'refless', 'renew', 'sort', 'stress', 'stub', 'style', 'sources', 'taxobox', 'translate', 'wikify'];
}
// Функция добавления инструмента на панель быстрой вставки:
function addRqTemplateElements(){
// Находим панель: быстрой вставки:
var block = document.getElementById('editpage-specialchars');
// Если панель быстрой вставки не найдена, функция завершается:
if (!block) return;
// Подготовка HTML-кода для вставки в начало панели:
var insertion = 'Параметры шаблона <a href="/wiki/Шаблон:Rq">Rq</a>: ';
// Добавление чекбоксов и описаний по значению параметров в HTML-код для вставки:
// (Каждый чекбокс имеет id и имя вида Rqпараметр, например, Rqbirth
// Соответственно, потом его можно будет «найти» с помощью функции document.getElementById)
for (var j=0; j<parameters.length; j++) {
insertion += '<input id="Rq' + parameters[j] + '" type="checkbox" name="Rq' + parameters[j] + '" onclick=""> ' + parameters[j] + ' ';
}
// Добавление кнопки в HTML-код для вставки:
insertion += '<input type="button" name="RqPerformAction" value="Выполнить" onclick="addRqTemplatePerform()">';
// Добавление подготовленного HTML-кода в код панели:
block.innerHTML = insertion + block.innerHTML;
}
// Функция добавления в текст шаблона:
function addRqTemplatePerform(){
//Текстовое поле:
var textarea = document.editform.wpTextbox1;
// Строка с шаблоном для вставки в текст:
var insertion = '\{\{rq';
// Регулярное выражение, которому соответствует любой шаблон Rq (или название которого начинается на Rq), вне зависимости от параметров:
var regexp = /\{\{(R|r)(Q|q)(\s|\S)*\}\}/;
// Составляем строку с шаблоном:
for (var j=0; j<parameters.length; j++) {
if (document.getElementById('Rq'+parameters[j]).checked) {
insertion += '|'+parameters[j];
}
}
insertion += '}}';
// Ищем, есть ли в тексте шаблон Rq:
if (textarea.value.search(regexp) >= 0) {
// Если находим:
// Заменяем соответствие регулярному выражению строкой с шаблоном:
textarea.value = textarea.value.replace(regexp, insertion);
}
else {
// Если не находим:
// Подставляем строку с шаблоном в конец текста с новой строки:
textarea.value += '\n'+insertion;
}
}
$(addRqTemplateElements);
// </nowiki>