مدیاویکی:Gadget-RedirectMaker.js: تفاوت میان نسخه‌ها

    از ویکی پاسخ
    بدون خلاصۀ ویرایش
    بدون خلاصۀ ویرایش
    خط ۶: خط ۶:
      */
      */
    (function ($, mw) {
    (function ($, mw) {
    'use strict';
        'use strict';
     
    function createPage(title, text, summary, callback) {
        function createPage(title, text, summary, callback) {
    return new mw.Api().post({
            return new mw.Api().post({
    action: 'edit',
                action: 'edit',
    title: title,
                title: title,
    text: text,
                text: text,
    summary: summary,
                summary: summary,
    createonly: '',
                createonly: '',
    minor: '',
                minor: '',
    token: mw.user.tokens.get('csrfToken')
                token: mw.user.tokens.get('editToken')
    }).then(
            }).then(
    function (data) {
                function (data) {
    if (data.error && data.error.info) {
                    if (data.error && data.error.info) {
    mw.notify(title + ' انجام نشد: ' + data.error.info);
                        mw.notify(title + ' انجام نشد: ' + data.error.info);
    } else {
                    } else {
    callback();
                        callback();
    }
                    }
    return data;
                    return data;
    },
                },
    function (data) {
                function (data) {
    mw.notify(title + ' انجام نشد: ' + data);
                    mw.notify(title + ' انجام نشد: ' + data);
    return data;
                    return data;
    }
                }
    );
            );
    }
        }
     
    function startRedirect(redirect, dest) {
        function startRedirect(redirect, dest) {
    return createPage(
            return createPage(
    redirect,
                redirect,
    '#تغییرمسیر [[' + dest + ']]',
                '#تغییرمسیر [[' + dest + ']]',
    'ایجاد تغییرمسیر برای [[' + dest + ']] (ابزار تغییرمسیرساز)',
                'ایجاد تغییرمسیر برای [[' + dest + ']] (ابزار تغییرمسیرساز)',
    function () {
                function () {
    mw.notify('ساخت ' + redirect + ' با موفقیت انجام شد.');
                    mw.notify('ایجاد ' + redirect + ' با موفقیت انجام شد.');
    }
                }
    );
            );
    }
        }
     
    function init(e) {
        // Make button by namespace
    e.preventDefault();
        function makeButton() {
    $('<div>' +
            var namespaces = {
    '<div style="width: 40em">درخواست\u200cهای ساخت تغییرمسیرها را در خطوط جداگانه وارد کنید:</div>' +
                0: "",
    '<textarea style="width: 100%; background-color: white;" placeholder="تغییرمسیر۱@صفحه مقصد۱" id="redirectmakerinput" rows="7"></textarea>' +
                2: "کاربر:",
    '</div>'
                4: ["وپ:", "ویکی\u200cپدیا:"],
    ).dialog({
                6: "پرونده:",
    modal: true,
                8: "مدیاویکی:",
    width: 700,
                10: "الگو:",
    buttons: [{
                12: "راهنما:",
    id: 'redirectmaker-button-import',
                14: "رده:",
    text: 'ساخت تغییرمسیر',
                100: "درگاه:",
    click: function () {
                102: "کتاب:",
    var formInput = $('#redirectmakerinput').val();
                446: "برنامه آموزشی:",
    if (formInput === '') { mw.notify('لطفاً فرم درخواست را به درستی پر کنید'); return; }
                828: "پودمان:"
    $.when.apply(null, $.map(formInput.split('\n'), function (x) {
            };
    var req = x.split('@');
     
    if (req.length !== 2) { return; }
            var append = "@";
    return startRedirect(req[0], req[1]);
            var buttonText = "@";
    })).then(function () {
            var ns = mw.config.get("wgNamespaceNumber");
    mw.notify('ساخت تغییرمسیرها\u200cها به پایان رسید، لطفاً بررسی کنید.');
            if (typeof namespaces[ns] === "object") {
    window.location = '/wiki/Special:Contributions/' + mw.config.get('wgUserName');
                append = namespaces[ns][0] + "@" + namespaces[ns][1] + mw.config.get("wgTitle");
    });
                buttonText = namespaces[ns][0] + "@اینجا";
    }
            } else if (typeof namespaces[ns] === "string") {
    }]
                append = namespaces[ns] + "@" + namespaces[ns] + mw.config.get("wgTitle");
    });
                buttonText = namespaces[ns] + "@اینجا";
    }
            }
     
    $(function () {
            return $("<button>", {
    mw.util.addCSS('#t-redirectmaker { font-weight: bold; }');
                text: buttonText,
    $(mw.util.addPortletLink('p-tb', '#', 'تغییرمسیر\u200cساز', 't-redirectmaker', 'ساخت تغییرمسیر به صورت خودکار')).click(init);
                style: "position: absolute; left: 1em;",
    });
                class: "mw-ui-button mw-ui-constructive"
            }).click(function () {
                var value = $("#redirectmakerinput").val().trim();
                if (value !== '')
                    value = value + '\n';
                value = value + append;
                $("#redirectmakerinput").val(value).focus();
            });
        }
     
        function init(e) {
            e.preventDefault();
            $('<div>' +
                '<div style="width: 40em">تغییرمسیرها را در خط\u200cهای جداگانه در جعبهٔ زیر وارد کنید:</div>' +
                '<textarea style="width: 100%; background-color: white; resize:vertical; padding-left: 50px;" placeholder="مبدأ@مقصد" id="redirectmakerinput" rows="7"></textarea>' +
                '</div>'
            ).dialog({
                title: "ابزار ایجاد تغییرمسیر",
                modal: true,
                width: 700,
                open: function () {
                    $("#redirectmakerinput").before(makeButton());
                },
                buttons: [{
                    id: 'redirectmaker-button-import',
                    text: 'ایجاد تغییرمسیر',
                    click: function () {
                        var formInput = $('#redirectmakerinput').val();
                        if (formInput === '') {
                            mw.notify('لطفاً فرم درخواست را به درستی پر کنید');
                            return;
                        }
                        $.when.apply(null, $.map(formInput.split('\n'), function (x) {
                            var req = x.split('@');
                            if (req.length !== 2) {
                                return;
                            }
                            return startRedirect(req[0], req[1]);
                        })).then(function () {
                            mw.notify('ایجاد تغییرمسیرها\u200cها به پایان رسید، لطفاً بررسی کنید.');
                            window.location = '/wiki/Special:Contributions/' + mw.config.get('wgUserName');
                        });
                    }
                }],
                close: function () {
                    $(this).remove();
                }
            });
        }
     
        $(function () {
            //mw.util.addCSS('#t-redirectmaker { font-weight: bold; }');
            $(mw.util.addPortletLink('p-tb', '#', 'تغییرمسیر\u200cساز', 't-redirectmaker', 'ایجاد تغییرمسیر به صورت خودکار')).click(init);
        });
    }(jQuery, mediaWiki));
    }(jQuery, mediaWiki));

    نسخهٔ ‏۵ اکتبر ۲۰۲۰، ساعت ۱۴:۵۷

    // <nowiki> // DO NOT REMOVE THIS LINE EVER
    /*jslint browser: true, white: true*/
    /*global mediaWiki, jQuery*/
    /*!
     * @author User:Ebraminio, User:Yamaha5
     */
    (function ($, mw) {
        'use strict';
    
        function createPage(title, text, summary, callback) {
            return new mw.Api().post({
                action: 'edit',
                title: title,
                text: text,
                summary: summary,
                createonly: '',
                minor: '',
                token: mw.user.tokens.get('editToken')
            }).then(
                function (data) {
                    if (data.error && data.error.info) {
                        mw.notify(title + ' انجام نشد: ' + data.error.info);
                    } else {
                        callback();
                    }
                    return data;
                },
                function (data) {
                    mw.notify(title + ' انجام نشد: ' + data);
                    return data;
                }
            );
        }
    
        function startRedirect(redirect, dest) {
            return createPage(
                redirect,
                '#تغییرمسیر [[' + dest + ']]',
                'ایجاد تغییرمسیر برای [[' + dest + ']] (ابزار تغییرمسیرساز)',
                function () {
                    mw.notify('ایجاد ' + redirect + ' با موفقیت انجام شد.');
                }
            );
        }
    
        // Make button by namespace
        function makeButton() {
            var namespaces = {
                0: "",
                2: "کاربر:",
                4: ["وپ:", "ویکی\u200cپدیا:"],
                6: "پرونده:",
                8: "مدیاویکی:",
                10: "الگو:",
                12: "راهنما:",
                14: "رده:",
                100: "درگاه:",
                102: "کتاب:",
                446: "برنامه آموزشی:",
                828: "پودمان:"
            };
    
            var append = "@";
            var buttonText = "@";
            var ns = mw.config.get("wgNamespaceNumber");
            if (typeof namespaces[ns] === "object") {
                append = namespaces[ns][0] + "@" + namespaces[ns][1] + mw.config.get("wgTitle");
                buttonText = namespaces[ns][0] + "@اینجا";
            } else if (typeof namespaces[ns] === "string") {
                append = namespaces[ns] + "@" + namespaces[ns] + mw.config.get("wgTitle");
                buttonText = namespaces[ns] + "@اینجا";
            }
    
            return $("<button>", {
                text: buttonText,
                style: "position: absolute; left: 1em;",
                class: "mw-ui-button mw-ui-constructive"
            }).click(function () {
                var value = $("#redirectmakerinput").val().trim();
                if (value !== '')
                    value = value + '\n';
                value = value + append;
                $("#redirectmakerinput").val(value).focus();
            });
        }
    
        function init(e) {
            e.preventDefault();
            $('<div>' +
                '<div style="width: 40em">تغییرمسیرها را در خط\u200cهای جداگانه در جعبهٔ زیر وارد کنید:</div>' +
                '<textarea style="width: 100%; background-color: white; resize:vertical; padding-left: 50px;" placeholder="مبدأ@مقصد" id="redirectmakerinput" rows="7"></textarea>' +
                '</div>'
            ).dialog({
                title: "ابزار ایجاد تغییرمسیر",
                modal: true,
                width: 700,
                open: function () {
                    $("#redirectmakerinput").before(makeButton());
                },
                buttons: [{
                    id: 'redirectmaker-button-import',
                    text: 'ایجاد تغییرمسیر',
                    click: function () {
                        var formInput = $('#redirectmakerinput').val();
                        if (formInput === '') {
                            mw.notify('لطفاً فرم درخواست را به درستی پر کنید');
                            return;
                        }
                        $.when.apply(null, $.map(formInput.split('\n'), function (x) {
                            var req = x.split('@');
                            if (req.length !== 2) {
                                return;
                            }
                            return startRedirect(req[0], req[1]);
                        })).then(function () {
                            mw.notify('ایجاد تغییرمسیرها\u200cها به پایان رسید، لطفاً بررسی کنید.');
                            window.location = '/wiki/Special:Contributions/' + mw.config.get('wgUserName');
                        });
                    }
                }],
                close: function () {
                    $(this).remove();
                }
            });
        }
    
        $(function () {
            //mw.util.addCSS('#t-redirectmaker { font-weight: bold; }');
            $(mw.util.addPortletLink('p-tb', '#', 'تغییرمسیر\u200cساز', 't-redirectmaker', 'ایجاد تغییرمسیر به صورت خودکار')).click(init);
        });
    }(jQuery, mediaWiki));