MediaWiki:Common.js — различия между версиями
Ivgon (обсуждение | вклад) |
Ivgon (обсуждение | вклад) |
||
| Строка 16: | Строка 16: | ||
e.stopPropagation(); | e.stopPropagation(); | ||
| − | |||
if ( typeof Wikify === 'function' ) { | if ( typeof Wikify === 'function' ) { | ||
Wikify(); | Wikify(); | ||
} else { | } else { | ||
| − | // | + | // Прямой текстовый запрос к странице, минуя сложную структуру API |
| − | $. | + | $.ajax({ |
| − | + | url: mw.util.wikiScript('index'), | |
| − | + | data: { | |
| − | + | title: 'MediaWiki:Wikificator.js', | |
| − | + | action: 'raw', | |
| − | + | ctype: 'text/javascript' | |
| − | + | }, | |
| − | + | dataType: 'text', | |
| − | + | success: function(code) { | |
| − | + | try { | |
| − | + | // Выполняем код в глобальном контексте | |
| − | + | $.globalEval(code); | |
| − | + | ||
| − | + | // На всякий случай проверяем и через window | |
| − | + | var runWikify = typeof Wikify === 'function' ? Wikify : window.Wikify; | |
| − | + | ||
| − | + | if ( typeof runWikify === 'function' ) { | |
| − | + | runWikify(); | |
| − | + | } else { | |
| − | + | alert( 'Текст скрипта успешно получен, но функция Wikify() не найдена внутри MediaWiki:Wikificator.js' ); | |
| + | } | ||
| + | } catch (evalError) { | ||
| + | alert( 'Ошибка при попытке выполнить код скрипта: ' + evalError.message ); | ||
} | } | ||
| − | } | + | }, |
| − | alert( 'Не удалось | + | error: function() { |
| + | alert( 'Не удалось запросить текст страницы MediaWiki:Wikificator.js через веб-интерфейс.' ); | ||
} | } | ||
| − | + | }); | |
| − | |||
| − | |||
| − | } ); | ||
} | } | ||
} ); | } ); | ||
| Строка 57: | Строка 57: | ||
if ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) { | if ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) { | ||
| − | |||
mw.loader.using( 'mediawiki.util', function () { | mw.loader.using( 'mediawiki.util', function () { | ||
$( document ).ready( injectWikificatorLink ); | $( document ).ready( injectWikificatorLink ); | ||
} ); | } ); | ||
} | } | ||
Версия 13:19, 1 ноября 2026
function injectWikificatorLink() {
if ( $( '#wikif-custom-btn-final' ).length ) return;
var $target = $( '.editButtons' );
if ( $target.length ) {
var $button = $( '<button>' )
.attr( {
'id': 'wikif-custom-btn-final',
'type': 'button',
'style': 'font-weight: bold; color: #252525; background: #f8f9fa; border: 1px solid #a2a9b1; padding: 3px 8px; margin-right: 8px; border-radius: 2px; cursor: pointer; display: inline-block; margin-top: 5px; vertical-align: middle;'
} )
.text( 'Викификатор' );
$button.on( 'click', function ( e ) {
e.preventDefault();
e.stopPropagation();
if ( typeof Wikify === 'function' ) {
Wikify();
} else {
// Прямой текстовый запрос к странице, минуя сложную структуру API
$.ajax({
url: mw.util.wikiScript('index'),
data: {
title: 'MediaWiki:Wikificator.js',
action: 'raw',
ctype: 'text/javascript'
},
dataType: 'text',
success: function(code) {
try {
// Выполняем код в глобальном контексте
$.globalEval(code);
// На всякий случай проверяем и через window
var runWikify = typeof Wikify === 'function' ? Wikify : window.Wikify;
if ( typeof runWikify === 'function' ) {
runWikify();
} else {
alert( 'Текст скрипта успешно получен, но функция Wikify() не найдена внутри MediaWiki:Wikificator.js' );
}
} catch (evalError) {
alert( 'Ошибка при попытке выполнить код скрипта: ' + evalError.message );
}
},
error: function() {
alert( 'Не удалось запросить текст страницы MediaWiki:Wikificator.js через веб-интерфейс.' );
}
});
}
} );
$target.append( $button );
}
}
if ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) {
mw.loader.using( 'mediawiki.util', function () {
$( document ).ready( injectWikificatorLink );
} );
}