MediaWiki:Gadget-ShowContributors.js:修订间差异
MediaWiki界面页面
更多操作
![]() 小 |
![]() OctoberSama(留言 | 贡献) 小 |
||
第8行: | 第8行: | ||
) | ) | ||
return; | return; | ||
mw.loader.addStyleTag( | |||
mw.loader.addStyleTag(` | |||
#show-contributor-button { | |||
float: right; | |||
margin-left: .5em; | |||
margin-right: 0 | |||
} | |||
#show-contributor-header { | |||
// | background: #fff; | ||
border-bottom: 1px solid #aaa; | |||
font-weight: 600; | |||
padding: .3em; | |||
position: sticky; | |||
text-align: center; | |||
top: 0 | |||
} | |||
#show-contributor-headline { | |||
font-size: 1.3em | |||
} | |||
#show-contributor-close { | |||
border-radius: 50%; | |||
cursor: pointer; | |||
position: absolute; | |||
right: 5px; | |||
top: 5px | |||
} | |||
#show-contributor-close:hover { | |||
background-color: #eee | |||
} | |||
#show-contributor-table { | |||
margin: 0; | |||
width: 100% | |||
} | |||
#show-contributor-table .user-avatar { | |||
border-radius: 50%; | |||
height: 20px; | |||
width: 20px | |||
} | |||
/* Citizen 皮肤响应式样式 */ | |||
.skin-citizen #show-contributor-button { | |||
margin: 0 0 0 0.5em; | |||
display: inline-flex; | |||
align-items: center; | |||
} | |||
/* 移动端样式 */ | |||
@media (max-width: 1119px) { | |||
.skin-citizen .citizen-page-heading { | |||
position: relative; | |||
} | |||
.skin-citizen #show-contributor-button { | |||
position: absolute; | |||
right: 0; | |||
top: 50%; | |||
transform: translateY(-50%); | |||
margin: 0; | |||
} | |||
} | } | ||
/* 桌面端样式 */ | |||
@media (min-width: 1120px) { | |||
.skin-citizen .citizen-page-header-inner { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
} | |||
.skin-citizen .citizen-page-heading { | |||
flex-grow: 1; | |||
position: relative; | |||
} | |||
.skin-citizen .page-actions { | |||
display: flex; | |||
} | align-items: center; | ||
gap: 0.5em; | |||
} | |||
} | } | ||
`); | |||
await mw.loader.using(["mediawiki.api","mediawiki.notification","oojs-ui","oojs-ui.styles.icons-interactions","jquery.tablesorter"]); | |||
class t extends OO.ui.Dialog { | |||
// ...保持原有对话框类定义不变... | |||
} | } | ||
const e = new OO.ui.WindowManager({ | |||
const e = new OO.ui.WindowManager({id:"show-contributor"}); | |||
$(document.body).append(e.$element); | $(document.body).append(e.$element); | ||
const o = new t({ | const o = new t({size:"large"}); | ||
e.addWindows([o]); | e.addWindows([o]); | ||
const i = new OO.ui.ButtonWidget({ | const i = new OO.ui.ButtonWidget({ | ||
label: "本页贡献者", | label:"本页贡献者", | ||
icon: "search", | icon:"search", | ||
flags: "progressive", | flags:"progressive", | ||
id: "show-contributor-button" | id:"show-contributor-button" | ||
}); | }); | ||
// | // 响应式插入逻辑 | ||
if ("citizen" === mw.config.get("skin")) { | if ("citizen" === mw.config.get("skin")) { | ||
// | const handleResize = () => { | ||
$("#show-contributor-button").detach(); | |||
if (window.matchMedia("(min-width: 1120px)").matches) { | |||
// 桌面端:插入到.page-actions | |||
$(".page-actions").prepend(i.$element); | |||
} else { | |||
// 移动端:插入到.citizen-page-heading并右浮动 | |||
$(".citizen-page-heading").append(i.$element); | |||
} | |||
}; | |||
// 初始执行 | |||
handleResize(); | |||
// 监听窗口变化 | |||
$(window).on("resize", handleResize); | |||
} else { | } else { | ||
// 其他皮肤:保持原逻辑 | // 其他皮肤:保持原逻辑 | ||
$("#bodyContent").prepend(i.$element); | $("#bodyContent").prepend(i.$element); | ||
} | } | ||
i.on("click", | i.on("click", async () => { | ||
if (!o.got) { | if (!o.got) { | ||
i.setLabel("正在查询"); | i.setLabel("正在查询"); | ||
const t = await o.getContributors(); | const t = await o.getContributors(); | ||
o.showContributors(t), | o.showContributors(t), | ||
o.$table.tablesorter(), | |||
i.setLabel("本页贡献者") | |||
} | } | ||
e.openWindow(o) | e.openWindow(o); | ||
}) | }); | ||
})())) | })())) | ||
})(); | })(); |
2025年6月11日 (三) 00:22的版本
(() => { "use strict"; $((() => (async () => { if ( ![0, 2, 4, 10, 12, 14, 828, 274].includes(mw.config.get("wgNamespaceNumber")) || 0 === mw.config.get("wgArticleId") || !["view", "history"].includes(mw.config.get("wgAction")) ) return; mw.loader.addStyleTag(` #show-contributor-button { float: right; margin-left: .5em; margin-right: 0 } #show-contributor-header { background: #fff; border-bottom: 1px solid #aaa; font-weight: 600; padding: .3em; position: sticky; text-align: center; top: 0 } #show-contributor-headline { font-size: 1.3em } #show-contributor-close { border-radius: 50%; cursor: pointer; position: absolute; right: 5px; top: 5px } #show-contributor-close:hover { background-color: #eee } #show-contributor-table { margin: 0; width: 100% } #show-contributor-table .user-avatar { border-radius: 50%; height: 20px; width: 20px } /* Citizen 皮肤响应式样式 */ .skin-citizen #show-contributor-button { margin: 0 0 0 0.5em; display: inline-flex; align-items: center; } /* 移动端样式 */ @media (max-width: 1119px) { .skin-citizen .citizen-page-heading { position: relative; } .skin-citizen #show-contributor-button { position: absolute; right: 0; top: 50%; transform: translateY(-50%); margin: 0; } } /* 桌面端样式 */ @media (min-width: 1120px) { .skin-citizen .citizen-page-header-inner { display: flex; justify-content: space-between; align-items: center; } .skin-citizen .citizen-page-heading { flex-grow: 1; position: relative; } .skin-citizen .page-actions { display: flex; align-items: center; gap: 0.5em; } } `); await mw.loader.using(["mediawiki.api","mediawiki.notification","oojs-ui","oojs-ui.styles.icons-interactions","jquery.tablesorter"]); class t extends OO.ui.Dialog { // ...保持原有对话框类定义不变... } const e = new OO.ui.WindowManager({id:"show-contributor"}); $(document.body).append(e.$element); const o = new t({size:"large"}); e.addWindows([o]); const i = new OO.ui.ButtonWidget({ label:"本页贡献者", icon:"search", flags:"progressive", id:"show-contributor-button" }); // 响应式插入逻辑 if ("citizen" === mw.config.get("skin")) { const handleResize = () => { $("#show-contributor-button").detach(); if (window.matchMedia("(min-width: 1120px)").matches) { // 桌面端:插入到.page-actions $(".page-actions").prepend(i.$element); } else { // 移动端:插入到.citizen-page-heading并右浮动 $(".citizen-page-heading").append(i.$element); } }; // 初始执行 handleResize(); // 监听窗口变化 $(window).on("resize", handleResize); } else { // 其他皮肤:保持原逻辑 $("#bodyContent").prepend(i.$element); } i.on("click", async () => { if (!o.got) { i.setLabel("正在查询"); const t = await o.getContributors(); o.showContributors(t), o.$table.tablesorter(), i.setLabel("本页贡献者") } e.openWindow(o); }); })())) })();