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

از مشروطه
نسخهٔ تاریخ ‏۱ ژوئیهٔ ۲۰۱۴، ساعت ۰۶:۲۸ توسط Rostamfarokhzad (گفتگو | مشارکت‌ها) (صفحه‌ای جدید حاوی «←‏jslint indent: 2, browser: true: ←‏global jQuery, mediaWiki, persianWikiTools, alert: var kiiir = ''; function ConvertYearToFarsi(year)...» ایجاد کرد)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخه جدیدتر← (تفاوت)
پرش به ناوبری پرش به جستجو

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

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • اینترنت اکسپلورر: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
  • اپرا: بروید به Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/*jslint indent: 2, browser: true*/
/*global jQuery, mediaWiki, persianWikiTools, alert*/
var kiiir = '';
function ConvertYearToFarsi(year) {
    var i = 0;
    for (i = 0; i <= 9; i = i + 1) {
        year = year.replace(new RegExp('[' + '0123456789' [i] + ']', 'g'), '۰۱۲۳۴۵۶۷۸۹' [i]);
    }
    return year
}
 
function ConvertMonthToFarsi(month) {
    if (month == 'January') {
        return 'ژانویه'
    };
    if (month == 'February') {
        return 'فوریه'
    };
    if (month == 'March') {
        return 'مارس'
    };
    if (month == 'April') {
        return 'آوریل'
    };
    if (month == 'May') {
        return 'مه'
    };
    if (month == 'June') {
        return 'ژوئن'
    };
    if (month == 'July') {
        return 'ژوئیه'
    };
    if (month == 'August') {
        return 'اوت'
    };
    if (month == 'September') {
        return 'سپتامبر'
    };
    if (month == 'October') {
        return 'اکتبر'
    };
    if (month == 'November') {
        return 'نوامبر'
    };
    if (month == 'December') {
        return 'دسامبر'
    };
}
function creationdate(title) {
    mw.loader.using( 'mediawiki.api', function () {
    ( new mw.Api() ).get( {
        action: 'query',
        prop: 'revisions',
        titles: title,
        rvprop: 'timestamp',
        rvdir: 'newer',
        format: 'json',
        rvlimit: '1',
    } ).done(function ( data ) {
        kiiir = data["query"]["pages"][Object.keys(data["query"]["pages"])]["revisions"][0]["timestamp"];
    });
} );
}
function ArchiveMonth() {
    var ArchiveMonthLink = '';
    var crdate = new Date(kiiir);
    var ArchiveMonthLink = ConvertMonthToFarsi(crdate.getUTCMonthName()) + ' ' + ConvertYearToFarsi(String(crdate.getUTCFullYear()));
    return ArchiveMonthLink;
}
(function ($, mw) {
    'use strict';
 
    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('editToken')
        }).done(function (data) {
            if (data.error && data.error.info) {
                mw.notify(data.error.info);
            } else {
                callback();
            }
        }).fail(function (data) {
            mw.notify(data);
        });
    }
 
    function ClosePage(text, comment) {
        text = '{{آغاز بایگانی حذف}}\n\n' + comment + ' ~~' + '~~\n' + text + '\n{{پایان بایگانی حذف}}';
        mw.notify('نظرخواهی بسته شد!');
        return text;
    }
 
    function CloseTalkPage(text,article_name, comment) {
        text = '{{پیشینه حذف| تاریخ =~~' + '~~' + '~| نتیجه =' + comment + ' | صفحه =' + article_name.replace(/\_/g, ' ') + ' |کوچک=}}' + text;
        mw.notify('الگو پیشینه حذف به بحث صفحه افزوده شد!');
        return text;
    }
 
    function ArchivePage(text, pagelink, comment) {
        text = text + '\n* [[' + pagelink.replace(/\_/g, ' ') + ']] -- ' + comment + ' ~~' + '~~'
        mw.notify('بایگانی به‌روز شد.');
        return text;
    }
 
    function RemoveLink(text, pagelink) {
        var text2 = text;
        pagelink = pagelink.replace(/\_/g, ' ');
        text = text.replace('{{' + pagelink + '}}\n', '')
        if (text2 == text) {
            mw.notify('توجه:برداشتن نظرخواهی از وپ:نبح با خطا مواجه شد!')
        } else {
            mw.notify('نظرخواهی از وپ:نبح برداشته شد!')
        }
        return text;
    }
 
    function RemoveTemplate(text, pagelink) {
        var text2 = text;
        text = text.replace(/\<!--(.+?)--\>\n*{{پیشنهاد حذف۲(.+?)\n*\<!--(.+?)--\>/g, '');
        if (text2 == text) {
            mw.notify('توجه:برداشتن الگو از مقاله با مشکل مواجه شد!');
        } else {
            mw.notify('الگو پیشنهاد حذف از صفحه برداشته شد!');
        }
        text=text.trim()
        return text;
    }
 
    function loadSavePageRefresh(page, replaceCallback, summary) {
        loadPage(page, function (text) {
            savePage(page, replaceCallback(text), summary, function () {
                //window.location = mw.util.wikiGetlink(page) + '?action=purge';
            });
        });
    }
    function DeletePageRefresh(page, summary) {
        deltok(function (deltokk) {
            deletePage(page, summary, deltokk, function () {
            });
        });
    }
    function deltok(callback) {
        new mw.Api().post({
            action: 'tokens',
            type: 'delete'
        }).done(function (data) {
            if (data.error && data.error.info) {
                mw.notify(data.error.info);
            } else {
                callback(data.tokens.deletetoken);
            }
        }).fail(function (data) {
            mw.notify(data);
        });
    }
    function deletePage(title, summary, deltokk, callback) {
        new mw.Api().post({
            action: 'delete',
            title: title,
            summary: summary,
            token: deltokk,
        }).done(function (data) {
            if (data.error && data.error.info) {
                mw.notify(data.error.info);
            } else {
                mw.notify('مقاله حذف شد!');
            }
        }).fail(function (data) {
            mw.notify(data);
        });
    }
    if (mw.config.get('wgAction') === 'view' && (wgPageName.search("نظرخواهی_برای_حذف/") > -1)) {
        $(function () {
            $(mw.util.addPortletLink('p-views', '#', 'جمع‌بندی', 'ca-afd', 'ابزار جمع‌بندی'))
                .click(function (e) {
                    e.preventDefault();
                    var comment = prompt('لطفاً نتیجه جمع‌بندی را با عبارت‌های «بماند» یا «حذف شود» یا «ادغام شود» اعلام نمائید.');
                    if (comment) {
                        var OurPage = mw.config.get('wgPageName');
                        var article_name = mw.config.get('wgPageName');
                        article_name = article_name.replace("ویکی‌پدیا:نظرخواهی_برای_حذف/", "")
                        //Closing The RFD page
                        creationdate(OurPage)
                        loadSavePageRefresh(OurPage,
                            function (text) {
                                return ClosePage(text, comment);
                            },
                            'بستن نظرخواهی [[وپ:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])'
                        );
                        if (comment.search("حذف شود") == -1) {
                            if (article_name.search("کاربر:") > -1 || article_name.search("الگو:") > -1 || article_name.search("رده:") > -1 || article_name.search("ویکی‌پدیا:") > -1|| article_name.search("درگاه:") > -1 || article_name.search("راهنما:") > -1 ) {
                                var TalkLink = 'بحث ';
                            } else {
                                var TalkLink = 'بحث:';
                            }
                            loadSavePageRefresh(TalkLink + article_name,
                            function (text) {
                                return CloseTalkPage(text, OurPage, comment);
                            },
                            'افزودن [[الگو:پیشینه حذف]] به بحث صفحه ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])'
                            );
                        }
                        //Archiving the RFD link
                        setTimeout(function(){
                        loadSavePageRefresh('ویکی‌پدیا:نظرخواهی_برای_حذف/بایگانی/' + ArchiveMonth(),
                            function (text) {
                                return ArchivePage(text, OurPage, comment);
                            },
                            'بایگانی نظرخواهی [[وپ:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])'
                        );
                        },3000);
                        //Remove RFD link form wp:RFD
                        loadSavePageRefresh('ویکی‌پدیا:نظرخواهی_برای_حذف',
                            function (text) {
                                return RemoveLink(text, OurPage);
                            },
                            'حذف نظرخواهی از [[وپ:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])'
                        );
                        if (comment.search("حذف شود") > -1) {
                            //Deleting the Articel
                            //var wikipedia_page = new Wikipedia.page(article_name, "حذف ");
                            //wikipedia_page.setFollowRedirect(true);
                            //wikipedia_page.setEditSummary('حذف صفحه بر اساس [[' + OurPage + '|نظرخواهی برای حذف]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])');
                            //wikipedia_page.deletePage();
                            //mw.notify('مقاله حذف شد!');
                            DeletePageRefresh(article_name, 'حذف صفحه بر اساس [[' + OurPage + '|نظرخواهی برای حذف]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])' );
                        } else {
                            //Removing RFD template from article
                            loadSavePageRefresh(article_name,
                                function (text) {
                                    return RemoveTemplate(text, article_name);
                                },
                                'حذف [[الگو:پیشنهاد حذف]] از مقاله ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])'
                            );
                        }
                        //mw.notify('جمع بندی با موفقیت انجام پذیرفت');
                    }
                })
                .insertBefore('#ca-view');
        });
    }
}(jQuery, mediaWiki));