Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Revision as of 04:14, 25 May 2026 by Bosco (talk | contribs) (Req delete for non-admins on any page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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));
            });
        });
    });
});
Cookies help us deliver our services. By using our services, you agree to our use of cookies.