Проект:Технические работы/Персональные скрипты/Кнопки
«Быстрая вставка» — это кнопка или ссылка, при нажатии вставляющая некоторый текст в окно редактирования.
окно редактирования с текстом
Кнопки вставки
[править код]Кнопки вставки рисуются после загрузки страницы специальным скриптом на основе двух массивов:
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)
})