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

از ویکی پاسخ

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

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • اینترنت اکسپلورر/ Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
  • اپرا: Ctrl-F5 را بفشارید.
$(function() {
    function loadPage(title, callback) {
        new mw.Api().get({
            action: 'query',
            prop: 'revisions',
            titles: title,
            rvprop: 'content',
            format: 'json'
        }).done(function(data) {
            try {
                callback($.map(data.query.pages, function(value) {
                    return value;
                })[0].revisions[0]['*']);
            } catch (exception) {
                callback('');
            }
        }).fail(function(data) {
            callback($.map(data.query.pages, function(value) {
                return value;
            })[0].revisions[0]);
        });
    }

    function savePage(title, text, summary, callback) {
        new mw.Api().post({
            action: 'edit',
            title: title,
            text: text,
            summary: summary,
            minor: '',
            token: mw.user.tokens.get('csrfToken')
        }).done(function(data) {
            if (data.error && data.error.info) {
                mw.notify(data.error.info);
            } else {
                callback();
            }
        }).fail(function(data) {
            mw.notify(data);
        });
    }

    function CloseTalkPage(text) {
        text = text.replace("<!-- ↓ پایین این خط - جدید در بالا ↓ -->", "<!-- ↓ پایین این خط - جدید در بالا ↓ -->\n{{ویکی‌پدیا:گزیدن نگاره برگزیده/" + mw.config.get('wgTitle') + "}}");
        mw.notify('الگو پیشنهاد برگزیدگی به صفحه افزوده شد!');
        return text;
    }

    function loadSavePageRefresh(page, replaceCallback, summary) {
        loadPage(page, function(text) {
            savePage(page, replaceCallback(text), summary, function() {
                //window.location = mw.util.getUrl(page) + '?action=purge';
            });
        });
    }

    function addBotLink2(botName, id, tooltip, note, botUrl, imageUrl) {
        $(mw.util.addPortletLink(
            'p-cactions',
            '#',
            botName,
            id,
            tooltip
        )).click(function(e) {
            e.preventDefault();
            mw.notify(note, {
                autoHide: false
            });
            $.get(new mw.Uri(botUrl).extend({
                enwiki: mw.config.get('wgTitle'),
            }).toString()).then(function(result) {
                mw.notify(result.msg, {
                    autoHide: false
                });
                loadSavePageRefresh("ویکی‌پدیا:گزیدن نگاره برگزیده",
                    function(text) {
                        return CloseTalkPage(text)
                    }, '/' + '*افزودن نظرخواهی جدید*' + '/');
                var uri = new mw.Uri();
                uri.query = {
                    title: "ویکی‌پدیا:گزیدن نگاره برگزیده/" + mw.config.get('wgTitle'),
                    action: 'edit',
                    redlink: 1,
                    withJS: 'MediaWiki:AHK2.js',
                    summary: 'ایجاد صفحه نظرخواهی بر اساس ابزار',
                    text: result.page_content,
                };
                uri.path = mw.config.get('wgScriptPath') + '/index.php';
                window.location = uri.toString();
            })
        }).find('a').prepend(imageUrl ? [$('<img>', {
            src: imageUrl,
            height: 20,
            width: 20
        }), ' '] : '');
    }

    function addBotLink(botName, id, tooltip, note, botUrl, imageUrl) {
        $(mw.util.addPortletLink(
            'p-cactions',
            '#',
            botName,
            id,
            tooltip
        )).click(function(e) {
            e.preventDefault();
            mw.notify(note, {
                autoHide: false
            });
            var pageTitle=mw.config.get('wgTitle')
            if (id === 'ca-r-replace') {//اگر ابزار جایگزینی پیوند بود
                alert('ویرایش صرفاً به قصد جایگزینی [[تغییرمسیر]] > [[صفحهٔ هدف]]، عمل پسندیده‌ای نیست. لطفاً از این ابزار فقط در جهت اصلاح پیوندهای نادرست به درست استفاده کنید.')
                var link1 = prompt("برای [[پیوند۱]] > [[پیوند۲]] عنوان پیوند مبدأ یا پیوند۱ چیست؟");
                var link2 = prompt("برای [[پیوند۱]] > [[پیوند۲]] عنوان پیوند مقصد یا پیوند۲ چیست؟");
                if (link1.length > 1 && link2.length > 1){
                    var reResion = prompt("چرا می‌خواهید [["+link1+"]] > [["+link2+"]] جایگزین شود؟");
                    if (reResion.length <= 1){
                        alert('دلیل جایگزینی را مشخص نکردید!')
                        var reResion = prompt("چرا می‌خواهید [["+link1+"]] > [["+link2+"]] جایگزین شود؟");
                        if (reResion.length <= 1){return;}
                    }
                    pageTitle=link1+'---'+link2+'---'+reResion
                }else{
                    alert('پیوند۱ یا پیوند۲ تعریف مشخص نشده‌اند در نتیجه عمل جایگزینی انجام نمی‌شود!')
                }
            }
            $.get(new mw.Uri(botUrl).extend({
                title: pageTitle,
                fawiki: mw.config.get('wgTitle').replace(/ /g,'_'),
                user: 'کاربر:' + mw.config.get('wgUserName'),
                namespace: mw.config.get('wgNamespaceNumber')
            }).toString()).then(function(result) {
                mw.notify(result.msg, {
                    autoHide: false
                });
                var resultmsg = result.msg;
                
                var uri = new mw.Uri(),
                    pageTitle;
                if (id === 'ca-eval' && mw.config.get('wgNamespaceNumber') === 0) {
                    pageTitle = 'بحث:' + mw.config.get('wgPageName')
                } else if (id === 'ca-articleneeded') {
                    pageTitle = resultmsg;
                } else {
                    pageTitle = mw.config.get('wgPageName')
                }
                uri.query = {
                    'title': pageTitle,
                    'diff': 'cur',
                    'oldid': 'prev'
                };
                uri.path = mw.config.get('wgScriptPath') + '/index.php';
                if (id !== 'ca-articlefilling' && id !== 'ca-filling'&& id !== 'ca-navebox' && id !== 'ca-pipe'){
                    window.location = uri.toString();
                }else if (id !== 'ca-r-replace'){
                    mw.notify('ربات شروع به کار کرد.');
                }else{
                    setTimeout(function() {
                        var uri = new mw.Uri()
                        uri.query = {
                            'title': pageTitle
                        };
                        uri.path = mw.config.get('wgScriptPath') + '/index.php';
                        window.location = uri.toString();
                    }, 8000);//تاخیر در به‌روز کردن صفحه تا ربات در این مدت تعدادی صفحه به رده افزوده باشد.
                }
            });
        }).find('a').prepend(imageUrl ? [$('<img>', {
            src: imageUrl,
            height: 20,
            width: 20
        }), ' '] : '');
    }
    
    // If the user is blocked don't show these tools
    var TheQuery='//fa.wikipedia.org/w/api.php?format=json&action=query&list=users&usprop=blockinfo&ususers='+mw.config.get('wgUserName')
    var blocked;

    $.getJSON(TheQuery).done(function(query) {
        if(!query.query) { return; }
        query = query.query;
        var user = query.users[0];
        try {
            blocked = typeof user.blockedby != "undefined";
        } catch(e) {
            return;
        }
    }).then(function() {
        if(blocked) {
            //alert( 'Yes')
            return;
        }
    });

    if (mw.config.get('wgNamespaceNumber') === 0 &&
    	$('[class=new][title^="پرونده:"]').length !== 0 &&
    	$('#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%B5%D9%81%D8%AD%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C_%D8%AF%D8%A7%D8%B1%D8%A7%DB%8C_%D9%BE%DB%8C%D9%88%D9%86%D8%AF_%D8%AE%D8%B1%D8%A7%D8%A8_%D8%A8%D9%87_%D9%BE%D8%B1%D9%88%D9%86%D8%AF%D9%87"]').length !== 0) {
    	// رده:صفحه‌های_دارای_پیوند_خراب_به_پرونده
        $.get('//rezabot.toolforge.org/uploadfairuse.php', { title: mw.config.get('wgPageName') });
        //mw.notify('درخواست بارگذاری تصویر منصفانهٔ ناموجود داده شد.', { autoHide: false })
    };

    if (mw.config.get('wgNamespaceNumber') === 14) {
        // ابزار افزودن | به اعضای رده‌ها
        addBotLink(
            ' پیش‌فرض رده',
            'ca-pipe',
            'افزودن پیش‌فرض به اعضای رده برای نمایش بهتر آنها در رده',
            'افزودن پیش‌فرض‌رده به رده‌ها آغاز شد، لطفاً کمی صبر کنید.',
            '//rezabot.toolforge.org/piping.php',
            '//upload.wikimedia.org/wikipedia/commons/8/80/Ic_flip_48px.svg'
        );
        addBotLink(
            'پرکردن رده (با ربات رده‌همسنگ)',
            'ca-filling',
            'افزودن صفحه به رده به کمک ربات رده همسنگ',
            'ربات رده همسنگ شروع به کار کرد',
            '//rezabot.toolforge.org/fillcat.php',
            '//upload.wikimedia.org/wikipedia/commons/f/fb/Ic_archive_48px.svg'
        );
        addBotLink(
            'فهرست صفحات مورد نیاز',
            'ca-articleneeded',
            'تهیه فهرست صفحاتی که در این رده موجودند و در ویکی‌فا وجود ندارند',
            'ربات در حال تهیه فهرست صفحات در زیرصفحهٔ کاربری شماست.',
            '//rezabot.toolforge.org/neededarticle.php',
            '//upload.wikimedia.org/wikipedia/commons/f/fc/Ic_assignment_48px.svg'
        );
        if (mw.config.get('wgUserGroups').indexOf('autopatrolled') > -1 || mw.config.get('wgUserGroups').indexOf('sysop') > -1) {
            // ابزار انتقال رده فقط برای مدیران و گشت‌زن‌ها فعال شود
            importScript('MediaWiki:Gadget-CategoryMove.js');
        }
    }
    if (mw.config.get('wgNamespaceNumber') === 10) {
        // ابزار افزودن ناوباکس
        addBotLink(
            ' افزودن ناوباکس',
            'ca-navebox',
            'افزودن الگوی ناوباکس به مقالات',
            'افزودن ناوباکس به مقالات آغاز شد، لطفاً کمی صبر کنید.',
            '//rezabot.toolforge.org/addnavbox.php',
            '//upload.wikimedia.org/wikipedia/commons/3/3f/Ic_add_circle_48px.svg'
        );
    }
    if (mw.config.get('wgNamespaceNumber') === 0) {
        // ابزار افزودن جعبه همسنگ
        // ابزار درجه‌بندی مقالات در بحث مقاله وپ:آفلاین
        addBotLink(
            ' جعبه و نگارخانه',
            'ca-box',
            'افزودن جعبه اطلاعات و نگارخانه از ویکی‌پدیای انگلیسی',
            'شروع دریافت جعبه و نگارخانه، لطفاً کمی صبر کنید.',
            '//rezabot.toolforge.org/getbox.php',
            '//upload.wikimedia.org/wikipedia/commons/c/c9/Ic_crop_original_48px.svg'
        );
       //ابزار رده همسنگ
        addBotLink(
            'رده همسنگ',
            'ca-articlefilling',
            'افزودن صفحه به رده به کمک ربات رده همسنگ',
            'ربات رده همسنگ شروع به کار کرد',
            '//rezabot.toolforge.org/fillcatArticle.php',
            '//upload.wikimedia.org/wikipedia/commons/f/fb/Ic_archive_48px.svg'
        );
       //افزودن خصوصیت به آیتم ویکی‌داده 
        addBotLink(
            'به‌روز کردن آیتم ویکی‌داده',
            'ca-wikidataitem',
            'افزودن خصوصیت به آیتم ویکی‌داده و رده مقاله ویکی‌فا (فقط برای مقاله انسان)',
            'ربات به‌روز کردن آیتم ویکی‌داده شروع به کار کرد',
            '//rezabot.toolforge.org/wikidataitem.php',
            '//upload.wikimedia.org/wikipedia/commons/0/0d/Ic_recent_actors_48px.svg'
        );
        // ویکی‌سازی
        addBotLink(
            ' ویکی‌سازی',
            'ca-wikify',
            'ابزاری رباتیک برای ویکی‌سازی متن مقاله‌ها بر پایهٔ عنوان مقالات موجود',
            'ربات ویکی‌سازی شروع به کار کرد لطفاً کمی صبر کنید.',
            '//rezabot.toolforge.org/wikifyer.php',
            '//upload.wikimedia.org/wikipedia/commons/a/a5/Ic_fullscreen_36px.svg'
        );
        // ابزار اصلاح منابع ناموجود
        if ($('#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%B5%D9%81%D8%AD%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C_%D8%A8%D8%A7_%DB%8C%D8%A7%D8%AF%DA%A9%D8%B1%D8%AF_%D8%AE%D8%B1%D8%A7%D8%A8_(%D9%81%D9%82%D8%AF%D8%A7%D9%86_%D9%85%D9%86%D8%A8%D8%B9)"]').length !== 0) {
            //فقط برای مقاله‌های عضو رده:صفحه‌های با یادکرد خراب (فقدان منبع)
            addBotLink(
                'منبع ناموجود',
                'ca-citaion',
                'ابزاری برای اصلاح منبع ناموجود بر پایهٔ ویکی‌پدیای انگلیسی',
                'اصلاح منبع ناموجود شروع شد، لطفاً کمی صبر کنید.',
                '//rezabot.toolforge.org/missedref.php',
                '//upload.wikimedia.org/wikipedia/commons/c/c7/Ic_comment_48px.svg'
            );
        }
        // ابزار گروه‌بندی ارجاع‌ها
        addBotLink(
            ' گروه‌بندی ارجاع',
            'ca-ref-group',
            'گروه‌بندی ارجاع‌ها',
            'کد گروه‌بندی ارجاع‌ها شروع شد، لطفاً کمی صبر کنید.',
            '//rezabot.toolforge.org/groupingRef.php',
            '//upload.wikimedia.org/wikipedia/commons/c/ca/Ic_games_48px.svg'
        );
        // ابزار ربات زیباسازی
        /*
        addBotLink(
            ' زیباسازی',
            'ca-cosmetic',
            'زیباسازی و ابرابزار',
            'زیباسازی و اعمال کد ابرابزار شروع شد، لطفاً کمی صبر کنید.',
            '//rezabot.toolforge.org/cosmetic.php'
        );*/
    }
    if (mw.config.get('wgNamespaceNumber') === 0 || mw.config.get('wgNamespaceNumber') === 1) {
        // ابزار درجه‌بندی مقالات در بحث مقاله وپ:آفلاین
        addBotLink(
            ' ارزشیابی',
            'ca-eval',
            'ابزار ارزشیابی مقاله‌ها توسط ربات در بحث مقاله (وپ:آفلاین)',
            'شروع ارزشیابی، لطفاً کمی صبر کنید.',
            '//rezabot.toolforge.org/ranking.php',
            '//upload.wikimedia.org/wikipedia/commons/2/22/Ic_iso_48px.svg'
        );

       //ابزار رفع ابهام پیوند از صفحات
     mw.util.addPortletLink('p-cactions', 'https://dispenser.info.tm/~dispenser/cgi-bin/dablinks.py?page=' + encodeURI(mw.config.get('wgPageName'))+'&lang=fa', 'رفع ابهام پیوندها','P-disambig', 'رفع ابهام پیوندها', '');
    }
    // ابزار حذف پیوند به بیرون اسپم

    if ((mw.config.get('wgUserGroups').indexOf('autopatrolled') > -1 || mw.config.get('wgUserGroups').indexOf('sysop') > -1) && mw.config.get('wgNamespaceNumber') > -1) {
        // شرط برای کاربری که گشت خودکار دارد
        // ابزار حذف الگوهای ناموجود
        addBotLink(
            ' الگوهای حذف‌شده',
            'ca-r-temp',
            'برداشتن الگوهای حذف‌شده از مقاله',
            'شروع حذف الگو از مقاله، لطفاً کمی صبر کنید.',
            'ptbot.toolforge.org/api/q_remove_templates.php',
            '//upload.wikimedia.org/wikipedia/commons/d/d2/Ic_remove_circle_48px.svg'
        );    
        /*
        // ابزار جایگزینی پیوند
        addBotLink(
            'جایگزینی پیوند',
            'ca-r-replace',
            'جایگزینی پیوند۱ با پیوند۲',
            'شروع جایگزینی پیوند، لطفاً کمی صبر کنید.',
            'rezabot.toolforge.org/replacelink.php',
            '//upload.wikimedia.org/wikipedia/commons/8/8f/Replace_icon.px.svg'
        );*/
    }
    if (mw.config.get('wgNamespaceNumber') === 6) {
        // ابزار نامزد کردن تصاویر برگزیده
        addBotLink2(
            'برگزیدن نگاره',
            'ca-eval',
            'ابزار نامزد کردن نگاره‌ها در وپ:گنب',
            'شروع نامزد کردن، لطفاً کمی صبر کنید.',
            '//dexbot.toolforge.org/anab.php',
            '//upload.wikimedia.org/wikipedia/commons/2/29/Ic_folder_special_48px.svg'
        );
    }
    // Permanent link
    if (mw.config.get('wgNamespaceNumber') > -1) {
        // Do not turn this into <a> element, it will break Visual Editor
        $('#t-permalink').append(' ', $('<span>', {
            style: "font-size:12px;color:#36c",
            html: "&#10012;"
        }).click(function (e) {
            prompt('پیوند پایدار', '[[Special:PermaLink/' + mw.config.get('wgRevisionId') + ']]');
        })).hover(function() {
            $( this ).css('cursor', 'pointer');
            $( this ).css('cursor', 'auto');
        });
    }
});