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

نکته: برای دیدن تغییرات، ممکن است نیاز باشد که حافظهٔ نهانی مرورگر خود را پس از انتشار پاک‌سازی کنید. گوگل کروم، فایرفاکس، مایکروسافت اج و سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload در نوار ابزار مرورگر کلیک کنید. برای آگاهی از جزئیات و نحوهٔ پاک‌سازی حافظهٔ نهانی سایر مرورگرها، صفحهٔ ویکی‌پدیا:میانگیر مرورگرتان را خالی کنید را ببینید.

/*
MediaWiki:Gadget-close.js
*/
// <nowiki>
/*global jQuery, mediaWiki */
(function ($, mw) {
    'use strict';
    var windowManager;
    var archiveSection;
    var commentInSection;
    var onlyTopSection;

    var archiveSectionOptions = {
        install: function () {
            var namespace = mw.config.get("wgNamespaceNumber");
            if (namespace === 4 || namespace % 2 === 1) {
                if ($('.mw-editsection').length == 0) {
                    return false;
                }
                if (mw.config.get("wgPageName") === "ویکی‌پدیا:نظرخواهی_برای_حذف" |
                    mw.config.get("wgPageName") === "ویکی‌پدیا:آیا_می‌دانستید_که...؟/پیش‌نویس" |
                    mw.config.get("wgPageName") === "ویکی‌پدیا:گزیدن_موضوعات_برگزیده") {
                    return false; // ابزار را باید در زیرصفحه‌های نبح استفاده کرد نه در خود نبح
                }
                // افزودن دکمه به بخش آغازین
                if (
                    !$('.mw-editsection')[0]['innerHTML'].toString().match("ویرایش بخش آغازین") && // mediawiki:gadget-edittop.js is not active
                    mw.config.get("wgPageName").substr(0, 28) !== 'ویکی‌پدیا:نظرخواهی_برای_حذف/'
                ) { // نشان ندادن دکمه‌ها در بخش آغازین نبح‌ها برای جلوگیری از ثبت نظر در جای اشتباه
                    var our_content = $("#content, #mw_content").first();
                    var span1 = our_content.find("span.mw-editsection:not(.plainlinks)").first();
                    if (!span1.length) {
                        return;
                    }
                    var span0 = span1.clone();
                    $("#mw_header h1, #content h1").first().append(span0);
                    span0.find("a").each(function (idx) {
                        var a = $(this);
                        a.attr("title", 'ویرایش بخش آغازین');
                        if (!/&(ve|)section=T/.test(a.attr("href"))) { // not transcluded
                            a.attr("href", a.attr("href").replace(/&(ve|)section=\d+/, "&$1section=0&summary=/*%20بخش%20آغازین%20*/%20"));
                        } else if (/&vesection=/.test(a.attr("href"))) { // transcluded, VE
                            a.attr("href", mw.util.getUrl(mw.config.get('wgPageName')) + "?veaction=edit&vesection=0&summary=/*%20بخش%20آغازین%20*/%20");
                        } else { // transcluded, not VE
                            a.attr("href", mw.util.getUrl(mw.config.get('wgPageName')) + "?action=edit&section=0&summary=/*%20بخش%20آغازین%20*/%20");
                        }
                    });
                }
                // افزودن دکمه به زیربخش‌ها
                $('.mw-editsection').each(function () {
                    if ($(this).parent('#firstHeading').length > 0) return;
                    var section = '';
                    $(this).find('a').each(function () {
                        var m = $(this).attr('href').match(/section=(\d+)/);
                        if (m && m.length == 2 && section == '') {
                            section = $(this).attr('href');
                        }
                    });
                    var span = $('<span>', {
                        class: 'mw-archivesection'
                    }).insertAfter(this);
                    span.append($('<span>', {
                        class: 'mw-editsection-bracket',
                        text: '['
                    }));
                    span.append($('<a>', {
                        href: '#',
                        title: 'ثبت نظر (موافق/مخالف/شد/...)',
                        style: 'font-size: smaller;',
                        text: 'ثبت نظر',
                    }).click(function (e) {
                        e.preventDefault();
                        mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']).done(function () {
                            archiveSectionOptions.createCommentWindow(section);
                        });
                    }));
                    span.append($('<span>', {
                        class: '',
                        text: ' / '
                    }));
                    span.append($('<a>', {
                        href: '#',
                        title: 'جمع‌بندی این بخش',
                        style: 'font-size: smaller;',
                        text: 'جمع‌بندی',
                    }).click(function (e) {
                        e.preventDefault();
                        mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']).done(function () {
                            archiveSectionOptions.createArchiveWindow(section);
                        });
                    }));
                    span.append($('<span>', {
                        class: 'mw-editsection-bracket',
                        text: ']'
                    }));
                    // Late pre-loading
                    mw.loader.load(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']);
                });
            }
        },
        createArchiveWindow: function (section) {
            var query = archiveSectionOptions.getQuery(section);
            archiveSectionOptions.currentSectionId = query.section;

            function ArchiveSection(config) {
                ArchiveSection.super.call(this, config);
            }
            OO.inheritClass(ArchiveSection, OO.ui.ProcessDialog);
            ArchiveSection.static.name = 'archive';
            ArchiveSection.static.title = 'جمع‌بندی بخش';
            ArchiveSection.static.actions = [{
                action: 'archive',
                label: 'جمع‌بندی',
                flags: 'primary'
            }, {
                label: 'لغو',
                flags: 'safe'
            }];
            ArchiveSection.prototype.initialize = function () {
                var fieldset = [];
                ArchiveSection.super.prototype.initialize.apply(this, arguments);
                this.panel = new OO.ui.PanelLayout({
                    padded: true,
                    expanded: false
                });
                this.content = new OO.ui.FieldsetLayout();
                archiveSectionOptions.switchTop = new OO.ui.ToggleSwitchWidget({
                    label: 'جمع‌بندی بالای متن باشد',
                    value: false,
                });
                archiveSectionOptions.switchSuccess = new OO.ui.ToggleSwitchWidget({
                    label: 'بحث در رسیدن به اجماع موفق بود',
                    value: true,
                });
                archiveSectionOptions.ActionDone = new OO.ui.ToggleSwitchWidget({
                    label: 'افزودن {{شد}} یا {{نشد}} به پایین بحث، بر پایهٔ موفق بودن یا نبودن',
                    value: false,
                });
                archiveSectionOptions.switchBold = new OO.ui.ToggleSwitchWidget({
                    label: 'متن جمع‌بندی ضخیم نمایش داده شود',
                    value: false,
                });
                archiveSectionOptions.textSummary = new OO.ui.MultilineTextInputWidget({
                    placeholder: 'متن جمع‌بندی را وارد کنید',
                    rows: 6,
                });
                //archiveSectionOptions.textSummary.setRTL(true);
                fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.switchTop, {
                    label: 'جمع‌بندی بالای متن باشد',
                    align: 'inline',
                }));
                fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.switchSuccess, {
                    label: 'بحث در رسیدن به اجماع موفق بود',
                    align: 'inline',
                }));
                fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.ActionDone, {
                    label: 'افزودن {{شد}} یا {{نشد}} به پایین بحث، بر پایهٔ موفق بودن یا نبودن',
                    align: 'inline',
                }));
                fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.switchBold, {
                    label: 'متن جمع‌بندی ضخیم نمایش داده شود',
                    align: 'inline',
                }));
                fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.textSummary, {
                    label: 'جمع‌بندی:',
                    align: 'top'
                }));
                this.content.addItems(fieldset);
                this.panel.$element.append(this.content.$element);
                this.$body.append(this.panel.$element);
            };
            ArchiveSection.prototype.getActionProcess = function (action) {
                var dialog = this;
                if (action === 'archive') {
                    archiveSectionOptions.doEdit(archiveSectionOptions.currentSectionId, action);
                }
                return ArchiveSection.super.prototype.getActionProcess.call(this, action);
            };
            if (!windowManager) {
                windowManager = new OO.ui.WindowManager();
                $('body').append(windowManager.$element);
            }
            if (!archiveSection) {
                archiveSection = new ArchiveSection({
                    size: 'medium'
                });
                windowManager.addWindows([archiveSection]);
            }
            windowManager.openWindow(archiveSection);
        },
        createCommentWindow: function (section) {
            var query = archiveSectionOptions.getQuery(section);
            archiveSectionOptions.currentSectionId = query.section;
            (new mw.Api()).get({
                format: 'json',
                action: 'query',
                titles: mw.config.get("wgPageName"),
                rvsection: query.section,
                prop: 'revisions',
                rvprop: 'content',
            }).then(function (data) {
                var page = data.query.pages[Object.keys(data.query.pages)[0]];
                var current = page.revisions[0]['*'];
                current = current.replace(/\= \=/gi, '==');
                current = current.replace(/\=([^\= \n\r]+) *\=/gi, '= $1 =');
                current = current.replace(/\={4,}/gi, '==');
                if (('\n' + current).split('\n==').length > 3) {
                    onlyTopSection = confirm('این بخش، زیربخش‌هایی هم دارد! برای ارسال متن آیا قسمت بالایی منظورتان است؟\nدکمهٔ Ok = پیام در بخش بالایی قرار گیرد.\nدکمهٔ Cancel = متن در انتها قرار گیرد.')
                    if (onlyTopSection) {
                        if (!current.match('^\= ')) {
                            current = current.split('\n===')[0]
                        } else {
                            current = current.split('\n==')[0]
                        }
                    }
                }

                function CommentInSection(config) {
                    CommentInSection.super.call(this, config);
                }
                OO.inheritClass(CommentInSection, OO.ui.ProcessDialog);
                CommentInSection.static.name = 'comment';
                CommentInSection.static.title = 'ثبت نظر';
                CommentInSection.static.actions = [{
                    action: 'comment',
                    label: 'ثبت نظر',
                    flags: 'primary'
                }, {
                    action: 'close',
                    label: 'لغو',
                    flags: 'safe'
                }];
                CommentInSection.prototype.initialize = function () {
                    var fieldset = [];
                    CommentInSection.super.prototype.initialize.apply(this, arguments);
                    this.panel = new OO.ui.PanelLayout({
                        padded: true,
                        expanded: false
                    });
                    this.content = new OO.ui.FieldsetLayout();

                    var PingUsers = current.match(/\[\[(?:بحث[_ ]کاربر|[Uu]ser[_ ][tT]alk|کاربر|[Uu]ser)\:([^\]\\\/]+)\|(?:[^\]]+)\]\]/gi)
                    var uniqueNames = [];
                    $.each(PingUsers, function (i, el) {
                        var username = el.split('|')[0].split('/')[0].split('#')[0].split(':')[1];
                        if ($.inArray(username, uniqueNames) === -1 && username != mw.config.get('wgUserName')) {
                            uniqueNames.push(username);
                        }
                    });
                    var finallList = []
                    var i;
                    for (i = 0; i < uniqueNames.length; i++) {
                        finallList.push({
                            data: uniqueNames[i],
                            lable: 'کاربر:' + uniqueNames[i]
                        })
                    }

                    archiveSectionOptions.btnSameIndent = new OO.ui.ButtonOptionWidget({
                        data: 2,
                        label: 'بدون دندانه‌گذاری',
                        title: 'پیام بدون دندانه‌گذاری نوشته می‌شود.'
                    }),
                        archiveSectionOptions.btnOneIndent = new OO.ui.ButtonOptionWidget({
                            data: 1,
                            label: 'پاسخ به قبلی',
                            title: 'پیام در پاسخ به نفر قبل نوشته می‌شود.'
                        }),
                        archiveSectionOptions.btnnoIndent = new OO.ui.ButtonOptionWidget({
                            data: 3,
                            label: 'سر خط',
                            title: 'پیام از ابتدای خط شروع می‌شود.'
                        }),
                        archiveSectionOptions.buttonIndentSelect = new OO.ui.ButtonSelectWidget({
                            items: [archiveSectionOptions.btnSameIndent, archiveSectionOptions.btnOneIndent, archiveSectionOptions.btnnoIndent]
                        });
                    archiveSectionOptions.buttonIndentSelect.selectItem(archiveSectionOptions.btnOneIndent);

                    archiveSectionOptions.Dropdown = new OO.ui.DropdownWidget({
                        label: 'پیام',
                        menu: {
                            items: [
                                new OO.ui.MenuOptionWidget({
                                    icon: 'share',
                                    data: 'info',
                                    label: 'پیام'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'info',
                                    data: 'Opinion',
                                    label: 'نظر'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'check',
                                    data: 'done',
                                    label: 'شد',
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'close',
                                    data: 'NOTdone',
                                    label: 'نشد'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'add',
                                    data: 'agree',
                                    label: 'موافق'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'subtract',
                                    data: 'contrary',
                                    label: 'مخالف'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'ellipsis',
                                    data: 'Neutralvote',
                                    label: 'ممتنع'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'strikethrough',
                                    data: 'remove',
                                    label: 'حذف شود'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'underline',
                                    data: 'keep',
                                    label: 'بماند'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'referenceExisting',
                                    data: 'merge',
                                    label: 'ادغام شود'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'help',
                                    data: 'Q',
                                    label: 'پرسش'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'feedback',
                                    data: 'A',
                                    label: 'پاسخ'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'heart',
                                    data: 'like',
                                    label: 'لایک'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'upTriangle',
                                    data: 'plus1',
                                    label: '+1'
                                }),
                                new OO.ui.MenuOptionWidget({
                                    icon: 'star',
                                    data: 'thankyou',
                                    label: 'سپاسگزارم'
                                })
                            ]
                        }
                    });
                    archiveSectionOptions.Dropdown.getMenu().selectItemByData('info');


                    archiveSectionOptions.MultiselectPingUser = new OO.ui.MenuTagMultiselectWidget({
                        inputPosition: 'outline',
                        options: finallList,
                        placeholder: 'از اینجا نام کاربری که قصد پاسخ دارید، انتخاب کنید یا ابتدای نامش را بنویسید',
                        selected: []
                    });
                    fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.MultiselectPingUser, {
                        label: 'انتخاب کاربران شرکت‌کننده در بحث برای پاسخ (پینگ):',
                        align: 'inline'
                    }));
                    archiveSectionOptions.dropdownCommentType = new OO.ui.DropdownWidget({
                        items: [
                            archiveSectionOptions.itemComment,
                        ]
                    });
                    archiveSectionOptions.editButton = new OO.ui.ButtonWidget({
                        label: 'ابرابزار',
                        flags: [
                            'primary',
                            'progressive'
                        ]
                    });
                    if (persianWikiTools) {
                        archiveSectionOptions.editButton.on('click', function () {

                            archiveSectionOptions.textComment.setValue(persianWikiTools.superTool(archiveSectionOptions.textComment.getValue()).trim())

                        });
                    } else {
                        archiveSectionOptions.editButton.setDisabled(true)
                    }

                    archiveSectionOptions.textComment = new OO.ui.MultilineTextInputWidget({
                        placeholder: 'متن نظر را وارد کنید',
                        rows: 6,
                    });

                    //archiveSectionOptions.textComment.setRTL(true);
                    fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.buttonIndentSelect, {
                        label: 'دندانه گذاری:',
                        align: 'top'
                    }));
                    fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.Dropdown, {
                        label: 'برچسب قبل از نظر:',
                        align: 'top'
                    }));
                    fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.editButton));
                    fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.textComment, {
                        label: 'متن نظر:',
                        align: 'top'
                    }));

                    const bold_btn = new OO.ui.ButtonWidget({
                        framed: false,
                        icon: 'bold',
                        label: 'bold',
                        invisibleLabel: true,
                        title: 'bold'
                    });

                    const italic_btn = new OO.ui.ButtonWidget({
                        framed: false,
                        icon: 'italic',
                        label: 'italic',
                        invisibleLabel: true,
                        title: 'italic'
                    });

                    const wikilink_btn = new OO.ui.ButtonWidget({
                        framed: false,
                        icon: 'wikiText',
                        label: 'wikilink',
                        invisibleLabel: true,
                        title: 'wikilink'
                    });

                    fieldset.push(bold_btn);
                    fieldset.push(italic_btn);
                    fieldset.push(wikilink_btn);

                    archiveSectionOptions.Dropdown.getMenu().on('select', function () {
                        if (archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'contrary' ||
                            archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'keep' ||
                            archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'remove' ||
                            archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'merge' ||
                            archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'agree' ||
                            archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'Neutralvote'
                        ) {
                            archiveSectionOptions.btnSameIndent.setDisabled(true);
                            archiveSectionOptions.btnOneIndent.setDisabled(true);
                            archiveSectionOptions.buttonIndentSelect.selectItem(archiveSectionOptions.btnnoIndent);
                        }
                        else {
                            if (archiveSectionOptions.btnSameIndent.isDisabled() == true) {
                                archiveSectionOptions.btnSameIndent.setDisabled(false);
                                archiveSectionOptions.btnOneIndent.setDisabled(false);
                                archiveSectionOptions.buttonIndentSelect.selectItem(btnSameIndent);
                            }
                        }
                    });

                    bold_btn.on('click', function () {
                        var textElement = archiveSectionOptions.textComment.$input[0];
                        insertAtCursor(textElement, "\'\'\'", "\'\'\'");
                    });

                    italic_btn.on('click', function () {
                        var textElement = archiveSectionOptions.textComment.$input[0];
                        insertAtCursor(textElement, "\'\'", "\'\'");
                    });

                    wikilink_btn.on('click', function () {
                        var textElement = archiveSectionOptions.textComment.$input[0];
                        insertAtCursor(textElement, "[[", "]]");
                    });


                    function insertAtCursor(myField, myValueBefore, myValueAfter) {
                        if (document.selection) {
                            myField.focus();
                            document.selection.createRange().text = myValueBefore + document.selection.createRange().text + myValueAfter;
                        } else if (myField.selectionStart || myField.selectionStart == '0') {
                            var startPos = myField.selectionStart;
                            var endPos = myField.selectionEnd;
                            myField.value = myField.value.substring(0, startPos) + myValueBefore + myField.value.substring(startPos, endPos) + myValueAfter + myField.value.substring(endPos, myField.value.length);
                        }
                    }
                    this.content.addItems(fieldset);
                    this.panel.$element.append(this.content.$element);
                    this.$body.append(this.panel.$element);
                };
                CommentInSection.prototype.getActionProcess = function (action) {
                    var dialog = this;
                    if (action === 'comment') {
                        archiveSectionOptions.doEdit(archiveSectionOptions.currentSectionId, action);
                    }
                    else if (action === 'close') {
                        this.close();
                    }
                    return CommentInSection.super.prototype.getActionProcess.call(this, action);
                };
                if (!windowManager) {
                    windowManager = new OO.ui.WindowManager();
                    $('body').append(windowManager.$element);
                }
                if (!commentInSection) {
                    commentInSection = new CommentInSection({
                        size: 'medium'
                    });
                    windowManager.addWindows([commentInSection]);
                }
                windowManager.openWindow(commentInSection);
            });
        },
        getQuery: function (section) {
            var query = new mw.Uri(section).query;
            return query;
        },
        setIndentation: function (text, newText, notArchiving) {
            text = text.replace(/\r/g, '')
            var lines = text.split('\n');
            var lastline = lines[lines.length - 1];
            var colons = lastline.match('^([\#\*]?)(\:*)')
            var colonNum = colons[2].length;
            var colonType = colons[1];
            try {
                if (archiveSectionOptions.buttonIndentSelect.findSelectedItem().getData() == 2) {
                    colonNum = colonNum - 1
                }
            } catch (err) { }
            var indentation = '';
            if (notArchiving == true) {
                if (archiveSectionOptions.buttonIndentSelect.findSelectedItem().getData() != 3) {
                    for (var i = 0; i < colonNum + 1; i++) {
                        indentation += ':';
                    }
                }
            }
            else {
                for (var i = 0; i < colonNum + 1; i++) {
                    indentation += ':';
                }
            }
            text = text + '\n' + colonType + indentation + newText.trim().replace(/\n/ig, '\n' + colonType + indentation).trim();
            return text
        },
        doEdit: function (sectionId, action) {
            (new mw.Api()).get({
                format: 'json',
                action: 'query',
                titles: mw.config.get("wgPageName"),
                rvsection: sectionId,
                prop: 'revisions',
                rvprop: 'content',
            }).then(function (data) {
                var page = data.query.pages[Object.keys(data.query.pages)[0]];
                var current = page.revisions[0]['*'];
                var header = current.substr(0, current.indexOf('\n'));
                var content = current.substr(current.indexOf('\n') + 1);
                var newText = '';
                var pingtxt = '';
                var section_title = (current.match(/^(=+)[^=]*?(\1)$/m) || [''])[0];
                section_title = section_title.replace(/\=/g, '');
                if (!section_title) {
                    section_title = 'بخش آغازین'
                }
                var editSummary = '/' + '*' + section_title + '*' + '/ ';
                if (action == 'archive') {
                    editSummary += 'جمع‌بندی: ';
                    editSummary += archiveSectionOptions.textSummary.getValue();
                    newText = header + '\n';
                    // Per Special:Diff/18468612
                    if (mw.config.get("wgPageName") == "ویکی‌پدیا:درخواست_انتقال" || mw.config.get("wgPageName") == "ویکی‌پدیا:درخواست_ادغام_تاریخچه") {
                        if (archiveSectionOptions.switchSuccess.getValue()) {
                            content = content.replace(/\{\{وضعیت\|?\}\}/, '{{وضعیت|شد}}');
                        } else {
                            content = content.replace(/\{\{وضعیت\|?\}\}/, '{{وضعیت|نشد}}');
                        }
                    }
                    newText += '{{بسته|برچسب زمان={{subst:' + 'CURRENTTIMESTAMP}}';
                    if (archiveSectionOptions.switchSuccess.getValue()) {
                        newText += '}}\n';
                    } else {
                        newText += '|ناموفق=بله}}\n';
                    }
                    var summaryText = '';
                    var inputText = archiveSectionOptions.textSummary.getValue()
                    if (inputText || archiveSectionOptions.ActionDone.getValue()) {
                        if (!inputText) {
                            var inputText = '';
                        }
                        if (archiveSectionOptions.ActionDone.getValue()) {
                            if (archiveSectionOptions.switchSuccess.getValue()) {
                                inputText = '{{شد}}' + inputText
                            } else {
                                inputText = '{{نشد}}' + inputText
                            }
                        }
                        if (archiveSectionOptions.switchBold.getValue()) {
                            summaryText = "'''" + inputText + "'''";
                        } else {
                            summaryText = inputText;
                        }
                        summaryText += ' ~~' + '~~\n';
                    }
                    if (!archiveSectionOptions.switchTop.getValue()) {
                        if (inputText) {
                            newText = archiveSectionOptions.setIndentation(newText + content, summaryText, false);
                        } else {
                            newText = newText + content;
                        }
                        if (newText.indexOf('{{بسته') > -1) newText += '\n{{پایان بسته}}';
                    } else {
                        if (inputText) {
                            newText += ':' + summaryText;
                        }
                        newText += content;
                        if (newText.indexOf('{{بسته') > -1) newText += '\n{{پایان بسته}}';
                    }

                    return (new mw.Api()).post({
                        format: 'json',
                        action: 'edit',
                        title: mw.config.get("wgPageName"),
                        section: sectionId,
                        summary: editSummary,
                        text: newText,
                        token: mw.user.tokens.get('csrfToken')
                    });
                } else {
                    var currentTxt = current.replace('\r', '')
                    var prefix = '';
                    if (currentTxt.search('\n#') > 0) {
                        prefix = '# ';
                    } else if (currentTxt.search('\n*') > 0) {
                        prefix = '* ';
                    } else {
                        prefix = '* ';
                    }
                    if (archiveSectionOptions.MultiselectPingUser.getValue()) {
                        var userlist = archiveSectionOptions.MultiselectPingUser.getValue()
                        var Pingtxt = '{{پینگ|' + userlist.join('|') + '}}'
                        var userTalkPage = mw.config.get("wgTitle")
                        Pingtxt = Pingtxt.replace('|' + userTalkPage + '}}', '|}}').replace('|' + userTalkPage + '|', '|')
                        var PingtxteditSummary = ' + پاسخ به کاربر:' + Pingtxt.replace('{{پینگ|', '').replace('}}', '').trim().replace(/\|/g, '، ')
                    } else {
                        var Pingtxt = ''
                    }
                    if (Pingtxt == '{{پینگ|}}') {
                        Pingtxt = ''
                        PingtxteditSummary = ''
                    }

                    if (archiveSectionOptions.buttonIndentSelect.findSelectedItem().getData() == 1 && (archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'Q' || archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'A' || archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'like' || archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'plus1' || archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'thankyou')) {
                        prefix = '\n';
                    }
                    switch (archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString()) {
                        case 'info':
                            newText = Pingtxt + '';
                            editSummary += 'ثبت پیام' + PingtxteditSummary;
                            break;
                        case 'Opinion':
                            newText = prefix + Pingtxt + '{{نظر}} ';
                            editSummary += 'ثبت نظر' + PingtxteditSummary;
                            break;
                        case 'done':
                            newText = Pingtxt + '{{شد}} ';
                            editSummary += 'انجام شد' + PingtxteditSummary;
                            break;
                        case 'NOTdone':
                            newText = Pingtxt + '{{نشد}} ';
                            editSummary += 'انجام نشد' + PingtxteditSummary;
                            break;
                        case 'agree':
                            newText = prefix + Pingtxt + '{{موافق}} ';
                            editSummary += 'ثبت نظر موافق' + PingtxteditSummary;
                            break;
                        case 'contrary':
                            newText = prefix + Pingtxt + '{{مخالف}} ';
                            editSummary += 'ثبت نظر مخالف' + PingtxteditSummary;
                            break;
                        case 'Neutralvote':
                            newText = prefix + Pingtxt + '{{ممتنع}} ';
                            editSummary += 'ثبت نظر ممتنع' + PingtxteditSummary;
                            break;
                        case 'keep':
                            newText = prefix + Pingtxt + '{{بماند}} ';
                            editSummary += 'ثبت نظر \'بماند\'' + PingtxteditSummary;
                            break;
                        case 'remove':
                            newText = prefix + Pingtxt + '{{حذف شود}} ';
                            editSummary += 'ثبت نظر \'حذف شود\'' + PingtxteditSummary;
                            break;
                        case 'merge':
                            newText = prefix + Pingtxt + '{{ادغام شود}} ';
                            editSummary += 'ثبت نظر \'ادغام شود\'' + PingtxteditSummary;
                            break;
                        case 'Q':
                            newText = Pingtxt + '{{پرسش}} ';
                            editSummary += 'ثبت پرسش' + PingtxteditSummary;
                            break;
                        case 'A':
                            newText = Pingtxt + '{{پاسخ}} ';
                            editSummary += 'ثبت پاسخ' + PingtxteditSummary;
                            break;
                        case 'like':
                            newText = Pingtxt + '{{لایک}} ';
                            editSummary += 'ثبت \'لایک\'' + PingtxteditSummary;
                            break;
                        case 'plus1':
                            newText = Pingtxt + '{{+1}} ';
                            editSummary += 'ثبت \'+1\'' + PingtxteditSummary;
                            break;
                        case 'thankyou':
                            newText = Pingtxt + '{{سپاس-گل}} ';
                            editSummary += 'ثبت سپاس‌گزاری' + PingtxteditSummary;
                            break;
                        default:
                    }

                    newText += archiveSectionOptions.textComment.getValue();
                    newText += ' ~~' + '~~';
                    if (onlyTopSection) {
                        if (!current.match('^\= ')) {
                            var topCurrent = current.split('\n===')[0]
                        } else {
                            var topCurrent = current.split('\n==')[0]
                        }
                    }
                    if (archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'contrary' ||
                        archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'keep' ||
                        archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'remove' ||
                        archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'merge' ||
                        archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'agree' ||
                        archiveSectionOptions.Dropdown.getMenu().findSelectedItem().getData().toString() == 'Neutralvote'
                    ) {
                        if (onlyTopSection) {
                            newText = current.replace(topCurrent, topCurrent + '\n' + newText)
                        } else {
                            newText = current + '\n' + newText;
                        }
                    } else {
                        if (onlyTopSection) {
                            var topCurrentWithIndent = archiveSectionOptions.setIndentation(topCurrent, newText, true);
                            newText = current.replace(topCurrent, topCurrentWithIndent)
                        } else {
                            newText = archiveSectionOptions.setIndentation(current, newText, true);
                        }
                    }

                    return (new mw.Api()).post({
                        format: 'json',
                        action: 'edit',
                        title: mw.config.get("wgPageName"),
                        section: sectionId,
                        summary: editSummary,
                        text: newText,
                        token: mw.user.tokens.get('csrfToken')
                    });
                }
            }).then(function () {
                if (action == 'archive') {
                    mw.notify('در حال ثبت جمع‌بندی شما ...');
                } else {
                    mw.notify('در حال ثبت نظر شما ...');
                }
                if (sectionId == 0) {
                    sectionId = 1
                }
                location.hash = $('.mw-headline')[sectionId - 1].id;
                location.reload(true);
            }, function (error) {
                mw.notify('ثبت نظر یا جمع‌بندی ناموفق بود: ' + error, {
                    type: 'error'
                });
            })
        },
        currentSectionId: -1,
    };
    if (mw.config.get('wgNamespaceNumber') >= 0) {
        $(archiveSectionOptions.install);
    }
})(jQuery, mediaWiki);
// </nowiki>