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

از مشروطه
پرش به ناوبری پرش به جستجو

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

  • فایرفاکس / سافاری: کلید 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 browser: true, indent: 2*/
/*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 + ' با موفقیت انجام شد.');
      }
    );
  }

  function init(e) {
    e.preventDefault();
    $('<div>' +
      '<div style="width: 40em">درخواست\u200cهای ساخت تغییرمسیرها را در خطوط جداگانه وارد کنید:</div>' +
      '<textarea style="width: 100%; background-color: white;" placeholder="تغییرمسیر۱@صفحه مقصد۱" id="redirectmakerinput" rows="7"></textarea>' +
      '</div>'
      ).dialog({
      modal: true,
      width: 700,
      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');
          });
        }
      }]
    });
  }

  mw.loader.using(['jquery.ui.dialog'], function () {
    $(function () {
      mw.util.addCSS('#t-redirectmaker { font-weight: bold; }');
      $(mw.util.addPortletLink('p-tb-list', '#', 'تغییرمسیر\u200cساز', 't-redirectmaker', 'ساخت تغییرمسیر به صورت خودکار')).click(init);
    });
  });
}(jQuery, mediaWiki));