Участник:Krassotkin/itogo.js

Материал из Википедии — свободной энциклопедии
/**
 * Программа для облегчения выполнения рутинных операций Подводящими Итоги [[Википедия:Статус подводящего итоги]].
 * Текущая версия создаёт дополнительную вкладку в панели редактора и позволяет быстро добавлять итоговые шаблоны в позицию, в которой находится курсор, а также заменять Шаблон:К удалению на Шаблон:Sdd. 
 * Для подключения:
 * 1. Войдите в свой Special:MyPage/common.js (вставьте в строку поиска).
 * 2. Добавьте новсую строку: importScript("Участник:Krassotkin/itogo.js");
 * 3. Сохраните и очистите кеш браузера, как указано на странице [[Википедия:Кеш#Чистить/актуализировать кэш браузера]].
 * 
 * Предложения, пожелания, сообщения об ошибках и т.п. направляйте на страницу обсуждения или википочту [[Участник:Krassotkin]].
 * 
 * См. также:
 * [[Википедия:Инструменты подведения итогов]]
 *
 * Версии (в обратном порядке; первая в списке - текущая): [[Участник:Krassotkin/itogo.20181207.js]],  [[Участник:Krassotkin/itogo.2010082000.js]],  [[Участник:Krassotkin/itogo.2010081900.js]].
*/

// Внесение изменений
function change(t, s) {
 var sum = document.getElementById("wpSummary"); 
 if(sum) {sum.value = sum.value+s;}
 $('#wpTextbox1').textSelection('encapsulateSelection', {'peri':t});
}

