نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
$(function() {
    var bool = {
        'dead': 'yes',
        'live': 'no'
    };

    var conf = {
        page: mw.config.get('wgPageName'),
        action: mw.config.get('wgAction'),
        ns: mw.config.get('wgNamespaceNumber'),
        ad: ' ([[کاربر:محمد/urlStatusFixer|با اسکریپت]])'
    };

    if (['history', 'view'].indexOf(conf.action) == -1 || conf.ns != 0) {
        return;
    }

    function loadPage(title) {
        return new mw.Api().get({
            action: 'query',
            prop: 'revisions',
            titles: title,
            rvprop: 'content',
            format: 'json'
        }).then(function(data) {
            return Object.values(data.query.pages)[0].revisions[0]['*'];
        });
    }

    function savePage(title, text, summary, count) {
        return new mw.Api().postWithToken('csrf', {
            action: 'edit',
            title: title,
            text: text,
            summary: summary,
            minor: true
        }).done(function(result) {
            console.log(result)
            mw.notify(
                'تعداد ' + mw.language.convertNumber(count) + ' پارامتر ناشناخته اصلاح شد' +
                (count > 1 ? 'ند' : ''), {
                    type: 'success',
                    title: 'انجام شد!'
                }
            );
            setTimeout(function() {
                window.location.href = '/wiki/ویژه:تفاوت/' + result.edit.newrevid;
            }, 2000);
        });
    }
    $(mw.util.addPortletLink('p-tb', '#', 'وضعیت پیوند*', 't-url-status', 'اصلاح پارامتر url-status')).on('click', function(e) {
        e.preventDefault();
        loadPage(conf.page).then(function(content) {
            var urlStatusRe = /\|\s*url\-status\s*=\s*(dead|live)/;
            var urlStatusReGlobal = /\|\s*url\-status\s*=\s*(dead|live)/g;
            var allMatches = content.match(urlStatusReGlobal),
                i,
                error = false;

            if (!allMatches) {
                error = true;
            } else {
                for (i = 0; i < allMatches.length; i++) {
                    value = content.match(urlStatusRe)[1];
                    content = content.replace(urlStatusRe, '| dead-url = ' + bool[value]);
                }
            }
            return [content, allMatches ? allMatches.length : null, error];
        }).then(function(result) {
            if (result[2]) {
                mw.notify('پارامتر ناشناخته در صفحه یافت نشد', {
                    type: 'error',
                    title: 'انجام نشد!'
                });
                return;
            } else {
                return savePage(
                    conf.page,
                    result[0],
                    'جایگزینی ' + mw.language.convertNumber(result[1]) +
                    ' مورد پارامتر «url-status» با «dead-url»' + conf.ad,
                    result[1]
                );
            }
        });
    });
});