ميدياويكي:Gadget-redirectMaker.js

من ويكيبيديا، الموسوعة الحرة

ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.

/**
 *إضافة بسيطة تُستخدم لإنشاء تحويلات بشكل كمي لصفحة ما
 * عند تفعيل الإضافة اذهب إلى
 * وب:منتح
 * كي تستطيع إنشاء التحويلات
 * التحديث والصيانة : [[:ar:User:Gerges]]
 */
mw.loader.using(['oojs-ui-core', 'oojs-ui-windows'], function() {
  mw.util.addPortletLink(((mw.config.get('skin') == 'minerva') ? 'p-tb' : 'p-cactions'), mw.util.getUrl('Special:BlankPage/RedirectMaker/' + mw.config.get('wgPageName').replace(/_/g, ' ')), 'منشئ التحويلات', 'redirectMaker', 'الانتقال إلى منشئ التحويلات');
  if (mw.config.get('wgCanonicalSpecialPageName') === 'Blankpage' && mw.config.get('wgTitle').split('/', 2)[1] === 'RedirectMaker') {
    if (mw.config.get('wgTitle').split('/', 3)[2] != null) {
      page_target = mw.config.get('wgTitle').split('/', 3)[2];
    } else {
      page_target = '';
    }

    function addTextInput(list) {
      let inputRedirect = new OO.ui.TextInputWidget({ placeholder: 'اسم التحويلة' });
      $('#mw-content-text').append(inputRedirect.$element);
      list.push(inputRedirect);
    }
    $('#mw-content-text > p').remove();
    $('#firstHeading').text('منشئ التحويلات');
    var page_target;
    var moveLogHeading = $("<div>").hide();
    $("<h1>").wrapInner("<span class='mw-headline'>سجل التحويلات</span>").appendTo(moveLogHeading);
    $('#mw-content-text').after('<br/>', moveLogHeading);
    var ListinputRedirect = [];
    var InputTarget = new OO.ui.TextInputWidget({
        placeholder: 'الصفحة',
        value: page_target
      }),
      BtnAdd = new OO.ui.ButtonWidget({
        label: 'أضف',
        icon: 'add',
        flags: ['primary', 'progressive']
      }),
      BtnSave = new OO.ui.ButtonWidget({
        label: 'حفظ',
        flags: ['primary', 'progressive']
      }),
      BtnClear = new OO.ui.ButtonWidget({
        label: 'إفراغ',
        icon: 'trash',
        flags: ['primary', 'destructive']
      });

    $('#mw-content-text').append(
      BtnAdd.$element,
      BtnSave.$element,
      BtnClear.$element,
      $('<p>').text('الصفحة الهدف:').css('font-weight', 'bold'),
      InputTarget.$element,
      '<br/>');
    addTextInput(ListinputRedirect);
    BtnAdd.on('click', function() {
      addTextInput(ListinputRedirect);
    });

    BtnClear.on('click', function() {
      ListinputRedirect.forEach(function(inputRedirect) {
        inputRedirect.toggle(false);
      });
      ListinputRedirect = [];
      addTextInput(ListinputRedirect);
    });
    BtnSave.on('click', function() {
      if (InputTarget.getValue() != "") {
        OO.ui.confirm("هل أنت متأكد من صحة البيانات المدخلة؟").done(function(confirmed) {
          if (confirmed) {
            moveLogHeading.show();
            ListinputRedirect.forEach(function(inputRedirect) {
              if (inputRedirect.getValue() != "") {
                new mw.Api().create(inputRedirect.getValue(),
                    {
                      summary: 'إنشاء تحويلة ب[[وب:منشئ التحويلات|منشئ التحويلات]]'
                    },
                    '#تحويل [[' + InputTarget.getValue() + "]]"
                  )
                  .done(responeHanddler)
                  .fail(responeHanddler);
              }
            });


          }
        });
      } else {
        OO.ui.alert("لم يتم إدخال هدف التحويلة.",
        {
          size: "small",
          actions: [{
            action: "save",
            label: "حسنا",
            flags: ["primary", "progressive"]
                            }]
        });
      }
    });
  }

  function responeHanddler(data, redirect) {
    console.log(data);
    var orderedList = $("<ul>").appendTo(moveLogHeading);
    if (data.result == "Success") {
      orderedList.append("<li></b>أنشئت التحويلة <b>" + data.title + "</b>.</li>");
    } else {

      console.error(data);
    }
  }

});