مدیاویکی:Gadget-close.js

از پژوهشکده امر به معروف
نسخهٔ تاریخ ‏۱۱ اسفند ۱۳۹۴، ساعت ۱۳:۰۹ توسط Admin (نظرات | مشارکت‌ها) (صفحه‌ای تازه حاوی «by Arash.pt & Ebraminio & Yamaha5 & Huji: global $, mw, prompt, confirm: /*jslint regexp: true, vars: true, indent: 2, white: true*...» ایجاد کرد)

(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به: ناوبری، جستجو

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

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • اینترنت اکسپلورر: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
  • اپرا: حافظهٔ نهانی مرورگر را از طریق منوی Tools → Preferences پاک کنید
/* by Arash.pt & Ebraminio & Yamaha5 & Huji */
/*global $, mw, prompt, confirm*/
/*jslint regexp: true, vars: true, indent: 2, white: true*/
$(function () {
    'use strict';
    function answered(page, sectionId, type, action) {
        new mw.Api().get({
            format: 'json',
            action: 'query',
            titles: page,
            rvsection: sectionId,
            prop: 'revisions',
            rvprop: 'content'
        }).then(function (data) {
            var editsummary = ' (به کمک [[مدیاویکی:Gadget-close.js|ابزار جمع‌بندی]])';
            var str = data.query.pages[Object.keys(data.query.pages)[0]].revisions[0]['*'];
            var title = (str.match(/^(=+)[^=]*?(\1)$/m) || [''])[0];
            var title_text = title.replace(/\=/g, '');
            var the_reason = prompt("توضیح برای " + action + ":");
            if (mw.config.get('wgPageName').search('نظرخواهی') > 0){
                var starting='#';
            }else{
                var starting='*';
            }
            if (the_reason.length <= 1) { the_reason = ""; }
            if (type === 'request') {
                var requestStatus = confirm('آیا درخواست انجام شده‌است؟ یا ناموفق بود؟');
                var the_reason2 = "";
                if (!requestStatus) {
                    the_reason2 = "|ناموفق=بله";
                }
            if(the_reason != "") {
            the_reason = the_reason + ' – ~~' + '~~'
                str = str.replace(title, title + "\n{{بسته" + the_reason2 + "}}\n'''" + the_reason + "'''\n");
            }else{
            str = str.replace(title, title + "\n{{بسته" + the_reason2 + "}}");
            }
                str = str + "\n{{پایان بسته}}";
                editsummary = 'جمع‌بندی شد' + editsummary;
            } else if (type === 'talk') {
                the_reason = "|" + the_reason;
                str = str.replace(title, title + "\n{{بحث بسته" + the_reason + "}}");
                str = str + "\n{{پایان بسته}}";
                editsummary = 'جمع‌بندی شد' + editsummary;
            } else if (type === 'done') {
                if (mw.config.get('wgPageName')=='ویکی‌پدیا:درخواست_انتقال'||mw.config.get('wgPageName')=='ویکی‌پدیا:درخواست_ادغام_تاریخچه'){
                    str=str.replace('{{وضعیت|}}','{{وضعیت|شد}}')
                }
                str = str + "\n:{{شد}} " + the_reason + ' – ~~' + '~~';
                editsummary = 'انجام شد' + editsummary;
            } else if (type === 'notdone') {
                if (mw.config.get('wgPageName')=='ویکی‌پدیا:درخواست_انتقال'||mw.config.get('wgPageName')=='ویکی‌پدیا:درخواست_ادغام_تاریخچه'){
                    str=str.replace('{{وضعیت|}}','{{وضعیت|نشد}}')
                }
                str = str + "\n:{{نشد}} " + the_reason + ' – ~~' + '~~';
                editsummary = 'نشد!' + editsummary;
            } else if (type === 'support') {
                str = str + "\n"+starting+" {{موافق}} " + the_reason + ' – ~~' + '~~';
                editsummary = 'موافقم' + editsummary;
            } else if (type === 'oppose') {
                str = str + "\n"+starting+" {{مخالف}} " + the_reason + ' – ~~' + '~~';
                editsummary = 'مخالفم' + editsummary;
            }
            editsummary = '/*' + title_text + '*/' + editsummary;
            return new mw.Api().post({
                format: 'json',
                action: 'edit',
                title: page,
                section: sectionId,
                summary: editsummary,
                text: str,
                token: mw.user.tokens.get('editToken')
            });
        }).then(function () {
            mw.notify('انجام شد');
            location.reload(true);
        }, function (error) {
            mw.notify('به دلیلی موفقیت‌آمیز نبود: ' + error);
            location.reload(true);
        });
    }

    function addLink(section, type, html, color, title) {
        $('<a>', {
            href: '#',
            title: title,
            style: 'float: left; color: ' + color,
            html: html
        }).click(function (e) {
            e.preventDefault();
            var query = new mw.Uri($(section).next().find('a[href*="&action=edit"]')[0].href).query;
            answered(query.title, +query.section.replace('T-', ''), type, title);
        }).insertBefore(section);
    }

    if (mw.config.get('wgNamespaceNumber') === 3 && mw.config.get('wgPageName').search(mw.config.get('wgUserName')) > 0) {
        $('.mw-headline').each(function () {
            addLink(this, 'talk', '&#x2750;', '#090', 'جمع‌بندی بحث');
            addLink(this, 'done', '&#x2713;', '#003A5C', '✓ شد');
            addLink(this, 'notdone', '&#x2717;', '#DF0101', '✗ نشد');
        });
    } else if (mw.config.get('wgNamespaceNumber') === 4) {
        if ($([
            '#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%B1%D9%87%D9%86%D9%85%D9%88%D8%AF%D9%87%D8%A7%DB%8C_%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D9%BE%D8%AF%DB%8C%D8%A7"]', //رده:رهنمودهای ویکی‌پدیا
            '#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%B3%DB%8C%D8%A7%D8%B3%D8%AA%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D9%BE%D8%AF%DB%8C%D8%A7"]', //رده:سیاست‌های ویکی‌پدیا
            '#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C_%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D9%BE%D8%AF%DB%8C%D8%A7"]', //رده:راهنمای ویکی‌پدیا
            '#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%B4%DB%8C%D9%88%D9%87%E2%80%8C%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D9%BE%D8%AF%DB%8C%D8%A7"]', //رده:شیوه‌نامه‌های ویکی‌پدیا
            '#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C_%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D9%BE%D8%AF%DB%8C%D8%A7"]', //رده:ابزارهای ویکی‌پدیا
            '#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%AE%D9%88%D8%AF%D8%A2%D9%85%D9%88%D8%B2_%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D9%BE%D8%AF%DB%8C%D8%A7"]', //رده:خودآموز ویکی‌پدیا
            '#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%A7%D9%86%D8%B4%D8%A7%D9%87%D8%A7%DB%8C_%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D9%BE%D8%AF%DB%8C%D8%A7"]', //رده:انشاهای ویکی‌پدیا
            '#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D9%BE%D8%AF%DB%8C%D8%A7"]' //رده:مدیریت ویکی‌پدیا
        ].join(', ')).length === 0) {
            $('.mw-headline').each(function () {
                if (mw.config.get('wgUserGroups').indexOf('sysop') > -1) {
                    addLink(this, 'request', '&#x2750;', '#090', 'جمع‌بندی بحث');
                    addLink(this, 'done', '&#x2713;', '#003A5C', '✓ شد');
                    addLink(this, 'notdone', '&#x2717;', '#DF0101', '✗ نشد');
                }
                addLink(this, 'support', '&#x263A;', '#090', 'موافقم');
                addLink(this, 'oppose', '&#x2639;', '#DF0101', 'مخالفم');
            });
        }
    } else if (mw.config.get('wgNamespaceNumber') % 2 !== 0) { // برای صفحات بحث
        $('.mw-headline').each(function () {
            addLink(this, 'done', '&#x2713;', '#003A5C', '✓ شد');
            addLink(this, 'notdone', '&#x2717;', '#DF0101', '✗ نشد');
        });
    }
});