利用者:Bluesoul/common.js
注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。
- Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
- Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
- Microsoft Edge: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください。
mw.loader.using([
'vue',
'mediawiki.api',
'mediawiki.util'
]).then(() => {
if (mw.config.get('wgArticleId') <= 0) {
return;
}
const { computed, createMwApp, onMounted, ref } = mw.loader.require('vue');
const api = new mw.Api();
function getEditInfo(rvdir) {
return api.get({
titles: mw.config.get('wgPageName'),
prop: 'revisions',
rvprop: 'ids|timestamp|user|size|parsedcomment|flags',
rvlimit: 2,
rvdir,
formatversion: 2
}).then(data => {
if (
!data ||
!data.query ||
!data.query.pages ||
!data.query.pages[0] ||
!data.query.pages[0].revisions
) {
return;
}
const revs = data.query.pages[0].revisions;
if (revs[0] && revs[1]) {
revs[0].diff = revs[0].size - revs[1].size;
}
return revs[0];
});
}
const editInfo = createMwApp({
name: 'edit-info',
template: `
<p v-if="lastEdit">
<user-links :user="lastEdit.user" />
于
<a :href="diffLink" class="mw-changeslist-date">
{{ lastEditDate }}
</a>
修改了此页面。
</p>
<p v-if="lastEdit && lastEdit.parsedcomment">
编辑摘要:<span class="comment" v-html="lastEdit.parsedcomment"></span>
</p>
`,
setup() {
const scriptPath = mw.config.get('wgScriptPath');
const lastEdit = ref(null);
onMounted(() => {
getEditInfo().then(data => {
if (!data) {
return;
}
lastEdit.value = data;
});
});
return {
lastEdit,
lastEditDate: computed(() =>
new Date(lastEdit.value.timestamp).toLocaleString()
),
diffLink: computed(() =>
`${scriptPath}/?diff=${lastEdit.value.revid}`
)
};
}
});
editInfo.component('user-links', {
name: 'user-links',
template: `
<span class="history-user">
<a :href="userpageLink" class="mw-userlink">{{user}}</a>
<span class="mw-usertoollinks mw-changeslist-links">
<span><a :href="talkLink">讨论</a></span>
<span><a :href="contribsLink">贡献</a></span>
<span><a :href="blockLink">封禁</a></span>
</span>
</span>
`,
props: {
user: {
type: String,
required: true
}
},
setup: ({ user }) => ({
userpageLink: mw.util.getUrl(`User:${user}`),
talkLink: mw.util.getUrl(`User talk:${user}`),
contribsLink: mw.util.getUrl(`Special:Contributions/${user}`),
blockLink: mw.util.getUrl(`Special:Block/${user}`),
user
})
});
mw.hook('wikipage.content').add(() => {
if (document.getElementById('edit-info')) {
return;
}
const root = document.createElement('div');
root.id = 'edit-info';
const subtitle = document.getElementById('mw-content-subtitle');
if (!subtitle) {
return;
}
subtitle.appendChild(root);
editInfo.mount(root);
});
});
const url = new URL(window.location.href);
url.searchParams.set('action', 'purge');
const link = mw.util.addPortletLink(
'p-cactions',
url.href,
'刷新',
'ca-purge',
'清除本页缓存',
'n'
);
if (link) {
link.addEventListener('click', event => {
event.preventDefault();
(new mw.Api()).post({
action: 'purge',
titles: mw.config.get('wgPageName'),
forcerecursivelinkupdate: true
}).done(() =>
window.location.reload(true))
.fail(code =>
mw.notify(`无法刷新缓存,错误码:${code}。`)
);
});
}