MediaWiki:Gadget-common-action-history.js
Перейти к навигации
Перейти к поиску
JS-код ниже относится к скрытому гаджету common-action-history. Он включён по умолчанию.
После сохранения или недавних изменений очистите кэш браузера.
// Не удаляйте проверку на название действия
$( function () {
if ( mw.config.get( 'wgAction' ) !== 'history' ) {
return;
}
// Скрыть дисклеймер, если на странице нет скрытых авторов
if ( $( '.history-deleted.mw-userlink' ).length === 0 ) {
$( '.ruwiki-histlegend-ru-by-disclaimer' ).hide();
}
// Функция для добавления ссылки в меню под заголовком
function addSubLink( $link, toolName ) {
$( '.mw-history-subtitle' ).append(
' · ',
$link
.attr( 'href', 'javascript:' )
.css( 'font-style', 'italic' )
);
return $link;
}
// Добавить ссылки «Вернуть к» для автопатрулируемых, патрулирующих и администраторов
var wgUserGroups = mw.config.get( 'wgUserGroups' );
var revertLinkGroups = [
'autoreview',
'editor',
'sysop',
];
if ( wgUserGroups.length > 1 && revertLinkGroups.some( g => wgUserGroups.includes( g ) ) ) {
addSubLink( $( '<a>' )
.attr( 'title', 'Добавить ссылки для возврата к старым версиям' )
.text( 'Вернуть к …' )
).click( showRevertToLinks );
}
// Иконки «обновлено после моего последнего посещения»
$( '.updatedmarker' ).attr( 'title', 'обновлено после моего последнего посещения' );
function plural( number, one, few, many ) {
number = Math.abs( number ) % 100;
if ( number < 10 || number > 20 ) {
var x = number % 10;
if ( x == 1 ) {
return one;
}
if ( 0 < x && x < 5 ) {
return few;
}
}
return many;
}
function showRevertToLinks( e ) {
e.preventDefault();
if ( !window.revertLinksCSS ) {
appendRevertToLinks();
}
window.revertLinksCSS.disabled = false;
setTimeout( function () {
window.revertLinksCSS.disabled = true;
}, 5000 );
}
function appendRevertToLinks() {
var $ul = $( '#pagehistory' );
if ( !$ul.length ) {
alert( 'История изменений страницы пуста' );
return;
}
var $li, $link, version, user, url,
$lis = $ul.find( 'li' );
for (var i = 2; i < $lis.length; i++ ) {
$li = $lis.eq( i );
$link = $li.find( '.mw-changeslist-date' );
version = $li.find( 'input' ).val();
user = $li.find( 'a.mw-userlink' ).text();
url = $link.attr( 'href' ) + '&action=edit&summary=' + encodeURIComponent(
i + ' ' + plural( i, 'правка', 'правки', 'правок' ) + ' [[ВП:ВЕРНУТЬ К|' +
plural( i, 'возвращена', 'возвращены', 'возвращено' ) + ']] к версии ' + version + (user ? ' ' + user : '') + ': '
) + '#wpSummary';
$link.after(
' (',
$( '<a>' )
.attr( 'href', url )
.attr( 'title', 'Вернуть эту версию' )
.addClass( 'revertTo' )
.text( 'вернуть' ),
')'
);
}
window.revertLinksCSS = mw.util.addCSS( '.revertTo { font-weight: bold; }' );
}
} );