مسابقه دانش‌دخت
اسلامیکال از تاریخ ۱۵ دی تا ۲۰ بهمن، میزبان یک همایه با موضوع زنان است. شما می‌توانید در مسابقه مقاله‌نویسی دانش‌دخت، شرکت کنید و با نگارش مقاله، از جوایز آن بهره‌مند باشید. اگر به موضوعات مربوط با زنان علاقه‌مندید، این فرصت را از دست ندهید. فهرستی از مقالات پیشنهادی جهت ایجاد یا ویرایش در اینجا وجود دارد.

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

از اسلامیکال
نسخهٔ تاریخ ‏۲۵ ژانویهٔ ۲۰۲۳، ساعت ۰۷:۴۰ توسط Aboammar (بحث | مشارکت‌ها)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به ناوبری پرش به جستجو

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

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • اینترنت اکسپلورر/ Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
  • اپرا: Ctrl-F5 را بفشارید.
/*global jQuery, mediaWiki */
(function($, mw) {
  'use strict';
  var windowManager;
  var archiveAfD;
  var targetPage;
  var archiveOptions = {
    install: function() {
      if (mw.config.get('wgAction') === 'view' &&
        ((mw.config.get('wgPageName').search("اسلامیکال:نظرخواهی_برای_حذف/") > -1) ||
          (mw.config.get('wgPageName').search("اسلامیکال:نظرخواهی_برای_حذف_متفرقه/") > -1))
      ) {
        mw.loader.using(['mediawiki.api']).done(archiveOptions.setUp);
        $(mw.util.addPortletLink(
          'p-views', '#', 'جمع‌بندی', 'ca-afd', 'ابزار مدیریت نبح', null, '#ca-view'
        )).click(function(e) {
          mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']).done(archiveOptions.createWindow);
          e.preventDefault();
        });
        // Late pre-loading
        mw.loader.load(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']);
      }
    },
    setUp: function() {
      var targetPage;
      var params = {
        action: 'query',
        prop: 'revisions',
        titles: mw.config.get('wgPageName'),
        format: 'json',
        rvprop: 'content',
        rvdir: 'newer',
        rvlimit: '1'
      };
      (new mw.Api()).get(params).done(function(data) {
        var pageId = Object.keys(data["query"]["pages"])[0];
        var pageContent = data["query"]["pages"][pageId]["revisions"][0]["*"];
        var sourceTemplate = pageContent.match(/\{\{مقاله\|(.*?)\}\}/);
        if (sourceTemplate != null) {
          targetPage = sourceTemplate[1];
        } else {
          targetPage = mw.config.get('wgPageName')
            .replace("اسلامیکال:نظرخواهی_برای_حذف/", "")
            .replace(/_\(بار_[^\)]+?\)$/, "").replace(/_\([^\)]+?ین_نامزدی\)$/, "");
        }
        // if the target page has moved, use the redirect destination instead
        var params = {
          action: "query",
          prop: "info",
          redirects: "1",
          titles: targetPage,
          format: "json"
        };
        (new mw.Api()).get(params).done(function(data) {
          if ("redirects" in data["query"]) {
            targetPage = data['query']['redirects'][0]['to'];
          }
          archiveOptions.targetPage = targetPage;
        });
      });
    },
    reason: '',
    shortReason: '',
    decisionCategory: '',
    createWindow: function() {
      if (archiveOptions.targetPage == null) {
        // user tried to use the gadget while it is determining the AfD target
        console.log('Gadget-AfD is still loading...');
        return true; // so that user can click on the gadget link again
      }

      function ArchiveAfD(config) {
        ArchiveAfD.super.call(this, config);
      }
      OO.inheritClass(ArchiveAfD, OO.ui.ProcessDialog);
      ArchiveAfD.static.name = 'AfD dialog';
      ArchiveAfD.static.title = 'مدیریت نظرخواهی حذف';
      ArchiveAfD.static.actions = [{
        action: 'archive',
        label: 'ثبت',
        flags: 'primary'
      }, {
        label: 'لغو',
        flags: 'safe'
      }];
      ArchiveAfD.prototype.initialize = function() {
        var fieldset = [];
        ArchiveAfD.super.prototype.initialize.apply(this, arguments);
        this.panel = new OO.ui.PanelLayout({
          padded: true,
          expanded: false
        });
        this.content = new OO.ui.FieldsetLayout();
        archiveOptions.radioDelete = new OO.ui.RadioOptionWidget({
          id: 'radioDelete',
          label: 'حذف شود',
        });
        archiveOptions.radioMerge = new OO.ui.RadioOptionWidget({
          id: 'radioMerge',
          label: 'ادغام شود',
        });
        archiveOptions.radioKeep = new OO.ui.RadioOptionWidget({
          id: 'radioKeep',
          label: 'بماند',
        });
        archiveOptions.radioExtend = new OO.ui.RadioOptionWidget({
          id: 'radioExtend',
          label: 'تمدید نظرخواهی',
        });
        archiveOptions.radioSelect = new OO.ui.RadioSelectWidget({
          items: [archiveOptions.radioDelete,
            archiveOptions.radioMerge,
            archiveOptions.radioKeep,
            archiveOptions.radioExtend
          ]
        });
        archiveOptions.radioSelect.selectItem(archiveOptions.radioKeep);
        archiveOptions.radioSelect.on('select', function() {
          if (archiveOptions.radioDelete.isSelected()) {
            archiveOptions.switchProtect.setDisabled(false);
          } else {
            archiveOptions.switchProtect.setDisabled(true);
          }
          if (archiveOptions.radioMerge.isSelected()) {
            archiveOptions.textMergeTarget.setDisabled(false);
          } else {
            archiveOptions.textMergeTarget.setDisabled(true);
            if (archiveOptions.radioExtend.isSelected()) {
              archiveOptions.comboCommonReason.setDisabled(true);
            } else {
              archiveOptions.comboCommonReason.setDisabled(false);
            }
          }
        });
        archiveOptions.comboCommonReason = new OO.ui.ComboBoxInputWidget({
          options: [{
              data: '[[پال:حذف/نبح|اجماعی برای حذف حاصل نشد.]]'
            },
            {
              data: '[[پال:سرشناسی|سرشناسی موضوع]] احراز نشد.'
            },
            {
              data: 'حذف سریع شده‌است.'
            },
            {
              data: '[[پال:حذف نرم|حذف نرم]] (در نبود مشارکت کافی)'
            },
            {
              data: 'کاربران بر حذف صفحه اجماع دارند'
            },
            {
              data: 'کاربران بر ماندن صفحه اجماع دارند'
            },
            {
              data: '[[اسلامیکال:ماندن سریع|انصراف نامزدکننده]]'
            },
            {
              data: 'بر پایه [[پال:برف]] نظرخواهی جمع‌بندی شد.'
            },
          ]
        });
        archiveOptions.textReason = new OO.ui.TextInputWidget({
          placeholder: 'متن جمع‌بندی را وارد کنید',
        });
        archiveOptions.textMergeTarget = new OO.ui.TextInputWidget({
          id: 'textTargetMerge',
          placeholder: 'نام کامل صفحه',
          disabled: true
        });
        archiveOptions.switchProtect = new OO.ui.ToggleSwitchWidget({
          id: 'switchProtect',
          disabled: true
        });
        fieldset.push(new OO.ui.FieldLayout(archiveOptions.radioSelect, {
          label: 'تصمیم شما:',
          align: 'top'
        }));
        fieldset.push(new OO.ui.FieldLayout(archiveOptions.comboCommonReason, {
          label: 'دلایل مرسوم:',
          align: 'inline'
        }));
        fieldset.push(new OO.ui.FieldLayout(archiveOptions.textReason, {
          label: 'توضیح (اختیاری):',
          align: 'top'
        }));
        fieldset.push(new OO.ui.FieldLayout(archiveOptions.textMergeTarget, {
          label: 'ادغام با:',
          align: 'top'
        }));
        fieldset.push(new OO.ui.FieldLayout(archiveOptions.switchProtect, {
          label: 'صفحه پس از حذف محافظت شود',
          align: top
        }));
        this.content.addItems(fieldset);
        this.panel.$element.append(this.content.$element);
        this.$body.append(this.panel.$element);
      };
      ArchiveAfD.prototype.getActionProcess = function(action) {
        var dialog = this;
        if (action === 'archive') {
          archiveOptions.reason = archiveOptions.textReason.getValue();
          if (archiveOptions.comboCommonReason.getValue()) {
            archiveOptions.reason = archiveOptions.comboCommonReason.getValue() + ' ' + archiveOptions.reason
          }
          var debatePage = mw.config.get('wgPageName');
          var talkPrefix = 'بحث:';
          if (archiveOptions.targetPage.search(/کاربر:|الگو:|رده:|اسلامیکال:|درگاه:|راهنما:/) > -1) {
            talkPrefix = 'بحث ';
          }
          if (archiveOptions.targetPage.search(/^بحث/) > -1) {
            talkPrefix = false;
          }
          return new OO.ui.Process(function() {
            // Warn the user if they try to leave the page before we are done
            $(window).bind('beforeunload', function() {
              return 'Archiving has not completed. Please do not leave the page yet.';
            });
            if (archiveOptions.radioExtend.isSelected()) {
              // Update subject page
              summary = 'تمدید نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])';
              archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.extendPage, summary);
            } else {
              var summary = '';
              archiveOptions.checkRedirect(archiveOptions.targetPage);
              // Remove page from WP:AfD
              summary = 'حذف [[' + debatePage.replace(/\_/g, ' ') + ']] از [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]]): ';
              archiveOptions.loadSavePageRefresh('اسلامیکال:نظرخواهی_برای_حذف', archiveOptions.removeLink, summary);
              if (archiveOptions.radioDelete.isSelected()) {
                archiveOptions.shortReason = 'حذف شود. ';
                archiveOptions.decisionCategory = '[[رده' + ':نظرخواهی برای حذف منجر به حذف]]';
                archiveOptions.reason = 'حذف شود. ' + archiveOptions.reason;
                // Update AfD page
                summary = 'بستن نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])';
                archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.closePage, summary);
                // Update AfD archives
                archiveOptions.creationDate(debatePage, function(archlink) {
                  archiveOptions.archiveMonth(archlink, function(month) {
                    summary = 'بایگانی نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]]): ';
                    archiveOptions.loadSavePageRefresh('اسلامیکال:نظرخواهی_برای_حذف/بایگانی/' + month, archiveOptions.archivePage, summary);
                  })
                });
                // Delete the page
                var summary = 'حذف صفحه بر اساس [[' + debatePage + '|نظرخواهی برای حذف]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])';
                archiveOptions.deletePageRefresh(archiveOptions.targetPage, summary, archiveOptions.switchProtect.getValue());
              } else {
                if (archiveOptions.radioMerge.isSelected()) {
                  var targetPage = archiveOptions.textMergeTarget.getValue();
                  archiveOptions.shortReason = 'ادغام شود با [[' + targetPage + ']]. ';
                  archiveOptions.decisionCategory = '[[رده' + ':نظرخواهی برای حذف منجر به ادغام]]';
                  archiveOptions.reason = 'ادغام شود با [[' + targetPage + ']]. ' + archiveOptions.reason;
                  // Mention the old AfD on the talk page
                  summary = 'افزودن [[الگو:پیشینه حذف]] به بحث صفحه ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]]): ';
                  if (talkPrefix) {
                    archiveOptions.loadSavePageRefresh(talkPrefix + archiveOptions.targetPage, archiveOptions.closeTalkPage, summary);
                  }
                  // Update AfD page
                  summary = 'بستن نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])';
                  archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.closePage, summary);
                  // Update AfD archives
                  archiveOptions.creationDate(debatePage, function(archlink) {
                    archiveOptions.archiveMonth(archlink, function(month) {
                      summary = 'بایگانی نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]]): ';
                      archiveOptions.loadSavePageRefresh('اسلامیکال:نظرخواهی_برای_حذف/بایگانی/' + month, archiveOptions.archivePage, summary);
                    })
                  });
                  // Update subject page
                  summary = 'حذف [[الگو:پیشنهاد حذف]] از صفحه ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]]): ';
                  archiveOptions.loadSavePageRefresh(archiveOptions.targetPage, function(text) {
                    text = archiveOptions.removeTemplate(text);
                    text = '{{' + 'اجماع ادغام|' + targetPage + '}}\n' + text;
                    return text
                  }, summary);
                } else {
                  archiveOptions.shortReason = 'بماند. ';
                  archiveOptions.decisionCategory = '[[رده' + ':نظرخواهی برای حذف منجر به ماندن]]';
                  archiveOptions.reason = 'بماند. ' + archiveOptions.reason;
                  // Mention the old AfD on the talk page
                  if (talkPrefix) {
                    summary = 'افزودن [[الگو:پیشینه حذف]] به بحث صفحه ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]]): ';
                    archiveOptions.loadSavePageRefresh(talkPrefix + archiveOptions.targetPage, archiveOptions.closeTalkPage, summary);
                  }
                  // Update AfD page
                  summary = 'بستن نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])';
                  archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.closePage, summary);
                  // Update AfD archives
                  archiveOptions.creationDate(debatePage, function(archlink) {
                    archiveOptions.archiveMonth(archlink, function(month) {
                      summary = 'بایگانی نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]]): ';
                      archiveOptions.loadSavePageRefresh('اسلامیکال:نظرخواهی_برای_حذف/بایگانی/' + month, archiveOptions.archivePage, summary);
                    })
                  });
                  // Update subject page
                  summary = 'حذف [[الگو:پیشنهاد حذف]] از صفحه ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]]): ';
                  archiveOptions.loadSavePageRefresh(archiveOptions.targetPage, archiveOptions.removeTemplate, summary);
                }
              }
            }
            dialog.close({
              action: action
            }).done(function() {
              // TODO: Refresh the AfD page after all actions are complete
            });
          });
        }
        return ArchiveAfD.super.prototype.getActionProcess.call(this, action);
      };
      if (!windowManager) {
        windowManager = new OO.ui.WindowManager();
        $('body').append(windowManager.$element);
      }
      if (!archiveAfD) {
        archiveAfD = new ArchiveAfD({
          size: 'medium'
        });
        windowManager.addWindows([archiveAfD]);
      }
      windowManager.openWindow(archiveAfD);
    },
    convertYearToFarsi: function(year) {
      return year.replace(/\d/g, function (x) {
        return String.fromCharCode(x.charCodeAt(0) + 1728); // 1728 is '۰' - '0' code difference
      });
    },
    convertMonthToFarsi: function(month) {
      return {
        January: 'ژانویه',
        February: 'فوریه',
        March: 'مارس',
        April: 'آوریل',
        May: 'مه',
        June: 'ژوئن',
        July: 'ژوئیه',
        August: 'اوت',
        September: 'سپتامبر',
        October: 'اکتبر',
        November: 'نوامبر',
        December: 'دسامبر'
      }[month];
    },
    checkRedirect: function(ar_title) {
      var params = {
        action: "query",
        prop: "info",
        titles: ar_title,
        format: "json"
      };
      (new mw.Api()).get(params).done(function(data) {
        if ("redirect" in data["query"]
          ["pages"][Object.keys(data["query"]["pages"])]) {
          mw.notify("صفحهٔ موضوع نظرخواهی منتقل شده‌است. حواستان باشد که دستی درست کنید!", {
            type: 'error'
          });
        }
      });
    },
    creationDate: function(title, callback) {
      (new mw.Api()).get({
        action: 'query',
        prop: 'revisions',
        titles: title,
        rvprop: 'timestamp',
        rvdir: 'newer',
        format: 'json',
        rvlimit: '1',
      }).done(function(data) {
        var timestamp = data["query"]["pages"][Object.keys(data["query"]
            ["pages"])]["revisions"]
          [0]["timestamp"];
        callback(timestamp);
      });
    },
    archiveMonth: function(timestamp, callback) {
      var crDate = new Date(timestamp);
      var archiveMonthLink = archiveOptions.convertMonthToFarsi(crDate.getUTCMonthName()) + ' ' + archiveOptions.convertYearToFarsi(String(crDate.getUTCFullYear()));
      callback(archiveMonthLink);
    },
    loadPage: function(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]);
      });
    },
    protectPageRefresh: function(page, summary) {
      archiveOptions.getProtectToken(function(token) {
        archiveOptions.protectPage(page, summary, token);
      });
    },
    getProtectToken: function(callback) {
      (new mw.Api()).post({
        action: 'query',
        meta: 'tokens',
        type: 'csrf'
      }).done(function(data) {
        if (data.error && data.error.info) {
          console.log(data.error);
          mw.notify(data.error.info, {
            type: 'error'
          });
        } else {
          callback(data.query.tokens.csrftoken);
        }
      }).fail(function(data) {
        mw.notify(data);
      });
    },
    protectPage: function(title, summary, token) {
      (new mw.Api()).post({
        action: 'protect',
        title: title,
        reason: summary,
        token: token,
        protections: 'create=sysop',
        expiry: '1 year',
      }).done(function(data) {
        if (data.error && data.error.info) {
          console.log(data.error);
          mw.notify(data.error.info, {
            type: 'error'
          });
        } else {
          mw.notify('مقاله محافظت شد!');
        }
      }).fail(function(data) {
        mw.notify(data);
      });
    },
    savePage: function(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) {
          console.log(data.error);
          if (data.error.info === 'missingtitle') {
            mw.notify('صفحه ' + title + ' موجود نیست!', {
              type: 'error'
            });
          } else {
            mw.notify(data.error.info, {
              type: 'error'
            });
          }
        } else {
          callback();
        }
      }).fail(function(data) {
        mw.notify(data);
      });
    },
    extendPage: function(text) {
      text = text + "\n{{جا:تمدید حذف" + "|" + archiveOptions.textReason.getValue() + "}}";
      $(window).off('beforeunload');
      return text;
    },
    closePage: function(text) {
      text = text.replace(new RegExp('<noinclude' + '>\\{\\{\(?:این الگو را زمان بستن نبح حذف کن\|REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD\)\\|\.+?\\}\\}<\\/noinclude' +
        '>\\n?', 'g'), '');
      text = '{{آغاز بایگانی حذف}}\n\n' + archiveOptions.decisionCategory + '\n' + archiveOptions.reason + '\n~~' + '~~\n' + text + '\n{{پایان بایگانی حذف}}';
      mw.notify('نظرخواهی بسته شد!');
      return text;
    },
    closeTalkPage: function(text) {
      var page_name = mw.config.get("wgPageName");
      text = '{{پیشینه حذف| تاریخ =~~' + '~~' + '~| نتیجه =' + archiveOptions.reason + ' | صفحه =' + page_name.replace(/\_/g, ' ') + ' |کوچک=}}\n\n' + text;
      text = text.replace("صفحه =اسلامیکال:نظرخواهی برای حذف/", "صفحه =")
      mw.notify('الگو پیشینه حذف به بحث صفحه افزوده شد!');
      return text;
    },
    archivePage: function(text) {
      var pagelink = mw.config.get("wgPageName");
      text = text + '\n# [[' + pagelink.replace(/\_/g, ' ') + ']] -- ' + archiveOptions.shortReason + ' ~~' + '~~'
      mw.notify('بایگانی به‌روز شد.');
      // Let the user close the tab without a warning
      $(window).off('beforeunload');
      return text;
    },
    removeLink: function(text) {
      var pagelink = mw.config.get("wgPageName");
      var isDraftPrefixed = pagelink.indexOf('/پیش‌نویس:') !== -1;
      var pagelinkNoPrefix = pagelink.replace(/\/پیش‌نویس:/, '/').replace(/\_/g, ' ');
      var text2 = text;
      pagelink = pagelink.replace(/\_/g, ' ');
      text = text.replace('{{' + pagelink + '}}\n', '')
      // Try the pagename without draft prefix (if there is one)
      if (text2 === text && isDraftPrefixed) {
      	text = text.replace('{{' + pagelinkNoPrefix + '}}\n', '');
      }
      if (text2 === text) {
        mw.notify('توجه:برداشتن نظرخواهی از پال:نبح با خطا مواجه شد!', {
          type: 'error'
        });
      } else {
        mw.notify('نظرخواهی از پال:نبح برداشته شد!')
      }
      return text;
    },
    removeTemplate: function(text) {
      var text2 = text;
      text = text.replace(/(\<!--(.+?)--\>\n*|)\{\{(نظرخواهی برای حذف|پیشنهاد حذف\s?۲)(.+?|)\}\}(\n*\<!--(.+?)--\>|)(\n*\<!--(.+?)--\>|)/g, '');
      text = text.replace(/\<!-- قبلاً پیشنهاد حذف داده شده‌است(.+?)--\>/g, '');
      text = text.replace(/\<noinclude\>\n*\<\/noinclude\>/g, '');
      if (text2 === text) {
        mw.notify('توجه:برداشتن الگو از مقاله با مشکل مواجه شد!', {
          type: 'error'
        });
      } else {
        mw.notify('الگو پیشنهاد حذف از صفحه برداشته شد!');
      }
      text = text.trim()
      return text;
    },
    loadSavePageRefresh: function(page, replaceCallback, summary) {
      archiveOptions.loadPage(page, function(text) {
        archiveOptions.savePage(page, replaceCallback(text), summary, function() {
          setTimeout(function() {
            location.reload();
          }, 2000);
        });
      });
    },
    deletePageRefresh: function(page, summary, protect) {
      archiveOptions.getDeleteToken(function(token) {
        if (protect === true) {
          archiveOptions.deletePage(page, summary, token, archiveOptions.protectPageRefresh);
        } else {
          archiveOptions.deletePage(page, summary, token, function() {});
        }
      });
    },
    getDeleteToken: function(callback) {
      (new mw.Api()).post({
        action: 'query',
        meta: 'tokens',
        type: 'csrf'
      }).done(function(data) {
        if (data.error && data.error.info) {
          console.log(data.error);
          mw.notify(data.error.info, {
            type: 'error'
          });
        } else {
          callback(data.query.tokens.csrftoken);
        }
      }).fail(function(data) {
        mw.notify(data);
      });
    },
    deletePage: function(title, summary, token, callback) {
      (new mw.Api()).post({
        action: 'delete',
        title: title,
        reason: summary,
        token: token,
      }).done(function(data) {
        if (data.error && data.error.info) {
          console.log(data.error);
          if (data.error.info === 'missingtitle') {
            mw.notify('صفحه ' + title + ' موجود نیست!', {
              type: 'error'
            });
          } else {
            mw.notify(data.error.info, {
              type: 'error'
            });
          }
        } else {
          mw.notify('مقاله حذف شد!');
          callback(title, 'محافظت صفحه بر اساس [[اسلامیکال:نظرخواهی_برای_حذف/' + title +
            '|نظرخواهی برای حذف]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمع‌بندی]])');
        }
      }).fail(function(data) {
        mw.notify(data);
      });
      if (title.search(/کاربر:|الگو:|رده:|اسلامیکال:|درگاه:|راهنما:/) > -1) {
        var TalkLink = 'بحث ' + title;
      } else {
        var TalkLink = 'بحث:' + title;
      }
      (new mw.Api()).post({
        action: 'delete',
        title: TalkLink,
        reason: summary,
        token: token,
      }).done(function(data) {
        if (data.error && data.error.info) {
          console.log(data.error);
          mw.notify(data.error.info, {
            type: 'error'
          });
        } else {
          mw.notify('بحث مقاله حذف شد!');
        }
      }).fail(function(data) {
        mw.notify(data);
      });
    },
  };
  if (mw.config.get('wgNamespaceNumber') >= 0) {
    $(archiveOptions.install);
  }
})(jQuery, mediaWiki);