User:Bosco/rollback-summary.js: Difference between revisions

From Test Wiki
Jump to navigation Jump to search
mNo edit summary
m 2 revisions imported
(No difference)

Revision as of 08:52, 15 January 2026

//https://zh.wikipedia.org/wiki/MediaWiki:Gadget-rollback-summary.js
(() => {
    const messages = {
        prompt: 'Please enter a custom rollback summary (leave blank to use the default summary).',
        cancelNotify: 'Rollback canceled',
        summary: 'Reverted edit(s) by $1: $2',
        summaryUser: '[[Special:Contributions/$1|$1]]([[User talk:$1|talk]])',
        summaryNoUser: 'hidden user',
    };

    const loadedMap = new WeakMap();
    mw.hook('wikipage.content').add(() => {
        for (const link of $('.mw-rollback-link a')) {
            if (loadedMap.has(link)) {
                continue;
            }
            loadedMap.set(link, true);
            $(link)
                .on('click', (ev) => {
                    const summary = prompt(messages.prompt);
                    if (summary === null) {
                        // 取消回退
                        ev.preventDefault();
                        mw.notify(messages.cancelNotify);
                        return;
                    } else if (summary === '') {
                        // 不自訂摘要
                        return;
                    }

                    ev.preventDefault();
                    const url = new URL(link.href);
                    const username = url.searchParams.get('from');
                    url.searchParams.set('summary', mw.format(
                        messages.summary,
                        username ? mw.format(messages.summaryUser, username) : messages.summaryNoUser,
                        summary
                    ));
                    window.location.assign(url.href);
                })
                .css('color', '#099');
        }
    });
})();