Изменения

обновление
Строка 1: Строка 1:  
/*
 
/*
  *  Инструменты редактирования. Версия 0.91
+
  *  Инструменты редактирования. Версия 0.92
 
  *  Александр Машин.
 
  *  Александр Машин.
 
  *  Отдельные изменения — Mithgol the Webmaster.
 
  *  Отдельные изменения — Mithgol the Webmaster.
  *  Для обновления перезагрузить http://traditio-ru.org/w/index.php?title=MediaWiki:Edit.js&action=raw&ctype=text/javascript.
+
  *  Для обновления очистить кэш для сайта.
 +
*  Гаджеты, добавляющие кнопки, должны вносить их в массивы mw.tools_above и mw.tools_below
 +
*      внутри одной из функций массива mw.edit_gadget_extensions.
 
  *  
 
  *  
 
  */
 
  */
    
// Значки развёртывания и свёртывания субменю:
 
// Значки развёртывания и свёртывания субменю:
var extender = '<img src="http://traditio-ru.org/images/c/cf/Etool_extender.png" width="5" height="16" alt="&rarr;" />';
+
var extender = '<img src="/files/c/cf/Etool_extender.png" width="5" height="16" alt="&rarr;" />';
var collapser = '<img src="http://traditio-ru.org/images/d/d4/Etool_collapser.png" width="5" height="16" alt="&darr;" />';
+
var collapser = '<img src="/files/d/d4/Etool_collapser.png" width="5" height="16" alt="&darr;" />';
 
// Для отложенного разбора:
 
// Для отложенного разбора:
 
var lastPostponed = 0;
 
var lastPostponed = 0;
var immediate_limit = $.browser.msie    ? 16
+
var immediate_limit = 64;
                    : $.browser.mozilla ? 32
  −
                    :                    64;
   
// Счётчик инструментов:
 
// Счётчик инструментов:
 
var tool_no = 0;
 
var tool_no = 0;
Строка 25: Строка 25:  
// Кэш для хранения обёрток, заполнителей и подменю, загрузка которых отложена:
 
// Кэш для хранения обёрток, заполнителей и подменю, загрузка которых отложена:
 
var cache = {};
 
var cache = {};
 +
 +
// Массив функций-расширений, которые будут выполены после заполнения
 +
//    массивов стандартного меню, но до их вывода:
 +
if (!mw.edit_gadget_extensions) {
 +
mw.edit_gadget_extensions = [];
 +
}
    
/*  Заготовки для меню.
 
/*  Заготовки для меню.
Строка 33: Строка 39:  
     $li1_stub, $postponed_stub;
 
     $li1_stub, $postponed_stub;
   −
function createStubs(){
+
function createStubs() {
 
     /*  употребляются в eButton():  */
 
     /*  употребляются в eButton():  */
 
     // Пункт меню:
 
     // Пункт меню:
