«Быстрая вставка» — это кнопка или ссылка, при нажатии вставляющая некоторый текст в окно редактирования.

 панель с кнопками вставки

 окно редактирования с текстом
 панель с ссылками вставки (генерируется Mediawiki сервером из спецстраницы Mediawiki:Edittools)

Кнопки вставки править

Кнопки вставки рисуются после загрузки страницы специальным скриптом на основе двух массивов:

11 стандартных кнопок для всех проектов 4 доп. кнопки в русской Википедии

 B   I  … …

К: … …

mwEditButtons[] mwCustomEditButtons[]
Генерируется вызовами addButton(…) прямо на странице Добавляется в MediaWiki:Editpage.js

В персональном скрипте проще всего менять кнопки по срабатыванию addOnloadHook, когда массивы уже готовы, но кнопки ещё не нарисованы.

Внимание! Все нижеследующие примеры должны вызываться так:

if (mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit')
 addOnloadHook(myButtons)
function myButtons(){
 // все примеры внутри такой функции
}

Также не забывайте, что массивы нумеруются с 0.


Добавление

mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://upload.wikimedia.org/wikipedia/ru/1/1d/Button_redirect_rus.png",
    "speedTip": "Перенаправление",
    "tagOpen": "#REDIRECT [[",
    "tagClose": "]]",
    "sampleText": "название страницы"
}

Конечно, сперва нужно нарисовать и выложить на любой сайт изображение нужного размера.


Удаление всех кнопок

mwEditButtons = [] 
mwCustomEditButtons = []

Напоминание: панель с кнопками можно вообще отключить в персональных настройках.


Удаление некоторых кнопок

mwEditButtons.splice(2, 2) //удалить стандартные с 3й по 4ю
// первое число: номер кнопки (с нуля), второе: сколько подряд удалить


Изменение вставляемого текста

if (mwEditButtons[9]) //у кнопки «Подпись»
 mwEditButtons[9].tagOpen = ' — ~~~~';


Изменение картинки: см. реальный пример


Примечания:

  • Большой набор новых кнопок с разной функциональностью можно найти на странице en:User:MarkS/Extra_edit_buttons.
  • Пример добавления похоже выглядящей текстовой кнопки: addToolbarButton() в qPreview.


Ссылки вставки править

С помощью скрипта можно добавлять ссылки-вставки практически в любой HTML-элемент страницы.

Для этого сперва скрипт находит нужный блок по его id. Зайдите на любую страницу редактирования, посмотрите HTML-код и вы увидите, у каких служебных элементов интерфейса указано id=…. Например:

  • <div id=toolbar> — тулбар (верхняя панель кнопок)
  • <div id=editpage-copywarn> — сообщение Copyrightwarning
  • <div id=editpage-specialchars> — панель «быстрой вставки» Edittools

Затем скрипт туда добавляет ссылки-вставки:

  • в начало: block.innerHTML = newLinks + block.innerHTML
  • в конец: block.innerHTML = block.innerHTML + newLinks
  • полностью заменяя содержимое: block.innerHTML = newLinks


Пример 1: добавление ссылок-вставок div и span в начало панели «быстрой вставки»:

function addExtraChars1(){
  var block = document.getElementById ('editpage-specialchars')
  if (!block) return;
  block.innerHTML = 
   '<a href=\'javascript:insertTags("<div>","</div>","")\'>div</a> ' +
   '<a href=\'javascript:insertTags("<span>","</span>","")\'>span</a> ' +
   block.innerHTML
}
addOnloadHook(addExtraChars1);

Пример 2: добавление ссылки-вставки [[Участник:]] вместо Copyrightwarning:

function addExtraChars2(){
  var block = document.getElementById ('editpage-copywarn');
  if (!block) return;
  block.innerHTML = 
   '<a href=\'javascript:insertTags("[[Участник:","]]","")\'>div</a> ';
}
addOnloadHook(addExtraChars2);


Выпадающий список править

Более сложный пример: добавление в начало панели «быстрой вставки» выпадающего списка шаблонов. При выборе из списка шаблон вставляется в конец редактируемого текста, а его название — в поле описания изменений.

function addTemplatesList(){
 var block = document.getElementById('editpage-specialchars');
 if (!block) return;
 block.innerHTML = 
  '<select onchange=insertSel(this)>'
 +'<option>Шаблоны</option>'
 +'<option value="subst:welcome">Welcome</option>'
 +'<option value="subst:anon">Anon</option>'
 +'<option value="stub">Stub</option>' // и т.д. — дополняйте сами
 +'</select>' + block.innerHTML;
}
function insertSel(sel){
 if (sel.selectedIndex <= 0) return;
 var insertion = sel.options[sel.selectedIndex].value;
 document.editform.wpTextbox1.value += '{'+'{' + insertion + '}}\n';
 document.editform.wpSummary.value += insertion;
}
addOnloadHook(addTemplatesList);


Панель кнопок внизу править

Такой скрипт переместит панель с кнопками вниз, под окошко редактирования

addOnloadHook(function(){
 var toolbar = document.getElementById('toolbar')
 var copywarn = document.getElementById('editpage-copywarn')
 if (!toolbar || !copywarn) return
 copywarn.parentNode.insertBefore(toolbar, copywarn)
})