MediaWiki:Gadget-subpages.js: различия между версиями
Перейти к навигации
Перейти к поиску
Burato (обсуждение | вклад) аттрибуция правки |
Нет описания правки |
||
| Строка 4: | Строка 4: | ||
[[Участник:Септумулей]] | [[Участник:Септумулей]] | ||
[[Участник:Ла Ротьер]] | [[Участник:Ла Ротьер]] | ||
[[Участник:Ламантепер]]*/ | [[Участник:Ламантепер]] | ||
[[Участник:Diman Russkov]]*/ | |||
mw.loader.using( 'mediawiki.util' ).then( function() { | |||
mw.loader.using( 'mediawiki.util' ). | var ns = mw.config.get( 'wgNamespaceNumber' ); | ||
var pageName = mw.config.get( 'wgPageName' ); | |||
mw.util.addPortletLink | var title = mw.config.get( 'wgTitle' ); | ||
var wikiName = mw.config.get( 'wgSiteName' ) || 'вики'; | |||
// 1. В основном пространстве имён (ID 0) | |||
if ( ns === 0 ) { | |||
// Ссылка на "Подстраницы" в пространстве имён "Подстраница" (ID 3004) | |||
// Название пространства имён (например, "Подстраница") берётся динамически из конфигурации вики | |||
var subpageNs = mw.config.get( 'wgFormattedNamespaces' )[3004] || 'Подстраница'; | |||
mw.util.addPortletLink( | |||
'p-cactions', | |||
mw.util.getUrl( 'Special:PrefixIndex/' + subpageNs + ':' + pageName ), | |||
'Подстраницы', | |||
null, | |||
'Подстраницы' | |||
); | |||
// Добавляет в боковое меню ссылку "Создать подстраницу" | |||
mw.util.addPortletLink( | |||
'p-tb', | |||
mw.util.getUrl( pageName, { | |||
action: 'edit', | |||
section: 'new', | |||
nosummary: 'yes', | |||
preview: 'yes', | |||
preload: 'Template:CreateSubpage' | |||
} ), | |||
'Создать подстраницу', | |||
null, | |||
'Создать подстраницу для этой статьи ' + wikiName + '!' | |||
); | |||
} | } | ||
// | // 2. В пространствах имён Участник (2), Проект/ЧТМ (4), Шаблон (10), Модуль (828), ЦК (3002) и Заготовка (3014) | ||
var allowedNamespaces = [ 2, 4, 10, 828, 3002, 3014 ]; | |||
if ( | if ( allowedNamespaces.indexOf( ns ) !== -1 ) { | ||
mw.util.addPortletLink | // Добавляет ссылку "Создать подстраницу" | ||
mw.util.addPortletLink( | |||
'p-tb', | |||
mw.util.getUrl( pageName, { | |||
action: 'edit', | |||
section: 'new', | |||
nosummary: 'yes', | |||
preview: 'yes', | |||
preload: 'Template:CreateSubpage/2' | |||
} ), | |||
'Создать подстраницу', | |||
null, | |||
'Создать подстраницу!' | |||
); | |||
// Даёт ссылку на собственные подстраницы в этих же пространствах | |||
var rootPage = pageName.split( '/' )[0]; | |||
mw.util.addPortletLink( | |||
'p-cactions', | |||
mw.util.getUrl( 'Special:PrefixIndex/:' + rootPage ), | |||
'Подстраницы', | |||
null, | |||
'Подстраницы' | |||
); | |||
} | } | ||
// | // 3. В пространстве "Подстраница" (ID 3004) возвращает на основную статью | ||
if ( ns === 3004 ) { | |||
if ( | var titleParts = title.split( '/' ); | ||
var targetPage = ''; | |||
// Учитываем специфику названий со слэшем в долях "1/8 финала)" и "1/4 финала)" | |||
if ( titleParts[1] === '8 финала)' || titleParts[1] === '4 финала)' ) { | |||
targetPage = titleParts[0] + '/' + titleParts[1]; | |||
} else { | |||
targetPage = titleParts[0]; | |||
} | |||
mw.util.addPortletLink( | |||
'p-cactions', | |||
mw.util.getUrl( targetPage ), | |||
'Основная страница', | |||
null, | |||
'Вернуться на корневую страницу' | |||
); | |||
mw.util.addPortletLink | |||
} | } | ||
// | // 4. Ссылка на архивацию страницы в WebArchive (для всех пространств имён) | ||
// Динамически собираем полную каноническую ссылку на текущую страницу | |||
var protocol = location.protocol; | |||
var server = mw.config.get( 'wgServer' ); | |||
if ( server.startsWith( '//' ) ) { | |||
server = protocol + server; | |||
if ( | |||
} | } | ||
var canonicalUrl = server + mw.util.getUrl( pageName ); | |||
mw.util.addPortletLink( | |||
mw | 'p-cactions', | ||
'https://web.archive.org/save/' + canonicalUrl, | |||
'Архивировать', | |||
'https://web.archive.org/save | null, | ||
'Создать архивную копию данной страницы на сайте WebArchive' | |||
'Архивировать', | ); | ||
null, | |||
'Создать архивную копию данной страницы на сайте WebArchive'); | |||
} ); | } ); | ||
Текущая версия от 21:03, 24 мая 2026
/* Скрипт, добавляющий в меню "Ещё" и боковую панель ссылки на подстраницы
Автор - [[Участник:Lord]]
Дополнения - [[Участник:Больница для слабаков]]
[[Участник:Септумулей]]
[[Участник:Ла Ротьер]]
[[Участник:Ламантепер]]
[[Участник:Diman Russkov]]*/
mw.loader.using( 'mediawiki.util' ).then( function() {
var ns = mw.config.get( 'wgNamespaceNumber' );
var pageName = mw.config.get( 'wgPageName' );
var title = mw.config.get( 'wgTitle' );
var wikiName = mw.config.get( 'wgSiteName' ) || 'вики';
// 1. В основном пространстве имён (ID 0)
if ( ns === 0 ) {
// Ссылка на "Подстраницы" в пространстве имён "Подстраница" (ID 3004)
// Название пространства имён (например, "Подстраница") берётся динамически из конфигурации вики
var subpageNs = mw.config.get( 'wgFormattedNamespaces' )[3004] || 'Подстраница';
mw.util.addPortletLink(
'p-cactions',
mw.util.getUrl( 'Special:PrefixIndex/' + subpageNs + ':' + pageName ),
'Подстраницы',
null,
'Подстраницы'
);
// Добавляет в боковое меню ссылку "Создать подстраницу"
mw.util.addPortletLink(
'p-tb',
mw.util.getUrl( pageName, {
action: 'edit',
section: 'new',
nosummary: 'yes',
preview: 'yes',
preload: 'Template:CreateSubpage'
} ),
'Создать подстраницу',
null,
'Создать подстраницу для этой статьи ' + wikiName + '!'
);
}
// 2. В пространствах имён Участник (2), Проект/ЧТМ (4), Шаблон (10), Модуль (828), ЦК (3002) и Заготовка (3014)
var allowedNamespaces = [ 2, 4, 10, 828, 3002, 3014 ];
if ( allowedNamespaces.indexOf( ns ) !== -1 ) {
// Добавляет ссылку "Создать подстраницу"
mw.util.addPortletLink(
'p-tb',
mw.util.getUrl( pageName, {
action: 'edit',
section: 'new',
nosummary: 'yes',
preview: 'yes',
preload: 'Template:CreateSubpage/2'
} ),
'Создать подстраницу',
null,
'Создать подстраницу!'
);
// Даёт ссылку на собственные подстраницы в этих же пространствах
var rootPage = pageName.split( '/' )[0];
mw.util.addPortletLink(
'p-cactions',
mw.util.getUrl( 'Special:PrefixIndex/:' + rootPage ),
'Подстраницы',
null,
'Подстраницы'
);
}
// 3. В пространстве "Подстраница" (ID 3004) возвращает на основную статью
if ( ns === 3004 ) {
var titleParts = title.split( '/' );
var targetPage = '';
// Учитываем специфику названий со слэшем в долях "1/8 финала)" и "1/4 финала)"
if ( titleParts[1] === '8 финала)' || titleParts[1] === '4 финала)' ) {
targetPage = titleParts[0] + '/' + titleParts[1];
} else {
targetPage = titleParts[0];
}
mw.util.addPortletLink(
'p-cactions',
mw.util.getUrl( targetPage ),
'Основная страница',
null,
'Вернуться на корневую страницу'
);
}
// 4. Ссылка на архивацию страницы в WebArchive (для всех пространств имён)
// Динамически собираем полную каноническую ссылку на текущую страницу
var protocol = location.protocol;
var server = mw.config.get( 'wgServer' );
if ( server.startsWith( '//' ) ) {
server = protocol + server;
}
var canonicalUrl = server + mw.util.getUrl( pageName );
mw.util.addPortletLink(
'p-cactions',
'https://web.archive.org/save/' + canonicalUrl,
'Архивировать',
null,
'Создать архивную копию данной страницы на сайте WebArchive'
);
} );