MediaWiki:Common.js
跳到导航
跳到搜索
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
- Opera:按 Ctrl-F5。
/* 这里的任何JavaScript将在每次页面载入时为所有用户加载。 */
/* w:c:zh.c:MediaWiki:Gadget-site-lib.js */
window.wgUXS = function (wg, hans, hant, cn, tw, hk, sg, zh, mo, my) {
var ret = {
'zh': zh || hans || hant || cn || tw || hk || sg || mo || my,
'zh-hans': hans || cn || sg || my,
'zh-hant': hant || tw || hk || mo,
'zh-cn': cn || hans || sg || my,
'zh-sg': sg || hans || cn || my,
'zh-tw': tw || hant || hk || mo,
'zh-hk': hk || hant || mo || tw,
'zh-mo': mo || hant || hk || tw
}
return ret[wg] || zh || hant || hans || tw || cn || hk || sg || mo || my; //保證每一語言有值
}
window.wgULS = function (hans, hant, cn, tw, hk, sg, zh, mo, my) {
return wgUXS(mw.config.get('wgUserLanguage'), hans, hant, cn, tw, hk, sg, zh, mo, my);
};
window.wgUVS = function (hans, hant, cn, tw, hk, sg, zh, mo, my) {
return wgUXS(mw.config.get('wgUserVariant'), hans, hant, cn, tw, hk, sg, zh, mo, my);
};
window.importScriptCallback = function(page, ready) {
importScriptURICallback(mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + mw.util.wikiUrlencode(page) + '&action=raw&ctype=text/javascript', ready);
};
window.importScriptURICallback = jQuery.getScript;
//// 阻止#mw-head合併
// ↓ 來自[[dev:MediaWiki:Common-base.js]],原作者見其註釋以及歷史記錄。知識共享 署名-相同方式共享 3.0協議
// ↓ from [[dev:MediaWiki:Common-base.js]], view its comments and history for original authors. CC BY-SA 3.0
/**
* Disable #mw-head collapsing
* Hack from ARK
*/
/* 部分情況下導致外觀錯誤
mw.loader.using('skins.vector.legacy.js', function() {
$.collapsibleTabs.handleResize = function () {};
});
*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ↑ 來自 from [[dev:MediaWiki:Common-base.js]]
//// 可合併邊欄
// ↓ 修改自[[dev:MediaWiki:Common-base.js]],原作者見其註釋以及歷史記錄。知識共享 署名-相同方式共享 3.0協議
// ↓ derived from [[dev:MediaWiki:Common-base.js]], view its comments and history for original authors. CC BY-SA 3.0
/**
* Make sidebar sections collapsible
*/
$(function() {
$panel = $('#mw-panel');
$portals = $("#mw-panel .portal");
//Note: jQuery's .css() can not handle inexistent custom property properly.
var sidebarWidth = getComputedStyle(document.body).getPropertyValue('--body-panel-width') || '';
sidebarWidth = sidebarWidth.endsWith('em') ? parseInt(sidebarWidth) * 16 : 250;
var hasSidebar = $panel.width() <= sidebarWidth;
if (hasSidebar) {
$panel.addClass('is-sidebar');
}
$portals.each(function(_, el) {
var $el = $(el);
var $id = $el.attr("id");
if (!$id) {
return;
}
$el.addClass('portal-made-collapsible');
if (localStorage.getItem('sidebar_c_' + $id) === "y") {
$el.addClass('collapsed');
if (hasSidebar) {
$el.find('.body').slideUp('fast');
}
}
});
$(window).on('resize', function() {
var changeSidebar = ($panel.width() <= sidebarWidth) != hasSidebar;
hasSidebar = $panel.width() <= sidebarWidth;
if (changeSidebar) {
if (hasSidebar) {
$panel.addClass('is-sidebar');
}
else {
$panel.removeClass('is-sidebar');
}
}
$portals.each(function(_, el) {
var $el = $(el);
var $id = $el.attr("id");
if (!$id) {
return;
}
if (changeSidebar) {
if (hasSidebar) {
$el.removeClass('expanded');
if (localStorage.getItem('sidebar_c_' + $id) === "y") {
$el.find('.body').slideUp(0);
}
}
else {
if (localStorage.getItem('sidebar_c_' + $id) === "y") {
$el.find('.body').slideDown(0);
}
}
}
});
});
$portals.on("click", "h3", function(event) {
var $el = $(this).parent();
var $id = $el.attr("id");
if (!$id) {
return;
}
event.stopPropagation();
if (hasSidebar) {
$el.toggleClass('collapsed');
if ($el.hasClass('collapsed')) { // more consistent between class and slide status.
localStorage.setItem('sidebar_c_' + $id, "y");
$el.find('.body').slideUp('fast');
}
else {
localStorage.setItem('sidebar_c_' + $id, "n");
$el.find('.body').slideDown('fast');
}
}
else {
$("#mw-panel .portal").not($el).removeClass('expanded');
$el.toggleClass('expanded');
}
});
});
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ↑ 修改自 derived from [[dev:MediaWiki:Common-base.js]]
/* 訊息框 */
mw.hook("wikipage.collapsibleContent").add(function () {
document.querySelectorAll(".mbox.mw-made-collapsible>.mw-collapsible-toggle, .multi-mbox.mw-made-collapsible>.mw-collapsible-toggle").forEach(function (toggle) {
changeTitle({ target: toggle });
toggle.removeEventListener('click', changeTitle);
toggle.addEventListener('click', changeTitle);
});
function changeTitle(e) {
const toggle = e.target;
toggle.title = toggle.querySelector(':scope>.mw-collapsible-text').innerHTML;
}
});
/* 多重訊息框 */
$(function () {
const collapsibleContentMbox = document.querySelectorAll(".multi-mbox>.mw-collapsible-content>.mbox.mw-collapsible");
collapsibleContentMbox.forEach(makeUncollapsible);
function makeUncollapsible(mbox) {
const collapsibleContent = mbox.querySelectorAll(".mw-collapsible-content");
if (mbox.classList.contains("mw-collapsed")) {
collapsibleContent.forEach(uncollapseCollapsed);
}
collapsibleContent.forEach(makeCollapsibleUncollapsible);
mbox.classList.remove("mw-collapsible", "mw-collapsed", "mw-made-collapsible");
}
function uncollapseCollapsed(collapsibleContent) {
collapsibleContent.removeAttribute("style");
}
function makeCollapsibleUncollapsible(collapsibleContent) {
collapsibleContent.classList.remove("mw-collapsible-content");
}
});
//// 公告字詞轉換
// 修改自[[wikipedia:wikivoyage:zh:Special:PermanentLink/41281]],原作者見其歷史記錄
mw.hook("wikipage.content").add(function () {
userLanguage = mw.config.values.wgUserLanguage;
if (['zh-hant', 'zh-hk', 'zh-mo', 'zh-tw'].includes(userLanguage)) {
localNotice = $('#localNotice');
if (localNotice.length) {
var api = new mw.Api();
api.get( {
action: 'parse',
prop: 'text',
page: mw.user.isAnon() ? 'MediaWiki:Anonnotice/zh-hant' : 'MediaWiki:Sitenotice/zh-hant',
uselang: userLanguage
} )
.done( function ( data ) {
if (!data.parse.error) {
var result = data.parse.text['*'];
var sitenotice = $(localNotice).children();
var convertedSitenotice = $(result);
sitenotice.html(convertedSitenotice.children('p')).attr('lang', 'zh-Hant');
}
} );
}
}
});
//// 頁腳中使用自訂的MediaWiki:Copyright
//// only using local MediaWiki:Copyright in footer
// 有內容修改自上方「公告字詞轉換」部分
mw.hook("wikipage.content").add(function () {
userLanguage = mw.config.values.wgUserLanguage;
if (['zh', 'zh-hans', 'zh-hant', 'zh-cn', 'zh-hk', 'zh-mo', 'zh-my', 'zh-sg', 'zh-tw', 'en'].includes(userLanguage)) {
return;
}
mw.language.getFallbackLanguages().some(function (language) {
if (['zh', 'zh-hans', 'zh-hant', 'zh-cn', 'zh-hk', 'zh-mo', 'zh-my', 'zh-sg', 'zh-tw', 'en'].includes(language)) {
footerCopyright = document.getElementById('footer-info-copyright');
var api = new mw.Api();
api.get( {
action: 'parse',
prop: 'wikitext',
page: language == 'zh' ? 'MediaWiki:Copyright' : 'MediaWiki:Copyright/' + language
} )
.done( function ( data ) {
if (!data.parse.error) {
var result = data.parse.wikitext['*'];
footerCopyright.innerHTML = result;
}
} );
return true;
}
});
});
/* 用於TabberEX */
// 不再使用
/* (function (window, $, mw) {
variantDefault();
function variantDefault() {
var lV = document.getElementsByClassName('page__main')[0].getAttribute('lang');
var tL = document.getElementsByClassName('tabberex');
var gVD, gRVD;
if (lV.indexOf('zh-Hans') !== -1) {
gVD = 'data-hans-default';
} else if (lV.indexOf('zh-Hant') !== -1) {
gVD = 'data-hant-default';
}
if (lV === 'zh-Hans-CN') {
gRVD = 'data-cn-default';
}
for (var i = 0; i < tL.length; i++) {
if (tL[i].hasAttribute(gVD)) {
var nVD = parseInt(tL[i].getAttribute(gVD), 10) - 1;
tL[i].insertBefore(tL[i].childNodes[nVD], tL[i].childNodes[0]);
}
if (tL[i].hasAttribute(gRVD)) {
var nRVD = parseInt(tL[i].getAttribute(gRVD), 10) - 1;
tL[i].insertBefore(tL[i].childNodes[nRVD], tL[i].childNodes[0]);
}
}
}
}(this, jQuery, mediaWiki)); */