// Функция замены Шаблон:К удалению на Шаблон: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 itogo() {
 // To add a toolbar section:
 $("#wpTextbox1").wikiEditor( 
  "addToToolbar", {
   "sections": {
    "itogoPanel": {
     "type": "toolbar",
     "label": "Итоги"
    }
   }
  } 
 );
 $("#wpTextbox1").wikiEditor( 
  "addToToolbar", {
   "section": "itogoPanel",
   "groups": {
    "templatesItogoPanel": {
     "label": "Вариант итога:"
    }
   }
  } 
 );
 $("#wpTextbox1").wikiEditor( 
  "addToToolbar", {
   "section": "itogoPanel",
   "group": "templatesItogoPanel",
   "tools": {
    "itogoPanelSelectTemplate": {
     label: "Выберите из списка",
     type: "select",
     list: {
      "itogoPanel-selectTemplate-keep" : {
       label: "Оставлено",
       action: {
        type: "callback", 
        execute: function() {
         change("\n\n=== Итог ===\n"+"["+"[Файл:Pictogram voting keep-light-green.svg|15px|X|link=]]&nbsp;'''<u>Оставлено</u>.''' Причина. ~"+"~"+"~"+"~ \n\n"
           	    + "<small>''Итог подведён на правах [[Википедия:Статус подводящего итоги|подводящего итоги]].''</small>", 
                " Итог: Оставлено.");
        }
       }
      },
      "itogoPanel-selectTemplate-deleted" :  {
       label: "Удалено",
       action: {
        type: "callback", 
        execute: function() {
         change("\n=== Итог ===\n"+"["+"[Файл:Pictogram voting delete.svg|15px|X|link=]]&nbsp;'''<u>Удалено</u>.''' Причина. ~"+"~"+"~"+"~ \n\n"
                +"<small>''Итог подведён на правах [[Википедия:Статус подводящего итоги|подводящего итоги]].''</small>", 
           	    " Итог: Удалено.");
        }
       }
      },
      "itogoPanel-selectTemplate-free-keep" :  {
       label: "Предварительный итог: Оставить",
       action: {
        type: "callback", 
        execute: function() {change("\n=== Предварительный итог ===\nПричина. ~"+"~"+"~"+"~ \n", " Предварительный итог: Оставить.");}
       }
      },
      "itogoPanel-selectTemplate-free-delete" :  {
       label: "Предварительный итог: Удалить",
       action: {
        type: "callback", 
        execute: function() {change("\n=== Предварительный итог ===\nПричина. ~"+"~"+"~"+"~ \n", " Предварительный итог: Удалить.");}
       }
      },
      "itogoPanel-selectTemplate-auto-result" :  {
       label: "Автоитог",
       action: {
        type: "callback", 
        execute: function() {change("\n=== Автоитог ===\nПричина. ~"+"~"+"~"+"~ \n", " Автоитог: .");}
       }
      }     
     }
    }
   }
  }
 );
 $('#wpTextbox1').wikiEditor( 
  "addToToolbar", {
   "section": "itogoPanel",
   "groups": {
    "buttonsItogoPanel": {
     "label": ""
    }
   }
  } 
 );
 $("#wpTextbox1").wikiEditor( 
  "addToToolbar", {
   "section": "itogoPanel",
   "group": "buttonsItogoPanel",
   "tools": {
    "sign": {
     label: "Подпись подводящего итоги",
     type: "button",
     icon: "//upload.wikimedia.org/wikipedia/commons/7/7b/Tilde_button.PNG",
     action: {type:"encapsulate", options: {pre: "[[ВП:СПИ|Подводящий итоги]] ~"+"~"+"~"+"~\n"}}
    }
   }
  }
 );   
 $("#wpTextbox1").wikiEditor( 
  "addToToolbar", {
   "section": "itogoPanel",
   "group": "buttonsItogoPanel",
   "tools": {
    "btnDbDisc": {
     label: "Удаление по результатам обсуждения",
     type: "button",
     icon: "//upload.wikimedia.org/wikipedia/commons/a/a2/TrFlameButton.png",
     action: {type:"callback", execute:placeSdd}
    }
   }
  }
 );
 $("#wpTextbox1").wikiEditor( 
  "addToToolbar", {
   "section": "itogoPanel",
   "groups": {
    "templatesDiscussionItogoPanel": {
     "label": "Информация об итоге:"
    }
   }
  } 
 );
 $("#wpTextbox1").wikiEditor( 
  "addToToolbar", {
   "section": "itogoPanel",
   "group": "templatesDiscussionItogoPanel",
   "tools": {
    "itogoPanelSelectDiscussionTemplate": {
     label: "Выберите из списка",
     type: "select",
     list: {
      "itogoPanel-selectDiscussionTemplate-keep1" :  {
       label: "Оставлено|dd mmmmm yyyy",
       action: {
        type: "callback", 
        execute: function() {change("{"+"{Оставлено|}}\n", "Оставлено по результатам обсуждения.");}
       }
      },
      "itogoPanel-selectDiscussionTemplate-keep2" : {
       label: "Оставлено|dd mmmmm yyyy|dd mmmmm yyyy",
       action: {
        type: "callback", 
        execute: function() {change("{"+"{Оставлено||}}\n", "Оставлено по результатам обсуждения.");}
       }
      },
      "itogoPanel-selectDiscussionTemplate-keep3" :  {
       label: "Изменено|dd mmmmm yyyy",
       action: {
        type: "callback", 
        execute: function() {change("{"+"{Изменено|}}\n", "Изменено");}
       }
      },
      "itogoPanel-selectDiscussionTemplate-keep-remove" :  {
       label: "Снято с удаления|dd mmmmm yyyy",
       action: {
        type: "callback", 
        execute: function() {change("{"+"{Снято с удаления|}}\n", "Снято с удаления.");}
       }
      }    
     }
    }
   }
  }
 );
} // function itogo()

/* Check edit mode, required modules and load */
if($.inArray(mw.config.get("wgAction"), ["edit", "submit"]) !== -1) {
 mw.loader.using("user.options", function() {
  if(mw.user.options.get("usebetatoolbar") == 1) {
   $.when(mw.loader.using("ext.wikiEditor"), $.ready).then(itogo);
  }
 });
}