MediaWiki:Common.js — различия между версиями
Ivgon (обсуждение | вклад) |
Ivgon (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| − | // Функция | + | // Функция, которая принудительно встраивает кнопку Викификатора в HTML-код панели |
| − | function | + | function injectWikificator() { |
| − | // | + | // Ищем группу кнопок "Вставка" (insert) на оригинальной панели WikiEditor |
| − | if ( ! | + | var $insertGroup = $( '.wikiEditor-ui-toolbar .section-main .group-insert' ); |
| + | |||
| + | // Если панель еще не отрисовалась, выходим (таймер попробует снова) | ||
| + | if ( !$insertGroup.length ) return; | ||
| + | |||
| + | // Проверяем, не добавили ли мы кнопку ранее, чтобы избежать дублирования | ||
| + | if ( $( '#wikif-custom-btn' ).length ) return; | ||
| − | // | + | // Создаем элемент кнопки в стиле WikiEditor |
| − | $( ' | + | var $button = $( '<a>' ) |
| − | + | .attr( { | |
| − | + | 'id': 'wikif-custom-btn', | |
| − | + | 'href': '#', | |
| − | ' | + | 'title': 'Викификатор', |
| − | + | 'class': 'tool tool-button' | |
| − | + | } ) | |
| − | + | .append( $( '<img>' ).attr( { | |
| − | + | 'src': '//upload.wikimedia.org/wikipedia/commons/0/06/Wikificator_button.png', | |
| − | + | 'alt': 'Викификатор', | |
| − | + | 'width': 22, | |
| − | + | 'height': 22 | |
| − | + | } ) ); | |
| − | + | ||
| − | + | // Задаем действие при клике на кнопку | |
| − | + | $button.click( function ( e ) { | |
| − | + | e.preventDefault(); | |
| − | + | if ( typeof Wikify === 'function' ) { | |
| − | + | Wikify(); | |
| − | + | } else { | |
| − | + | // Подгружаем текстовый процессор напрямую из вики | |
| − | + | $.getScript( '/wiki/index.php?title=MediaWiki:Wikificator.js&action=raw&ctype=text/javascript' ) | |
| − | + | .done( function () { | |
| + | if ( typeof Wikify === 'function' ) Wikify(); | ||
| + | } ); | ||
} | } | ||
| − | }); | + | } ); |
| + | |||
| + | // Вставляем кнопку в самый конец группы "Вставка" | ||
| + | $insertGroup.append( $button ); | ||
} | } | ||
| − | // | + | // Запуск логики только на страницах редактирования/создания статей |
if ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) { | if ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) { | ||
| − | + | $( document ).ready( function () { | |
| − | + | // Запускаем постоянную проверку появления панели (интервал 100мс), | |
| − | + | // так как панель WikiEditor подгружается асинхронно | |
| − | + | var checkExist = setInterval( function () { | |
| − | // | + | if ( $( '.wikiEditor-ui-toolbar .section-main .group-insert' ).length ) { |
| − | + | injectWikificator(); | |
| − | + | clearInterval( checkExist ); // Останавливаем таймер, когда кнопка успешно встала | |
| − | }); | + | } |
| − | }); | + | }, 100 ); |
| + | } ); | ||
} | } | ||
Версия 12:29, 1 ноября 2026
// Функция, которая принудительно встраивает кнопку Викификатора в HTML-код панели
function injectWikificator() {
// Ищем группу кнопок "Вставка" (insert) на оригинальной панели WikiEditor
var $insertGroup = $( '.wikiEditor-ui-toolbar .section-main .group-insert' );
// Если панель еще не отрисовалась, выходим (таймер попробует снова)
if ( !$insertGroup.length ) return;
// Проверяем, не добавили ли мы кнопку ранее, чтобы избежать дублирования
if ( $( '#wikif-custom-btn' ).length ) return;
// Создаем элемент кнопки в стиле WikiEditor
var $button = $( '<a>' )
.attr( {
'id': 'wikif-custom-btn',
'href': '#',
'title': 'Викификатор',
'class': 'tool tool-button'
} )
.append( $( '<img>' ).attr( {
'src': '//upload.wikimedia.org/wikipedia/commons/0/06/Wikificator_button.png',
'alt': 'Викификатор',
'width': 22,
'height': 22
} ) );
// Задаем действие при клике на кнопку
$button.click( function ( e ) {
e.preventDefault();
if ( typeof Wikify === 'function' ) {
Wikify();
} else {
// Подгружаем текстовый процессор напрямую из вики
$.getScript( '/wiki/index.php?title=MediaWiki:Wikificator.js&action=raw&ctype=text/javascript' )
.done( function () {
if ( typeof Wikify === 'function' ) Wikify();
} );
}
} );
// Вставляем кнопку в самый конец группы "Вставка"
$insertGroup.append( $button );
}
// Запуск логики только на страницах редактирования/создания статей
if ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) {
$( document ).ready( function () {
// Запускаем постоянную проверку появления панели (интервал 100мс),
// так как панель WikiEditor подгружается асинхронно
var checkExist = setInterval( function () {
if ( $( '.wikiEditor-ui-toolbar .section-main .group-insert' ).length ) {
injectWikificator();
clearInterval( checkExist ); // Останавливаем таймер, когда кнопка успешно встала
}
}, 100 );
} );
}