MediaWiki:Gadget-common-action-edit.js — различия между версиями
Материал из CelestePedia
SoulTrain (обсуждение | вклад) |
SoulTrain (обсуждение | вклад) |
||
(не показано 16 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | + | mw.hook( 'wikipage.content' ).add( function () { | |
− | + | // Автоматическое заполнение полей при добавлении новых тем сверху | |
− | function | + | var 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' ); | |
− | + | } | |
− | + | } ); | |
− | + | ||
− | + | // Секция гаджетов в панели инструментов | |
− | + | if ( mw.user.options.get( 'usebetatoolbar' ) === 1 ) { | |
− | + | $.when( | |
− | + | mw.loader.using( 'ext.wikiEditor' ), | |
+ | $.ready | ||
+ | ).then( function() { | ||
+ | function addGadgetsGroup() { | ||
+ | $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { | ||
+ | 'section': 'main', | ||
+ | 'groups': { | ||
+ | 'gadgets': {} | ||
+ | } | ||
+ | } ); | ||
+ | |||
+ | $groupGadgets = $( '#wikiEditor-section-main .group-gadgets' ); | ||
+ | $groupFormat = $( '#wikiEditor-section-main .group-format' ); | ||
+ | if ( $groupGadgets.length ) { | ||
+ | if ( $groupFormat.length ) { | ||
+ | $groupGadgets.insertBefore( $groupFormat ); | ||
+ | } | ||
+ | mw.hook( 'wikieditor.toolbar.gadgetsgroup' ).fire(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | var $groupGadgets, $groupFormat; | ||
+ | addGadgetsGroup(); | ||
+ | if ( !$groupGadgets.length ) { | ||
+ | // Лечение для случаев, когда панель инструментов поздно прорисовывается | ||
+ | setTimeout( addGadgetsGroup, 0 ); | ||
+ | } | ||
+ | } ); | ||
} | } | ||
− | |||
− | + | // Напоминание о подписи. Выводится в пространствах имён обсуждений, «Википедия» и «Проект». | |
− | // | + | var namespaceNumber = mw.config.get( 'wgNamespaceNumber' ); |
− | + | if ( namespaceNumber % 2 || namespaceNumber === 4 || namespaceNumber === 104 ) { | |
− | + | $( function () { | |
− | + | var $textbox, matches, newLinesCountInitial, $tildes, $signReminderCommon, $signReminder, | |
− | + | $copyrightWarning = $( '#editpage-copywarn' ), | |
− | + | $saveButton = $( '#wpSave' ), | |
− | + | warningDone = false; | |
− | + | ||
− | + | if ( !$copyrightWarning.length || | |
− | + | !$saveButton.length || | |
− | + | // Пространства имён «Википедия» и «Проект» | |
− | + | ( mw.config.get( 'wgNamespaceNumber' ) === 4 || mw.config.get( 'wgNamespaceNumber' ) === 104 ) && | |
− | + | ( !mw.config.get( 'wgTitle' ).match( | |
− | + | // Википедия: | |
− | + | '^(?:Форум[/ ]|Голосования/|Опросы/|Обсуждение правил/|Заявки на |Запросы|Кандидаты в .*/|' + | |
− | + | 'К (?:удалению|объединению|переименованию|разделению|улучшению|оценке источников|посредничеству)/|' + | |
− | + | 'Оспаривание |Рецензирование/|Проверка участников/|Фильтр правок/Срабатывания|' + | |
− | + | // Проект: | |
− | + | 'Инкубатор/(?:Мини-рецензирование|Форум)|Социальная ответственность/Форум|Водные объекты|' + | |
− | } | + | 'Библиотека/(?:Требуются книги|Вопросы|Горячие темы|Технические вопросы)|' + |
− | function | + | 'Графическая мастерская/Заявки|Добротные статьи/К лишению статуса|Грамотность/Запросы|.* запросы)' |
− | + | ) || | |
− | + | mw.config.get( 'wgTitle' ).match( '/Архив' ) | |
− | + | ) | |
− | + | ) { | |
− | + | return; | |
− | + | } | |
− | + | ||
− | + | $textbox = $( '#wpTextbox1' ); | |
− | + | matches = $textbox.val().trim().match( /\n/g ); | |
− | + | newLinesCountInitial = matches ? matches.length : 0; | |
− | + | ||
− | + | $tildes = $( '<a>' ) | |
+ | .attr( 'href', 'javascript:' ) | ||
+ | .text( '~~\~~' ) | ||
+ | .click( function () { | ||
+ | $textbox.textSelection( 'encapsulateSelection', { pre: ' ~~\~~' } ); | ||
+ | } ); | ||
+ | $signReminderCommon = $( '<div>' ) | ||
+ | .addClass( 'signReminder-common' ) | ||
+ | .append( | ||
+ | 'Не забудьте добавить к вашему сообщению подпись с помощью ', | ||
+ | $tildes | ||
+ | ); | ||
+ | $signReminder = $( '<div>' ) | ||
+ | .attr( 'id', 'signReminder' ) | ||
+ | .append( $signReminderCommon ) | ||
+ | .insertAfter( $copyrightWarning ); | ||
+ | |||
+ | if ( mw.config.get( 'wgUserGroups' ).indexOf( 'autoconfirmed' ) !== -1 && !window.sigWarning ) { | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | // Только незарегистрированные/новые пользователи и те, кто включил предупреждение в личном JS строчкой | ||
+ | // var sigWarning = true; | ||
+ | $saveButton.click( function () { | ||
+ | try { | ||
+ | var newLinesCount, $signReminderWarningbox, $tildesCopy, | ||
+ | textboxContent = $textbox.val(); | ||
+ | |||
+ | matches = textboxContent.trim().match( /\n/g ); | ||
+ | newLinesCount = matches ? matches.length : 0; | ||
+ | |||
+ | if ( textboxContent.indexOf( '~~\~~' ) !== -1 || | ||
+ | $( '#wpMinoredit' ).prop( 'checked' ) || | ||
+ | newLinesCountInitial === newLinesCount || | ||
+ | warningDone | ||
+ | ) { | ||
+ | return true; | ||
+ | } | ||
+ | |||
+ | warningDone = true; | ||
+ | $tildesCopy = $tildes.clone( true ); | ||
+ | $signReminderCommon.remove(); | ||
+ | $signReminderWarning = $( '<div>' ) | ||
+ | .addClass( 'signReminder-warning' ) | ||
+ | .append( 'Пожалуйста, <strong>подпишитесь</strong>, добавив в конце своего сообщения ', | ||
+ | $tildesCopy, | ||
+ | ' <small>(<a href="https://celeste-rus.ru/index.php/CelestePedia:Подписывайтесь" title="(Ссылка откроется в новом окне)" target="_blank">подробнее</a>)</small>' | ||
+ | ); | ||
+ | $( '<div>' ) | ||
+ | .addClass( 'warningbox signReminder-warningbox' ) | ||
+ | .append( $signReminderWarning ) | ||
+ | .appendTo( $signReminder ); | ||
+ | return false; | ||
+ | } catch ( e ) { | ||
+ | return true; | ||
+ | } | ||
+ | } ); | ||
+ | } ); | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Текущая версия на 14:21, 17 сентября 2022
mw.hook( 'wikipage.content' ).add( function () {
// Автоматическое заполнение полей при добавлении новых тем сверху
var 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' );
}
} );
// Секция гаджетов в панели инструментов
if ( mw.user.options.get( 'usebetatoolbar' ) === 1 ) {
$.when(
mw.loader.using( 'ext.wikiEditor' ),
$.ready
).then( function() {
function addGadgetsGroup() {
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'main',
'groups': {
'gadgets': {}
}
} );
$groupGadgets = $( '#wikiEditor-section-main .group-gadgets' );
$groupFormat = $( '#wikiEditor-section-main .group-format' );
if ( $groupGadgets.length ) {
if ( $groupFormat.length ) {
$groupGadgets.insertBefore( $groupFormat );
}
mw.hook( 'wikieditor.toolbar.gadgetsgroup' ).fire();
}
}
var $groupGadgets, $groupFormat;
addGadgetsGroup();
if ( !$groupGadgets.length ) {
// Лечение для случаев, когда панель инструментов поздно прорисовывается
setTimeout( addGadgetsGroup, 0 );
}
} );
}
// Напоминание о подписи. Выводится в пространствах имён обсуждений, «Википедия» и «Проект».
var namespaceNumber = mw.config.get( 'wgNamespaceNumber' );
if ( namespaceNumber % 2 || namespaceNumber === 4 || namespaceNumber === 104 ) {
$( function () {
var $textbox, matches, newLinesCountInitial, $tildes, $signReminderCommon, $signReminder,
$copyrightWarning = $( '#editpage-copywarn' ),
$saveButton = $( '#wpSave' ),
warningDone = false;
if ( !$copyrightWarning.length ||
!$saveButton.length ||
// Пространства имён «Википедия» и «Проект»
( mw.config.get( 'wgNamespaceNumber' ) === 4 || mw.config.get( 'wgNamespaceNumber' ) === 104 ) &&
( !mw.config.get( 'wgTitle' ).match(
// Википедия:
'^(?:Форум[/ ]|Голосования/|Опросы/|Обсуждение правил/|Заявки на |Запросы|Кандидаты в .*/|' +
'К (?:удалению|объединению|переименованию|разделению|улучшению|оценке источников|посредничеству)/|' +
'Оспаривание |Рецензирование/|Проверка участников/|Фильтр правок/Срабатывания|' +
// Проект:
'Инкубатор/(?:Мини-рецензирование|Форум)|Социальная ответственность/Форум|Водные объекты|' +
'Библиотека/(?:Требуются книги|Вопросы|Горячие темы|Технические вопросы)|' +
'Графическая мастерская/Заявки|Добротные статьи/К лишению статуса|Грамотность/Запросы|.* запросы)'
) ||
mw.config.get( 'wgTitle' ).match( '/Архив' )
)
) {
return;
}
$textbox = $( '#wpTextbox1' );
matches = $textbox.val().trim().match( /\n/g );
newLinesCountInitial = matches ? matches.length : 0;
$tildes = $( '<a>' )
.attr( 'href', 'javascript:' )
.text( '~~\~~' )
.click( function () {
$textbox.textSelection( 'encapsulateSelection', { pre: ' ~~\~~' } );
} );
$signReminderCommon = $( '<div>' )
.addClass( 'signReminder-common' )
.append(
'Не забудьте добавить к вашему сообщению подпись с помощью ',
$tildes
);
$signReminder = $( '<div>' )
.attr( 'id', 'signReminder' )
.append( $signReminderCommon )
.insertAfter( $copyrightWarning );
if ( mw.config.get( 'wgUserGroups' ).indexOf( 'autoconfirmed' ) !== -1 && !window.sigWarning ) {
return;
}
// Только незарегистрированные/новые пользователи и те, кто включил предупреждение в личном JS строчкой
// var sigWarning = true;
$saveButton.click( function () {
try {
var newLinesCount, $signReminderWarningbox, $tildesCopy,
textboxContent = $textbox.val();
matches = textboxContent.trim().match( /\n/g );
newLinesCount = matches ? matches.length : 0;
if ( textboxContent.indexOf( '~~\~~' ) !== -1 ||
$( '#wpMinoredit' ).prop( 'checked' ) ||
newLinesCountInitial === newLinesCount ||
warningDone
) {
return true;
}
warningDone = true;
$tildesCopy = $tildes.clone( true );
$signReminderCommon.remove();
$signReminderWarning = $( '<div>' )
.addClass( 'signReminder-warning' )
.append( 'Пожалуйста, <strong>подпишитесь</strong>, добавив в конце своего сообщения ',
$tildesCopy,
' <small>(<a href="https://celeste-rus.ru/index.php/CelestePedia:Подписывайтесь" title="(Ссылка откроется в новом окне)" target="_blank">подробнее</a>)</small>'
);
$( '<div>' )
.addClass( 'warningbox signReminder-warningbox' )
.append( $signReminderWarning )
.appendTo( $signReminder );
return false;
} catch ( e ) {
return true;
}
} );
} );
}