Строка 52: Строка 58:  
         if (wrapper && !$.isFunction (wrapper)) {
 
         if (wrapper && !$.isFunction (wrapper)) {
 
             window.status = this.title;
 
             window.status = this.title;
             if ( this.title != $.trim( stripHTML(wrapper) ).replace (/_/g, ' ') ){
+
             if ( this.title != $.trim (stripHTML(wrapper)).replace (/_/g, ' ') ){
 
                 window.status += ': ' + wrapper;
 
                 window.status += ': ' + wrapper;
 
             }
 
             }
Строка 62: Строка 68:  
     });
 
     });
 
     // + для IE, который не понимает :hover в CSS:
 
     // + для IE, который не понимает :hover в CSS:
     if ($.browser.msie) {
+
     /* if ($.browser.msie) {
 
         $button_stub.hover (
 
         $button_stub.hover (
 
             function () {$(this).addClass    ('hover');}
 
             function () {$(this).addClass    ('hover');}
 
           , function () {$(this).removeClass ('hover');}
 
           , function () {$(this).removeClass ('hover');}
 
         );
 
         );
     }
+
     } */
    
     // Ссылка:
 
     // Ссылка:
 
     $a_stub = $('<a target="_blank"></a>');
 
     $a_stub = $('<a target="_blank"></a>');
 
     // + для IE, который не понимает :hover в CSS:
 
     // + для IE, который не понимает :hover в CSS:
     if ($.browser.msie) {
+
     /* if ($.browser.msie) {
 
         $a_stub.hover (
 
         $a_stub.hover (
 
             function(){ $(this).addClass  ('hover'); }
 
             function(){ $(this).addClass  ('hover'); }
 
           , function(){ $(this).removeClass('hover'); }
 
           , function(){ $(this).removeClass('hover'); }
 
         );
 
         );
     }
+
     } */
    
     // Текст к кнопке:
 
     // Текст к кнопке:
Строка 93: Строка 99:  
     });
 
     });
 
     // + для IE, который не может нормально установить ширину абсолютно позиционированных блоков:
 
     // + для IE, который не может нормально установить ширину абсолютно позиционированных блоков:
     if ($.browser.msie) {
+
     /* if ($.browser.msie) {
 
         // Установить ширину подменю:
 
         // Установить ширину подменю:
 
         $ul1_stub.width('35em');
 
         $ul1_stub.width('35em');
     }
+
     } */
    
     // Заготовка кнопки верхнего меню:
 
     // Заготовка кнопки верхнего меню:
Строка 112: Строка 118:  
         var $this = $(this);
 
         var $this = $(this);
 
         var $toolbar = $this.parents ('.eMenu');
 
         var $toolbar = $this.parents ('.eMenu');
         if ($toolbar.find('.eMenu.fixed').length == 0){
+
         if ($toolbar.find('.eMenu.fixed').length === 0){
 
             $this.find ('.eMenu').loadAndShow ('instant');
 
             $this.find ('.eMenu').loadAndShow ('instant');
 
             mouse_is_down = true;
 
             mouse_is_down = true;
Строка 124: Строка 130:  
         var $this = $(this);
 
         var $this = $(this);
 
         var $toolbar = $this.parents ('.eMenu');
 
         var $toolbar = $this.parents ('.eMenu');
         if ($toolbar.find('.eMenu.fixed').length == 0) {
+
         if ($toolbar.find('.eMenu.fixed').length === 0) {
 
             // Показ подменю при наезде, при условии, что:
 
             // Показ подменю при наезде, при условии, что:
 
             if (mouse_is_down) { // кнопка мыши нажата:                   
 
             if (mouse_is_down) { // кнопка мыши нажата:                   
Строка 147: Строка 153:  
     });
 
     });
 
     // + для IE: разрыв над подменю, чтобы оно показывалось ниже, а не справа:
 
     // + для IE: разрыв над подменю, чтобы оно показывалось ниже, а не справа:
     if ($.browser.msie) {
+
     /* if ($.browser.msie) {
 
         $li0_stub.append( '<br />' );
 
         $li0_stub.append( '<br />' );
     }
+
     } */
    
     // Заготовка кнопки подменю:
 
     // Заготовка кнопки подменю:
Строка 157: Строка 163:  
     /*
 
     /*
 
     $postponed_stub = eButton({
 
     $postponed_stub = eButton({
       button: '<img src="http://traditio-ru.org/images/Etool_AJAX-loader-T16.gif" width="16" height="16" alt="loading…" />',
+
       b: '<img src="/files/Etool_AJAX-loader-T16.gif" width="16" height="16" alt="loading…" />',
       title: 'Загрузка…'
+
       t: 'Загрузка…'
 
     });
 
     });
 
     */
 
     */
Строка 164: Строка 170:  
      
 
      
 
// Вертикальный разделитель и перевод строки для субменю:
 
// Вертикальный разделитель и перевод строки для субменю:
var separator = {html: '<li><img src="http://traditio-ru.org/images/7/77/Etool_vrule.png" width="3" style="height: 2.5ex" alt="|" /></li>'};
+
var separator = {h: '<li><img src="/files/7/77/Etool_vrule.png" width="3" style="height: 2.5ex" alt="|" /></li>'};
 
var inline_separator = ' <<_•_>> ';
 
var inline_separator = ' <<_•_>> ';
var br = {html: '<br clear="all" />'};
+
var br = {h: '<br clear="all" />'};
    
// Строка шаблонов лицензий для страницы загрузки изображений:
 
// Строка шаблонов лицензий для страницы загрузки изображений:
 
var licenses = '';
 
var licenses = '';
if (wgTitle == 'Upload' || wgTitle == 'Загрузка') {
+
if (mw.config.get ('wgTitle') === 'Upload' || mw.config.get ('wgTitle') === 'Загрузка') {
 
     $('#wpLicense option').each (function () {
 
     $('#wpLicense option').each (function () {
 
         if (this.disabled) {
 
         if (this.disabled) {
Строка 177: Строка 183:  
         } else {
 
         } else {
 
             // Лицензия:
 
             // Лицензия:
             licenses += $(this).val () ? '{{' + $.trim ($(this).val ().split ('|', 2) [0]) + '}} ' : '';
+
             licenses += $(this).val () ? '{{' + $.trim ($(this).val ().split ('|', 2) [0].replace (/\s/g, '_')) + '}} ' : '';
 
         }
 
         }
 
     });
 
     });
Строка 187: Строка 193:  
//    Строки -- ряды простых инструментов, разделённых пробелом.
 
//    Строки -- ряды простых инструментов, разделённых пробелом.
 
// Верхняя панель:
 
// Верхняя панель:
var tools_above = [
+
mw.tools_above = [
 
[
 
[
     {title: 'Обработка выделенного текста', nl: true}
+
     {t: 'Обработка выделенного текста', nl: true}
  , {wrapper: wikifyText, button: '<img src="http://traditio-ru.org/images/1/1f/Etool_wikify.png" width="20" height="16" alt="W"/>', title: 'Викификация', all: true}
+
    // Место для подключения викификатора:
   , {wrapper: function (s) {return s.toLowerCase ();}, title: 'Нижний регистр', button: 'аб', all: true}, br
+
   , {w: function (s) {return s.toLowerCase ();}, t: 'Нижний регистр', b: 'аб', all: true}, br
 
     // Инструмент поиска и замены:
 
     // Инструмент поиска и замены:
   , {html: '<hr />'}
+
   , {h: '<hr />'}
   , {wrapper: function (s) {
+
   , {w: function (s) {
 
                   return s.replace ($('#tregex').val () == 'on'
 
                   return s.replace ($('#tregex').val () == 'on'
 
                           ? new RegExp ($('#tsearch').val ()
 
                           ? new RegExp ($('#tsearch').val ()
Строка 203: Строка 209:  
                       , $('#treplace').val ());
 
                       , $('#treplace').val ());
 
               },
 
               },
     button: '<img src="http://traditio-ru.org/images/b/b8/Etool_replace.png" alt="&rarr;" />',
+
     b: '<img src="/files/b/b8/Etool_replace.png" alt="&rarr;" />',
     title: 'Поиск и замена',
+
     t: 'Поиск и замена',
 
     all: true, nl: true}
 
     all: true, nl: true}
   , {html: '<span>(</span><input type="checkbox" id="tregex" /><label for="tregex">как <a href="http://traditio-ru.org/wiki/Регулярные_выражения" target="_blank" title="страница о регулярных выражениях (в новой вкладке)">regex</a></label>): '
+
   , {h: '<span>(</span><input type="checkbox" id="tregex" /><label for="tregex">как <a href="/Регулярные_выражения" target="_blank" title="страница о регулярных выражениях (в новой вкладке)">regex</a></label>): '
 
         + '/<input id="tsearch" size="30" title="Что заменить">/<input id="treplace" size="30" title="Чем заменить">/'
 
         + '/<input id="tsearch" size="30" title="Что заменить">/<input id="treplace" size="30" title="Чем заменить">/'
 
         + '<input type="checkbox" id="tglobal" checked title="Заменить всё" /><label for="tglobal" title="Заменить всё">g</label>'               
 
         + '<input type="checkbox" id="tglobal" checked title="Заменить всё" /><label for="tglobal" title="Заменить всё">g</label>'               
Строка 213: Строка 219:  
     nl: true}
 
     nl: true}
 
] , separator, [
 
] , separator, [
     {title: 'Пунктуация', nl: true}
+
     {t: 'Пунктуация', nl: true}
   , {wrapper: '+—', button: '—', title: 'Тире'}   
+
   , {w: '+—', b: '—', t: 'Тире'}   
   , {wrapper: '+–', button: '–', title: 'Минус'}
+
   , {w: '+–', b: '–', t: 'Минус'}
   , {wrapper: '+…', button: '…', title: 'Многоточие'}   
+
   , {w: '+…', b: '…', t: 'Многоточие'}   
   , {wrapper: '&nbsp;', button: '', title: 'Неразрывный пробел'}, br
+
   , {w: '&nbsp;', b: '', t: 'Неразрывный пробел'}, br
   , {title: 'Кавычки:'}
+
   , {t: 'Кавычки:'}
   , {wrapper: '<q>+</q>', button: '«<span class="plus_sign">a</span>»', title: 'Универсальные', filler: 'Текст в кавычках'}   
+
   , {w: '<q>+</q>', b: '«<span class="plus_sign">a</span>»', t: 'Универсальные', f: 'Текст в кавычках'}   
   , {wrapper: '«+»', button: '«<span class="plus_sign">a</span>»', title: 'Обычные', filler: 'Текст в кавычках'}   
+
   , {w: '«+»', b: '«<span class="plus_sign">a</span>»', t: 'Обычные', f: 'Текст в кавычках'}   
   , {wrapper: '„+“', button: '„<span class="plus_sign">a</span>“', title: 'Вложенные', filler: 'Текст в кавычках второго уровня'}, br
+
   , {w: '„+“', b: '„<span class="plus_sign">a</span>“', t: 'Вложенные', f: 'Текст в кавычках второго уровня'}, br
   , {wrapper: '“+”', button: '“<span class="plus_sign">a</span>”', title: 'Английские', filler: 'Текст в кавычках внутри английского текста'}
+
   , {w: '“+”', b: '“<span class="plus_sign">a</span>”', t: 'Английские', f: 'Текст в кавычках внутри английского текста'}
   , {wrapper: '»+«', button: '»<span class="plus_sign">a</span>«', title: 'Немецкие', filler: 'Текст в кавычках внутри немецкого текста'}, br
+
   , {w: '»+«', b: '»<span class="plus_sign">a</span>«', t: 'Немецкие', f: 'Текст в кавычках внутри немецкого текста'}, br
   , '§+ №+ ~ ?+ ?+ +† +‡ {{•}}_ ¶ #+ &+'
+
   , '§+ №+ ~ ¡+ ¿+ +† +‡ {{•}}_ ¶ #+ &+'
   , {wrapper: function (s) {return s + '|';}, button: '|', title: 'Вертикальная черта'}   
+
   , {w: function (s) {return s + '|';}, b: '|', t: 'Вертикальная черта'}   
 
   , ' {{!}} ` \''
 
   , ' {{!}} ` \''
   , {title: 'Диакритика', nl: true}
+
   , {t: 'Диакритика', nl: true}
   , {wrapper: '+?', button: '<b><span style="color:black">a</span>?</b>', title: 'Знак ударения', filler: 'Подударная гласная'}, br
+
   , {w: '+́', b: '<b><span style="color:black">a</span>́</b>', t: 'Знак ударения', f: 'Подударная гласная'}, br
   , {wrapper: '+?', button: '<b><span class="plus_sign">a</span>?</b>', title: 'Акут', filler: 'Буква под акутом'}
+
   , {w: '+́', b: '<b><span class="plus_sign">a</span>́</b>', t: 'Акут', f: 'Буква под акутом'}
   , {wrapper: '+?', button: '<b><span class="plus_sign">a</span>?</b>', title: 'Гравис', filler: 'Буква под грависом'}
+
   , {w: '+̀', b: '<b><span class="plus_sign">a</span>̀</b>', t: 'Гравис', f: 'Буква под грависом'}
   , {wrapper: '+?', button: '<b><span class="plus_sign">a</span>?</b>', title: 'Циркумфлекс', filler: 'Буква под циркумфлексом'}   
+
   , {w: '+̂', b: '<b><span class="plus_sign">a</span>̂</b>', t: 'Циркумфлекс', f: 'Буква под циркумфлексом'}   
   , {wrapper: '+?', button: '<b><span class="plus_sign">a</span>?</b>', title: 'Диарезис', filler: 'Буква под диарезисом'}   
+
   , {w: '+̈', b: '<b><span class="plus_sign">a</span>̈</b>', t: 'Диарезис', f: 'Буква под диарезисом'}   
   , {wrapper: '+?', button: '<b><span class="plus_sign">a</span>?</b>', title: 'Тильда', filler: 'Буква под тильдой'}
+
   , {w: '+̃', b: '<b><span class="plus_sign">a</span>̃</b>', t: 'Тильда', f: 'Буква под тильдой'}
   , {wrapper: '+?', button: '<b><span class="plus_sign">e</span>?</b>', title: 'Гачек', filler: 'Буква под гачеком'}, br
+
   , {w: '+̌', b: '<b><span class="plus_sign">e</span>̌</b>', t: 'Гачек', f: 'Буква под гачеком'}, br
   , {wrapper: '+?', button: '<b><span class="plus_sign">a</span>?</b>', title: 'Кратка', filler: 'Краткая буква'}
+
   , {w: '+̆', b: '<b><span class="plus_sign">a</span>̆</b>', t: 'Кратка', f: 'Краткая буква'}
   , {wrapper: '+?', button: '<b><span class="plus_sign">a</span>?</b>', title: 'Макрон', filler: 'Долгая буква'}
+
   , {w: '+̄', b: '<b><span class="plus_sign">a</span>̄</b>', t: 'Макрон', f: 'Долгая буква'}
   , {url: mw.util.wikiGetlink ('Проект:Типографика'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Справка: Типографика', nl: true}
+
   , {url: mw.util.getUrl ('Традиция:Типографика'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Справка: Типографика', nl: true}
 
], [
 
], [
     {title: 'Шрифт', nl: true}
+
     {t: 'Шрифт', nl: true}
   , {wrapper: "''+''", button: '<img src="http://traditio-ru.org/images/e/e8/Etool_italic.png" width="14" height="16" alt="К" />', title: '<em>Курсив</em>'}
+
   , {w: "''+''", b: '<img src="/files/e/e8/Etool_italic.png" width="14" height="16" alt="К" />', t: '<em>Курсив</em>'}
   , {wrapper: "'''+'''", button: '<img src="http://traditio-ru.org/images/1/15/Etool_bold.png" width="20" height="16" alt="Ж" />', title: '<strong>Полужирный шрифт</strong>'}, br
+
   , {w: "'''+'''", b: '<img src="/files/1/15/Etool_bold.png" width="20" height="16" alt="Ж" />', t: '<strong>Полужирный шрифт</strong>'}, br
   , {wrapper: '<sup>+</sup>', button: '<img src="http://traditio-ru.org/images/9/9b/Etool_font_superscript.png" height="16" width="16" alt="sup">', title: 'Верхний индекс'}
+
   , {w: '<sup>+</sup>', b: '<img src="/files/9/9b/Etool_font_superscript.png" height="16" width="16" alt="sup">', t: 'Верхний индекс'}
   , {wrapper: '<sub>+</sub>', button: '<img src="http://traditio-ru.org/images/6/68/Etool_font_subscript.png" height="16" width="16" alt="sub">', title: 'Нижний индекс'}   
+
   , {w: '<sub>+</sub>', b: '<img src="/files/6/68/Etool_font_subscript.png" height="16" width="16" alt="sub">', t: 'Нижний индекс'}   
   , {wrapper: '<s>+</s>', button: '<strike style="color:blue"><span style="color:black">&nbsp;a&nbsp;</span></strike>', title: 'Зачеркнуть', filler: 'Зачёркнутый текст'}  , br
+
   , {w: '<s>+</s>', b: '<strike style="color:blue"><span style="color:black">&nbsp;a&nbsp;</span></strike>', t: 'Зачеркнуть', f: 'Зачёркнутый текст'}  , br
   , {wrapper: '<code>+</code>', button: 'К', title: '<code>Код</code>'}
+
   , {w: '<code>+</code>', b: 'К', t: '<code>Код</code>'}
   , {wrapper: '<kbd>+</kbd>', button: '<img src="http://traditio-ru.org/images/c/ce/Etool_keyboard.png" height="16" width="16" alt="kbd">', title: '<kbd>Ввод пользователя</kbd>'}
+
   , {w: '<kbd>+</kbd>', b: '<img src="/files/c/ce/Etool_keyboard.png" height="16" width="16" alt="kbd">', t: '<kbd>Ввод пользователя</kbd>'}
   , {wrapper: '<abbr title="(полностью)?">+</abbr>', button: 'А', title: 'Сокращение'}   
+
   , {w: '<abbr title="(полностью)">+</abbr>', b: 'А', t: 'Сокращение'}   
   , {wrapper: '<acronym title="(полностью)?">+</acronym>', button: 'Y', title: 'Акроним'}
+
   , {w: '<acronym title="(полностью)">+</acronym>', b: 'Y', t: 'Акроним'}
 
], [
 
], [
     {title: 'Заголовки', nl: true}
+
     {t: 'Заголовки', nl: true}
   , {wrapper: '\n== + ==\n', button: '<h2 style="font-size: 130%; margin: 0">З2</h2>', title: '<h2>Заголовок 2</h2>', nl: true}
+
   , {w: '\n== + ==\n', b: '<h2 style="font-size: 130%; margin: 0">З2</h2>', t: '<h2>Заголовок 2</h2>', nl: true}
   , {wrapper: '\n=== + ===\n', button: '<h3 style="font-size: 120%; margin: 0">З3</h3>', title: '<h3 style="margin-left: 16px;">Заголовок 3</h3>', nl: true}
+
   , {w: '\n=== + ===\n', b: '<h3 style="font-size: 120%; margin: 0">З3</h3>', t: '<h3 style="margin-left: 16px;">Заголовок 3</h3>', nl: true}
   , {wrapper: '\n==== + ====\n', button: '<h4 style="font-size: 100%; margin: 0">З4</h4>', title: '<h4 style="margin-left: 32px;">Заголовок 4</h4>', nl: true}
+
   , {w: '\n==== + ====\n', b: '<h4 style="font-size: 100%; margin: 0">З4</h4>', t: '<h4 style="margin-left: 32px;">Заголовок 4</h4>', nl: true}
   , {wrapper: '\n===== + =====\n', button: '<h5 style="font-size: 90%; margin: 0">З5</h5>', title: '<h5 style="margin-left: 48px;">Заголовок 5</h5>', nl: true}
+
   , {w: '\n===== + =====\n', b: '<h5 style="font-size: 90%; margin: 0">З5</h5>', t: '<h5 style="margin-left: 48px;">Заголовок 5</h5>', nl: true}
   , {wrapper: '\n====== + ======\n', button: '<h6 style="font-size: 80%; margin: 0">З6</h6>', title: '<h6 style="margin-left: 64px;">Заголовок 6</h6>', nl: true}   
+
   , {w: '\n====== + ======\n', b: '<h6 style="font-size: 80%; margin: 0">З6</h6>', t: '<h6 style="margin-left: 64px;">Заголовок 6</h6>', nl: true}   
   , {title: 'Содержание', nl: true}
+
   , {t: 'Содержание', nl: true}
   , {wrapper: '+\n{{TOC}}\n', button: '<img src="http://traditio-ru.org/images/8/85/Etool_toc.png" height="16" width="16" alt="&Xi;">', title: 'Содержание здесь'}, br
+
   , {w: '+\n{{TOC}}\n', b: '<img src="/files/8/85/Etool_toc.png" height="16" width="16" alt="&Xi;">', t: 'Содержание здесь'}, br
   , {wrapper: '+\n{{TOCRight}}\n', button: '<img src="http://traditio-ru.org/images/f/fd/Etool_toc_right.png" height="16" width="16" alt="&Xi;&rarr;">', title: 'Содержание справа'}, br
+
   , {w: '+\n{{TOCRight}}\n', b: '<img src="/files/f/fd/Etool_toc_right.png" height="16" width="16" alt="&Xi;&rarr;">', t: 'Содержание справа'}, br
   , {wrapper: '+\n__NOTOC__\n', button: '<img src="http://traditio-ru.org/images/0/00/Etool_no_toc.png" height="16" width="16" alt="&Xi;&rarr;">', title: 'Подавить содержание'}
+
   , {w: '+\n__NOTOC__\n', b: '<img src="/files/0/00/Etool_no_toc.png" height="16" width="16" alt="&Xi;&rarr;">', t: 'Подавить содержание'}
 
], [
 
], [
     {title: 'Абзац', nl: true}
+
     {t: 'Абзац', nl: true}
   , {wrapper: '\n\n+', button: '<img src="http://traditio-ru.org/images/e/e9/Etool_red_line.png" width="16" height="16" alt="&crarr;" />', title: 'Новый абзац'}, br
+
   , {w: '\n\n+', b: '<img src="/files/e/e9/Etool_red_line.png" width="16" height="16" alt="&crarr;" />', t: 'Новый абзац'}, br
   , {wrapper: makeUL, button: '<img src="http://traditio-ru.org/images/0/0d/Etool_text_list_bullets.png" width="16" height="16" alt="*" />', title: 'Маркированный список', filler: '\nодин пункт,\nдругой пункт,\n…,\nпоследний пункт'}
+
   , {w: makeUL, b: '<img src="/files/0/0d/Etool_text_list_bullets.png" width="16" height="16" alt="*" />', t: 'Маркированный список', f: '\nодин пункт,\nдругой пункт,\n…,\nпоследний пункт'}
   , {wrapper: makeOL, button: '<img src="http://traditio-ru.org/images/3/36/Etool_text_list_numbers.png" width="16" height="16" alt="#" />', title: 'Нумерованный список', filler: '\nпервый пункт,\nвторой пункт,\n…,\nпоследний пункт'}
+
   , {w: makeOL, b: '<img src="/files/3/36/Etool_text_list_numbers.png" width="16" height="16" alt="#" />', t: 'Нумерованный список', f: '\nпервый пункт,\nвторой пункт,\n…,\nпоследний пункт'}
   , {wrapper: makeGlossary, button: '<img src="http://traditio-ru.org/images/4/42/Etool_glossary.png" width="16" height="16" alt="= ==" />', title: 'Глоссарий', filler: '\nпервый термин:определение,\nвторой термин:определение,\n…,\nпоследний термин:определение'}, br
+
   , {w: makeGlossary, b: '<img src="/files/4/42/Etool_glossary.png" width="16" height="16" alt="= ==" />', t: 'Глоссарий', f: '\nпервый термин:определение,\nвторой термин:определение,\n…,\nпоследний термин:определение'}, br
   , {wrapper: '\n{{цитата|+|источник}}', button: '<img src="http://traditio-ru.org/images/4/43/Etool_text_indent.png" width="16" height="16" alt="&rarr;text" />', title: 'Цитата', filler: 'Цитируемый текст'}
+
   , {w: '\n{{цитата|+|источник}}', b: '<img src="/files/4/43/Etool_text_indent.png" width="16" height="16" alt="&rarr;text" />', t: 'Цитата', f: 'Цитируемый текст'}
   , {wrapper: makeTable
+
   , {w: makeTable
   , button: '<img src="http://traditio-ru.org/images/b/ba/Etool_table.png" width="16" height="16" alt="table" />'
+
   , b: '<img src="/files/b/ba/Etool_table.png" width="16" height="16" alt="table" />'
   , title: 'Таблица'
+
   , t: 'Таблица'
   , filler: '\nзаголовок\n(1, nl:1)\n(2,1)'}
+
   , f: '\nзаголовок\n(1, nl:1)\n(2,1)'}
   , {url: mw.util.wikiGetlink ('Проект:Как делать таблицы'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Справка: Таблицы'}, br
+
   , {url: mw.util.getUrl ('Традиция:Как делать таблицы'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Справка: Таблицы'}, br
   , {wrapper: '<poem>+</poem>\n', button:  '<img src="http://traditio-ru.org/images/3/3b/Etool_poem.png" width="16" height="16" alt="Стихи" />', title: 'Стихи'}
+
   , {w: '<poem>+</poem>\n', b:  '<img src="/files/3/3b/Etool_poem.png" width="16" height="16" alt="Стихи" />', t: 'Стихи'}
   , {wrapper: '<source lang=(язык)">+</source>\n', button: '<img src="http://traditio-ru.org/images/a/ad/Etool_source_code.png" width="16" height="16" alt="&lt;&gt;" />', title: '<code>Исходный код</code>'}
+
   , {w: '<source lang=(язык)">+</source>\n', b: '<img src="/files/a/ad/Etool_source_code.png" width="16" height="16" alt="&lt;&gt;" />', t: '<code>Исходный код</code>'}
   , {wrapper: '<pre>+</pre>\n', button: '<img src="http://traditio-ru.org/images/2/2e/Etool_pre.png" width="16" height="16" alt="$&gt;_" />', title: '<code>Преформатированный текст</code>'}, br
+
   , {w: '<pre>+</pre>\n', b: '<img src="/files/2/2e/Etool_pre.png" width="16" height="16" alt="$&gt;_" />', t: '<code>Преформатированный текст</code>'}, br
   , {wrapper: '<nowiki>+</nowiki>', button: '<img src="http://traditio-ru.org/images/c/cb/Etool_nowiki.png" width="16" height="16" alt="&lt;/&gt;" />', title: 'Невикифицированный текст', filler: 'Сырой викитест'}
+
   , {w: '<nowiki>+</nowiki>', b: '<img src="/files/c/cb/Etool_nowiki.png" width="16" height="16" alt="&lt;/&gt;" />', t: 'Невикифицированный текст', f: 'Сырой викитест'}
   , {wrapper: '\n<!--\n+\n--' + '>\n', button: '<img src="http://traditio-ru.org/images/5/5f/Etool_comment.png" height="16" width="16" alt="books">', title: 'Комментарий HTML', filler: 'Комментарий HTML (не обрабатывается парсером)'}, br
+
   , {w: '\n<!--\n+\n--' + '>\n', b: '<img src="/files/5/5f/Etool_comment.png" height="16" width="16" alt="books">', t: 'Комментарий HTML', f: 'Комментарий HTML (не обрабатывается парсером)'}, br
   , {wrapper: '<br />', button: '<img src="http://traditio-ru.org/images/e/e3/Etool_br.png" width="11" height="16" alt="&crarr;" />', title: 'Перевод строки'}   
+
   , {w: '<br />', b: '<img src="/files/e/e3/Etool_br.png" width="11" height="16" alt="&crarr;" />', t: 'Перевод строки'}   
   , {url: mw.util.wikiGetlink ('Проект:Вики-разметка'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Справка: Вики-разметка', nl: true}     
+
   , {url: mw.util.getUrl ('Традиция:Вики-разметка'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Справка: Вики-разметка', nl: true}     
 
], [
 
], [
     {title: 'Ссылки', nl: true}
+
     {t: 'Ссылки', nl: true}
   , {wrapper: '[[+]]', button: '<img src="http://traditio-ru.org/images/4/41/Etool_link.png" height="16" width="16" alt="[[]]">', title: 'Вставить викиссылку', filler: 'Статья «Традиции»'}, br
+
   , {w: '[[+]]', b: '<img src="/files/4/41/Etool_link.png" height="16" width="16" alt="[[]]">', t: 'Вставить викиссылку', f: 'Статья «Традиции»'}, br
   , {wrapper: '[+ (описание ссылки)]', button: '<img src="http://traditio-ru.org/images/3/3b/Etool_world_link.png" height="16" width="16" alt="&rarr;www">', title: 'Внешняя ссылка', filler: '(url)'}
+
   , {w: '[+ (описание ссылки)]', b: '<img src="/files/3/3b/Etool_world_link.png" height="16" width="16" alt="&rarr;www">', t: 'Внешняя ссылка', f: '(url)'}
   , {wrapper: '<span class="plainlinks">[+ (описание ссылки)]</span>', button: '<img src="http://traditio-ru.org/images/e/e6/Etool_www_page.png" height="16" width="16" alt="&rarr;www">', title: 'Внешняя ссылка без значка', filler: '(url)'}
+
   , {w: '<span class="plainlinks">[+ (описание ссылки)]</span>', b: '<img src="/files/e/e6/Etool_www_page.png" height="16" width="16" alt="&rarr;www">', t: 'Внешняя ссылка без значка', f: '(url)'}
   , {title: 'Сноски', nl: true}
+
   , {t: 'Сноски', nl: true}
   , {wrapper: '<ref>+</ref>', button: '<img src="http://traditio-ru.org/images/0/02/Etool_bookmark.png" width="16" height="16" alt="Сноска" />', title: 'Сноска', filler: 'Текст сноски'}
+
   , {w: '<ref>+</ref>', b: '<img src="/files/0/02/Etool_bookmark.png" width="16" height="16" alt="Сноска" />', t: 'Сноска', f: 'Текст сноски'}
   , {wrapper: '{{тчк}}<ref>+</ref>', button: '<span style="margin-right: -0.21em">.</span><sup class="reference">[1]</sup>', title: 'Точка и сноска', filler: 'Текст сноски'}
+
   , {w: '{{тчк}}<ref>+</ref>', b: '<span style="margin-right: -0.21em">.</span><sup class="reference">[1]</sup>', t: 'Точка и сноска', f: 'Текст сноски'}
   , {wrapper: '{{,}}<ref>+</ref>', button: '<span style="margin-right: -0.21em">,</span><sup class="reference">[1]</sup>', title: 'Запятая и сноска', filler: 'Текст сноски'}
+
   , {w: '{{,}}<ref>+</ref>', b: '<span style="margin-right: -0.21em">,</span><sup class="reference">[1]</sup>', t: 'Запятая и сноска', f: 'Текст сноски'}
   , {title: 'Источники', nl: true}
+
   , {t: 'Источники', nl: true}
   , {wrapper: '{{статья|автор=|заглавие=|оригинал=|ссылка=+|издание=|тип=|место={{М.}}|год=[[]]|том=|номер=|страницы=}}', button: '<img src="http://traditio-ru.org/images/d/d6/Etool_newspaper_link.png" height="16" width="16" alt="&rarr;[P]">', title: 'Статья', filler: '(url)'}
+
   , {w: '{{статья|автор=|заглавие=|оригинал=|ссылка=+|издание=|тип=|место={{М.}}|год=[[]]|том=|номер=|страницы=}}', b: '<img src="/files/d/d6/Etool_newspaper_link.png" height="16" width="16" alt="&rarr;[P]">', t: 'Статья', f: '(url)'}
   , {wrapper: '{{книга|автор=|часть=|заглавие=|оригинал=|язык_оригинала=|язык_оригинала_сокращённо=|переводчик=|ссылка=+|издание=|место={{М.}}|издательство=|год=[[]]|страницы=|isbn=}}', button: '<img src="http://traditio-ru.org/images/c/cd/Etool_book_link.png" height="16" width="16" alt="&rarr;[B]">', title: 'Книга', filler: '(url)'}
+
   , {w: '{{книга|автор=|часть=|заглавие=|оригинал=|язык_оригинала=|язык_оригинала_сокращённо=|переводчик=|ссылка=+|издание=|место={{М.}}|издательство=|год=[[]]|страницы=|isbn=}}', b: '<img src="/files/c/cd/Etool_book_link.png" height="16" width="16" alt="&rarr;[B]">', t: 'Книга', f: '(url)'}
   , {wrapper: '{{cite_news|first=|last=|authorlink=|author=|coauthors=|title=|url=+|format=|work=|publisher=|location=|id=|pages=|page=|date=|accessdate=|language=|quote=|archiveurl=|archivedate=}}', button: '<img src="http://traditio-ru.org/images/d/d6/Etool_newspaper_link.png" height="16" width="16" alt="&rarr;[P]">', title: 'Новость', filler: '(url)'}
+
   , {w: '{{cite_news|first=|last=|authorlink=|author=|coauthors=|title=|url=+|format=|work=|publisher=|location=|id=|pages=|page=|date=|accessdate=|language=|quote=|archiveurl=|archivedate=}}', b: '<img src="/files/d/d6/Etool_newspaper_link.png" height="16" width="16" alt="&rarr;[P]">', t: 'Новость', f: '(url)'}
   , {wrapper: '{{cite_web|first=|last=|authorlink=|author=|coauthors=|title=|url=+|format=|work=|publisher=|location=|id=|pages=|page=|date=|accessdate=|language=|quote=|archiveurl=|archivedate=}}', button: '<img src="http://traditio-ru.org/images/5/58/Etool_page_link.png" width="16" height="16" alt="&rarr;text" />', title: 'WWW', filler: '(url)'}
+
   , {w: '{{cite_web|first=|last=|authorlink=|author=|coauthors=|title=|url=+|format=|work=|publisher=|location=|id=|pages=|page=|date=|accessdate=|language=|quote=|archiveurl=|archivedate=}}', b: '<img src="/files/5/58/Etool_page_link.png" width="16" height="16" alt="&rarr;text" />', t: 'WWW', f: '(url)'}
   , {title: 'Блоги и форумы', nl: true}
+
   , {t: 'Блоги и форумы', nl: true}
   , {wrapper: '{{Lj user|+}}', button: '<img src="http://traditio-ru.org/images/c/cd/Etool_user.png" width="16" height="16" alt="ЖЖuser" />', title: 'Пользователь ЖЖ', filler: '(ник)'}
+
   , {w: '{{lj user|+}}', b: '<img src="/files/c/cd/Etool_user.png" width="16" height="16" alt="ЖЖuser" />', t: 'Пользователь ЖЖ', f: '(ник)'}
   , {wrapper: '{{Lj comm|+}}', button: '<img src="http://traditio-ru.org/images/4/4b/Etool_group_link.png" height="16" width="16" alt="ЖЖС">', title: 'Сообщество ЖЖ', filler: '(ник)'}
+
   , {w: '{{lj comm|+}}', b: '<img src="/files/4/4b/Etool_group_link.png" height="16" width="16" alt="ЖЖС">', t: 'Сообщество ЖЖ', f: '(ник)'}
   , {wrapper: '{{Lj post|ник=+|№=|название=|автор=|дата=}}', button: '<img src="http://traditio-ru.org/images/d/d6/Etool_livejournal.png" height="16" width="16" alt="ЖЖ">', title: 'Запись ЖЖ', filler: '(ник автора)'}, br
+
   , {w: '{{lj post|ник=+|№=|название=|автор=|дата=}}', b: '<img src="/files/d/d6/Etool_livejournal.png" height="16" width="16" alt="ЖЖ">', t: 'Запись ЖЖ', f: '(ник автора)'}, br
   , {wrapper: '{{Ljr user|+}}', button: '<img src="http://traditio-ru.org/images/d/d4/Etool_user_red.png" width="16" height="16" alt="ЖЖР user" />', title: 'Пользователь ЖЖР', filler: '(ник)'}
+
   , {w: '{{ljr user|+}}', b: '<img src="/files/d/d4/Etool_user_red.png" width="16" height="16" alt="ЖЖР user" />', t: 'Пользователь ЖЖР', f: '(ник)'}
   , {wrapper: '{{Ljr comm|+}}', button: '<img src="http://traditio-ru.org/images/4/4b/Etool_group_link.png" height="16" width="16" alt="ЖЖРС">', title: 'Сообщество ЖЖР', filler: '(ник)'}, br
+
   , {w: '{{ljr comm|+}}', b: '<img src="/files/4/4b/Etool_group_link.png" height="16" width="16" alt="ЖЖРС">', t: 'Сообщество ЖЖР', f: '(ник)'}, br
   , {wrapper: '{{ФИГШ:пост|№_поста|+}}', button: 'Пост ФИГШ', title: null, filler: '(название)'}
+
   , {w: '{{ФИГШ:пост|№_поста|+}}', b: 'Пост ФИГШ', t: null, f: '(название)'}
   , {wrapper: '{{ФИГШ:тема|№_темы|+}}', button: 'Тема ФИГШ', title: null, filler: '(название)'}
+
   , {w: '{{ФИГШ:тема|№_темы|+}}', b: 'Тема ФИГШ', t: null, f: '(название)'}
   , {title: 'См. также в', nl: true}   
+
   , {t: 'См. также в', nl: true}   
   , {wrapper: '{{См. также в|tsdne=+}}\n', button: 'ТСДНЭ', title: null, filler: '(название)'}
+
   , {w: '{{См. также в|tsdne=+}}\n', b: 'ТСДНЭ', t: null, f: '(название)'}
   , {wrapper: '{{См. также в|nmp=+}}\n', button: 'НМП', title: null, filler: '(название)'}
+
   , {w: '{{См. также в|nmp=+}}\n', b: 'НМП', t: null, f: '(название)'}
   , {title: 'Запросы источников', nl: true}
+
   , {t: 'Запросы источников', nl: true}
 
   , '{{Источник}} {{Кто?}} {{Когда?}}'
 
   , '{{Источник}} {{Кто?}} {{Когда?}}'
   , {title: 'Разделы сносок и источников', nl: true}
+
   , {t: 'Разделы сносок и источников', nl: true}
   , {wrapper: '\n== Ссылки ==\n* ', button: '<img src="http://traditio-ru.org/images/9/91/Etool_books.png" height="16" width="16" alt="books">', title: 'Ссылки'}
+
   , {w: '\n== Ссылки ==\n* ', b: '<img src="/files/9/91/Etool_books.png" height="16" width="16" alt="books">', t: 'Ссылки'}
   , {title: 'Автосписки: ', nl: true}
+
   , {t: 'Автосписки: ', nl: true}
   , {wrapper: '{{автобиблиография}}\n', button: 'библиография'}
+
   , {w: '{{автобиблиография}}\n', b: 'библиография'}
   , {wrapper: '{{список текстов по теме}}\n', button: 'тексты'}
+
   , {w: '{{список текстов по теме}}\n', b: 'тексты по теме'}
   , {wrapper: '\n== Примечания ==\n{{примечания}}\n', button: '<img src="http://traditio-ru.org/images/3/38/Etool_column_one.png" height="16" width="16" alt="books">', title: 'Примечания'}
+
   , {w: '{{тексты автора}}\n', b: 'тексты автора'} 
   , {wrapper: '\n== Примечания ==\n{{примечания|2}}\n', button: '<img src="http://traditio-ru.org/images/7/7d/Etool_column_two.png" height="16" width="16" alt="books">', title: 'Примечания в 2 столбца'}   
+
  , {w: '\n== Примечания ==\n{{примечания}}\n', b: '<img src="/files/3/38/Etool_column_one.png" height="16" width="16" alt="books">', t: 'Примечания'}
   , {title: 'Цитирование', nl: true}
+
   , {w: '\n== Примечания ==\n{{примечания|2}}\n', b: '<img src="/files/7/7d/Etool_column_two.png" height="16" width="16" alt="books">', t: 'Примечания в 2 столбца'}   
   , {wrapper: '\n{{цитата|+|источник}}', button: '<img src="http://traditio-ru.org/images/0/05/Etool_document_quote.png" height="16" width="16" alt="books">', title: 'Цитата', filler: 'Цитируемый текст'}, br
+
   , {t: 'Цитирование', nl: true}
   , {title: 'Кавычки:'}
+
   , {w: '\n{{цитата|+|источник}}', b: '<img src="/files/0/05/Etool_document_quote.png" height="16" width="16" alt="books">', t: 'Цитата', f: 'Цитируемый текст'}, br
   , {wrapper: '<q>+</q>', button: '«<span class="plus_sign">a</span>»', title: 'Универсальные', filler: 'Текст в кавычках'}
+
   , {t: 'Кавычки:'}
   , {wrapper: '«+»', button: '«<span class="plus_sign">a</span>»', title: 'Обычные', filler: 'Текст в кавычках'}   
+
   , {w: '<q>+</q>', b: '«<span class="plus_sign">a</span>»', t: 'Универсальные', f: 'Текст в кавычках'}
   , {wrapper: '„+“', button: '„<span class="plus_sign">a</span>“', title: 'Вложенные', filler: 'Текст в кавычках второго уровня'}, br
+
   , {w: '«+»', b: '«<span class="plus_sign">a</span>»', t: 'Обычные', f: 'Текст в кавычках'}   
   , {wrapper: '“+”', button: '“<span class="plus_sign">a</span>”', title: 'Английские', filler: 'Текст в кавычках внутри английского текста'}
+
   , {w: '„+“', b: '„<span class="plus_sign">a</span>“', t: 'Вложенные', f: 'Текст в кавычках второго уровня'}, br
   , {wrapper: '»+«', button: '»<span class="plus_sign">a</span>«', title: 'Немецкие', filler: 'Текст в кавычках внутри немецкого текста'}, br
+
   , {w: '“+”', b: '“<span class="plus_sign">a</span>”', t: 'Английские', f: 'Текст в кавычках внутри английского текста'}
   , {wrapper: '{{current}}', button: '<img src="http://traditio-ru.org/images/0/02/Current_event_marker.png" alt="!" height="16" width="21" />', title: 'Текущие события'}
+
   , {w: '»+«', b: '»<span class="plus_sign">a</span>«', t: 'Немецкие', f: 'Текст в кавычках внутри немецкого текста'}, br
   , {url: mw.util.wikiGetlink ('Справка:Примечания и сноски'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Справка: Примечания и сноски', nl: true}
+
   , {w: '{{current}}', b: '<img src="/files/0/02/Current_event_marker.png" alt="!" height="16" width="21" />', t: 'Текущие события'}
 +
   , {url: mw.util.getUrl ('Справка:Примечания и сноски'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Справка: Примечания и сноски', nl: true}
 
], separator, [
 
], separator, [
     {button: '<img src="http://traditio-ru.org/images/c/c7/Etool_image.png" width="16" height="16" alt="Файл" />', title: 'Изображения', nl: true}
+
     {b: '<img src="/files/c/c7/Etool_image.png" width="16" height="16" alt="Файл" />', t: 'Изображения', nl: true}
   , {wrapper: '{{Файл|+|ширина|right}}', button: '<img src="http://traditio-ru.org/images/c/c7/Etool_image.png" width="16" height="16" alt="-[]-" />', title: 'Универсальное изображение', filler: 'Имя файла'}
+
   , {w: '{{Файл|+|ширина|right}}', b: '<img src="/files/c/c7/Etool_image.png" width="16" height="16" alt="-[]-" />', t: 'Универсальное изображение', f: 'Имя файла'}
   , {wrapper: '[[Файл:+|thumb|(размер)px|(описание)]]', button: '<img src="http://traditio-ru.org/images/d/d7/Etool_image_right.png" width="16" height="16" alt="-[]-" />', title: 'Изображение справа', filler: 'Имя файла'}
+
   , {w: '[[Файл:+|thumb|(размер)px|(описание)]]', b: '<img src="/files/d/d7/Etool_image_right.png" width="16" height="16" alt="-[]-" />', t: 'Изображение справа', f: 'Имя файла'}
   , {wrapper: '[[Файл:+|thumb|center|(размер)px|(описание)]]', button: '<img src="http://traditio-ru.org/images/8/88/Etool_image_center.png" width="16" height="16" alt="-[]-" />', title: 'Изображение в центре', filler: 'Имя файла'}
+
   , {w: '[[Файл:+|thumb|center|(размер)px|(описание)]]', b: '<img src="/files/8/88/Etool_image_center.png" width="16" height="16" alt="-[]-" />', t: 'Изображение в центре', f: 'Имя файла'}
   , {wrapper: '[[Файл:+|(размер)px]]', button: '<img src="http://traditio-ru.org/images/a/aa/Etool_inline_image.png" height="16" width="17" alt="=[]=">', title: 'Внутристрочное изображение', filler: 'Имя файла'}, br
+
   , {w: '[[Файл:+|(размер)px]]', b: '<img src="/files/a/aa/Etool_inline_image.png" height="16" width="17" alt="=[]=">', t: 'Внутристрочное изображение', f: 'Имя файла'}, br
   , {wrapper: '{{Строчный блок|[[Файл:+|thumb|center|(размер)px|(описание)]]}}', button: '<img src="http://traditio-ru.org/images/8/83/Etool_inline_block_image.png" height="16" width="17" alt="[][][]">', title: 'Изображение в строчном блоке', filler: 'Имя файла'}, br
+
   , {w: '{{Строчный блок|[[Файл:+|thumb|center|(размер)px|(описание)]]}}', b: '<img src="/files/8/83/Etool_inline_block_image.png" height="16" width="17" alt="[][][]">', t: 'Изображение в строчном блоке', f: 'Имя файла'}, br
   , {wrapper: '\n<gallery>+</gallery>\n', button: '<img src="http://traditio-ru.org/images/d/d6/Etool_images.png" height="16" width="16" alt="[][][]">', title: 'Галерея', filler: 'Список файлов'}
+
   , {w: '\n<gallery>+</gallery>\n', b: '<img src="/files/d/d6/Etool_images.png" height="16" width="16" alt="[][][]">', t: 'Галерея', f: 'Список файлов'}
   , {wrapper: '{{изображения}}', button: '<img src="http://traditio-ru.org/images/d/d6/Etool_images.png" height="16" width="16" alt="v[][][]">', title: 'Автоматическая галерея'}
+
   , {w: '{{изображения}}', b: '<img src="/files/d/d6/Etool_images.png" height="16" width="16" alt="[][][]">', t: 'Автоматическая галерея'}
   , {url: mw.util.wikiGetlink ('Справка:Изображения'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Справка: Изображения', nl: true}
+
   , {url: mw.util.getUrl ('Справка:Изображения'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Справка: Изображения', nl: true}
 
], [
 
], [
     {button: '<img src="http://traditio-ru.org/images/0/0f/Etool_youtube.png" height="16" width="16" alt="YouTube">', title: 'Видео YouTube', nl: true}
+
     {b: '<img src="/files/0/0f/Etool_youtube.png" height="16" width="16" alt="YouTube">', t: 'Видео YouTube', nl: true}
   , {wrapper: '{{YouTube|+|ширина=(ширина)|(описание)}}', button: '<img src="http://traditio-ru.org/images/5/51/Etool_youtube_right.png" height="16" width="19" alt="film&rarr;">', title: 'YouTube справа', filler: 'Номер ролика'}
+
   , {w: '{{YouTube|+|ширина=(ширина)|(описание)}}', b: '<img src="/files/5/51/Etool_youtube_right.png" height="16" width="19" alt="film&rarr;">', t: 'YouTube справа', f: 'Номер ролика'}
   , {wrapper: '{{YouTube|+|ширина=(ширина)|(описание)|центр=да}}', button: '<img src="http://traditio-ru.org/images/5/5c/Etool_youtube_centered.png" height="15" width="16" alt="film">', title: 'YouTube в центре', filler: 'Номер ролика'}
+
   , {w: '{{YouTube|+|ширина=(ширина)|(описание)|центр=да}}', b: '<img src="/files/5/5c/Etool_youtube_centered.png" height="15" width="16" alt="film">', t: 'YouTube в центре', f: 'Номер ролика'}
   , {wrapper: '{{Строчный блок|{{YouTube|+|ширина=(ширина)|(описание)|центр=да}}}}', button: '<img src="http://traditio-ru.org/images/b/bf/Etool_youtube_inline.png" height="16" width="32" alt="film">', title: 'YouTube в строчном блоке', filler: 'Номер ролика'}
+
   , {w: '{{Строчный блок|{{YouTube|+|ширина=(ширина)|(описание)|центр=да}}}}', b: '<img src="/files/b/bf/Etool_youtube_inline.png" height="16" width="32" alt="film">', t: 'YouTube в строчном блоке', f: 'Номер ролика'}, br
   , {url: mw.util.wikiGetlink ('Справка:Видео'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Справка: Видео', nl: true}
+
  , {w: '{{VKontakte|+|id|hash|подпись|ширина=}}', b: '<img src="/files/d/d0/VK_video_icon.png" height="16" width="29" alt="film&rarr;">', t: 'VKontakte справа', f: 'id ролика'}
 +
   , {url: mw.util.getUrl ('Справка:Видео'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Справка: Видео', nl: true}
 +
  , {b: '<img src="/files/b/bf/Music-beam-16.png" height="16" width="16" alt="Ноты">', t: 'Ноты', nl: true}
 +
  , {b: '<img src="/files/b/bf/Music-beam-16.png" height="16" width="16" alt="Ноты">', w: '<score lang="lilypond" raw="" midi="" vorbis="">+</score>', t: 'Ноты lilypond', f: 'Ноты lilypond'}
 +
  , {b: '<img src="/files/b/bf/Music-beam-16.png" height="16" width="16" alt="Ноты">', w: '<score lang="ABC" raw="" midi="" vorbis="">+</score>', t: 'Ноты ABC', f: 'Ноты ABC'}
 +
  , {url: mw.util.getUrl ('Справка:Ноты'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Справка: Ноты', nl: true}
 
], [
 
], [
     {button: '<img src="http://traditio-ru.org/images/f/fe/Etool_globe_model.png" height="16" width="16" alt="[M]">', title: 'Карта WikiLeaflet', nl: true}
+
     {b: '<img src="/files/f/fe/Etool_globe_model.png" height="16" width="16" alt="[M]">', t: 'Карта WikiLeaflet', nl: true}
   , {wrapper: '{{wl|\n+\n}}', button: '<img src="http://traditio-ru.org/images/1/15/Etool_map.png" height="16" width="16" alt="[M]">', title: 'Вставить карту', filler: 'Содержимое карты — дополнительные вызовы {{wl}}.'}, br
+
   , {w: '{{wl|\n+\n}}', b: '<img src="/files/1/15/Etool_map.png" height="16" width="16" alt="[M]">', t: 'Вставить карту', f: 'Содержимое карты — дополнительные вызовы {{wl}}.'}, br
   , {wrapper: '{{wl|точка|+|долгота|текст|тип|надпись=надпись}}', button: '<img src="http://traditio-ru.org/images/3/32/Etool_location_pin.png" height="16" width="16" alt="P">', title: 'Поставить значок', filler: 'широта'}
+
   , {w: '{{wl|точка|+|долгота|текст|тип|надпись=надпись}}', b: '<img src="/files/3/32/Etool_location_pin.png" height="16" width="16" alt="P">', t: 'Поставить значок', f: 'широта'}
   , {wrapper: '{{wl|значок|+|файл|ширина|высота|тень|ширина тени|высота тени|сдвиг значка x|сдвиг значка y|сдвиг тени от пузыря x|сдвиг тени от пузыря y|надпись=надпись}}L', button: '<img src="http://traditio-ru.org/images/b/b4/Etool_legend.png" height="16" width="16" alt="...">', title: 'Определить значок', filler: 'идентификатор значка'}, br
+
   , {w: '{{wl|значок|+|файл|ширина|высота|тень|ширина тени|высота тени|сдвиг значка x|сдвиг значка y|сдвиг тени от пузыря x|сдвиг тени от пузыря y|надпись=надпись}}L', b: '<img src="/files/b/b4/Etool_legend.png" height="16" width="16" alt="...">', t: 'Определить значок', f: 'идентификатор значка'}, br
   , {wrapper: '{{wl|центр|+|долгота|увеличение}}', button: '<img src="http://traditio-ru.org/images/b/be/Etool_compass.png" height="16" width="16" alt="compass">', title: 'Центр и масштаб', filler: 'широта'}
+
   , {w: '{{wl|центр|+|долгота|увеличение}}', b: '<img src="/files/b/be/Etool_compass.png" height="16" width="16" alt="compass">', t: 'Центр и масштаб', f: 'широта'}
   , {wrapper: '{{wl|высота|+}}', button: '<img src="http://traditio-ru.org/images/7/77/Etool_vrule.png" width="16" height="16" alt="Файл" />', title: 'Высота', filler: 'целая высота карты в пикселах'}
+
   , {w: '{{wl|высота|+}}', b: '<img src="/files/7/77/Etool_vrule.png" width="16" height="16" alt="Файл" />', t: 'Высота', f: 'целая высота карты в пикселах'}
   , {wrapper: '{{wl|редактор}}', button: '<img src="http://traditio-ru.org/images/e/e1/Etool_map_edit.png" height="16" width="16" alt="[M]/">', title: 'Возможность редактировать', filler: '-'}, br   
+
   , {w: '{{wl|редактор}}', b: '<img src="/files/e/e1/Etool_map_edit.png" height="16" width="16" alt="[M]/">', t: 'Возможность редактировать', f: '-'}, br   
   , {title: 'Тайлы от:'}
+
   , {t: 'Тайлы от:'}
   , {wrapper: '{{wl|тайлы|osm}}', button: '<img src="http://traditio-ru.org/images/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', title: 'osm'}
+
   , {w: '{{wl|тайлы|osm}}', b: '<img src="/files/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', t: 'osm'}
   /*, {wrapper: '{{wl|тайлы|local}}', button: '<img src="http://traditio-ru.org/images/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', title: 'сервер «Традиции»'}*/
+
   /*, {w: '{{wl|тайлы|local}}', b: '<img src="/files/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', t: 'сервер «Традиции»'}*/
   , {wrapper: '{{wl|тайлы|osmarender}}', button: '<img src="http://traditio-ru.org/images/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', title: 'osmarender'}
+
   , {w: '{{wl|тайлы|osmarender}}', b: '<img src="/files/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', t: 'osmarender'}
   , {wrapper: '{{wl|тайлы|cycle}}', button: '<img src="http://traditio-ru.org/images/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', title: 'cycle'}
+
   , {w: '{{wl|тайлы|cycle}}', b: '<img src="/files/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', t: 'cycle'}
   , {wrapper: '{{wl|тайлы|mapquest}}', button: '<img src="http://traditio-ru.org/images/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', title: 'mapquest'}
+
   , {w: '{{wl|тайлы|mapquest}}', b: '<img src="/files/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', t: 'mapquest'}
   , {wrapper: '{{wl|тайлы|openaerial}}', button: '<img src="http://traditio-ru.org/images/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', title: 'openaerial'}
+
   , {w: '{{wl|тайлы|openaerial}}', b: '<img src="/files/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', t: 'openaerial'}
   , {wrapper: '{{wl|тайлы|osmosnimki}}', button: '<img src="http://traditio-ru.org/images/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', title: 'osmosnimki'}
+
   , {w: '{{wl|тайлы|osmosnimki}}', b: '<img src="/files/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', t: 'osmosnimki'}
   , {wrapper: '{{wl|тайлы|kosmosnimki}}', button: '<img src="http://traditio-ru.org/images/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', title: 'kosmosnimki'}
+
   , {w: '{{wl|тайлы|kosmosnimki}}', b: '<img src="/files/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', t: 'kosmosnimki'}
   , {wrapper: '{{wl|тайлы|openmapsurfer}}', button: '<img src="http://traditio-ru.org/images/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', title: 'openmapsurfer'}
+
   , {w: '{{wl|тайлы|openmapsurfer}}', b: '<img src="/files/b/b8/Etool_server_database.png" height="16" width="16" alt="&larr;S">', t: 'openmapsurfer'}
 
   , br
 
   , br
 
   , '{{wl|меню|+}} {{wl|фильтры|+}} {{wl|пункт|+}} {{wl|GeoJSON|<nowiki>+</nowiki>}}'
 
   , '{{wl|меню|+}} {{wl|фильтры|+}} {{wl|пункт|+}} {{wl|GeoJSON|<nowiki>+</nowiki>}}'
   , {url: mw.util.wikiGetlink ('Справка:Карты'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Справка: Карты', nl: true}
+
   , {url: mw.util.getUrl ('Справка:Карты'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Справка: Карты', nl: true}
 
], separator, [
 
], separator, [
     {button: '', title: 'Вики', nl: true}
+
     {b: '', t: 'Вики', nl: true}
   , {wrapper: '#перенаправление [[+]]', button: '<img src="http://traditio-ru.org/images/4/40/Etool_document_redirect.png" height="16" width="16" alt="&crarr;">', title: 'Перенаправление', filler: 'На какую статью перенаправить'}, br
+
   , {w: '#перенаправление [[+]]', b: '<img src="/files/4/40/Etool_document_redirect.png" height="16" width="16" alt="&crarr;">', t: 'Перенаправление', f: 'На какую статью перенаправить'}, br
   , {wrapper: '{{другие значения|+}}', button: 'Др. зн.', title: 'Есть другие значения'}
+
   , {w: '{{другие значения|+}}', b: 'Др. зн.', t: 'Есть другие значения'}
   , {wrapper: '{{неоднозначность}}', button: '<img src="http://traditio-ru.org/images/thumb/5/5f/Disambig_gray.svg/16px-Disambig_gray.svg.png" height="16" width="16" alt="?E">', title: 'Неоднозначность'}, br,
+
   , {w: '{{неоднозначность}}', b: '<img src="/files/thumb/5/5f/Disambig_gray.svg/16px-Disambig_gray.svg.png" height="16" width="16" alt="E">', t: 'Неоднозначность'}, br,
   , {wrapper: '{{main|+}}', button: '<img src="http://traditio-ru.org/images/3/32/Icons-mini-icon_2main.png" height="16" width="16" alt="?&rarr;">', title: 'Основная статья'},
+
   , {w: '{{main|+}}', b: '<img src="/files/3/32/Icons-mini-icon_2main.png" height="16" width="16" alt="&rarr;">', t: 'Основная статья'},
   , {wrapper: '{{обзор|+}}', button: '<img src="http://traditio-ru.org/images/a/a9/Icons-mini-icon_2brief.png" height="16" width="16" alt="?&uarr;">', title: 'Обзор'}, br
+
   , {w: '{{обзор|+}}', b: '<img src="/files/a/a9/Icons-mini-icon_2brief.png" height="16" width="16" alt="&uarr;">', t: 'Обзор'}, br
   , {wrapper: '{{+}}', button: '<img src="http://traditio-ru.org/images/2/21/Etool_template.png" height="16" width="41" alt="{{*}}">', title: 'Вызвать шаблон', filler: 'Шаблон'}
+
   , {w: '{{+}}', b: '<img src="/files/2/21/Etool_template.png" height="16" width="41" alt="{{*}}">', t: 'Вызвать шаблон', f: 'Шаблон'}
   , {wrapper: '{{!}}', title: '| для передачи в шаблон', filler: '-'}, br     
+
   , {w: '{{!}}', t: '| для передачи в шаблон', f: '-'}, br     
   , {wrapper: '\n[[Категория:+]]', button: '<img src="http://traditio-ru.org/images/3/32/Etool_bookshelf.png" width="16" height="16" alt="Добавить категорию" />', title: 'Добавить категорию', filler: 'Категория'}, br
+
   , {w: '\n[[Категория:+]]', b: '<img src="/files/3/32/Etool_bookshelf.png" width="16" height="16" alt="Добавить категорию" />', t: 'Добавить категорию', f: 'Категория'}, br
   , {wrapper: '\n{{DISPLAYTITLE:+}}', button: '<img src="http://traditio-ru.org/images/7/78/Etool_displaytitle.png" height="16" width="16" alt="&lt;&gt;">', title: 'Отображаемое название'}
+
   , {w: '\n{{DISPLAYTITLE:+}}', b: '<img src="/files/7/78/Etool_displaytitle.png" height="16" width="16" alt="&lt;&gt;">', t: 'Отображаемое название'}
   , {wrapper: '\n{{DEFAULTSORT:+}}', button: '<img src="http://traditio-ru.org/images/a/a2/Etool_page_key.png" height="16" width="16" alt="&uarr;&darr;">', title: 'Ключ сортировки'}, br
+
   , {w: '\n{{DEFAULTSORT:+}}', b: '<img src="/files/a/a2/Etool_page_key.png" height="16" width="16" alt="&uarr;&darr;">', t: 'Ключ сортировки'}, br
   , {button: '', title: 'Заготовки и черновики', nl: true}
+
   , {b: '', t: 'Заготовки и черновики', nl: true}
   , {wrapper: '{{заготовка}}', button: '<img src="http://traditio-ru.org/images/thumb/9/9d/Blank_template.gif/16px-Blank_template.gif" height="16" width="16" alt="&lt;!&gt;">', title: 'Заготовка'}
+
   , {w: '{{заготовка}}', b: '<img src="/files/thumb/9/9d/Blank_template.gif/16px-Blank_template.gif" height="16" width="16" alt="&lt;!&gt;">', t: 'Заготовка'}
   , {wrapper: '{{черновик}}', button: '<img src="http://traditio-ru.org/images/7/73/Etool_construction.png" height="16" width="16" alt="&lt;!&gt;">', title: 'Черновик'}   
+
   , {w: '{{черновик}}', b: '<img src="/files/7/73/Etool_construction.png" height="16" width="16" alt="&lt;!&gt;">', t: 'Черновик'}   
   , {wrapper: '{{сборник ссылок}}', button: '<img src="http://traditio-ru.org/images/thumb/Asymmetrical_symbol_of_Chaos.ant.svg/16px-Asymmetrical_symbol_of_Chaos.ant.svg.png" height="16" width="16" alt="&lt;!&gt;">', title: 'Сборник ссылок'}   
+
   , {w: '{{сборник ссылок}}', b: '<img src="/files/thumb/Asymmetrical_symbol_of_Chaos.ant.svg/16px-Asymmetrical_symbol_of_Chaos.ant.svg.png" height="16" width="16" alt="&lt;!&gt;">', t: 'Сборник ссылок'}   
   , {wrapper: '{{Написал|+}}', button: '<img src="http://traditio-ru.org/images/3/3d/Etool_document_signature.png" height="16" width="16" alt="~">', title: 'Написал', filler: '(автор)'}
+
   , {w: '{{Написал|+}}', b: '<img src="/files/3/3d/Etool_document_signature.png" height="16" width="16" alt="~">', t: 'Написал', f: '(автор)'}
 
],
 
],
wgTitle.indexOf (':') > -1 ? [
+
mw.config.get ('wgTitle') && mw.config.get ('wgTitle').indexOf (':') > -1 ? [
     {button: '<img src="http://traditio-ru.org/images/6/66/Etool_infobox.png" alt="К" width="14" height="16" />', title: 'Карточка текста', wrapper: '{{Текст\n'
+
     {b: '<img src="/files/6/66/Etool_infobox.png" alt="К" width="14" height="16" />', t: 'Карточка текста', w: '{{Текст\n'
 
+ '    | название          = (название всего текста, по умолчанию часть названия страницы после двоеточия)\n'
 
+ '    | название          = (название всего текста, по умолчанию часть названия страницы после двоеточия)\n'
 
+ '    | оригинал названия = (название на языке, с которого переведён текст)\n'
 
+ '    | оригинал названия = (название на языке, с которого переведён текст)\n'
Строка 409: Строка 421:  
+ '    | источник эпиграфа = (источник эпиграфа)\n'
 
+ '    | источник эпиграфа = (источник эпиграфа)\n'
 
+ '    | обложка          = (название файла, содержащего изображение обложки)\n'
 
+ '    | обложка          = (название файла, содержащего изображение обложки)\n'
+ '    | ширина обложки    = (ширина изображения обложки, по умолчанию — 200 px)\n'
   
+ '    | предмет          = Предмет текста\n'
 
+ '    | предмет          = Предмет текста\n'
 
+ '    | примечание        = (примечание об истории текста и т.п.)\n'
 
+ '    | примечание        = (примечание об истории текста и т.п.)\n'
Строка 417: Строка 428:  
+ '    | аудио            = (ссылка на звуковой файл с чтением текста)\n'
 
+ '    | аудио            = (ссылка на звуковой файл с чтением текста)\n'
 
+ '}}\n'}
 
+ '}}\n'}
   , {url: mw.util.wikiGetlink ('Справка:Тексты'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Справка: Тексты', nl: true}
+
   , {url: mw.util.getUrl ('Справка:Тексты'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Справка: Тексты', nl: true}
 
] : null
 
] : null
, wgNamespaceNumber == 10 || wgNamespaceNumber == 156 ? [
+
, mw.config.get ('wgNamespaceNumber') === 10 || mw.config.get ('wgNamespaceNumber') === 156 ? [
     {title: 'Шаблоны', nl: true}
+
     {t: 'Шаблоны', nl: true}
 
   , '{{{+}}} {{!}}', br
 
   , '{{{+}}} {{!}}', br
   , {wrapper: '<includeonly>+</includeonly>', button: '&lt;includeonly&gt;'}
+
   , {w: '<includeonly>+</includeonly>', b: '&lt;includeonly&gt;'}
   , {wrapper: '<noinclude>+</noinclude>', button: '&lt;noinclude&gt;'}, br
+
   , {w: '<noinclude>+</noinclude>', b: '&lt;noinclude&gt;'}, br
 
   , '\n[[Категория:Традиция:Шаблоны|+]] {{doc}}', br
 
   , '\n[[Категория:Традиция:Шаблоны|+]] {{doc}}', br
  , {wrapper: (wgNamespaceNumber == 10 ? makeTemplate : makeForm), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_make_template.png" width="16" height="16" alt="M"/>', title: 'Создать ' + (wgNamespaceNumber == 10 ? 'шаблон' : 'форму'), all: true}
  −
  , br,
   
   , '{{PAGENAME}} {{FULLPAGENAME}} {{#if:|+|}} {{#ifeq:||+|}} {{#switch:|1=+|2=|default=}}', br
 
   , '{{PAGENAME}} {{FULLPAGENAME}} {{#if:|+|}} {{#ifeq:||+|}} {{#switch:|1=+|2=|default=}}', br
 
   , '{{#vardefine:a=+}} {{#var:+}} {{#forargs:префикс|параметр|значение|+}}'
 
   , '{{#vardefine:a=+}} {{#var:+}} {{#forargs:префикс|параметр|значение|+}}'
   , {url: mw.util.wikiGetlink ('Проект:Шаблоны'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Справка: Шаблоны', nl: true}
+
  , '{{#invoke:Модуль|функция|параметры}}' 
 +
   , {url: mw.util.getUrl ('Традиция:Шаблоны'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Справка: Шаблоны', nl: true}
 
] : null
 
] : null
, wgNamespaceNumber == 14 ? [
+
, mw.config.get ('wgNamespaceNumber') === 14 ? [
     {title: 'Категория', nl: true}
+
     {t: 'Категория', nl: true}
 
   , '{{Категория|+|форма}}  {{catmain|+}}'
 
   , '{{Категория|+|форма}}  {{catmain|+}}'
 
] : null
 
] : null
, wgNamespaceNumber == 152 ? [
+
, mw.config.get ('wgNamespaceNumber') === 152 ? [
     {title: 'SMW', nl: true}
+
     {t: 'SMW', nl: true}
 
   , '{{Свойство|+|тип|опис|общ}}  [[Имеет_тип:+]]  {{Отношение|+|опис|общ}}'
 
   , '{{Свойство|+|тип|опис|общ}}  [[Имеет_тип:+]]  {{Отношение|+|опис|общ}}'
 
] : null
 
] : null
, wgNamespaceNumber == 6 || wgTitle == 'Upload' || wgTitle == 'Загрузка' ? [
+
, mw.config.get ('wgNamespaceNumber') === 6 || mw.config.get ('wgTitle') === 'Upload' || mw.config.get ('wgTitle') === 'Загрузка' ? [
     {button: '<img src="http://traditio-ru.org/images/a/a3/Etool_image_desc.png" height="16" width="16" alt="?">'
+
     {b: '<img src="/files/a/a3/Etool_image_desc.png" height="16" width="16" alt="Ξ">'
   , title: 'Описание', wrapper: '{{Изображение'
+
   , t: 'Описание', w: '{{Изображение'
 
       + '\n| Название      = {{PAGENAME}}'
 
       + '\n| Название      = {{PAGENAME}}'
 
       + '\n| Объект        ='
 
       + '\n| Объект        ='
Строка 452: Строка 462:  
       + '\n}}'
 
       + '\n}}'
 
     }
 
     }
   , {title: 'Лицензии', nl: true}
+
   , {t: 'Лицензии', nl: true}
 
   , licenses
 
   , licenses
 
] : null, [
 
] : null, [
     {url: mw.util.wikiGetlink ('Справка:Справка'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Содержание', nl: true}
+
     {url: mw.util.getUrl ('Справка:Справка'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Содержание', nl: true}
   , {url: mw.util.wikiGetlink ('Проект:Правила и указания'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Правила и указания'}, br
+
   , {url: mw.util.getUrl ('Традиция:Правила и указания'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Правила и указания'}, br
   , {url: mw.util.wikiGetlink ('Проект:Вики-разметка'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Вики-разметка'}, br
+
   , {url: mw.util.getUrl ('Традиция:Вики-разметка'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Вики-разметка'}, br
   , {url: mw.util.wikiGetlink ('Проект:Типографика'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Типографика'}, br
+
   , {url: mw.util.getUrl ('Традиция:Типографика'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Типографика'}, br
   , {url: mw.util.wikiGetlink ('Проект:Шаблоны'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Шаблоны'}, br
+
   , {url: mw.util.getUrl ('Традиция:Шаблоны'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Шаблоны'}, br
   , {url: mw.util.wikiGetlink ('Проект:Как делать таблицы'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Таблицы'}, br
+
   , {url: mw.util.getUrl ('Традиция:Как делать таблицы'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Таблицы'}, br
   , {url: mw.util.wikiGetlink ('Справка:Примечания и сноски'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Примечания и сноски'}, br
+
   , {url: mw.util.getUrl ('Справка:Примечания и сноски'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Примечания и сноски'}, br
   , {url: mw.util.wikiGetlink ('Справка:Изображения'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Изображения'}, br
+
   , {url: mw.util.getUrl ('Справка:Изображения'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Изображения'}, br
   , {url: mw.util.wikiGetlink ('Справка:Видео'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Видео'}, br
+
   , {url: mw.util.getUrl ('Справка:Видео'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Видео'}, br
   , {url: mw.util.wikiGetlink ('Справка:Карты'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Карты'}, br
+
   , {url: mw.util.getUrl ('Справка:Карты'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Карты'}, br
   , {url: mw.util.wikiGetlink ('Справка:Графы'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Графы'}, br
+
   , {url: mw.util.getUrl ('Справка:Графы'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Графы'}, br
   , {url: mw.util.wikiGetlink ('Справка:Формулы'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Формулы'}, br
+
   , {url: mw.util.getUrl ('Справка:Формулы'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Формулы'}, br
   , {url: mw.util.wikiGetlink ('Справка:Тексты'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Тексты'}
+
   , {url: mw.util.getUrl ('Справка:Тексты'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Тексты'}
 
]
 
]
 
];
 
];
 
// Нижняя панель:
 
// Нижняя панель:
var tools_below = [
+
mw.tools_below = [
 
[
 
[
     {button: 'Яя', title: 'Кириллица', nl: true, leader: true}
+
     {b: 'Яя', t: 'Кириллица', nl: true, leader: true}
 
   , '<<Основные:>> А а Б б В в Г г Д д Е е Ё ё Ж ж З з И и Й й К к Л л М м Н н О о П п Р р С с Т т У у Ф ф Х х Ц ц Ч ч Ш ш Щ щ Ъ ъ Ы ы Ь ь Э э Ю ю Я я br '
 
   , '<<Основные:>> А а Б б В в Г г Д д Е е Ё ё Ж ж З з И и Й й К к Л л М м Н н О о П п Р р С с Т т У у Ф ф Х х Ц ц Ч ч Ш ш Щ щ Ъ ъ Ы ы Ь ь Э э Ю ю Я я br '
   + '<<Старорусские:>> ? ? І і  ? ? ? ? <<Древнерусские:>> Ѕ ѕ  ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? а? б? а? а? {{подст:у?}} br '
+
   + '<<Старорусские:>> Ѳ ѳ І і  Ѣ ѣ Ѵ ѵ <<Древнерусские:>> Ѕ ѕ  Ѥ ѥ Ѯ ѯ Ѹ ѹ Ѱ ѱ Ѡ ѡ Ѻ ѻ Ѽ ѽ Ѿ ѿ Ѧ ѧ Ѩ ѩ Ѫ ѫ Ѭ ѭ Ѷ ѷ ҂ а҃ б҄ а҅ а҆ ́а {{подст:у́}} br '
 
   + '<<Другие_славянские:>> Ґ ґ Ѓ ѓ Ђ ђ Є є І і Ї ї Й й Ј ј Ќ ќ Љ љ Њ њ Ћ ћ Ў ў Џ џ br '
 
   + '<<Другие_славянские:>> Ґ ґ Ѓ ѓ Ђ ђ Є є І і Ї ї Й й Ј ј Ќ ќ Љ љ Њ њ Ћ ћ Ў ў Џ џ br '
   + '<<Неславянские:>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
+
   + '<<Неславянские:>> Ә ә Ө ө Ғ ғ Җ җ Қ қ Ҝ ҝ Ң ң Ү ү Ұ ұ Ҳ ҳ Ҹ ҹ Һ һ Ҕ ҕ Ӣ ӣ Ӯ ӯ Ҙ ҙ Ҡ ҡ Ҥ ҥ Ҫ ҫ Ӑ ӑ Ӓ ӓ Ӕ ӕ Ӗ ӗ Ӱ ӱ Ӳ ӳ Ӹ ӹ Ӏ br '
   + '? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
+
   + 'Ҟ ҟ Ҧ ҧ Ҩ ҩ Ҭ ҭ Ҵ ҵ Ҷ ҷ Ҽ ҽ Ҿ ҿ Ӂ ӂ Ӄ ӄ Ӈ ӈ Ӌ ӌ Ӛ ӛ Ӝ ӝ Ӟ ӟ Ӡ ӡ Ӥ ӥ Ӧ ӧ Ӫ ӫ Ӵ ӵ '
 
], [
 
], [
     {button: '??', title: 'Греческие', nl: true, leader: true}
+
     {b: 'Ωω', t: 'Греческие', nl: true, leader: true}
   , '<<Основные:>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
+
   , '<<Основные:>> Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω br '
 
   + '<<Шаблоны:>> {{lang-el|+}}  {{lang-el2|+}} {{Polytonic|+}} br '
 
   + '<<Шаблоны:>> {{lang-el|+}}  {{lang-el2|+}} {{Polytonic|+}} br '
   + '<<С_тонами:>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
+
   + '<<С_тонами:>> Ά ά Έ έ Ή ή Ί ί Ό ό Ύ ύ Ώ ώ ᾼ ᾳ ᾴ Ὰ ὰ ᾲ ᾶ ᾷ Ἀ ἀ ᾈ ᾀ Ἁ ἁ ᾉ ᾁ Ἄ ἄ ᾌ ᾄ Ἂ ἂ ᾊ ᾂ Ἆ ἆ ᾎ ᾆ Ἅ ἅ ᾍ ᾅ Ἃ ἃ ᾋ ᾃ Ἇ ἇ ᾏ ᾇ br '
   + '? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
+
   + 'Ὲ ὲ Ἐ ἐ Ἑ ἑ Ἔ ἔ Ἒ ἒ Ἕ ἕ Ἓ ἓ ῌ ῃ ῄ Ὴ ὴ ῂ ῆ ῇ Ἠ ἠ ᾘ ᾐ Ἡ ἡ ᾙ ᾑ Ἤ ἤ ᾜ ᾔ Ἢ ἢ ᾚ ᾒ Ἦ ἦ ᾞ ᾖ Ἥ ἥ ᾝ ᾕ Ἣ ἣ ᾛ ᾓ Ἧ ἧ ᾟ ᾗ br '
   + '? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
+
   + 'Ὶ ὶ ῖ Ἰ ἰ Ἱ ἱ Ἴ ἴ Ἲ ἲ Ἶ ἶ Ἵ ἵ Ἳ ἳ Ἷ ἷ Ὸ ὸ Ὀ ὀ Ὁ ὁ Ὄ ὄ Ὂ ὂ Ὅ ὅ Ὃ ὃ ῤ Ῥ ῥ Ὺ ὺ ῦ ὐ Ὑ ὑ ὔ ὒ ὖ Ὕ ὕ Ὓ ὓ Ὗ ὗ br '
   + '? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
+
   + 'ῼ ῳ ῴ Ὼ ὼ ῲ ῶ ῷ Ὠ ὠ ᾨ ᾠ Ὡ ὡ ᾩ ᾡ Ὤ ὤ ᾬ ᾤ Ὢ ὢ ᾪ ᾢ Ὦ ὦ ᾮ ᾦ Ὥ ὥ ᾭ ᾥ Ὣ ὣ ᾫ ᾣ Ὧ ὧ ᾯ ᾧ br '
   + '<<Архаичные:>> ? ? ? ? ? ? ? ? ? ? <<Варианты:>>  ? ? ? ? ? ? ? ? <<Коптские:>> ? ? ? ? ? ? ? ? ? ? ? ? ? br '
+
   + '<<Архаичные:>> Ϝ ϝ Ϙ ϙ Ϛ ϛ Ϻ ϻ Ϡ ϡ <<Варианты:>>  ϐ ϑ ϳ ϰ ϱ ϲ ϕ ϖ <<Коптские:>> Ϣ ϣ Ϥ Ϧ ϧ Ϩ ϩ Ϫ ϫ Ϭ ϭ Ϯ ϯ br '
   + '<<Пунктуация:>> ? ? ? ;'   
+
   + '<<Пунктуация:>> ʹ ͵ ͺ ;'   
 
], [
 
], [
     {button: 'Zz', title: 'Латинские', nl: true, leader: true}
+
     {b: 'Zz', t: 'Латинские', nl: true, leader: true}
 
   , '<<Основные:>> A a B b C c D d E e F f G g H h I i J j K k L l M m N n O o P p R r S s T t U u V v W w X x Y y Z z br '
 
   , '<<Основные:>> A a B b C c D d E e F f G g H h I i J j K k L l M m N n O o P p R r S s T t U u V v W w X x Y y Z z br '
 
   + '<<Шаблоны:>> {{Unicode|+}} br '
 
   + '<<Шаблоны:>> {{Unicode|+}} br '
   + '<<Дополнительные:>> A a A a A a A a A a A a A a A a A a A a A a ? ? ? ? B b  C c C c C c C c C c C c D d D d D d ? ? ? ? br '
+
   + '<<Дополнительные:>> A a Á á À à Â â Ä ä Ǎ ǎ Ă ă Ā ā Ã ã Å å Ą ą Æ æ Ǣ ǣ B b  C c Ć ć Ċ ċ Ĉ ĉ Č č Ç ç D d Ď ď Đ đ Ḍ ḍ Ð ð br '
   + 'E e E e E e E e E e E e E e E e E e ? ? E e ? ? F f  G g G g G g G g G g H h H h H h ? ? I i I ? I i I i I i I i I i I i I i I i I i J j J j br '
+
   + 'E e É é È è Ė ė Ê ê Ë ë Ě ě Ĕ ĕ Ē ē Ẽ ẽ Ę ę Ə ə F f  G g Ġ ġ Ĝ ĝ Ğ ğ Ģ ģ H h Ĥ ĥ Ħ ħ Ḥ ḥ I i İ ı Í í Ì ì Î î Ï ï Ǐ ǐ Ĭ ĭ Ī ī Ĩ ĩ Į į J j Ĵ ĵ br '
   + 'K k K k L l L l ? ? L l L l L l ? ? ? ? M m ? ? N n N n N n N n N n ? ? O o O o O o O o O o O o O o O o O o O o O o O o ? ? br '
+
   + 'K k Ķ ķ L l Ĺ ĺ Ŀ ŀ Ľ ľ Ļ ļ Ł ł Ḷ ḷ Ḹ ḹ M m Ṃ ṃ N n Ń ń Ň ň Ñ ñ Ņ ņ Ṇ ṇ O o Ó ó Ò ò Ô ô Ö ö Ǒ ǒ Ŏ ŏ Ō ō Õ õ Ǫ ǫ Ő ő Ø ø Œ œ br '
   + 'P p  Q q  R r R r R r R r ? ? ? ? S s S s S s S s S s ? ? ? T t T t T t ? ? ? ? U u U u U u U u U u U u U u U u U u U u U u U u U u U u U u U u br '
+
   + 'P p  Q q  R r Ŕ ŕ Ř ř Ŗ ŗ Ṛ ṛ Ṝ ṝ S s Ś ś Ŝ ŝ Š š Ş ş Ṣ ṣ ß T t Ť ť Ţ ţ Ṭ ṭ Þ þ U u Ú ú Ù ù Û û Ü ü Ǔ ǔ Ŭ ŭ Ū ū Ũ ũ Ů ů Ų ų Ű ű Ǘ ǘ Ǜ ǜ Ǚ ǚ Ǖ ǖ br '
   + 'V v  W w W w X x  Y y Y y Y y Y y ? ? ? ? Z z Z z Z z Z z ? ? ? ? ? ? ?'
+
   + 'V v  W w Ŵ ŵ X x  Y y Ý ý Ŷ ŷ Ÿ ÿ Ỹ ỹ Ȳ ȳ Z z Ź ź Ż ż Ž ž ß Ð ð Þ þ Ə ə'
 
], [
 
], [
     {button: '?', title: 'Еврейские', nl: true, leader: true}
+
     {b: 'א', t: 'Еврейские', nl: true, leader: true}
 
   , '<<Шаблоны:>> {{lang-he|+}} {{lang-he2|+}} br '
 
   , '<<Шаблоны:>> {{lang-he|+}} {{lang-he2|+}} br '
   + '<<Основные:>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
+
   + '<<Основные:>> א ב ג ד ה ו ז ח ט י ך כ ל ם מ ן נ ס ע ף פ ץ צ ק ר ש ת br '
   + '<<Дополнительные:>>  ? ? ? ? ? '
+
   + '<<Дополнительные:>>  ׳ ״ װ ױ ײ '
 
], [
 
], [
     {button: '??', title: 'Арабские', nl: true, leader: true}
+
     {b: 'ار', t: 'Арабские', nl: true, leader: true}
 
   , '<<Шаблоны:>> {{lang-ar|+}}  {{lang-ar2|+}} br '
 
   , '<<Шаблоны:>> {{lang-ar|+}}  {{lang-ar2|+}} br '
   + '<<Основные:>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
+
   + '<<Основные:>> ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي br '
   + '<<Дополнительные:>> ? ? ? ? ? '
+
   + '<<Дополнительные:>> ﺓ ﻻ ﷲ ء '
   , {wrapper: '?', button: '?', title: 'алиф максура'}
+
   , {w: 'ى', b: 'ى', t: 'алиф максура'}
   , {wrapper: '?', button: '?', title: 'йе'} , br
+
   , {w: 'ي', b: 'ي', t: 'йе'} , br
   , '<<Пунктуация:>> ? ? ? br '
+
   , '<<Пунктуация:>> ، ؛ ؟ br '
   + '<<Цифры:>> ? ? ? ? ? ? ? ? ? ? ? ? ?'   
+
   + '<<Цифры:>> ٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩ ٪ ٫ ٬'   
 
], [
 
], [
     {button: '[?]', title: 'IPA для английского языка', nl: true, leader: true}
+
     {b: '[ɑ]', t: 'IPA для английского языка', nl: true, leader: true}
 
   , '<<Шаблоны:>> {{IPA-en|+}} {{IPA|/+/}} ‹+› br '
 
   , '<<Шаблоны:>> {{IPA-en|+}} {{IPA|/+/}} ‹+› br '
   + '? ? ? ? t? d? ? ? ? ? ? i? ? u? ? ? ?r e? ? ? o? ? ?? ?? ?r ?? ?r a? a? ? ?r ? ? ?'
+
   + 'ˈ ˌ ŋ ɡ tʃ dʒ ʃ ʒ θ ð ʔ iː ɪ uː ʊ ʌ ɜr eɪ ɛ æ oʊ ɒ ɔː ɔɪ ɔr ɑː ɑr aɪ aʊ ə ər ɨ ɵ ʉ'
   , {button: '[?]', title: 'IPA для других языков', nl: true}
+
   , {b: '[ʔ]', t: 'IPA для других языков', nl: true}
 
   , '<<Шаблон:>> {{IPA|+}} br '
 
   , '<<Шаблон:>> {{IPA|+}} br '
   + '? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? c ? ? ? ? h ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
+
   + 'ʈ ɖ ɟ ɡ ɢ ʡ ʔ ɸ β θ ð ʃ ʒ ɕ ʑ ʂ ʐ ç ʝ ɣ χ ʁ ħ ʕ ʜ ʢ ɦ ɱ ɳ ɲ ŋ ɴ ʋ ɹ ɻ ɰ ʙ ⱱ ʀ ɾ ɽ ɬ ɮ ɺ ɭ ʎ ʟ ʍ ɥ ɧ ʼ ɓ ɗ ʄ ɠ ʛ br '
   + '? ? ? ? ? ? ? ? ? ? ? o ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
+
   + 'ʘ ǀ ǃ ǂ ǁ ɨ ʉ ɯ ɪ ʏ ʊ ø ɘ ɵ ɤ ə ɛ œ ɜ ɞ ʌ ɔ æ ɐ ɶ ɑ ɒ br '
   + '? ? ? ? ? ? ? ? k? ?? ? ? ? ? t? d? s? s? ?? s? n? ?? a? a? ?? ? r? ? o? ? ? e? e? u? i? ?? e? ?? ?? n? ?? ?? ?? ?? ? z? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? t?? d?? t?? ? br '
+
   + 'ʰ ʱ ʷ ʲ ˠ ˤ ˀ ᵊ k̚ ⁿˡ ˈ ˌ ː ˑ t̪ d̪ s̺ s̻ θ̼ s̬ n̥ ŋ̊ a̤ a̰ β̞ ˕ r̝ ˔ o˞ ɚ ɝ e̘ e̙ u̟ i̠ ɪ̈ e̽ ɔ̹ ɔ̜ n̩ ə̆ ə̯ ə̃ ȷ̃ ɫ z̴ ə̋ ə́ ə̄ ə̀ ə̏ ə̌ ə̂ ə᷄ ə᷅ ə᷇ ə᷆ ə᷈ ə᷉ t͡ʃ d͡ʒ t͜ɬ ‿ br '
   + '? ? ? ? ? ? ? | ? ? ? k? s?'
+
   + '˥ ˦ ˧ ˨ ˩ ꜛ ꜜ | ‖ ↗ ↘ k͈ s͎'
 
], separator, [
 
], separator, [
  {title: 'Формулы TEX', nl: true},
+
  {t: 'Формулы TEX', nl: true},
  {wrapper: '<math>+</math>', button: '<img src="http://traditio-ru.org/images/9/96/Etool_pi_math.png" height="16" width="16" alt="?">', title: 'Вставить внутристрочную формулу', filler: 'Формула'}, br,
+
  {w: '<math>+</math>', b: '<img src="/files/9/96/Etool_pi_math.png" height="16" width="16" alt="π">', t: 'Вставить внутристрочную формулу', f: 'Формула'}, br,
  {wrapper: '\n: <math>+</math>\n', button: '<img src="http://traditio-ru.org/images/c/ce/Etool_pi_math_centered.png" height="16" width="16" alt="?">', title: 'Вставить выносную формулу', filler: 'Формула'}, br,
+
  {w: '\n: <math>+</math>\n', b: '<img src="/files/c/ce/Etool_pi_math_centered.png" height="16" width="16" alt="π">', t: 'Вставить выносную формулу', f: 'Формула'}, br,
  {url: mw.util.wikiGetlink ('Справка:Формулы'), button: '<img src="http://traditio-ru.org/images/d/d5/Etool_help.png" height="16" width="16" alt="?">', title: 'Справка: Формулы'}
+
  {url: mw.util.getUrl ('Справка:Формулы'), b: '<img src="/files/d/d5/Etool_help.png" height="16" width="16" alt="?">', t: 'Справка: Формулы'}
], [
+
], separator
{button: '?', title: 'Главные символы:', nl: true, leader: true},
+
// Символы:
{wrapper: '{,}+', button: '<b>,</b>', title: 'Десятичная запятая', filler: '(дробная часть)'},
+
, [ // Математические:
{wrapper: '~+', button: '<b>·</b>', title: 'Неразрывный пробел TEX', filler: '(после пробела)'},
+
    {b: '<img src="/files/3/37/Etool_sum.png" width="16" height="16" alt="&Sigma;" />', t: 'Математические знаки', nl: true, leader: true}
{wrapper: '\\dots +', button: '<b>…</b>', title: 'Многоточие', filler: '(после многоточия)'}, br,
+
  , '− × ÷ ⋅ ° +² +³ ∗ ∘ ± ∓ ≤ ≥ ≠ ≡ ≅ ≜ ≝ ≐ ≃ ≈ ⊕ ⊗ ∞ br '
{title: 'Греческие:'},
+
  + '≪ ≫ ∝ √ ∤ ≀ ◅ ▻ ⋉ ⋊ ⋈ ∴ ∵ ∙ ∷ ⋮ ⋯ ⋰ ⋱ br '
{wrapper: '\\Alpha', button: '?'},
+
  + '¬ ∧ ∨ ⊻ ∀ ∃ ∄ ∅ ∈ ∉ ∋ ⊆ ⊈ ⊊ ⊂ ⊄ ⊇ ⊉ ⊋ ⊃ ⊅ ∪ ∩ br '
{wrapper: '\\Beta', button: '?'},
+
  + '∑ ∏ ∐ ′ ∫ ∬ ∭ ∮ ∇ ∂ ∆ ∅ ℂ ℍ ℕ ℙ ℚ ℝ ℤ ℵ br '
{wrapper: '\\Gamma', button: '?'},
+
  + '⌊ ⌋ ⌈ ⌉ ⊤ ⊥ ⊢ ⊣ ⊧ □ ∠ ⟨ ⟩ &nbsp; &minus; br '
{wrapper: '\\Delta', button: '?'},
+
  + ' ⃜ ∁ ‵ ∂ ∞ ∟ ∠ ∡ ∢ ⊾ ⦜ ⊤ * ¹ ² ³ _ | ‖ br '
{wrapper: '\\Epsilon', button: '?'},
+
  + '√ ⊹ ⋔ ⌕ ⎰ ⎱ Ⓢ ╱ ▭ ⧴ ⩮ ⊶ ⊷ ⊸ ⋈ ⌢ ⌣ □ ▪ ♢ ◊ ⧫'
{wrapper: '\\Zeta', button: '?'},
  −
{wrapper: '\\Eta', button: '?'},
  −
{wrapper: '\\Theta', button: '?'},
  −
{wrapper: '\\Iota', button: '?'},
  −
{wrapper: '\\Kappa', button: '?'},
  −
{wrapper: '\\Lambda', button: '?'},
  −
{wrapper: '\\Mu', button: '?'},
  −
{wrapper: '\\Nu', button: '?'},
  −
{wrapper: '\\Xi', button: '?'},
  −
{wrapper: '\\O', button: '?'},
  −
{wrapper: '\\Pi', button: '?'},
  −
{wrapper: '\\Rho', button: '?'},
  −
{wrapper: '\\Sigma', button: '?'},
  −
{wrapper: '\\Tau', button: '?'},
  −
{wrapper: '\\Upsilon', button: '?'},
  −
{wrapper: '\\Phi', button: '?'},
  −
{wrapper: '\\Chi', button: '?'},
  −
{wrapper: '\\Psi', button: '?'},
  −
{wrapper: '\\Omega', button: '?'}, br,
  −
{wrapper: '\\alpha', button: '?'},
  −
{wrapper: '\\beta', button: '?'},
  −
{wrapper: '\\gamma', button: '?'},
  −
{wrapper: '\\delta', button: '?'},
  −
{wrapper: '\\epsilon', button: '?'},
  −
{wrapper: '\\varepsilon', button: '?'},
  −
{wrapper: '\\zeta', button: '?'},
  −
{wrapper: '\\eta', button: '?'},
  −
{wrapper: '\\theta', button: '?'},
  −
{wrapper: '\\iota', button: '?'},
  −
{wrapper: '\\kappa', button: '?'},
  −
{wrapper: '\\varkappa', button: '?'},
  −
{wrapper: '\\lambda', button: '?'},
  −
{wrapper: '\\mu', button: '?'},
  −
{wrapper: '\\nu', button: '?'},
  −
{wrapper: '\\xi', button: '?'},
  −
{wrapper: '\\o', button: '?'},
  −
{wrapper: '\\pi', button: '?'},
  −
{wrapper: '\\varpi', button: '?'},
  −
{wrapper: '\\rho', button: '?'},
  −
{wrapper: '\\varrho', button: '?'},
  −
{wrapper: '\\sigma', button: '?'},
  −
{wrapper: '\\varsigma', button: '?'},
  −
{wrapper: '\\tau', button: '?'},
  −
{wrapper: '\\upsilon', button: '?'},
  −
{wrapper: '\\phi', button: '?'},
  −
{wrapper: '\\varphi', button: '?'},
  −
{wrapper: '\\chi', button: '?'},
  −
{wrapper: '\\psi', button: '?'},
  −
{wrapper: '\\omega', button: '?'}, br,
  −
{title: 'Архаические греческие:'},
  −
{wrapper: '\\Stigma', button: '?'},
  −
{wrapper: '\\Digamma', button: '?'},
  −
{wrapper: '\\Koppa', button: '?'},
  −
{wrapper: '\\Sampi', button: '?'},
  −
{wrapper: '\\digamma', button: '?'},
  −
{wrapper: '\\backepsilon', button: '?'},
  −
{title: 'Еврейские:'},
  −
{wrapper: '\\aleph', button: '?'},
  −
{wrapper: '\\beth', button: '?'},
  −
{wrapper: '\\gimel', button: '?'},
  −
{wrapper: '\\daleth', button: '?'}, br,
  −
{title: 'Диакритики:'},
  −
{wrapper: '\\acute{+}', button: '<b><span style="color:black">a</span>?</b>', title: 'Акут', filler: 'Буква под акутом'},
  −
{wrapper: '\\grave{+}', button: '<b><span style="color:black">a</span>?</b>', title: 'Гравис', filler: 'Буква под грависом'},
  −
{wrapper: '\\breve{+}', button: '<b><span style="color:black">a</span>?</b>', title: 'Кратка', filler: 'Буква под краткой'},
  −
{wrapper: '\\check{+}', button: '<b><span style="color:black">a</span>?</b>', title: 'Чек', filler: 'Буква под чеком'},
  −
{wrapper: '\\tilde{+}', button: '<b><span style="color:black">a</span>?</b>', title: 'Тильда', filler: 'Буква под тильдой'},
  −
{wrapper: '\\hat{+}', button: '<b><span style="color:black">a</span>?</b>', title: 'Шляпка', filler: 'Буква под шляпкой'},
  −
{wrapper: '\\bar{+}', button: '<b><span style="color:black">a</span>?</b>', title: 'Черта', filler: 'Буква под чертой'}, br,
  −
{title: 'Шрифты:'},
  −
{wrapper: '\\boldsymbol{+}', button: '<b>?</b>', title: 'жирный', filler: 'Жирный шрифт'},
  −
{wrapper: '\\mathbf{+}', button: '<b>v</b>', title: 'вектор', filler: 'Вектор'},
  −
{wrapper: '\\mathbb{+}', button: '?', title: 'ажурный', filler: 'Ажурный шрифт'},
  −
{wrapper: '\\mathsf{+}', button: 's', title: 'рубленый', filler: 'Рубленый шрифт'},
  −
{wrapper: '\\mathfrak{+}', button: '?', title: 'готический', filler: 'Готический шрифт'},
  −
{wrapper: '\\mathcal{+}', button: '?', title: 'каллиграфический', filler: 'Каллиграфический шрифт'},
  −
{wrapper: '\\mathit{+}', button: '<i>i</i>', title: 'наклонный', filler: 'Наклонный шрифт'}
  −
], [
  −
{button: 'v ?', title: 'Унарные операции', nl: true, leader: true},
  −
{wrapper: '\\sqrt{+}', button: 'v ?', title: 'Квадратный корень', filler: 'под корнем'},
  −
{wrapper: '\\sqrt[3]{+}', button: '? ?', title: 'Кубический корень', filler: 'под корнем'},
  −
{title: 'Тригонометрические функции:', nl: true},
  −
{wrapper: '\\sin +', button: 'sin', title: 'Синус', filler: 'аргумент'},
  −
{wrapper: '\\cos +', button: 'cos', title: 'Косинус', filler: 'аргумент'},
  −
{wrapper: '\\tg +', button: 'tg', title: 'Тангенс', filler: 'аргумент'},
  −
{wrapper: '\\sec +', button: 'sec', title: 'Секанс', filler: 'аргумент'},
  −
{wrapper: '\\cosec +', button: 'cosec', title: 'Косеканс', filler: 'аргумент'},
  −
{wrapper: '\\ctg +', button: 'ctg', title: 'Котангенс', filler: 'аргумент'}, br,
  −
{wrapper: '\\arcsin +', button: 'arcsin', title: 'Арксинус', filler: 'аргумент'},
  −
{wrapper: '\\arccos +', button: 'arccos', title: 'Арккосинус', filler: 'аргумент'},
  −
{wrapper: '\\arctg +', button: 'arctg', title: 'Арктангенс', filler: 'аргумент'},
  −
{wrapper: '\\arcsec +', button: 'arcsec', title: 'Арксеканс', filler: 'аргумент'},
  −
{wrapper: '\\arccosec +', button: 'arccosec', title: 'Арккосеканс', filler: 'аргумент'},
  −
{wrapper: '\\arcctg +', button: 'arcctg', title: 'Арккотангенс', filler: 'аргумент'},
  −
{title: 'Гиперболические и логарифмические функции:', nl: true},
  −
{wrapper: '\\sh +', button: 'sh', title: 'Гиперболический синус', filler: 'аргумент'},
  −
{wrapper: '\\ch +', button: 'ch', title: 'Гиперболический косинус', filler: 'аргумент'},
  −
{wrapper: '\\th +', button: 'th', title: 'Гиперболический тангенс', filler: 'аргумент'},
  −
{wrapper: '\\cth +', button: 'cth', title: 'Гиперболический котангенс', filler: 'аргумент'}, br,
  −
{wrapper: '\\exp +', button: 'exp', title: 'Экспонента', filler: 'аргумент'},
  −
{wrapper: '\\log _{основание} +', button: 'log<sub><i>n</i></sub><i>x</i>', title: 'Логарифм', filler: 'аргумент'},
  −
{wrapper: '\\ln +', button: 'ln', title: 'Натуральный логарифм', filler: 'аргумент'},
  −
{wrapper: '\\lg +', button: 'lg', title: 'Десятичный логарифм', filler: 'аргумент'},
  −
{title: 'Прочие функции:', nl: true},
  −
{wrapper: '\\min +', button: 'min', title: 'Минимум', filler: 'аргумент'},
  −
{wrapper: '\\max +', button: 'max', title: 'Максимум', filler: 'аргумент'}
  −
], [
  −
{button: '+', title: 'Бинарные операции', nl: true, leader: true},
  −
{wrapper: '^+', button: '<span style="color:black; font-style: italic;">x<sup style="color: blue">n</sup></span>', title: 'Верхний индекс TEX', filler: 'индекс'},
  −
{wrapper: '_+', button: '<span style="color:black; font-style: italic">x<sub style="color: blue">i</sub></span>', title: 'Нижний индекс TEX', filler: 'индекс'},
  −
{title: 'Операции:', nl: true},
  −
{wrapper: ' ++ ', button: '+', title: 'Плюс', filler: 'слагаемое'},
  −
{wrapper: ' -+ ', button: '-', title: 'Минус', filler: 'вычитаемое'},
  −
  {wrapper: '\\mp', button: '?'},
  −
{wrapper: '\\pm', button: '±'},
  −
{wrapper: '\\frac{+}{знаменатель}', button: '<i><sup style="margin-right: -0.7em; border-bottom: solid 1px"><i>x</i></sup><sub>y</sub></i>', title: 'Дробь', filler: 'числитель'},
  −
{wrapper: ' \\cdot ', button: '·'},
  −
{wrapper: ' \\times ', button: '?'},
  −
{wrapper: ' \\div ', button: '?'},
  −
{wrapper: '\\sqrt[n]{+}', button: '<i><sup style="margin-right: -0.5em">y</sup>vx?</i>', title: 'Корень n-ной степени', filler: 'под корнем'},
  −
{wrapper: '\\dotplus', button: '?'}, br,
  −
{wrapper: '\\setminus', button: '?'},
  −
{wrapper: '\\{ast}', button: '?'},
  −
{wrapper: '\\circ', button: '?'},
  −
{wrapper: '\\wedge', button: '?'},
  −
{wrapper: '\\vee', button: '?'},
  −
{wrapper: '\\cap', button: '?'},
  −
{wrapper: '\\cup', button: '?'},
  −
{wrapper: '\\wr', button: '?'},
  −
{wrapper: '\\uplus', button: '?'},
  −
{wrapper: '\\sqcap', button: '?'},
  −
{wrapper: '\\sqcup', button: '?'},
  −
{wrapper: '\\oplus', button: '?'},
  −
{wrapper: '\\ominus', button: '?'},
  −
{wrapper: '\\otimes', button: '?'},
  −
{wrapper: '\\oslash', button: '?'},
  −
{wrapper: '\\odot', button: '?'},
  −
{wrapper: '\\circledcirc', button: '?'},
  −
{wrapper: '\\circledast', button: '?'},
  −
{wrapper: '\\circleddash', button: '?'},
  −
{wrapper: '\\boxplus', button: '?'},
  −
{wrapper: '\\boxminus', button: '?'},
  −
{wrapper: '\\boxtimes', button: '?'},
  −
{wrapper: '\\boxdot', button: '?'},
  −
{wrapper: '\\intercal', button: '?'},
  −
{wrapper: '\\veebar', button: '?'},
  −
{wrapper: '\\diamond', button: '?'},
  −
{wrapper: '\\cdot', button: '?'},
  −
{wrapper: '\\star', button: '?'},
  −
{wrapper: '\\divideontimes', button: '?'},
  −
{wrapper: '\\ltimes', button: '?'},
  −
{wrapper: '\\rtimes', button: '?'},
  −
{wrapper: '\\leftthreetimes', button: '?'},
  −
{wrapper: '\\rightthreetimes', button: '?'},
  −
{wrapper: '\\curlyvee', button: '?'},
  −
{wrapper: '\\curlywedge', button: '?'},
  −
{wrapper: '\\Cap', button: '?'},
  −
{wrapper: '\\Cup', button: '?'},
  −
{wrapper: '\\perspcorrespond', button: '?'},
  −
{wrapper: '\\bigcirc', button: '0'},
  −
{wrapper: '\\amalg', button: '?'},
  −
{wrapper: '\\perspcorrespond', button: '?'},
  −
{wrapper: '\\homothetic', button: '?'},
  −
{wrapper: '\\lazysinv', button: '?'},
  −
{wrapper: '\\allequal', button: '?'},
  −
{wrapper: '\\bigcap', button: '?'},
  −
{wrapper: '\\bigcup', button: '?'},
  −
{title: 'Отношения:', nl: true},
  −
{wrapper: '\\UpEquilibrium', button: '?'},
  −
{wrapper: '\\ReverseUpEquilibrium', button: '?'},
  −
{wrapper: '\\RoundImplies', button: '?'},
  −
{wrapper: '\\Equal', button: '?'},
  −
{wrapper: '\\leqslant', button: '?'},
  −
{wrapper: '\\geqslant', button: '?'},
  −
{wrapper: '\\lessapprox', button: '?'},
  −
{wrapper: '\\gtrapprox', button: '?'},
  −
{wrapper: '\\lneq', button: '?'},
  −
{wrapper: '\\gneq', button: '?'},
  −
{wrapper: '\\lnapprox', button: '?'},
  −
{wrapper: '\\gnapprox', button: '?'},
  −
{wrapper: '\\lesseqqgtr', button: '?'},
  −
{wrapper: '\\gtreqqless', button: '?'},
  −
{wrapper: '\\eqslantless', button: '?'},
  −
{wrapper: '\\eqslantgtr', button: '?'},
  −
{wrapper: '\\NestedLessLess', button: '?'},
  −
{wrapper: '\\NestedGreaterGreater', button: '?'},
  −
{wrapper: '\\preceq', button: '?'},
  −
{wrapper: '\\succeq', button: '?'},
  −
{wrapper: '\\precneqq', button: '?'},
  −
{wrapper: '\\succneqq', button: '?'},
  −
{wrapper: '\\precapprox', button: '?'},
  −
{wrapper: '\\succapprox', button: '?'},
  −
{wrapper: '\\precnapprox', button: '?'},
  −
{wrapper: '\\succnapprox', button: '?'},
  −
{wrapper: '\\subseteqq', button: '?'},
  −
{wrapper: '\\supseteqq', button: '?'},
  −
{wrapper: '\\subsetneqq', button: '?'},
  −
{wrapper: '\\supsetneqq', button: '?'}, br,
  −
{wrapper: '\\parallel', button: '?'},
  −
{wrapper: '\\nparallel', button: '?'},
  −
{wrapper: '\\sim', button: '?'},
  −
{wrapper: '\\backsim', button: '?'},
  −
{wrapper: '\\not\\sim', button: '?'},
  −
{wrapper: '\\simeq', button: '?'},
  −
{wrapper: '\\not\\simeq', button: '?'},
  −
{wrapper: '\\cong', button: '?'},
  −
{wrapper: '\\approxnotequal', button: '?'},
  −
{wrapper: '\\not\\cong', button: '?'},
  −
{wrapper: '\\approx', button: '?'},
  −
{wrapper: '\\not\\approx', button: '?'},
  −
{wrapper: '\\approxeq', button: '?'},
  −
{wrapper: '\\tildetrpl', button: '?'},
  −
{wrapper: '\\asymp', button: '?'},
  −
{wrapper: '\\Bumpeq', button: '?'},
  −
{wrapper: '\\bumpeq', button: '?'},
  −
{wrapper: '\\doteq', button: '?'},
  −
{wrapper: '\\doteqdot', button: '?'},
  −
{wrapper: '\\fallingdotseq', button: '?'},
  −
{wrapper: '\\risingdotseq', button: '?'},
  −
{wrapper: '\\eqcirc', button: '?'},
  −
{wrapper: '\\circeq', button: '?'},
  −
{wrapper: '\\estimates', button: '?'},
  −
{wrapper: '\\starequal', button: '?'},
  −
{wrapper: '\\triangleq', button: '?'},
  −
{wrapper: '\\not =', button: '?'},
  −
{wrapper: '\\equiv', button: '?'},
  −
{wrapper: '\\not\\equiv', button: '?'},
  −
{wrapper: '\\leq', button: '?'},
  −
{wrapper: '\\geq', button: '?'},
  −
{wrapper: '\\leqq', button: '?'},
  −
{wrapper: '\\geqq', button: '?'},
  −
{wrapper: '\\lneqq', button: '?'},
  −
{wrapper: '\\gneqq', button: '?'},
  −
{wrapper: '\\ll', button: '?'},
  −
{wrapper: '\\gg', button: '?'},
  −
{wrapper: '\\between', button: '?'},
  −
{wrapper: '\\not<', button: '?'},
  −
{wrapper: '\\not>', button: '?'},
  −
{wrapper: '\\not\\leq', button: '?'},
  −
{wrapper: '\\not\\geq', button: '?'},
  −
{wrapper: '\\lessequivlnt', button: '?'},
  −
{wrapper: '\\greaterequivlnt', button: '?'},
  −
{wrapper: '\\lessgtr', button: '?'},
  −
{wrapper: '\\gtrless', button: '?'},
  −
{wrapper: '\\notlessgreater', button: '?'},
  −
{wrapper: '\\notgreaterless', button: '?'},
  −
{wrapper: '\\prec', button: '?'},
  −
{wrapper: '\\succ', button: '?'},
  −
{wrapper: '\\preccurlyeq', button: '?'},
  −
{wrapper: '\\succcurlyeq', button: '?'},
  −
{wrapper: '\\precapprox', button: '?'},
  −
{wrapper: '\\succapprox', button: '?'},
  −
{wrapper: '\\not\\prec', button: '?'},
  −
{wrapper: '\\not\\succ', button: '?'}, br,
  −
{wrapper: '\\subset', button: '?'},
  −
{wrapper: '\\supset', button: '?'},
  −
{wrapper: '\\not\\subset', button: '?'},
  −
{wrapper: '\\not\\supset', button: '?'},
  −
{wrapper: '\\subseteq', button: '?'},
  −
{wrapper: '\\supseteq', button: '?'},
  −
{wrapper: '\\not\\subseteq', button: '?'},
  −
{wrapper: '\\not\\supseteq', button: '?'},
  −
{wrapper: '\\subsetneq', button: '?'},
  −
{wrapper: '\\supsetneq', button: '?'},
  −
{wrapper: '\\sqsubset', button: '?'},
  −
{wrapper: '\\sqsupset', button: '?'},
  −
{wrapper: '\\sqsubseteq', button: '?'},
  −
{wrapper: '\\sqsupseteq', button: '?'},
  −
{wrapper: '\\backsimeq', button: '?'},
  −
{wrapper: '\\Subset', button: '?'},
  −
{wrapper: '\\Supset', button: '?'},
  −
{wrapper: '\\lessdot', button: '?'},
  −
{wrapper: '\\gtrdot', button: '?'},
  −
{wrapper: '\\verymuchless', button: '?'},
  −
{wrapper: '\\verymuchgreater', button: '?'},
  −
{wrapper: '\\lesseqgtr', button: '?'},
  −
{wrapper: '\\gtreqless', button: '?'},
  −
{wrapper: '\\curlyeqprec', button: '?'},
  −
{wrapper: '\\curlyeqsucc', button: '?'},
  −
{wrapper: '\\not\sqsubseteq', button: '?'},
  −
{wrapper: '\\not\sqsupseteq', button: '?'},
  −
{wrapper: '\\lnsim', button: '?'},
  −
{wrapper: '\\gnsim', button: '?'},
  −
{wrapper: '\\precedesnotsimilar', button: '?'},
  −
{wrapper: '\\succnsim', button: '?'},
  −
{wrapper: '\\ntriangleleft', button: '?'},
  −
{wrapper: '\\ntriangleright', button: '?'},
  −
{wrapper: '\\ntrianglelefteq', button: '?'},
  −
{wrapper: '\\ntrianglerighteq', button: '?'},
  −
{wrapper: '\\in', button: '?'},
  −
{wrapper: '\\not\\in', button: '?'},
  −
{wrapper: '\\ni', button: '?'},
  −
{wrapper: '\\not\ni', button: '?'},
  −
{wrapper: '\\propto', button: '?'}, br,
  −
{wrapper: '\\mid', button: '?'},
  −
{wrapper: '\\nmid', button: '?'},
  −
{wrapper: '\\vdash', button: '?'},
  −
{wrapper: '\\dashv', button: '?'},
  −
{wrapper: '\\perp', button: '?'},
  −
{wrapper: '\\truestate', button: '?'},
  −
{wrapper: '\\forcesextra', button: '?'},
  −
{wrapper: '\\Vdash', button: '?'},
  −
{wrapper: '\\Vvdash', button: '?'},
  −
{wrapper: '\\VDash', button: '?'},
  −
{wrapper: '\\nvdash', button: '?'},
  −
{wrapper: '\\nvDash', button: '?'},
  −
{wrapper: '\\nVdash', button: '?'},
  −
{wrapper: '\\nVDash', button: '?'},
  −
{wrapper: '\\vartriangleleft', button: '?'},
  −
{wrapper: '\\vartriangleright', button: '?'},
  −
{wrapper: '\\trianglelefteq', button: '?'},
  −
{wrapper: '\\trianglerighteq', button: '?'},
  −
{wrapper: '\\LeftTriangleBar', button: '?'},
  −
{wrapper: '\\RightTriangleBar', button: '?'}
   
], [
 
], [
{button: '?', title: 'Групповые операции', nl: true, leader: true},
+
  {b: '', t: 'Разные символы', nl: true, leader: true}
{title: 'Суммы и интегралы:', nl: true},
+
  , '<<Шахматы:>> ♔ ♕ ♖ ♗ ♘ ♙ ♚ ♛ ♜ ♝ ♞ ♟ br '
{wrapper: '\\sum\\limits_{i=1}^{n}+_i', button: '?<span style="font-size: 65%"><sub><i>i=1</i></sub><sup style="margin-left: -0.7em"><i>n</i></sup></span>', title: 'Сумма', filler: '(суммируемое)'},
+
  + '<<Масти:>> ♠ ♣ ♥ ♦ ♡ ♢ ♤ ♧ br '
{wrapper: '\\prod\\limits_{i=1}^{n}+_i', button: '?<span style="font-size: 65%"><sub><i>i=1</i></sub><sup style="margin-left: -0.7em"><i>n</i></sup></span>', title: 'Произведение', filler: '(перемножаемое)'},
+
  + '<<Триграммы:>> ☰ ☱ ☲ ☳ ☴ ☵ ☶ ☷ br '
  {wrapper: '\\coprod\\limits_{i=1}^{n}+_i', button: '?<span style="font-size: 65%"><sub><i>i=1</i></sub><sup style="margin-left: -0.7em"><i>n</i></sup></span>', title: 'Сопроизведение', filler: '(перемножаемое)'},
+
  + '<<Планеты:>> ☼ ☽ ☾ ☿ ♀ ♁ ♂ ♃ ♄ ♅ ♆ ♇ br '
{wrapper: '\\bigcap_1^{n} +', button: '?<span style="font-size: 65%"><sub><i>i=1</i></sub><sup style="margin-left: -0.7em"><i>n</i></sup></span>', title: 'Пересечение', filler: '(множества)'},
+
  + '<<Созвездия:>> ♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓ br '
{wrapper: '\\bigcup_1^{n} +', button: '?<span style="font-size: 65%"><sub><i>i=1</i></sub><sup style="margin-left: -0.7em"><i>n</i></sup></span>', title: 'Объединение', filler: '(множества)'},
+
  + '<<Узлы:>> ☉ ☊ ☋ ☌ ☍ br '
{wrapper: '\\int\\limits_{-N}^{N} +dx', button: '?<span style="font-size: 65%"><sub>-N</sub><sup style="margin-left: -0.7em">N</sup></span>', title: 'Интеграл', filler: '(функция)'}, br,
+
  + '<<Ноты:>> ♩ ♪ ♫ ♬ ♬ ♭ ♮ ♯ br '
{wrapper: '\\iint\\limits_{-N}^{N} +dxdy', button: '?<span style="font-size: 65%"><sub>-N</sub><sup style="margin-left: -0.7em">N</sup></span>', title: 'Двойной интеграл', filler: '(функция)'},
+
  + '<<Разные:>> ® © ™ ♀ ♂ ℅ ℓ ℗ µ Ω ℮ ☠ ☡ ☢ ☣ br '
{wrapper: '\\iiint\\limits_{-N}^{N} +dxdydz', button: '?<span style="font-size: 65%"><sub>-N</sub><sup style="margin-left: -0.7em">N</sup></span>', title: 'Тройной интеграл', filler: '(функция)'},
+
  + '☤ ☥ ☦ ☧ ☨ ☩ ☪ ☫ ☬ ✡ ☭ ☮ ☯ '
{wrapper: '\\oint\\limits_{C} +dx', button: '?<span style="font-size: 65%"><sub>C</sub></span>', title: 'Интеграл по контуру', filler: '(функция)'},
  −
{wrapper: '\\surfintegral\\limits_{S} +dx', button: '?<span style="font-size: 65%"><sub>S</sub></span>', title: 'Интеграл по поверхности', filler: '(функция)'},
  −
{wrapper: '\\volintegral\\limits_{V} +dx', button: '?<span style="font-size: 65%"><sub>V</sub></span>', title: 'Интеграл по объёму', filler: '(функция)'},
  −
{wrapper: '\\clwintegral\\limits_{V} +dx', button: '?<span style="font-size: 65%"><sub>V</sub></span>', title: 'Ещё какой-то интеграл', filler: '(функция)'}, br,
  −
{wrapper: '{n \\choose k}', button: '(<sub>k</sub><span style="font-size: 65%"><sup style="margin-left: -0.7em">n</sup></span>)', title: 'Биномиальный коэффициент'},
  −
{wrapper: '\\lim_{n \to \infty}+_n', button: 'lim', title: 'Предел', filler: '(последовательность)'},
  −
{title: 'Объединения:', nl: true},
  −
{wrapper: '\\overline {+}', button: '<span style="text-decoration: overline">abc</span>' /*'a?b?c?'*/, title: 'Черта над', filler: 'под чертой'},
  −
{wrapper: '\\underline {+}', button: '<u>abc</u>', title: 'Черта под', filler: 'подчёркнутое'},
  −
{wrapper: '\\vec {+}', button: 'a?', title: 'Вектор', filler: 'под вектором'},
  −
{wrapper: '\\overrightarrow {+}', button: 'A?B?C?', title: 'Стрелка вправо сверху', filler: 'под стрелкой'},
  −
{wrapper: '\\overlefthtarrow {+}', button: 'A?B?C?', title: 'Стрелка влево сверху', filler: 'под стрелкой'},
  −
{wrapper: '\\widehat {+}', button: 'A', title: 'Широкая шляпка', filler: 'под шляпкой'},
  −
{wrapper: '\\overbrace {+}^{надпись)', button: '{сверху', title: 'Фигурная скобка сверху', filler: 'под скобкой'},
  −
{wrapper: '\\underbrace {+}_{подпись)', button: '{внизу', title: 'Фигурная скобка внизу', filler: 'над скобкой'},
  −
{title: 'Системы и матрицы:', nl: true},
  −
{wrapper: '\\begin{cases} + \\\\ уравнение2 \\\\ уравнение3 \\end{cases}', button: '{<span style="font-size: 65%"><sub><i>a=b</i></sub><sup style="margin-left: -1.5em"><i>c=d</i></sup></span>', title: 'Система уравнений'},
  −
{wrapper: '\\begin{pmatrix} + & y \\\\ z & v \\end{pmatrix}', button: '(Матрица)'},
  −
{wrapper: '\\begin{bmatrix} 0 & \\cdots & 0 \\\\ \\vdots & \\ddots & \\vdots \\\\ 0 & \\cdots & 0\\end{bmatrix}', button: '[Матрица]'},
  −
{wrapper: '\\begin{Bmatrix} + & y \\\\ z & v \\end{Bmatrix}', button: '{Матрица}'},
  −
{wrapper: '\\begin{vmatrix} + & y \\\\ z & v \\end{vmatrix}', button: '|Матрица|'},
  −
{wrapper: '\\begin{Vmatrix} + & y \\\\ z & v \\end{Vmatrix}', button: '||Матрица||'},
  −
{wrapper: '\\begin{matrix} + & y \\\\ z & v \\end{matrix}', button: 'Матрица'},
  −
{title: 'Скобки:', nl: true},
  −
{wrapper: '\\left( + \\right)', button: '()', title: 'Круглые скобки', filler: 'в скобках'},
  −
{wrapper: '\\left[ + \\right]', button: '[]', title: 'Квадратные скобки', filler: 'в скобках'},
  −
{wrapper: '\\lbrace + \\rbrace', button: '{}', title: 'Фигурные скобки', filler: 'в скобках'},
  −
{wrapper: '\\langle + \\rangle', button: '<>', title: 'Угловые скобки', filler: 'в скобках'},
  −
{wrapper: '\\left| + \\right|', button: '||', title: 'Прямые скобки', filler: 'в скобках'}, br,
  −
{wrapper: '\\lceil + \\rceil', button: '??', title: null, filler: 'в скобках'},
  −
{wrapper: '\\lfloor + \\rfloor', button: '??', title: null, filler: 'в скобках'},
  −
{wrapper: '\\ulcorner + \\urcorner', button: '??', title: null, filler: 'в скобках'},
  −
{wrapper: '\\llcorner + \\lrcorner', button: '??', title: null, filler: 'в скобках'},
  −
{wrapper: '\\openbracketleft + \\openbracketright', button: '??', title: null, filler: 'в скобках'}
   
], [
 
], [
{button: '?', title: 'Знаки', nl: true, leader: true},
+
  {b: '', t: 'Валюты и дроби', nl: true, leader: true}
{title: 'Стрелки:'},
+
  , '<<Валюты:>> ¤ ₽ ₳ ฿ ₵ ¢ ₡ ₢ $ ₫ ₯ € ₠ ₣ ƒ br '
{wrapper: '\\circlearrowleft', button: '?'},
+
  + ' ₴ ₭ ₤ ℳ ₥ ₦ ₧ ₰ £ ៛ ₨ ₪ ৳ ₮ ₩ ¥ br '
{wrapper: '\\circlearrowright', button: '?'},
+
  + '<<Дроби:>> ½ ⅓ ⅔ ¼ ¾ ⅛ ⅜ ⅝ ⅞ '
{wrapper: '\\uparrow', button: '^'},
  −
{wrapper: '\\rightarrow', button: '>'},
  −
{wrapper: '\\leftarrow', button: '<'},
  −
{wrapper: '\\downarrow', button: 'v'},
  −
{wrapper: '\\leftrightarrow', button: '-'},
  −
{wrapper: '\\updownarrow', button: '¦'},
  −
{wrapper: '\\nwarrow', button: '?'},
  −
{wrapper: '\\nearrow', button: '?'},
  −
{wrapper: '\\searrow', button: '?'},
  −
{wrapper: '\\swarrow', button: '?'},
  −
{wrapper: '\\nleftarrow', button: '?'},
  −
{wrapper: '\\nrightarrow', button: '?'},
  −
{wrapper: '\\arrowwaveright', button: '?'},
  −
{wrapper: '\\arrowwaveright', button: '?'},
  −
{wrapper: '\\twoheadleftarrow', button: '?'},
  −
{wrapper: '\\twoheadrightarrow', button: '?'},
  −
{wrapper: '\\leftarrowtail', button: '?'},
  −
{wrapper: '\\rightarrowtail', button: '?'},
  −
{wrapper: '\\mapsto', button: '?'},
  −
{wrapper: '\\hookleftarrow', button: '?'},
  −
{wrapper: '\\hookrightarrow', button: '?'},
  −
{wrapper: '\\looparrowleft', button: '?'},
  −
{wrapper: '\\looparrowright', button: '?'},
  −
{wrapper: '\\leftrightsquigarrow', button: '?'},
  −
{wrapper: '\\nleftrightarrow', button: '?'},
  −
{wrapper: '\\nLeftarrow', button: '?'},
  −
{wrapper: '\\nLeftrightarrow', button: '?'},
  −
{wrapper: '\\nRightarrow', button: '?'},
  −
{wrapper: '\\Leftarrow', button: '?'},
  −
{wrapper: '\\Uparrow', button: '?'},
  −
{wrapper: '\\Rightarrow', button: '?'},
  −
{wrapper: '\\Downarrow', button: '?'},
  −
{wrapper: '\\Leftrightarrow', button: '?'},
  −
{wrapper: '\\Updownarrow', button: '?'},
  −
{wrapper: '\\Lleftarrow', button: '?'},
  −
{wrapper: '\\Rrightarrow', button: '?'},
  −
{wrapper: '\\rightsquigarrow', button: '?'}, br,
  −
{wrapper: '\\DownArrowUpArrow', button: '?'},
  −
{wrapper: '\\longleftarrow', button: '?'},
  −
{wrapper: '\\longrightarrow', button: '?'},
  −
{wrapper: '\\longleftrightarrow', button: '?'},
  −
{wrapper: '\\Longleftarrow', button: '?'},
  −
{wrapper: '\\Longrightarrow', button: '?'},
  −
{wrapper: '\\Longleftrightarrow', button: '?'},
  −
{wrapper: '\\longmapsto', button: '?'},
  −
{wrapper: '\\UpArrowBar', button: '?'},
  −
{wrapper: '\\DownArrowBar', button: '?'},
  −
{wrapper: '\\LeftRightVector', button: '?'},
  −
{wrapper: '\\RightUpDownVector', button: '?'},
  −
{wrapper: '\\DownLeftRightVector', button: '?'},
  −
{wrapper: '\\LeftUpDownVector', button: '?'},
  −
{wrapper: '\\LeftVectorBar', button: '?'},
  −
{wrapper: '\\RightVectorBar', button: '?'},
  −
{wrapper: '\\RightUpVectorBar', button: '?'},
  −
{wrapper: '\\RightDownVectorBar', button: '?'},
  −
{wrapper: '\\DownLeftVectorBar', button: '?'},
  −
{wrapper: '\\DownRightVectorBar', button: '?'},
  −
{wrapper: '\\LeftUpVectorBar', button: '?'},
  −
{wrapper: '\\LeftDownVectorBar', button: '?'},
  −
{wrapper: '\\LeftTeeVector', button: '?'},
  −
{wrapper: '\\RightTeeVector', button: '?'},
  −
{wrapper: '\\RightUpTeeVector', button: '?'},
  −
{wrapper: '\\RightDownTeeVector', button: '?'},
  −
{wrapper: '\\DownLeftTeeVector', button: '?'},
  −
{wrapper: '\\DownRightTeeVector', button: '?'},
  −
{wrapper: '\\LeftUpTeeVector', button: '?'},
  −
{wrapper: '\\LeftDownTeeVector', button: '?'},
  −
{wrapper: '\\Lsh', button: '?'},
  −
{wrapper: '\\Rsh', button: '?'},
  −
{wrapper: '\\curvearrowleft', button: '?'},
  −
{wrapper: '\\curvearrowright', button: '?'},
  −
{wrapper: '\\leftharpoonup', button: '?'},
  −
{wrapper: '\\leftharpoondown', button: '?'},
  −
{wrapper: '\\upharpoonright', button: '?'},
  −
{wrapper: '\\upharpoonleft', button: '?'},
  −
{wrapper: '\\rightharpoonup', button: '?'},
  −
{wrapper: '\\rightharpoondown', button: '?'},
  −
{wrapper: '\\downharpoonright', button: '?'},
  −
{wrapper: '\\downharpoonleft', button: '?'},
  −
{wrapper: '\\rightleftarrows', button: '?'},
  −
{wrapper: '\\dblarrowupdown', button: '?'},
  −
{wrapper: '\\leftrightarrows', button: '?'},
  −
{wrapper: '\\leftleftarrows', button: '?'},
  −
{wrapper: '\\upuparrows', button: '?'},
  −
{wrapper: '\\rightrightarrows', button: '?'},
  −
{wrapper: '\\downdownarrows', button: '?'},
  −
{wrapper: '\\leftrightharpoons', button: '?'},
  −
{wrapper: '\\rightleftharpoons', button: '?'}, br,
  −
{wrapper: '\\bigtriangleup', button: '?'},
  −
{wrapper: '\\blacktriangle', button: '?'},
  −
{wrapper: '\\vartriangle', button: '?'},
  −
{wrapper: '\\blacktriangleright', button: '?'},
  −
{wrapper: '\\triangleright', button: '?'},
  −
{wrapper: '\\bigtriangledown', button: '?'},
  −
{wrapper: '\\blacktriangledown', button: '?'},
  −
{wrapper: '\\triangledown', button: '?'},
  −
{wrapper: '\\blacktriangleleft', button: '?'},
  −
{wrapper: '\\triangleleft', button: '?'}, br,
  −
{title: 'Прочие:'},
  −
{wrapper: '\\forall', button: '?'},
  −
{wrapper: '\\exists', button: '?'},
  −
{wrapper: '\\nexists', button: '?'},
  −
{wrapper: '\\therefore', button: '?'},
  −
{wrapper: '\\because', button: '?'},
  −
{wrapper: '\\varnothing', button: '?'},
  −
{wrapper: '\\dddot', button: '?'},
  −
{wrapper: '\\ddddot', button: '?'},
  −
{wrapper: '\\complement', button: '?'},
  −
{wrapper: '\\backprime', button: '?'},
  −
{wrapper: '\\partial', button: '?'},
  −
{wrapper: '\\nabla', button: '?'},
  −
{wrapper: '\\infty', button: '?'},
  −
{wrapper: '\\rightangle', button: 'L'},
  −
{wrapper: '\\angle', button: '?'},
  −
{wrapper: '\\measuredangle', button: '?'},
  −
{wrapper: '\\sphericalangle', button: '?'},
  −
{wrapper: '\\rightanglearc', button: '?'},
  −
{wrapper: '\\Angle', button: '?'},
  −
{wrapper: '\\top', button: '?'},
  −
{wrapper: '\\ast', button: '*'},
  −
{wrapper: '{^1}', button: '?'},
  −
{wrapper: '{^2}', button: '?'},
  −
{wrapper: '{^3}', button: '?'},
  −
{wrapper: '\\-', button: ''},
  −
{wrapper: '\\_', button: '_'},
  −
{wrapper: '\\vert', button: '|'},
  −
{wrapper: '\\Vert', button: '?'},
  −
{wrapper: '\\mkern1mu', button: '?'},
  −
{wrapper: '\\surd', button: 'v'},
  −
{wrapper: '\\bullet', button: '•'},
  −
{wrapper: '\\Colon', button: '?'},
  −
{wrapper: '\\vdots', button: '?'},
  −
{wrapper: '\\cdots', button: '?'},
  −
{wrapper: '\\upslopeellipsis', button: '?'},
  −
{wrapper: '\\downslopeellipsis', button: '?'},
  −
{wrapper: '\\hermitconjmatrix', button: '?'},
  −
{wrapper: '\\pitchfork', button: '?'},
  −
{wrapper: '\\recorder', button: '?'},
  −
{wrapper: '\\lmoustache', button: '?'},
  −
{wrapper: '\\rmoustache', button: '?'},
  −
{wrapper: '\\circledS', button: '?'},
  −
{wrapper: '\\diagup', button: '?'},
  −
{wrapper: '\\fbox{~~}', button: '?'},
  −
{wrapper: '\\RuleDelayed', button: '?'},
  −
{wrapper: '\\stackrel{*}{=}', button: '?'},
  −
{wrapper: '\\original', button: '?'},
  −
{wrapper: '\\image', button: '?'},
  −
{wrapper: '\\multimap', button: '?'},
  −
{wrapper: '\\bowtie', button: '?'},
  −
{wrapper: '\\frown', button: '?'},
  −
{wrapper: '\\smile', button: '?'},
  −
{wrapper: '\\square', button: '?'},
  −
{wrapper: '\\blacksquare', button: '?'},
  −
{wrapper: '\\diamond', button: '?'},
  −
{wrapper: '\\lozenge', button: '?'},
  −
{wrapper: '\\blacklozenge', button: '?'},
  −
{wrapper: '\\flat', button: '?'},
  −
{wrapper: '\\natural', button: '?'},
  −
{wrapper: '\\sharp', button: '?'},
  −
{wrapper: '\\mbox{+}', button: 'Текст', title: null, filler: '(текст)'}
   
], [
 
], [
{wrapper: '\\label{+}', button: '', title: 'Автонумеровать формулу', filler: 'метка'},
+
  {b: '', t: 'Стрелки', nl: true, leader: true}
{wrapper: '\\eqno{+}', button: '№', title: 'Ручной № формулы', filler: '№'},
+
   , '↺ ↻ ↑ → ← ↓ ↔ ↕ ↖ ↗ ↘ ↙ ↚ ↛ ↜ ↝ ↞↠ ↢ ↣ ↦ ↩ ↪ ↫ ↬ ↭ ↮ br '
{wrapper: '\\eqref{+}', button: '№', title: 'Ссылка на формулу', filler: 'метка'}
+
   + ' ⇍ ⇎ ⇏ ⇐ ⇑ ⇒ ⇓ ⇔ ⇕ ⇚ ⇛ ⇝ ☚ ☛ ☜ ☝ ☞ ☟ ➔ ➘ ➙ ➚ ➛ ➜ ➝ ➟ ➠ ➡ br '
], separator
+
   + ' ➢ ➣ ➤ ➥ ➦ ➧ ➨ ➨ ➪ ➫ ➬ ➭ ➮ ➯ ➱ ➲ ➳ ➴ ➵ ➶ ➷ ➸ ➹ ➺ ➻ ➼ ➽ ➾ br '
, [ // Символы:
+
   + '⇵ ⟵ ⟶ ⟷ ⟸ ⟹ ⟺ ⟼ ⤒ ⤓ ⥎ ⥏ ⥐ ⥑ ⥒ ⥓ ⥔ ⥕ ⥖ ⥗ ⥘ ⥙ ⥚ ⥛ ⥜ ⥝ ⥞ ⥟ ⥠ ⥡ br '
    {button: '<img src="http://traditio-ru.org/images/3/37/Etool_sum.png" width="16" height="16" alt="&Sigma;" />', title: 'Знаки', nl: true, leader: true}
+
   + '↰ ↱ ↶ ↷ ↼ ↽ ↾ ↿ ⇀ ⇁ ⇂ ⇃ ⇄ ⇅ ⇆ ⇇ ⇈ ⇉ ⇊ ⇋ ⇌ △ ▴ ▵ ▸ ▹ ▽ ▾ ▿ ◂ ◃ br '
   , '<<Математические:>> ? ? ? ? ° +? +? ? ? ± ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? v ? ? ? ? ? ? ? ? ? • ? ? ? ? ? br '
+
   + '⇄ ⇅ ⇆ ⇇ ⇈ ⇉ ⇊ ⇋ ⇌ △ ▴ ▵ ▸ ▹ ▽ ▾ ▿ ◂ ◃'
  + '¬ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
  −
  + '? ? ? ? ? ? ? ? ? ? ? ? ? &nbsp; &minus; br '
  −
  + ' ? ? ? ? ? ? L ? ? ? ? ? ? * ? ? ? _ | ? ? v ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
  −
  + '<<Дроби:>> ? ? ? ? ? ? ? ? ? <<Шахматы:>> ? ? ? ? ? ? ? ? ? ? ? ? br '
  −
  + '<<Масти:>> ¦ ¦ ¦ ¦ ? ? ? ? <<Триграммы:>> ? ? ? ? ? ? ? ? br '
  −
   + '<<Астрономия:>> 0 ? ? ? + ? > ? ? ? ? ?' + inline_separator + '? ? ? ? ? ? ? ? ? ? ? ?' + inline_separator + '? ? ? ? ? br '
  −
   + '<<Символы:>> ® © ™ + > ? ? ? µ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
  −
  + '<<Ноты:>> ? d d ? ? ? ? ? br '
  −
  + '<<Валюты:>> ¤ ? ? ? ? ? ? $ ? ? € ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
  −
  + '<<Стрелки:>> ? ? ^ > < v - ¦ ? ? ? ? ? ? ? ? ?? ? ? ? ?  ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
  −
   + '? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
  −
   + '? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? br '
  −
   + '? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'
   
], // Подписи и обсуждения:
 
], // Подписи и обсуждения:
wgNamespaceNumber % 2 == 1 || wgNamespaceNumber == 4 ? [
+
mw.config.get ('wgNamespaceNumber') % 2 === 1 || mw.config.get('wgNamespaceNumber') === 4 ? separator : null,
    {title: 'Подписи', nl: true}
+
mw.config.get ('wgNamespaceNumber') % 2 === 1 || mw.config.get('wgNamespaceNumber') === 4 ? [
   , {wrapper: '<br />~~~~', button: '<img src="http://traditio-ru.org/images/c/c1/Etool_text_signature.png" width="16" height="16" alt="~~" />', title: 'С новой строки'}, br
+
{t: 'Подписи', nl: true}
 +
   , {w: '<br />~~~~', b: '<img src="/files/c/c1/Etool_text_signature.png" width="16" height="16" alt="~~" />', t: 'С новой строки'}, br
 
   , '<<В_той_же_строке:>> --~~~~  ~~~~  —_~~~~  ~~~', br
 
   , '<<В_той_же_строке:>> --~~~~  ~~~~  —_~~~~  ~~~', br
   , {wrapper: '{{unsigned|+}}'}
+
   , {w: '{{unsigned|+}}'}
   , {title: 'Голосования и обсуждения', nl: true}
+
   , {t: 'Голосования и обсуждения', nl: true}
   , {wrapper: '{{За}}', button: '<img src="http://traditio-ru.org/images/thumb/9/94/Symbol_support_vote.svg/15px-Symbol_support_vote.svg.png" alt="+" height="15" width="15" />', title: 'За'}
+
   , {w: '{{За}}', b: '<img src="/files/thumb/9/94/Symbol_support_vote.svg/15px-Symbol_support_vote.svg.png" alt="+" height="15" width="15" />', t: 'За'}
   , {wrapper: '{{Против}}', button: '<img src="http://traditio-ru.org/images/thumb/7/7f/Symbol_oppose_vote.svg/15px-Symbol_oppose_vote.svg.png" alt="-" height="15" width="15" />', title: 'Против'}
+
   , {w: '{{Против}}', b: '<img src="/files/thumb/7/7f/Symbol_oppose_vote.svg/15px-Symbol_oppose_vote.svg.png" alt="-" height="15" width="15" />', t: 'Против'}
   , {wrapper: '{{Воздерживаюсь}}', button: '<img src="http://traditio-ru.org/images/thumb/5/5f/Symbol_neutral_vote.png/15px-Symbol_neutral_vote.png" alt="~" height="15" width="15" />', title: 'Воздерживаюсь'}, br
+
   , {w: '{{Воздерживаюсь}}', b: '<img src="/files/thumb/5/5f/Symbol_neutral_vote.png/15px-Symbol_neutral_vote.png" alt="~" height="15" width="15" />', t: 'Воздерживаюсь'}, br
   , {wrapper: '{{Оставить}}', button: '<img src="http://traditio-ru.org/images/thumb/5/5a/BallotCheckMark.png/15px-BallotCheckMark.png" alt="Оставить" height="15" width="15" />', title: 'Оставить'}
+
   , {w: '{{Оставить}}', b: '<img src="/files/thumb/5/5a/BallotCheckMark.png/15px-BallotCheckMark.png" alt="Оставить" height="15" width="15" />', t: 'Оставить'}
   , {wrapper: '{{Удалить}}', button: '<img src="http://traditio-ru.org/images/thumb/8/83/BallotX.png/15px-BallotX.png" alt="Удалить" height="15" width="15" />', title: 'Удалить'}, br
+
   , {w: '{{Удалить}}', b: '<img src="/files/thumb/8/83/BallotX.png/15px-BallotX.png" alt="Удалить" height="15" width="15" />', t: 'Удалить'}, br
   , {wrapper: '{{Перенесено в|+}}', filler: 'Страница, куда перенесён текст'}
+
   , {w: '{{Перенесено в|+}}', f: 'Страница, куда перенесён текст'}
   , {wrapper: '{{Перенесено из|+}}', filler: 'Страница, откуда перенесён текст'}
+
   , {w: '{{Перенесено из|+}}', f: 'Страница, откуда перенесён текст'}
   , {title: 'Новые страницы', nl: true}
+
   , {t: 'Новые страницы', nl: true}
   , {title: 'Страница побывала в шаблоне «Новые статьи»', button: '<img src="http://traditio-ru.org/images/thumb/b/b9/Internet-news-reader.svg/16px-Internet-news-reader.svg.png" alt="!" height="16" width="16" />', wrapper: '{{Было_в_новых|URL=+}}'}
+
   , {t: 'Страница побывала в шаблоне «Новые статьи»', b: '<img src="/files/thumb/b/b9/Internet-news-reader.svg/16px-Internet-news-reader.svg.png" alt="!" height="16" width="16" />', w: '{{Было_в_новых|URL=+}}'}
 
] : null
 
] : null
 
];
 
];
Строка 1194: Строка 684:  
         depth = 2;
 
         depth = 2;
 
     }
 
     }
     if (typeof (obj) == 'object' && obj != null && depth > 1) {
+
     if (typeof (obj) == 'object' && obj !== null && depth > 1) {
 
         out += 'object (' + obj.constructor.name + ') : [\n';
 
         out += 'object (' + obj.constructor.name + ') : [\n';
 
         $.each (obj, function (key, val) {
 
         $.each (obj, function (key, val) {
Строка 1201: Строка 691:  
         });
 
         });
 
         out += ']';
 
         out += ']';
     } else if (typeof (obj) == 'object' && obj != null && depth <= 1) {
+
     } else if (typeof (obj) == 'object' && obj !== null && depth <= 1) {
 
         out = '[object]\n';
 
         out = '[object]\n';
     } else if (obj != null) {
+
     } else if (obj !== null) {
 
         out = typeof (obj) + ': ' + obj.toString ();
 
         out = typeof (obj) + ': ' + obj.toString ();
 
     } else {
 
     } else {
Строка 1218: Строка 708:  
     // Компиляция панелей инструментов. Проводится только после загрузки формы редактирования,
 
     // Компиляция панелей инструментов. Проводится только после загрузки формы редактирования,
 
     //    чтобы не задерживать её показ:
 
     //    чтобы не задерживать её показ:
     if (!mw.config.exists ('wgCodeEditorCurrentLanguage') && !(mw.config.exists ('wgWikiEditorEnabledModules') && mw.config.get ('wgWikiEditorEnabledModules').toc)) {
+
     if (!mw.config.exists ('wgCodeEditorCurrentLanguage')
 +
    && !(mw.config.exists ('wgWikiEditorEnabledModules') && mw.config.get ('wgWikiEditorEnabledModules').toc)
 +
    && mw.user.options.get ('gadget-edit') === 1
 +
    ) {
 
         // Только если не включено содержание и CodeEditor:
 
         // Только если не включено содержание и CodeEditor:
 
         // Создание заготовок:
 
         // Создание заготовок:
 
         createStubs ();
 
         createStubs ();
 +
        // Подключение расширений:
 +
        $.each (mw.edit_gadget_extensions, function (i, func) {
 +
        func ();
 +
        });
 
         // Обход текстовых полей:
 
         // Обход текстовых полей:
         $('textarea').each (function () {
+
         $('textarea').not ('.g-recaptcha-response').each (function () {
 
             // Запись id текстового поля:
 
             // Запись id текстового поля:
 
             var id = this.id;
 
             var id = this.id;
 
             // Добавление панелей:
 
             // Добавление панелей:
 
             $(this).before (      // -- верхняя панель:
 
             $(this).before (      // -- верхняя панель:
                 eMenu (tools_above).addClass ('above').cloneForTextbox (id)
+
                 eMenu (mw.tools_above).addClass ('above').cloneForTextbox (id)
 
             ).after (              // -- нижняя панель:             
 
             ).after (              // -- нижняя панель:             
                 eMenu (tools_below).addClass ('below').cloneForTextbox (id)
+
                 eMenu (mw.tools_below).addClass ('below').cloneForTextbox (id)
 
             ).focus (function () { // -- событие фокуса: активация своих и деактивация чужих панелей:
 
             ).focus (function () { // -- событие фокуса: активация своих и деактивация чужих панелей:
 
                 $(this).activateToolbars ();
 
                 $(this).activateToolbars ();
Строка 1236: Строка 733:  
         });
 
         });
 
         // Удаление стандартных инструментов:
 
         // Удаление стандартных инструментов:
         $('#toolbar').remove ();
+
         $('#toolbar').hide ();
 
         // Удаление инструментов WikiEditor:
 
         // Удаление инструментов WikiEditor:
         $('#wikiEditor-ui-toolbar').remove ();
+
         $('#wikiEditor-ui-toolbar').hide (); // -- MW 1.22-
         mwEditButtons = null;
+
         $('.wikiEditor-ui-top').hide (); // -- MW 1.23+
 +
        //mw.toolbar = null; //mwEditButtons = null;
 +
        // Подключение кнопки CodeMirror:
 +
        $('a#mw-editbutton-codemirror').insertBefore ($('.eMenu.above > li:last-child')).width ('1.4em').wrapAll ('<li></li>');
 
         // Активация первого текстового поля:
 
         // Активация первого текстового поля:
 
         $('textarea').first ().focus ();
 
         $('textarea').first ().focus ();
Строка 1249: Строка 749:  
  */
 
  */
 
// Получает в качестве аргумента объект со свойствами
 
// Получает в качестве аргумента объект со свойствами
//    wrapper, filler, url, html, button, title:
+
//    w[rapper], f[iller], url, h[tml], b[utton], t[itle]:
 
function eButton (arg) {
 
function eButton (arg) {
   Строка 1255: Строка 755:     
     // Установить неопределённые свойства в null для упрощения дальнейшего кода:
 
     // Установить неопределённые свойства в null для упрощения дальнейшего кода:
     var wrapper = typeof arg.wrapper == 'undefined' ? null : arg.wrapper;
+
     var wrapper = typeof arg.w      == 'undefined' ? null : arg.w;
     var button  = typeof arg.button  == 'undefined' ? null : arg.button;
+
     var button  = typeof arg.b      == 'undefined' ? null : arg.b;
     var title  = typeof arg.title  == 'undefined' ? null : arg.title;
+
     var title  = typeof arg.t      == 'undefined' ? null : arg.t;
     var filler  = typeof arg.filler  == 'undefined' ? null : arg.filler;
+
     var filler  = typeof arg.f      == 'undefined' ? null : arg.f;
     var all    = typeof arg.all     == 'undefined' ? false : arg.all;
+
     var all    = typeof arg.all   == 'undefined' ? false : arg.all;
     var nl      = typeof arg.nl     == 'undefined' ? null : arg.nl;
+
     var nl      = typeof arg.nl     == 'undefined' ? null : arg.nl;
     var leader  = typeof arg.leader == 'undefined' ? null : arg.leader;
+
     var leader  = typeof arg.leader == 'undefined' ? null : arg.leader;
     var url    = typeof arg.url     == 'undefined' ? null : arg.url;
+
     var url    = typeof arg.url   == 'undefined' ? null : arg.url;
     var html    = typeof arg.html    == 'undefined' ? null : arg.html;
+
     var html    = typeof arg.h      == 'undefined' ? null : arg.h;
    
     if (!wrapper && !button && !title && !url && !html) return null;
 
     if (!wrapper && !button && !title && !url && !html) return null;
    
     // Только если явно задано название инструмента, разворачивать его в подменю:
 
     // Только если явно задано название инструмента, разворачивать его в подменю:
     var expand = arg.title ? true : false;
+
     var expand = arg.t ? true : false;
    
     tool_no++; // -- счётчик инструментов.
 
     tool_no++; // -- счётчик инструментов.
Строка 1287: Строка 787:  
     filler = filler == '-' ? ''
 
     filler = filler == '-' ? ''
 
           : filler        ? filler
 
           : filler        ? filler
/*          : title && wrapper && wrapper_name.indexOf ('+') > -1
+
/*          : t && w && wrapper_name.indexOf ('+') > -1
 
                           ? stripHTML (title)*/
 
                           ? stripHTML (title)*/
 
           :                '';
 
           :                '';
Строка 1370: Строка 870:  
                     // Обёртка подстрок в объекты:
 
                     // Обёртка подстрок в объекты:
 
                     return !s        ? null
 
                     return !s        ? null
                           : s == 'br' ? {html   : '<br clear="all" />'} // -- перевод строки.
+
                           : s == 'br' ? {h   : '<br clear="all" />'} // -- перевод строки.
 
                           : s.match (/^<<.+>>$/)                        // Метка:
 
                           : s.match (/^<<.+>>$/)                        // Метка:
                                       ? {title  : s.replace (/(^<<|>>$)/g, '').replace (/_/g, ' ')}
+
                                       ? {t: s.replace (/(^<<|>>$)/g, '').replace (/_/g, ' ')}
                           :            {wrapper: s.replace (/_/g, ' ').replace (/-uline-/ig, '_')};
+
                           :            {w: s.replace (/_/g, ' ').replace (/-uline-/ig, '_')};
 
                 }));
 
                 }));
 
                 // Отдельная оценка необходима, т.к. ограничение в .split () работает неправильно:
 
                 // Отдельная оценка необходима, т.к. ограничение в .split () работает неправильно:
Строка 1419: Строка 919:  
      
 
      
 
     // Установка класса, заменяющего first-child и last-child, для IE:
 
     // Установка класса, заменяющего first-child и last-child, для IE:
     if ($.browser.msie) {
+
     /* if ($.browser.msie) {
 
         $ret.children ().first ().addClass ('firstChild');
 
         $ret.children ().first ().addClass ('firstChild');
 
         $ret.children ().last  ().addClass ('lastChild');
 
         $ret.children ().last  ().addClass ('lastChild');
     }
+
     } */
 
      
 
      
 
     // Возврат:
 
     // Возврат:
Строка 1457: Строка 957:  
             // Выделить после этого вставленный символ:
 
             // Выделить после этого вставленный символ:
 
             callback = function (s) {
 
             callback = function (s) {
                 // Подумать, имеет ли смысл в этом контексте filler:
+
                 // Подумать, имеет ли смысл в этом контексте f:
 
                 return (s ? s : filler ? filler : '') + '\x01' + wrapper + '\x02';
 
                 return (s ? s : filler ? filler : '') + '\x01' + wrapper + '\x02';
 
             }
 
             }
Строка 1507: Строка 1007:  
     var win_scroll = document.documentElement.scrollTop;
 
     var win_scroll = document.documentElement.scrollTop;
 
     textbox.focus ();
 
     textbox.focus ();
     if (typeof (textbox.selectionStart) != 'undefined'
+
     if (typeof (textbox.selectionStart) != 'undefined' /*
 
     && (navigator ['productSub'] > 20031000
 
     && (navigator ['productSub'] > 20031000
 
     || $.browser.safari
 
     || $.browser.safari
 
     || $.browser.webkit
 
     || $.browser.webkit
 
     || $.browser.opera
 
     || $.browser.opera
     || $.browser.mozilla)) {
+
     || $.browser.mozilla) */ ) {
 
         // Mozilla/Opera/Safari3:
 
         // Mozilla/Opera/Safari3:
 
         var textScroll = textbox.scrollTop; // -- сохранить положение промотки.
 
         var textScroll = textbox.scrollTop; // -- сохранить положение промотки.
Строка 1537: Строка 1037:  
         // Выделить обработанное. Использовать для выделения нестандартные свойства
 
         // Выделить обработанное. Использовать для выделения нестандартные свойства
 
         //    selOffset и selLength, если возвращены funct:
 
         //    selOffset и selLength, если возвращены funct:
         var correction = Math.floor (($.browser.opera && inserted.substr (0, start_pos + sel_offset).match (/\n/g)
+
         var correction = Math.floor ((/* $.browser.opera && */ inserted.substr (0, start_pos + sel_offset).match (/\n/g)
 
                 ? inserted.substr (0, start_pos + sel_offset).match (/\n/g).length
 
                 ? inserted.substr (0, start_pos + sel_offset).match (/\n/g).length
 
                 : 0) / 2);
 
                 : 0) / 2);
Строка 1585: Строка 1085:  
     document.documentElement.scrollTop = win_scroll; // -- восстановить позицию промотки в IE/Opera.
 
     document.documentElement.scrollTop = win_scroll; // -- восстановить позицию промотки в IE/Opera.
 
} // -- конец processSelection ().
 
} // -- конец processSelection ().
  −
/*  Описание изменений
  −
*  Fixed by Dream, переписано под jQuery А. Машиным:
  −
*/
  −
function insertSummary ($for, text) {
  −
    if ($for.val ().indexOf (text) != -1) return;                      // -- не нужно повторов.
  −
    if ($for.val ().match (/[^,;: \/]$/)) $for.val ($for.val () + ','); // -- добавление запятой в конце.
  −
    if ($for.val ().match (/[^ ]$/))      $for.val ($for.val () + ' '); // -- добавление пробела в конце.
  −
    $for.val ($for.val () + text);                                      // -- добавление текста.
  −
}
  −
  −
$.fn.extend ({
  −
    addSumButton: function ($for, name, text, title) {
  −
        return this.append (
  −
            $('<a></a>').text (name).attr ('title', title).click (function () {
  −
                insertSummary ($for, text);
  −
            })
  −
        );
  −
    }
  −
});
  −
  −
$(function () {
  −
    $('input.mw-summary, input#wpSummary').each (function () {
  −
        var $this = $(this);
  −
        $('<span></span>').attr ('id', 'userSummaryButtonsA').addSumButton (
  −
            $this, 'викиф.', 'викификация', 'Произведена викификация').addSumButton (
  −
            $this, 'оформл.', 'оформление', 'Улучшено оформление').addSumButton (
  −
            $this, 'стиль', 'стилистические правки', 'Переменён стиль изложения').addSumButton (
  −
            $this, 'орфогр.', 'орфография', 'Поправлена орфография').addSumButton (
  −
            $this, 'опеч.', 'зачистка опечаток', 'Исправлена опечатка').addSumButton (
  −
            $this, 'типогр.', 'типографика', 'Поправлена типографика').addSumButton (
  −
            $this, 'пункт.', 'пунктуация', 'Изменена пунктуация').addSumButton (
  −
            $this, 'сноски', '[[Справка:Сноски|сноски]]', 'Оформлены сноски').addSumButton (
  −
            $this, 'кат.', 'категория', 'Исправлена категоризация').addSumButton (
  −
            $this, 'шаб.', 'шаблон', 'Добавлен / изменён шаблон').addSumButton (
  −
            $this, 'к удал.', 'к удалению', 'Страница предложена к удалению').addSumButton (
  −
            $this, 'доп.', 'дополнение', 'Добавлены новые сведения').addSumButton (
  −
            $this, 'иллюстрация', 'иллюстрация', 'Размещена иллюстрация').addSumButton (
  −
            $this, 'обнов.', 'обновление данных', 'Обновлены устаревшие данные').addSumButton (
  −
            $this, 'семант.', 'семантика', 'Добавлены аннотации'
  −
        ).insertAfter ($this).before('<br />');
  −
    });
  −
});
  −
  −
/*
  −
* Викификатор
  −
*/
  −
  −
// '''ВНИМАНИЕ! Внося изменения в код, не забывайте обновлять справку на странице [[Традиция:Викификатор]]'''
  −
  −
var wmVersion = '2012-09-16'
  −
var wmCantWork = 'Викификатор не может работать в Вашем браузере\n\nWikificator cannot work in your browser'
  −
var wmTalkPage = 'Викификатор не обрабатывает страницы обсуждения целиком.\n\nВыделите Ваше сообщение — обработано будет только оно'
  −
  −
// Функция викифицирует переданный текст и возвращает викифицированный:
  −
function wikifyText (s) {
  −
    var txt='', hidden = [];
  −
  −
    var u = '\u00A0'; // -- unbreakable space.
  −
    if (wgNamespaceNumber % 2 == 1 || wgNamespaceNumber == 4) { // -- это обсуждение.
  −
        u = ' ';
  −
        // Несколько дат, вероятно, чужие подписи::
  −
        var sigs = s.match (/\d\d:\d\d, \d\d? \S{3,8} 20\d\d \(UTC\)/g);
  −
            if (sigs && sigs.length > 1) {
  −
                alert(wmTalkPage);
  −
                return s;
  −
            }
  −
    }
  −
  −
    // Скрытие преформатированных тегов:
  −
    s = hideTag (s, 'nowiki');
  −
    s = hideTag (s, 'pre');
  −
    s = hideTag (s, 'source');
  −
    s = hideTag (s, 'code');
  −
    s = hideTag (s, 'tt');
  −
  −
    s = hideTag (s, 'math'); // — внутристрочные формулы.
  −
    s = hideTag (s, 'gallery'); // — галереи.
  −
    s = hide (s, /{\{[\s\S]+?}}/g); // — шаблоны.
  −
    s = hide (s, /^ .*/mg); // — преформатированный текст.
  −
    s = hide (s, /(https?|ftp|news|nntp|telnet|irc|gopher):\/\/[^\s\[\]<>"]+ ?/gi); // — гиперссылки.
  −
    s = hide (s, /^#(redirect|перенапр(авление)?)/i); // — перенаправления.
  −
  −
    s = s.replace (/ +(\n|\r)/g, '$1'); // -- пробелы в конце строки.
  −
    s = '\n' + s + '\n';
  −
  −
    var replacements1 = [
  −
        // Русификация пространств имён:
  −
        [/(\[\[:?)(category|категория):( *)/ig, '$1Категория:']
  −
      , [/(\[\[:?)(image|изображение|file):( *)/ig, '$1Файл:']
  −
        // Оформление дат:
  −
      , [/(\(|\s)(\[\[[12]?\d{3}\]\])[\u00A0 ]?(-{1,3}|–|—) ?(\[\[[12]?\d{3}\]\])(\W)/g, '$1$2—$4$5']
  −
      , [/(\[\[[12]?\d{3}\]\]) ?(гг?\.)/g, '$1' + u + '$2']
  −
      , [/(\(|\s)(\[\[[IVX]{1,5}\]\])[\u00A0 ]?(-{1,3}|–|—) ?(\[\[[IVX]{1,5}\]\])(\W)/g, '$1$2—$4$5']
  −
      , [/(\[\[[IVX]{1,5}\]\]) ?(вв?\.)/g, '$1' + u + '$2']
  −
      , [/\[\[(\d+)\]\][\u00A0 ]год/g, '[[$1' + u + 'год]]']
  −
      , [/\[\[((\d+)(?: (?:год )?в [\wa-яёА-ЯЁ ]+\|\2)?)\]\][\u00A0 ](год[а-яё]*)/g, '[[$1' + u + '$3]]']
  −
      , [/\[\[([XVI]+)\]\][\u00A0 ]век/g, '[[$1' + u + 'век]]']
  −
      , [/\[\[(([XVI]+) век\|\2)\]\][\u00A0 ]век/g, '[[$2' + u + 'век]]']
  −
      // Удаление недопустимых символов из викиссылок:
  −
      , [/(\[\[[^|\[\]]*)[\u00AD\u200E\u200F]+([^\[\]]*\]\])/g, '$1$2'] // -- Soft Hyphen & DirMark.
  −
      , [/\[\[ *([a-zA-Zа-яёА-ЯЁ\u00A0-\u00FF %!\"$&'()*,\-.\/0-9:;=?\\@\^_`’~]+) *\| *(\1)([a-zа-яё]*) *\]\]/g, '[[$2]]$3'] // -- ".
  −
      , [/\[\[ *([a-zA-Zа-яёА-ЯЁ\u00A0-\u00FF %!\"$&'()*,\-.\/0-9:;=?\\@\^_`’~]+) *\| *([^|[\]]+) *\]\]([a-zа-яё]+)/g, '[[$1|$2$3]]'] // -- ".
  −
    ];
  −
    s = runReplacements (s, replacements1);
  −
    s = hide (s, /\[\[[^\]|]+/g); // -- скрытие викиссылок.
  −
  −
    // Все теги в <> надо обработать здесь:
  −
    var replacements2 = [
  −
        // HTML -> викитекст:
  −
        [/<<(\S.+\S)>>/g, '"$1"'] // -- угловые кавычки в обычные. Или лучше в «»?
  −
      , [/(sup>|sub>|\s)-(\d)/g, '$1?$2'] // -- minus в индексах.
  −
      , [/(<sup>2<\/sup>|&sup2;)/gi, '?'] // -- символы квадрата
  −
      , [/(<sup>3<\/sup>|&sup3;)/gi, '?'] //    и куба.
  −
      , [/<(b|strong)>(.*)<\/(b|strong)>/gi,"'''$2'''"] // -- вики-полужирный.
  −
      , [/<(i|em)>(.*)<\/(i|em)>/gi,"''$2''"] // -- вики-курсив.
  −
      , [/^<hr ?\/?>/gim, '----'] // -- вики-гор. разделитель.
  −
      , [/<\/?(hr|br)( [^\/>]+?)? ?\/?>/gi, '<$1$2 />'] // оформление hr/br по стандарту XML.
  −
      , [/(\n==\s*Примечания\s*==\n)<references *\/>/,'$1{{примечания}}']
  −
  −
        // .,… до сносок -- сдвиг сносок:
  −
      , [/\s*,\s*((<ref[^<\/>]*?(>[^<]+?<\/ref|\/)>)+)/gi , '{{,}}$1']  // -- запятая до;
  −
      , [/\s*(…)\s*((<ref[^<\/>]*?(>[^<]+?<\/ref|\/)>)+)/gi , '{{,|$1}}$2']  // -- др. знак до;
  −
      , [/\s*\.\s*((<ref[^<\/>]*?(>[^<]+?<\/ref|\/)>)+)/gi, '{{тчк}}$1'] // -- точка до;
  −
  −
        // .,… после сносок -- перенос до и сдвиг сносок:
  −
      , [/\s*((<ref[^<\/>]*?(>[^<]+?<\/ref|\/)>)+)\s*(?:,|\{\{(?:,|зпт)\}\})/gi , '{{,}}$1']  // -- запятая после;
  −
      , [/\s*((?:<ref[^<\/>]*?(?:>[^<]+?<\/ref|\/)>)+)\s*([…])/gi , '{{,|$2}}$1']  // -- др. знак после;
  −
      , [/\s*((<ref[^<\/>]*?(>[^<]+?<\/ref|\/)>)+)\s*(?:\.|\{\{(?:,\|\.|тчк)\}\})/gi, '{{тчк}}$1'] // -- точка после;
  −
  −
        // !? после сносок -- перенос до:
  −
      , [/\s*((?:\<ref[^<\/>]*?(?:\>[^<]+?<\/ref|\/)>)+)([!?;:“])/gi , '$2$1']  // -- !? после;
  −
  −
        // !?;:“» до сносок -- удаление лишних пробелов:
  −
      , [/\s*([!?;:“»])\s+((<ref[^<\/>]*?(>[^<]+?<\/ref|\/)>)+)/gi , '$1$2']  // -- др. знак до;
  −
  −
    ];
  −
    s = runReplacements (s, replacements2);
  −
    s = hide(s, /<[a-z][^>]*?>/gi);
  −
  −
    s = hide(s, /^({\||\|-).*/mg); // // -- таблицы и ряды.
  −
    s = hide(s, /(^\||^!|!!|\|\|) *[a-z]+=[^|]+\|(?!\|)/mgi); // -- стили ячеек.
  −
    s = hide(s, /\| +/g) // -- форматированные ячейки.
  −
    s = hide(s, /IS[BS]N[\s\d\-]{9,18}/g) // -- ISBN/ISSN.
  −
  −
    s = s.replace (/[ \t]+/g, ' '); // -- двойные пробелы.
  −
  −
    var replacements3 = [
  −
        // Заголовки:
  −
        [/^(=+)[ \t\f\v]*(.*?)[ \t\f\v]*=+$/gm, '$1 $2 $1'] // -- окружить пробелами.
  −
      , [/([^\r\n])(\r?\n==.*==\r?\n)/g, '$1\n$2'] // -- пустую строку впереди.
  −
      , [/^== см(\.?|отрите) ?так\s*же ==$/gmi, '== См. также =='] // -- «См. также».
  −
      , [/^== сноски ==$/gmi, '== Примечания ==']
  −
      , [/^== (.*[^.])[.:] ==$/gm, '== $1 =='] // -- точка или двоеточие в конце.
  −
  −
      , [/«|»|“|”|„/g, '"'] // -- временное скрытие нормальных кавычек. Нужно ли?
  −
  −
        // Тире и дефисы:
  −
      , [/–/g, '-']                    // -- &ndash; > -
  −
      , [/&(#151|[nm]dash);/g, '—']    // -- мнемоника тире > —
  −
      , [/(&nbsp;|\s)-{1,3} /g, '$1— '] // -- отбитые - > —
  −
      , [/(\d)-{1,2}(\d)/g, '$1?$2']    // -- -/-- между цифрами > ? (&#2012;)
  −
      , [/([IVXLCDM]+)-{1,2}([IVXLCDM]+)/g, '$1?$2']    // -- -/-- между римскими цифрами > ? (&#2012;)
  −
      , [/(\s)-(\d)/g, '$1?$2']        // -- отбитый - перед цифрой > ?
  −
  −
        // Мнемоники HTML -> символы:
  −
      , [/&#x([0-9a-f]{1,4});/gi, function(n,a){return String.fromCharCode(eval('0x'+a.substr(-4)))}]  //&#x301;
  −
      , [/&copy;/gi,'©']
  −
      , [/&reg;/gi,'®']
  −
      , [/&sect;/gi,'§']
  −
      , [/&euro;/gi,'€']
  −
      , [/&yen;/gi,'?']
  −
      , [/&pound;/gi,'?']
  −
      , [/&deg;/g,'°']
  −
      , [/\(tm\)|\(тм\)|&trade;/gi,'™']
  −
      , [/\.\.\.|&hellip;/g,'…']
  −
      , [/\+-|&plusmn;/g,'±']
  −
      , [/~=/g,'?']
  −
      , [/\^2(\D)/g,'?$1']
  −
      , [/\^3(\D)/g,'?$1']
  −
      , [/&((la|ra|bd|ld)quo|quot);/g,'"']
  −
      , [/([\wа-яА-ЯёЁ])'([\wа-яА-ЯёЁ])/g,'$1’$2'] //'
  −
      , [/№№/g,'№']
  −
  −
        // Годы и века
  −
      , [/(\(|\s)([12]?\d{3})[\u00A0 ]?(-{1,3}|—) ?([12]?\d{3})(?![\w-°])/g, '$1$2—$4']
  −
      , [/([12]?\d{3}) ?(гг?\.)/g, '$1' + u + '$2']
  −
      , [/(\(|\s)([IVX]{1,5})[\u00A0 ]?(-{1,3}|—) ?([IVX]{1,5})(?![\w-°])/g, '$1$2—$4']
  −
      , [/([IVX]{1,5}) ?(вв?\.)/g, '$1' + u + '$2']
  −
  −
        // Сокращения:
  −
      , [/(Т|т)\.\s?е\./g, '$1о есть']
  −
      , [/(Т|т)\.\s?к\./g, '$1ак как']
  −
      , [/(В|в)\sт\. ?ч\./g, '$1 том числе']
  −
      , [/и\sт\.\s?д\./g, 'и' + u + 'т\.' + u + 'д\.']
  −
      , [/и\sт\.\s?п\./g, 'и' + u + 'т\.' + u + 'п\.']
  −
      , [/(Т|т)\.\s?н\./g, '$1\.' + u + 'н\.']
  −
      , [/н\.\s?э\./g, 'н\.' + u + 'э\.']
  −
      , [/(Д|д)(о|\.)\sн\.\s?э\./g, '$1о' + u + 'н\.' + u + 'э\.']
  −
      , [/(\d)[\u00A0 ]?(тыс\.|млн|млрд|трлн|(?:м|с|д|к)?м|[км]г)\.?(?=[,;.]| "?[а-яё-])/g, '$1' + u + '$2']
  −
      , [/(\d)[\u00A0 ](тыс)([^\.А-Яа-яЁё])/g, '$1' + u + '$2.$3']
  −
      , [/ISBN:\s?(?=[\d\-]{8,17})/, 'ISBN ']
  −
  −
        // Пробелы:
  −
      , [/^([#*:]+)[ \t\f\v]*([^ \t\f\v*#:;])/gm, '$1 $2'] // -- в списках.
  −
      , [/(\S) (-{1,3}|—) (\S)/g, '$1' + u + '— $3']
  −
      , [/([А-Я]\.) ?([А-Я]\.) ?([А-Я][а-я])/g, '$1' + u + '$2' + u + '$3']
  −
      , [/([А-Я]\.)([А-Я]\.)/g, '$1 $2']
  −
      , [/([а-я]\.)([А-ЯA-Z])/g, '$1 $2'] // -- после точки.
  −
      , [/([)"а-яa-z\]])\s*,([\[("а-яa-z])/g, '$1, $2'] // -- после точки.
  −
      , [/([)"а-яa-z\]])\s([,;])\s([\[("а-яa-z])/g, '$1$2 $3']
  −
      , [/([^%\/\w]\d+?(?:[.,]\d+?)?) ?([%‰])(?!-[А-Яа-яЁё])/g, '$1' + u + '$2'] // -- проценты.
  −
      , [/(\d) ([%‰])(?=-[А-Яа-яЁё])/g, '$1$2'] // -- 5%-й
  −
      , [/([№§])(\s*)(\d)/g, '$1'+u+'$3']
  −
      , [/\( +/g, '(']
  −
      , [/ +\)/g, ')'] // -- убрать пробелы у внутренних сторон скобок.
  −
  −
        // Температура:
  −
      , [/([\s\d=????<>("'|])([+±?-]?\d+?(?:[.,]\d+?)?)(([ °^*]| [°^*])[CС])(?=[\s"').,;!?|])/gm, '$1$2' + u + '°C']
  −
      , [/([\s\d=????<>("'|])([+±?-]?\d+?(?:[.,]\d+?)?)(([ °^*]| [°^*])F)(?=[\s"').,;|!?])/gm, '$1$2' + u + '°F']
  −
  −
        // Десятичная точка > запятая:
  −
      , [/(\s\d+)\.(\d+[\u00A0 ]*[%‰°])/gi, '$1,$2']
  −
  −
        // Союзы, предлоги, частицы, единицы измерения:
  −
      , [/\b(а|в|во|да|до|за|и|к|ко|на|о|об|обо|с|со|у)\s/gi, '$1 '] // -- проклитики
  −
      , [/\s(б|бы|же|ли|ль)\b/gi, ' $1'] // -- проклитики
  −
    ];
  −
    s = runReplacements (s, replacements3);
  −
   
  −
    // Интерфейс для дополнений к викификатору:
  −
    s = runReplacements (s, window.wfPlugins);
  −
  −
    // Восстановление кавычек: "" > «»:
  −
    for (var i=1; i<=2; i++) {
  −
        s = s.replace (/([\s\u00A0·\x02!|#'"\/(;+-])"([^"]*)([^\s"(|])"([^a-zа-яё])/ig, '$1«$2$3»$4'); //"
  −
    }
  −
    while (/«[^»]*«/.test(s)) {
  −
        s = s.replace (/«([^»]*)«([^»]*)»/g, '«$1„$2“');
  −
    }
  −
  −
    s = s.substr (1, s.length - 2); // -- удаление начального и конечного пробелов.
  −
    if ('0'.replace('0', '$$') == '$') { // -- $ в регэксах, как всегда, IE особенный.
  −
        for (var i = 0; i < hidden.length; i++) {
  −
            hidden [i] = hidden [i].replace (/\$/g, '$$$$');
  −
        }
  −
    }
  −
    // Раскрытие скрытого в hide ():
  −
    while (hidden.length > 0) {
  −
        s = s.replace ('\x01' + hidden.length + '\x02', hidden.pop ());
  −
    }
  −
    return s;
  −
    // Вспомогательные функции:
  −
    // Выполнение массива замен:
  −
    function runReplacements (s, pairs) {
  −
        if (pairs && pairs.length) {
  −
            jQuery.each (pairs, function () { s = s.replace (this [0], this [1]);});
  −
        }
  −
        return s;
  −
    }
  −
    // Скрытие фрагментов путём окружения \x01 и \x02:
  −
    function hide (txt, re) {
  −
        return txt.replace (re, function (s) {return '\x01' + hidden.push (s) + '\x02'});
  −
    }
  −
    function hideTag (txt, tag) {
  −
        return hide (txt, RegExp ('<' + tag + '( [^>]+)?>[\\s\\S]+?<\\/' + tag + '>', 'gi'));
  −
    }
  −
}
  −
  −
// Создать шаблон, основанный на [[Шаблон:Карточка]] по синтаксису вызова:
  −
function makeTemplate (/* String */ s) {
  −
    return makeTemplateOrCard (true, s);
  −
}
  −
  −
// Создать форму, основанную на [[Шаблон:Карточка]] по синтаксису вызова:
  −
function makeForm (/* String */ s) {
  −
    return makeTemplateOrCard (false, s);
  −
}
  −
  −
/* Функция, генерирующая:
  −
*    код шаблона, основанного на шаблоне Карточка или
  −
*    код формы Semantic Forms с тем же оформлением
  −
* на основании синтаксиса вызова шаблона в виде
  −
* {{<Имя шаблона>
  −
*    | <параметр1> = пояснение1
  −
*    | <параметр2> = пояснение2
  −
* ...
  −
*    | <параметрn> = пояснениеn
  −
* }}
  −
* Спецификация синтаксиса берётся из выделения в окне редактирования викитекста;
  −
* если ничего не выделено, используется всё содержимое окна.
  −
*
  −
* Для генерации кода шаблона или формы нужно нажать кнопку со всплывающей подсказкой «Создать карточку».
  −
*
  −
* Автор: Александр Машин, 2 августа 2009 (создание шаблона) и 11 октября 2009 (создание формы) -- в виде приспособления.
  −
* 7 сентября 2012 -- интеграция в инструменты редактирования
  −
*
  −
*/
  −
  −
// Создание кода шаблона-карточки или формы-карточки на основе переданной спецификации:
  −
function makeTemplateOrCard (/* Bool */is_template, /* String */specs) {
  −
    // Ничего не выбрано:
  −
if (undefined == typeof specs || !specs || '' == specs) return specs;
  −
    // Это не вызов шаблона с параметрами:
  −
var params = specs.split ('|');
  −
    if (params == null) return specs;
  −
  −
    var t_body = '';
  −
    // Проход по параметрам.
  −
    // Номера параметров не подряд, чтобы облегчить вставку:
  −
    var incr = 99 / params.length; // -- заменить на var incr = 10; после перехода [[Шаблон:Карточка]] на циклы.
  −
    incr = incr < 1 ? 1 : incr;
  −
    for (var i = 0; i < params.length; i++) {
  −
        // Обрезка пробелов и того, что после =:
  −
        var param = $.trim (params [i].split ('=') [0]);
  −
        param = param.replace (/}}.*/, ''); // -- удаление закрывающих }}.
  −
        param = param.substr (0, 1).toLocaleLowerCase () + param.substr (1); // -- регистр параметра.
  −
        if (param.indexOf ('{{') > -1) {
  −
            // Это название шаблона:
  −
            var template_title = param.replace (/^.*\{\{/, '');
  −
            continue;
  −
        }
  −
        if (is_template && (param == 'название'    || param == 'name'
  −
                        || param == 'тип'        || param == 'type'
  −
                        || param == 'изображение' || param == 'image'
  −
                        || param == 'ширина'      || param == 'width'
  −
                        || param == 'подпись'    || param == 'signature')) {
  −
            // Эти параметры идут в заголовке шаблона:
  −
            continue;
  −
        }
  −
        if (!is_template && (param == 'название' || param == 'name'
  −
                          || param == 'ширина'  || param == 'width'
  −
                          || param == 'подпись'  || param == 'signature')) {
  −
            // Эти параметры идут в заголовке формы:
  −
            continue;
  −
        }
  −
        var param_no = Math.floor ((i + 1) * incr).toString ();
  −
        var label = param.substr (0, 1).toLocaleUpperCase () + param.substr (1).toLocaleLowerCase ();
  −
        if (is_template) {
  −
            // Это шаблон:
  −
            var type = param.toLocaleLowerCase ().indexOf ('дата') > -1
  −
                    || param.toLocaleLowerCase ().indexOf ('год')  > -1
  −
                    || param.toLocaleLowerCase ().indexOf ('день') > -1
  −
                    ? 'дата'
  −
                    : 'страница';
  −
            var prop = type == 'дата' ? label.replace (/(дата|год|день)\s*/i, '') : label;
  −
            param    = '{{{' + param + '|{{{' + label + '|}}}}}}';
  −
        } else {
  −
            // Это форма:
  −
            param    = '{{{field|' + param + '|width=23}}}';
  −
        }
  −
        t_body = t_body + '\n'
  −
              + '\n | заголовок' + param_no + ' = ' + ''
  −
              + '\n | метка' + param_no + ' = ' + label
  −
              + '  | текст' + param_no + ' = ' + param;
  −
        if (is_template) {
  −
            // Это нужно только для шаблонов:
  −
            t_body = t_body
  −
                  + '\n | свойство' + param_no + ' = ' + prop
  −
                  + ' | обратно' + param_no + ' = ' + ''
  −
                  + ' | тип' + param_no + ' = ' + type
  −
                  + ( type != 'дата' ?('\n | категория' + param_no + ' = ' + ''
  −
                  + ' | постфикс' + param_no + ' = ' + '')
  −
                  :('\n | категория_дня' + param_no + ' = ' + ''
  −
                  + ' | постфикс_дня' + param_no + ' = ' + ''
  −
                  + ' | категория_года' + param_no + ' = ' + ''
  −
                  + ' | постфикс_года' + param_no + ' = ' + ''));
  −
        }
  −
    }
  −
    t_foot    = '\n\n | внизу ='
  −
              + ' | стиль_внизу = '
  −
              + ' | форма = ' + template_title
  −
              + '}}\n';
  −
  −
    if (is_template) {
  −
        // Это шаблон:
  −
        var preface    = '';
  −
        var title      = '{{{название|{{{Название|{{{name|{{{Name|{{PAGENAME}}}}}}}}}}}}}}';
  −
        var subtitle  = '{{{тип|{{{Тип|{{{type|{{{Type|' + template_title + '}}}}}}}}}}}}';
  −
        var image      = '{{{изображение|{{{Изображение|{{{image|{{{Image|}}}}}}}}}}}}';
  −
        var width      = '{{{ширина|{{{Ширина|{{{width|{{{Width|}}}}}}}}}}}}';
  −
        var signature  = '{{{подпись|{{{Подпись|{{{signature|{{{Signature|}}}}}}}}}}}}';
  −
        var head_props = '';
  −
        var body_class = '';
  −
    } else {
  −
        // это форма:
  −
        var preface    = '<noinclude>{{#forminput:' + template_title + '|120|(' + template_title + ' — новая)|Создать}}\n'
  −
                      + '</noinclude><includeonly>\n'
  −
                      + '{{{info|page name=<' + template_title + '[название]>|add title=Создание статьи о ' + template_title + '|edit title=Правка статьи о·' + template_title + '}}}\n'
  −
                      + '<!-- <div id="wikiPreview" style="display none; padding-bottom 25px; margin-bottom 25px; border-bottom 1px solid #AAAAAA;"></div> -->\n'
  −
                      + '{{{for template|' + template_title + '}}}';
  −
        var title      = '{{{field|название|width=52}}}';
  −
        var subtitle  = '';
  −
        var image      = '';
  −
        var width      = '';
  −
        var signature  = '';
  −
        var head_props = '-';
  −
        var body_class = 'formtable';
  −
    }
  −
    var t_head = preface
  −
              + '\n{{Карточка'
  −
              + '\n |имя = ' + template_title
  −
              + '\n |стиль_тела = border-color: black'
  −
              + '\n |класс_тела = ' + body_class
  −
              + '\n |шапка = '
  −
              + '  |стиль_шапки = '
  −
              + '  |свойство_шапки = ' + head_props
  −
              + '  |класс_шапки = '
  −
              + '\n |название = ' + title
  −
              + '  |стиль_названия = black'
  −
              + '\n |вверху = '
  −
              + '  |стиль_вверху = '
  −
              + '  |свойство_вверху = ' + head_props
  −
              + '\n |вверху2 = ' + subtitle
  −
              + '  |стиль_вверху2 = '
  −
              + '  |свойство_вверху2 = ' + head_props
  −
              + '\n |вверху3 = '
  −
              + '  |стиль_вверху3 = '
  −
              + '  |свойство_вверху3 = ' + head_props
  −
              + '\n |значок = '
  −
              + '\n |изображение = ' + image
  −
              + '\n |стиль_заголовков = '
  −
              + '  |стиль_меток = '
  −
              + '  |стиль_текста = ';
  −
    if (is_template) {
  −
        // шаблон:
  −
        t_foot = t_foot
  −
              + '<noinclude>\n<pre>\n' + specs + '\n</pre>\n[[Категория:Традиция:Шаблоны Summary]]</noinclude>';
  −
    } else {
  −
        // форма:
  −
        t_foot = t_foot
  −
              + '{{{end template}}}\n'
  −
              + '{{{standard input|free text|rows=25|cols=55}}}\n\n'
  −
              + '{{{standard input|summary}}}\n\n'
  −
              + '{{{standard input|minor edit}}} {{{standard input|watch}}}\n\n'
  −
              + '{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}\n\n'
  −
              + '</includeonly><noinclude>[[Категория:Традиция:Формы]]</noinclude>';
  −
    }
  −
    return t_head + t_body + t_foot;
  −
}