利用者:Syunsyunminmin/script/newsArchive.js
注意: 保存した後、ブラウザのキャッシュをクリアする必要があります。Mozilla / Firefox / Safari: [Shift] を押しながら [再読み込み] をクリック、または [Shift]-[Ctrl]-[R] (Macでは [Cmd]-[Shift]-[R]); IE: [Ctrl] を押しながら [更新] をクリック、または [Ctrl]-[F5]; Konqueror: [再読み込み] をクリック、または [F5]; Opera: 「ツール」→「設定」からキャッシュをクリア。
//<nowiki>
if (typeof Syunmin === "undefined") Syunmin = {};
Syunmin.newsArchive = {};
Syunmin.newsArchive.doArchive = async function (e) {
var wgEditSummary = '[[ウィキニュース:記事のアーカイブ|記事のアーカイブ化]]';
var wgProtectSummary = wgEditSummary;
var content = await new mw.Api().get({
action: "parse",
format: "json",
pageid: mw.config.get('wgArticleId'),
prop: "wikitext",
formatversion: "2"
});
content = content.parse.wikitext;
if (content.match(/\{\{\s*アーカイブ済\s*\}\}/) == null) {
if (content.match(/^(\{\{\s*公開中\s*\}\})/m) == null) {
alert('{{公開中}}のみが書かれた行を見つけられませんでした。アーカイブ化を中止します。');
return;
}
content = content.replace(/^(\{\{\s*公開中\s*\}\})/m, '$1\n{{アーカイブ済}}');
var editdata = await new mw.Api().postWithToken("csrf", {
action: "edit",
format: "json",
watchlist: "nochange",
pageid: mw.config.get('wgArticleId'),
summary: wgEditSummary + ' ([[User:Syunsyunminmin/script/newsArchive.js|newsArchive.js]])',
text: content
});
}
if (JSON.stringify(mw.config.get('wgRestrictionEdit')) != JSON.stringify(['sysop'])) {
var protectdata = await new mw.Api().postWithToken("csrf", {
action: "protect",
expiry: "infinite",
protections: 'edit=sysop|move=sysop',
pageid: mw.config.get('wgArticleId'),
reason: wgProtectSummary,
watchlist: "nochange",
format: "json",
});
}
document.location.reload();
};
Syunmin.newsArchive.addPortletLink = function() {
$(mw.util.addPortletLink(
'p-cactions',
'#',
'アーカイブ化',
'ca-newsops'
)).click(function (e){
e.preventDefault();
var ifDo = confirm('アーカイブ化を実行しますか?');
if (ifDo) {
Syunmin.newsArchive.doArchive(e);
}
else {
alert('中止しました。');
}
});
};
mw.loader.using(['mediawiki.util', 'mediawiki.api'] ).done( function () {
if (mw.config.get('wgNamespaceNumber') == 0 && mw.config.get('wgArticleId') != 0) {
Syunmin.newsArchive.addPortletLink();
}
} );
//</nowiki>