/**
* Программа для облегчения выполнения рутинных операций Подводящими Итоги [[:Статус подводящего итоги]].
* Текущая версия создаёт дополнительную вкладку в панели редактора и позволяет быстро добавлять итоговые шаблоны в позицию, в которой находится курсор, а также заменять Шаблон:К удалению на Шаблон:Sdd.
* Для подключения:
* 1. Войдите в свой [[Special:MyPage/skin.js|пользовательский JS файл]].
* 2. Добавьте строку: importScript("Участник:Krassotkin/itogo.js");
* 3. Сохраните и [[:Кеш#Чистить/актуализировать кэш браузера|очистите кеш браузера]].
*
* Предложения, пожелания, сообщения об ошибках и т.п. направляйте на страницу обсуждения или википочту [[Участник:Krassotkin]].
*
* Данная программа создана при участии следующих участников:
* [[Участник:TenBaseT]] - кнопки и прототипы программ для старого редактора ([[Участник:TenBaseT/spi-button.js]]).
* [[Участник:DerLetzteRegenbogen]] - кнопка и программа замены Шаблон:К удалению на Шаблон:Sdd ([[Участник:DerLetzteRegenbogen/db-discussion.js]]).
* [[Участник:JenVan]] - кнопка подписи ([[commons:File:Tilde button.PNG]]).
* а также других, принимавших участие в тестировании и обсуждении.
*
* См. также:
* [[:Инструменты подведения итогов]]
*
* Версии (в обратном порядке; первая в списке - текущая): [[Участник:Krassotkin/itogo.2010082000.js]], [[Участник:Krassotkin/itogo.2010081900.js]].
*/
/**
* Проверка доступности необходимых функций и определение, в случае необходимости.
*/
// addFuncBtn - добавление кнопок в monobook
if(typeof addFuncBtn == "undefined") {
addFuncBtn = function(id, func, img, title) {
var i=document.createElement('img');
i.className='mw-toolbar-custombutton'; i.id=id;
i.onclick=func; i.src=wgImg(img); i.title=title; i.alt=title.substr(0,3);
document.getElementById("toolbar").appendChild(i);
};
}
/**
* Функции, используемые в программе.
*/
// Добавление в текстовое поле "Описание изменений"
function addSum(addition) {var sum = document.getElementById("wpSummary"); if(sum) {sum.value = sum.value+addition;}}
// Функция для "Автоитог"
function autoResult() {insertTags("\n=== Автоитог ===\nПричина. ~"+"~"+"~"+"~ \n","",""); addSum(" Автоитог: .");}
// Функция для "Удалено"
function deletedResult() {insertTags("\n=== Итог ===\n"+"["+"[Файл:Pictogram voting delete.svg|15px|X|link=]] '''<u>Удалено</u>.''' Причина. ~"+"~"+"~"+"~ \n"+"<small>''Итог подведён на правах [[:Статус подводящего итоги|подводящего итоги]].''</small>","",""); addSum(" Итог: Удалено.");}
// Функция для "Предварительный итог: Удалить"
function freeDelete() {insertTags("\n=== Предварительный итог ===\nПричина. ~"+"~"+"~"+"~ \n","",""); addSum(" Предварительный итог: Удалить.");}
// Функция для "Оставлено"
function keepResult() {insertTags("\n\n=== Итог ===\n"+"["+"[Файл:Pictogram voting keep-light-green.svg|15px|X|link=]] '''<u>Оставлено</u>.''' Причина. ~"+"~"+"~"+"~ \n"+"<small>''Итог подведён на правах [[:Статус подводящего итоги|подводящего итоги]].''</small>","",""); addSum(" Итог: Оставлено.");}
// Функция для "Предварительный итог: Оставить"
function freeKeepResult() {insertTags("\n=== Предварительный итог ===\nПричина. ~"+"~"+"~"+"~ \n","",""); addSum(" Предварительный итог: Оставить.");}
// Функция для добавления одинарного шаблона "Оставлено" на страницу обсуждения
function keep1() {insertTags("{"+"{Оставлено|}}\n","",""); addSum("Оставлено по результатам обсуждения.");}
// Функция добавления двойного шаблона "Оставлено" на страницу обсуждения
function keep2() {insertTags("{"+"{Оставлено||}}\n","",""); addSum("Оставлено по результатам обсуждения.");}
// Функция добавления шаблона "Изменено" на страницу обсуждения
function keep3() {insertTags("{"+"{Изменено|}}\n","",""); addSum("Изменено");}
// Функция добавления шаблона "Снято с удаления" на страницу обсуждения
function keepRemove() {insertTags("{"+"{Снято с удаления|}}\n","",""); addSum("Снято с удаления.");}
// Функция замены Шаблон:К удалению на Шаблон:Sdd
function placeSdd() {
var txt = document.getElementById("wpTextbox1");
if (!txt) return;
var regexp = /\{\{К[_ ]удалению\|([0-9]{4}(-[0-9]{2}){2})\}\}/;
if (txt.value.search(regexp) < 0) return;
txt.value = txt.value.replace(regexp, '\{\{subst:sdd|$1\}\}');
addSum("Страница удалена по итогам обсуждения.");
var minorcb = document.getElementById("wpMinoredit");
if (minorcb && minorcb.checked) {minorcb.checked = false;}
var reviewcb = document.getElementById("wpReviewEdit");
if (reviewcb && !reviewcb.checked) {reviewcb.checked = true;}
}
// Функция для подписи
function signResult() {insertTags("[[ВП:СПИ|Подводящий итоги]] ~"+"~"+"~"+"~\n","","");}
/**
* Подключение функций к панели инструментов
*/
// Создание дополнительной панели инструментов для нового редактора
function itogoNew() {
// Check that the toolbar is available
if(typeof $j != "undefined" && typeof $j.fn.wikiEditor!="undefined") {
// Execute on load
$j(document).ready(
function() {
// To add a toolbar section:
$j("#wpTextbox1").wikiEditor(
"addToToolbar", {
"sections": {
"itogoPanel": {
"type": "toolbar",
"label": "Итоги"
}
}
}
);
// To add a group to an existing toolbar section:
$j("#wpTextbox1").wikiEditor(
"addToToolbar", {
"section": "itogoPanel",
"groups": {
"templatesItogoPanel": {
"label": "Вариант итога:"
}
}
}
);
// To add a select list to an existing toolbar group:
$j("#wpTextbox1").wikiEditor(
"addToToolbar", {
"section": "itogoPanel",
"group": "templatesItogoPanel",
"tools": {
"itogoPanelSelectTemplate": {
label: "Выберите из списка",
type: "select",
list: {
"itogoPanel-selectTemplate-keep" : {
label: "Оставлено",
action: {type:"callback", execute:keepResult}
},
"itogoPanel-selectTemplate-deleted" : {
label: "Удалено",
action: {type:"callback", execute:deletedResult}
},
"itogoPanel-selectTemplate-free-keep" : {
label: "Предварительный итог: Оставить",
action: {type:"callback", execute:freeKeepResult}
},
"itogoPanel-selectTemplate-free-delete" : {
label: "Предварительный итог: Удалить",
action: {type:"callback", execute:freeDelete}
},
"itogoPanel-selectTemplate-auto-result" : {
label: "Автоитог",
action: {type:"callback", execute:autoResult}
}
}
}
}
}
);
// To add a group to an existing toolbar section:
$j('#wpTextbox1').wikiEditor(
"addToToolbar", {
"section": "itogoPanel",
"groups": {
"buttonsItogoPanel": {
"label": ""
}
}
}
);
// To add a button to an existing toolbar group:
$j("#wpTextbox1").wikiEditor(
"addToToolbar", {
"section": "itogoPanel",
"group": "buttonsItogoPanel",
"tools": {
"sign": {
label: "Подпись подводящего итоги",
type: "button",
icon: "http://upload.wikimedia.org/wikipedia/commons/7/7b/Tilde_button.PNG",
action: {type:"callback", execute:signResult}
}
}
}
);
// To add a button to an existing toolbar group:
$j("#wpTextbox1").wikiEditor(
"addToToolbar", {
"section": "itogoPanel",
"group": "buttonsItogoPanel",
"tools": {
"btnDbDisc": {
label: "Удаление по результатам обсуждения",
type: "button",
icon: "http://upload.wikimedia.org/wikipedia/commons/a/a2/TrFlameButton.png",
// action: {type:"callback", execute:function(){placeSdd();}}
action: {type:"callback", execute:placeSdd}
}
}
}
);
// To add a group to an existing toolbar section:
$j("#wpTextbox1").wikiEditor(
"addToToolbar", {
"section": "itogoPanel",
"groups": {
"templatesDiscussionItogoPanel": {
"label": "Информация об итоге:"
}
}
}
);
// To add a select list to an existing toolbar group:
$j("#wpTextbox1").wikiEditor(
"addToToolbar", {
"section": "itogoPanel",
"group": "templatesDiscussionItogoPanel",
"tools": {
"itogoPanelSelectDiscussionTemplate": {
label: "Выберите из списка",
type: "select",
list: {
"itogoPanel-selectDiscussionTemplate-keep1" : {
label: "Оставлено|dd mmmmm yyyy",
action: {type:"callback", execute:keep1}
},
"itogoPanel-selectDiscussionTemplate-keep2" : {
label: "Оставлено|dd mmmmm yyyy|dd mmmmm yyyy",
action: {type:"callback", execute:keep2}
},
"itogoPanel-selectDiscussionTemplate-keep3" : {
label: "Изменено|dd mmmmm yyyy",
action: {type:"callback", execute:keep3}
},
"itogoPanel-selectDiscussionTemplate-keep-remove" : {
label: "Снято с удаления|dd mmmmm yyyy",
action: {type:"callback", execute:keepRemove}
}
}
}
}
}
);
} // function()
); // $j(document).ready(
return true;
} // if(typeof $j
return false;
} // function itogo()
// Размещение кнопок на панели инструментов старого редактора
function itogoOld() {
if(!document.getElementById("toolbar")) {return false;}
addFuncBtn("btnSign", signResult, "http://upload.wikimedia.org/wikipedia/commons/6/66/Button-spi.png", "Подпись подводящего итоги");
addFuncBtn("btnKept", keepResult, "http://upload.wikimedia.org/wikipedia/commons/9/9d/Button_fait.png", "Итог: Оставлено");
addFuncBtn("btnDeleted", deletedResult, "http://upload.wikimedia.org/wikipedia/commons/e/e4/Bouton_Vandale3.png", "Итог: Удалено");
addFuncBtn("btnPlaceFlame", placeSdd, "http://upload.wikimedia.org/wikipedia/commons/1/1c/Button_flamme.png", "Удаление по результатам обсуждения");
return true;
}
/**
* Запуск программы после полной загрузки страницы
*/
function loadItogo() {
if(!itogoNew()) {itogoOld();}
}
$(loadItogo);
Участник:Krassotkin/itogo.js.