MediaWiki:Editpage.js
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
// Справка: https://www.mediawiki.org/wiki/Extension:WikiEditor/Toolbar_customization
var isEditPage = $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1;
var isWikitext = $.inArray( mw.config.get( 'wgPageContentModel' ), ['wikitext', 'proofread-page'] ) !== -1; // не 'javascript', 'Scribunto' (Lua)
// Секция гаджетов в панели инструментов
if ((isEditPage && isWikitext) && mw.user.options.get( 'usebetatoolbar' ) === 1) {
$.when(
mw.loader.using( 'ext.wikiEditor' ),
$.ready
).then(
function() {
function addGadgetsGroup() {
$('#wpTextbox1').wikiEditor('addToToolbar', { section:'main', groups: {'gadgets':{}}});
mw.util.addCSS('.wikiEditor-ui-toolbar .group-insert {border-right:1px solid #DDD}');
$groupInsert = $( '#wikiEditor-section-main .group-insert' );
$groupGadgets = $( '#wikiEditor-section-main .group-gadgets' );
if ( $groupGadgets.length ) {
$groupGadgets.insertAfter( $groupInsert );
mw.hook( 'wikieditor.toolbar.gadgetsgroup' ).fire();
}
}
function addRuwsoldGroup() {
$('#wpTextbox1').wikiEditor('addToToolbar', { section:'advanced', groups: {'ruws-old':{}}});
$groupButtonRuwsold = $( '#wikiEditor-section-main .group-ruws-old' );
if ( $groupButtonRuwsold.length ) {
mw.hook( 'wikieditor.toolbar.ruws-oldgroup' ).fire();
}
}
var $groupGadgets, $groupInsert, $groupFormat, $groupButtonRuwsold;
addGadgetsGroup();
addRuwsoldGroup();
addButtonRuwsold();
// Лечение для случаев, когда панель инструментов поздно прорисовывается
if ( !$groupGadgets.length ) setTimeout( addGadgetsGroup, 0 );
if ( !$groupButtonRuwsold.length ) setTimeout( addRuwsoldGroup, 0 );
}
);
}
// Функции для добавления кнопок в секцию advanced панели
function addButtonRuwsold() {
function addInsertBtn( id, pretxt, posttxt, img, title ){
$('#wpTextbox1').wikiEditor('addToToolbar', {
section:'advanced',
group:'ruws-old',
tools: {
id: {
type:'button',
action: {type:'encapsulate', options: {pre:pretxt, post:posttxt}},
label: title,
icon:'//upload.wikimedia.org/' + img
}
}
});
}
// Кнопки
addInsertBtn('math', "\u003cmath>", "</math>", 'wikipedia/commons/2/2e/Button_math.png', 'Математическая формула');
addInsertBtn('hr', "\n----\n", "", 'wikipedia/commons/0/0d/Button_hr.png', 'Горизонтальная линия');
addInsertBtn('redir', "#REDIRECT [\[", "]]", 'wikipedia/ru/1/1d/Button_redirect_rus.png', 'Перенаправление');
addInsertBtn('wplink', "[\[w:|", "]]", 'wikisource/ru/c/cc/Button-pipelink.png', 'Ссылка на Википедию');
addInsertBtn('category', "[\[Категория:", "]]", 'wikipedia/commons/3/3c/Button_cat_ru.png', 'Категория');
addInsertBtn('quotes', "«", "»", 'wikisource/ru/0/0b/Button-quotes.png', 'Кавычки');
addInsertBtn('quotes_lapki', "„", "“", 'wikipedia/commons/2/23/Quotes-Lithuanian.png', 'Кавычки-лапки');
addInsertBtn('dash', "—", "", 'wikisource/ru/a/a9/Button-dash.png', 'Тире');
addInsertBtn('poem', "<poem>\n", "\n</poem>", 'wikisource/ru/c/cd/Button_poem.png', 'Стихи');
addInsertBtn('accent', "́", "", 'wikipedia/commons/0/0e/Button_acute_accent.png', 'Ударение');
addInsertBtn('comment', "<!-- ", " -->", 'wikipedia/commons/7/74/Button_comment.png', 'Комментарий');
addInsertBtn('wsref', "{\{Примечание ВТ|", "}}", 'wikipedia/commons/c/c4/Button_ref.png', 'Примечание редактора ВТ (в тексте)');
addInsertBtn('wsrefs', "{\{Примечания ВТ}}", "", 'wikipedia/commons/f/fe/Button_refs.png', 'Примечания редакторов ВТ (внизу страницы)');
}
// Edit Summary buttons
var wpSummaryBtn;
$(function () {
var wpSummary = document.getElementById('wpSummary');
if (!wpSummary || (wpSummary.form.wpSection && wpSummary.form.wpSection.value == 'new')) return;
wpSummaryBtn = document.createElement('span'); //global var
wpSummaryBtn.id = 'userSummaryButtonsA';
wpSummary.parentNode.insertBefore(wpSummaryBtn, wpSummary.nextSibling);
addSumButton('викиф.', 'викификация', 'Произведена викификация');
addSumButton('оформл.', 'оформление', 'Улучшено оформление');
addSumButton('орфогр.', 'орфография', 'Поправлена орфография');
addSumButton('пункт.', 'пунктуация', 'Изменена пунктуация');
addSumButton('интервики', 'интервики', 'Исправлены межъязыковые ссылки (интервики)');
addSumButton('кат.', 'категоризация', 'Исправлена категоризация');
addSumButton('шаблон', 'шаблон', 'Добавлен / изменён шаблон');
// addSumButton('шабл. опис.', 'шаблон описания', 'Добавлен / изменён шаблон описания');
addSumButton('шабл. АП', 'шаблон АП', 'Добавлен / изменён шаблон авторских прав');
addSumButton('к удал.', 'к удалению', 'Страница предложена к удалению');
// addSumButton('доп.', 'дополнение', 'Добавлены новые сведения');
addSumButton('илл.', 'иллюстрация', 'Размещена иллюстрация');
addSumButton('обнов.', 'обновление данных', 'Обновлены устаревшие данные');
addSumButton('качество', 'качество текста', 'Уточнено качество текста');
addSumButton('источн.', 'источник', 'Указан источник текста');
addSumButton('неоднозн.', 'неоднозначность', 'Добавлена ссылка на страницу разрешения неоднозначности');
addSumButton('архивация', 'архивация', 'Текст перемещён в архив');
addSumButton('запрос', 'запрос источника', 'Запрос источника');
addSumButton('сделано', 'сделано', 'Запрос выполнен');
addSumButton('закрыто', 'закрыто', 'Обсуждение закрыто');
addSumButton('итог', 'итог', 'Итог обсуждения или номинации');
addSumButton('так в источнике', 'так в источнике', 'уточнение по источнику');
});
function addSumButton(name, text, note) {
var btn = document.createElement('a');
btn.appendChild(document.createTextNode(name));
btn.title = note;
btn.onclick = function(){insertSummary(text)};
wpSummaryBtn.appendChild(btn);
}
function insertSummary(text) {
var wpSummary = document.getElementById('wpSummary');
if (wpSummary.value.indexOf(text) != -1) return;
if (wpSummary.value.match(/[^,; \/]$/)) wpSummary.value += ',';
if (wpSummary.value.match(/[^ ]$/)) wpSummary.value += ' ';
wpSummary.value += text;
}
// Блок "быстрая вставка", часто используемые шаблоны
var $formatButtons = $( '<p>' )
.addClass( 'extraSpecialchars' )
.css( 'font-size', '0.875em' )
.prependTo( '#editpage-specialchars' );
$( '<b>' )
.addClass( 'extraSpecialchars-title' )
.text( 'Часто используемые шаблоны: ' )
.appendTo( $formatButtons );
const tplbuttons = [
['Отексте', '{\{Отексте\n' +
'| АВТОР = ', '\n' +
'| НАЗВАНИЕ = \n' +
'| ЧАСТЬ = \n' +
'| ПОДЗАГОЛОВОК = \n' +
'| ИЗЦИКЛА = \n' +
'| ИЗСБОРНИКА = \n' +
'| СОДЕРЖАНИЕ = \n' +
'| ДАТАСОЗДАНИЯ = \n' +
'| ДАТАПУБЛИКАЦИИ = \n' +
'| ПЕРВАЯПУБЛИКАЦИЯ = \n' +
'| ЯЗЫКОРИГИНАЛА = \n' +
'| НАЗВАНИЕОРИГИНАЛА = \n' +
'| ПОДЗАГОЛОВОКОРИГИНАЛА = \n' +
'| ДАТАПУБЛИКАЦИИОРИГИНАЛА = \n' +
'| ПЕРЕВОДЧИК = <!-- Для отображения заполните ЯЗЫКОРИГИНАЛА -->\n' +
'| ИСТОЧНИК = \n' +
'| ДРУГОЕ = \n' +
'| ВИКИПЕДИЯ = \n' +
'| ВИКИДАННЫЕ = <!-- id элемента темы -->\n' +
'| ОГЛАВЛЕНИЕ = \n' +
'| ПРЕДЫДУЩИЙ = \n' +
'| СЛЕДУЮЩИЙ = \n' +
'| КАЧЕСТВО = <!-- оценка по 4-х бальной шкале -->\n' +
'| ЛИЦЕНЗИЯ = \n' +
'| СТИЛЬ = text\n' +
'| НЕОДНОЗНАЧНОСТЬ = \n' +
'| ДРУГИЕПЕРЕВОДЫ = \n' +
'}}\n'],
['Обавторе', '{\{Обавторе\n' +
'| ФАМИЛИЯ = ', '\n' +
'| ИМЕНА = \n' +
'| ВАРИАНТЫИМЁН = \n' +
'| ОПИСАНИЕ = \n' +
'| ДРУГОЕ = \n' +
'| ДАТАРОЖДЕНИЯ = \n' +
'| МЕСТОРОЖДЕНИЯ = \n' +
'| ДАТАСМЕРТИ = \n' +
'| МЕСТОСМЕРТИ = \n' +
'| ИЗОБРАЖЕНИЕ = \n' +
'| ВИКИДАННЫЕ = \n' +
'| ВИКИПЕДИЯ = \n' +
'| ВИКИЦИТАТНИК = \n' +
'| ВИКИСКЛАД = \n' +
'| ВИКИЛИВР = \n' +
'| ЭСБЕ = \n' +
'| Google = \n' +
'}}\n'],
['Документ', '{\{Документ\n' +
'|ОРГАН = \n' +
'|ОРГАН2 = \n' +
'|ОРГАН3 = \n' +
'|СТРАНА = \n' +
'|СТРАНА2 = \n' +
'|СТРАНА3 = \n' +
'|ВИД = \n' +
'|НАЗВАНИЕ = \n' +
'|ДАТА = \n' +
'|№ = \n' +
'|№2 = \n' +
'|№3 = \n' +
'|ИСТОЧНИК = \n' +
'|ДРУГОЕ = \n' +
'|КАЧЕСТВО = \n' +
'|ВИКИПЕДИЯ = \n' +
'|СТИЛЬ = text\n' +
'|КАТЕГОРИЯ = \n' +
'|НЕТ КАВЫЧЕК = \n' +
'|НЕТ ДАТЫ = \n' +
'|УТРАТИЛ СИЛУ = \n' +
'|ГРИФ = \n' +
'|ЛИЦЕНЗИЯ = PD-RU-exempt\n' +
'}}\n'],
['БСЭ1', '{\{БСЭ1\n' +
'|ВИКИДАННЫЕ = \n' +
'|ВИКИПЕДИЯ=\n' +
'|ВИКИТЕКА=\n' +
'|ВИКИСКЛАД=\n' +
'|ВИКИСЛОВАРЬ=\n' +
'|ВИКИЦИТАТНИК=\n' +
'|ВИКИУЧЕБНИК=\n' +
'|ВИКИНОВОСТИ=\n' +
'|ВИКИВИДЫ=\n' +
'|НЕОДНОЗНАЧНОСТЬ=\n' +
'|КАЧЕСТВО=\n' +
'}}\n', ''],
['Poemx', '{\{poemx||\n', '\n|}}'],
['Poem-on\/off', '{\{poem-on|}}\n', '\n{\{poem-off}}'],
['Poemx1', '{\{poemx1||\n', '\n|}}'],
['Изображение', '\n=={{int:filedesc}}==\n{{изображение\n|описание = ', '\n|время создания = \n|источник = \n|автор = \n|лицензия =\n}}\n'],
['Версии', '{\{версии|\n', '\n}}'],
['Unsigned', '{\{unsigned|', '}}'],
['Книга', '{\{книга|автор=|часть=|заглавие=', '|оригинал=|томов=|ссылка=|ссылка часть=|ответственный=|издание=|место=|издательство=|год=|том=|страницы=|страниц=|серия=|isbn=}}'],
['Статья', '{\{статья|автор=|заглавие=', '|оригинал=|ссылка=|ответственный=|издание=|тип=|место=|год=|том=|номер=|страницы=|issn=}}'],
['Источник', '{\{Источник|', '|}}'],
['Неоднозначность', '{\{неоднозначность}}', ''],
['АП', '{{АП|ГОД=','|ВОВ=|ГОДРЕАБИЛИТАЦИИ=}}'],
['RusGov', '{\{RusGov}}', ''],
['PD-old-70', '{\{PD-old-70}}', ''],
['PD-RusEmpire', '{\{PD-RusEmpire}}', ''],
['R', '{\{R|', '}}'],
['ВАР', '{\{ВАР|', '<!--\n-->|<!--\n-->\n}}'],
['ВАР2', '{\{ВАР2|', '<!--\n-->|<!--\n-->\n}}'],
['---', '{\{---|width=15%}}', ''],
['closed2', '{\{closed2| --~~\~~|text=', '}}'],
['Сделано', ': {\{сделано}}. --~~\~~', ''],
['К удалению', '<noinclude>{\{к удалению|', '}}</noinclude>'],
['К быстрому удалению', '<noinclude>{\{к быстрому удалению|', '}}</noinclude>'],
];
function addClickEvent() {
var $currentFocused = $( '#wpTextbox1' );
if ( !$currentFocused.length) return;
$.each(tplbuttons, function (i, b) {
var label = b[0], start = b[1], end = b[2];
var $item = $( '<a href="#">'+label+'</a>' );
$item.attr('data-mw-charinsert-start', start);
$item.attr('data-mw-charinsert-end', end);
$item.on( 'click', function ( e ) {
e.preventDefault();
if ($currentFocused.length) {
$currentFocused.textSelection('encapsulateSelection', { pre: start, peri: '', post: end });
}
} );
$item.addClass('mw-charinsert-item').appendTo( $formatButtons );
} );
}
if (isEditPage && isWikitext) {
mw.loader.using( 'jquery.textSelection', function () {
$(document).ready( addClickEvent );
} );
}
// -------------------
mw.hook( 'wikipage.content' ).add( function () {
// Автоматическое заполнение полей при добавлении новых тем сверху
let summary = $( '#wpSummary' ).val();
if ( decodeURIComponent( location.search ).search( /[?&]summary=\/\*[+ ]*\*\// ) !== -1 ||
( mw.config.get( 'wgAction' ) === 'submit' &&
summary !== undefined &&
summary.search( /\/\*\s*\*\// ) !== -1
)
) {
mw.loader.load( 'ext.gadget.newTopicOnTop' );
}
} );