ميدياويكي:Gadget-AjaxMove.js
المظهر
هذه الصفحة هي جزء من الإضافة «AjaxMove»، يستعملها 291 مستخدم. |
ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.
if (mw.config.get('skin') == 'minerva') {
$('#bodyContent').prepend("<a href='#' style='margin-inline-end: 1em;text-indent:5px;width: fit-content; display: inline-block;' id='btn-ajaxMove'>نقل سريع</a>");
} else {
mw.util.addPortletLink('p-cactions', '#', "نقل سريع", "btn-ajaxMove", "نقل سريع");
}
$("#btn-ajaxMove").click(function() {
var Input = { to: '', reason: '' };
function AjaxMoveDialog(config) {
AjaxMoveDialog.super.call(this, config);
}
OO.inheritClass(AjaxMoveDialog, OO.ui.ProcessDialog);
AjaxMoveDialog.static.name = 'AjaxMoveDialog';
AjaxMoveDialog.static.title = 'نقل سريع';
AjaxMoveDialog.static.actions = [
{ action: 'save', label: 'نقل', flags: ['primary', 'progressive'] },
{ label: 'إلغاء', flags: 'safe' }
];
AjaxMoveDialog.prototype.initialize = function() {
AjaxMoveDialog.super.prototype.initialize.apply(this, arguments);
this.content = new OO.ui.PanelLayout({ padded: true, expanded: false });
this.input_to = new OO.ui.TextInputWidget({ value: mw.config.get('wgPageName') });
this.field_to = new OO.ui.FieldLayout(this.input_to, {
label: 'إلى'
});
this.input_reason = new OO.ui.TextInputWidget();
this.field_reason = new OO.ui.FieldLayout(this.input_reason, {
label: 'سبب'
});
this.fieldset = new OO.ui.FieldsetLayout();
this.fieldset.addItems([this.field_to, this.field_reason]);
this.content.$element.append(this.fieldset.$element);
this.$body.append(this.content.$element);
//Events
this.input_to.on('change', function(value) {
Input.to = value;
});
this.input_reason.on('change', function(value) {
Input.to = reason;
});
};
AjaxMoveDialog.prototype.getActionProcess = function(action) {
var dialog = this;
if (action) {
return new OO.ui.Process(function() {
let deferred = $.Deferred();
let api = new mw.Api();
try {
api.postWithToken('csrf', {
action: 'move',
from: mw.config.get('wgPageName'),
to: Input.to,
reason: Input.reason,
movetalk: true,
errorformat: 'html',
errorlang: mw.config.get('wgUserLanguage'),
errorsuselocal: true
}).then(function() {
deferred.resolve();
dialog.close();
mw.notify('نُقلت الصفحة بنجاح... سيُعاد تحميل الصفحة خلال ثوان');
setTimeout(function() {
location.reload();
}, 1500);
}, function(_, error) {
deferred.reject([new OO.ui.Error(api.getErrorMessage(error))]);
});
} catch (e) {
deferred.reject([new OO.ui.Error('حدث خطأ غير متوقع')]);
console.log(e);
}
return deferred;
});
}
return AjaxMoveDialog.super.prototype.getActionProcess.call(this, action);
};
var windowManager = new OO.ui.WindowManager();
$(document.body).append(windowManager.$element);
var dialog = new AjaxMoveDialog();
windowManager.addWindows([dialog]);
windowManager.openWindow(dialog);
});