MediaWiki:Gadget-ondemand-mainPage.js (MediaWiki&Gadget-ondemand-mainPageQjs)
Перейти к навигации
Перейти к поиску
JS-код ниже относится к скрытому гаджету ondemand-mainPage. Он вызывается по умолчанию на страницах в категории Википедия:Заглавная страница.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/OOjs_UI_icon_journal-ltr.svg/15px-OOjs_UI_icon_journal-ltr.svg.png)
После сохранения или недавних изменений очистите кэш браузера.
/**
* Дополнительный функционал для заглавной страницы
*
* Вынесено из [[MediaWiki:Common.js]] 2023-03-27
*/
if ( mw.config.get( 'wgIsMainPage' ) && mw.config.get( 'wgAction' ) === 'view' ) {
mw.hook( 'wikipage.content' ).add( () => {
mw.loader.using( 'mediawiki.util' ).done( () => {
mw.util.addCSS( '.ruwiki-interwiki-completelist { font-weight: bold; }' );
// Ссылка на полный список Википедий
var isNewVector = mw.config.get( 'skin' ) === 'vector-2022';
var fullListId = 'ruwiki-interwiki-completelist';
var el = mw.util.addPortletLink(
isNewVector ? 'p-lang-btn' : 'p-lang',
mw.util.getUrl( 'Википедия:Список Википедий' ),
'Полный список',
fullListId
);
if ( el ) {
el.classList.add( el.id );
}
if ( el ) {
$( '#p-lang-btn-checkbox' ).on( 'click', () => {
var ulsHasFullList = document.querySelector( '.uls-language-block #' + fullListId ) !== null;
if ( ulsHasFullList ) {
return;
}
setTimeout( () => {
$( '.uls-language-block' ).first().find( 'ul' ).last().append( el );
} );
} );
}
// Исправление ссылок на русские версии
$( '#p-wikibase-otherprojects li.wb-otherproject-link a' ).each( ( i, el ) => {
var $link = $( el ),
url = $link.attr( 'href' ).replace( '/Main_Page', mw.util.wikiUrlencode( '/Заглавная_страница' ) );
var parentClass = $link.parent().attr( 'class' );
if ( parentClass.includes( '-mediawiki' ) || parentClass.includes( '-meta' ) ) {
url = $link.attr( 'href' ) + '/ru';
}
$link.attr( 'href', url );
} );
} );
// Закрываем меню при клике за его пределами
var target, collapsible,
$items = $( '.main-footer-menu' );
document.body.addEventListener( 'click', function ( event ) {
target = $( event.target ).parents( '.main-footer-menu' ).get( 0 );
$items.each( function () {
collapsible = $( this ).data( 'mw-collapsible' );
if ( collapsible && this !== target ) {
collapsible.collapse();
}
} );
}, true );
} );
}