User:Bosco/RfD.js
From WikiOasis Meta
More actions
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/**
* MediaWiki JS helper: Request deletion / 请求删除 / 請求刪除
* Adds a tab to the page toolbar that prompts for a reason
* and prepends {{delete|reason}} with a language‑specific summary.
* Runs in all namespaces except -1 (Special pages).
*/
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
// Only run if not Special namespace (-1)
if (mw.config.get('wgNamespaceNumber') === -1) {
return;
}
// Detect wiki language (not user interface language)
var rawLang = mw.config.get('wgContentLanguage') || 'en';
var lang;
if (['zh', 'zh-hans', 'zh-cn', 'zh-my', 'zh-sg'].indexOf(rawLang) !== -1) {
lang = 'zh-hans';
} else if (['zh-hant', 'zh-hk', 'zh-tw', 'zh-mo'].indexOf(rawLang) !== -1) {
lang = 'zh-hant';
} else {
lang = 'en';
}
// Labels by language
var linkText, tooltip, summary, reasonPrompt, errorMessage;
if (lang === 'zh-hans') {
linkText = '请求删除';
tooltip = '请求删除';
summary = '请求删除';
reasonPrompt = '请输入删除理由:';
errorMessage = '保存页面时出错';
} else if (lang === 'zh-hant') {
linkText = '請求刪除';
tooltip = '請求刪除';
summary = '請求刪除';
reasonPrompt = '請輸入刪除理由:';
errorMessage = '儲存頁面時出錯';
} else {
linkText = 'Request deletion';
tooltip = 'Request deletion';
summary = 'Requesting deletion';
reasonPrompt = 'Enter reason for deletion:';
errorMessage = 'Error saving page';
}
// Add the portlet link
var link = mw.util.addPortletLink(
'p-cactions',
'#',
linkText,
'ca-requestdeletion',
tooltip
);
// Click handler
$(link).on('click', function (e) {
e.preventDefault();
var reason = prompt(reasonPrompt);
if (!reason) return;
var pageName = mw.config.get('wgPageName');
// Fetch current content
new mw.Api().get({
action: 'query',
prop: 'revisions',
rvprop: 'content',
rvslots: 'main',
titles: pageName
}).done(function (data) {
var pages = data.query.pages;
var pageId = Object.keys(pages)[0];
var content = pages[pageId].revisions[0].slots.main['*'];
// Prepend delete template
var newContent = '{{delete|' + reason + '}}\n' + content;
// Save with language‑specific summary + RfD.js link
new mw.Api().postWithToken('csrf', {
action: 'edit',
title: pageName,
text: newContent,
summary: summary + ')([[meta:User:Bosco/RfD.js|RfD.js]]'
}).done(function () {
location.reload();
}).fail(function (err) {
alert(errorMessage + ': ' + JSON.stringify(err));
});
});
});
});