مستخدم:Gerges/GadgetRollbackFast.js
يمكن توفير توثيق لسكربت المستخدم هذا في الصفحة : مستخدم:Gerges/GadgetRollbackFast. |
ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات ( ).
mw.loader.using(['oojs'], function() {
if (mw.config.get('wgAction') != 'history') return;
var GRFButton = document.createElement("span");
GRFButton.innerHTML = "<a>إرجاع</a>";
var mw_rollback_link = document.querySelector(".mw-rollback-link");
mw_rollback_link.parentNode.insertBefore(GRFButton, mw_rollback_link.nextSibling);
var APIRollback = new mw.Api();
var LGadgetRollbackFast = '[[مستخدم:Gerges/الإرجاع السريع|الإرجاع السريع]]';
var GRFTextInputWidget;
GRFButton.addEventListener('click', function(event) {
event.preventDefault();
var _namePage = mw.config.get('wgPageName');
APIRollback.get({
action: 'query',
titles: _namePage,
prop: 'revisions',
rvprop: 'user',
format: 'json',
formatversion: '2'
}).then(function(res) {
var _userEdit = res.query.pages[0].revisions[0].user;
function GRFDialog(config) {
GRFDialog.super.call(this, config);
}
OO.inheritClass(GRFDialog, OO.ui.ProcessDialog);
GRFDialog.static.name = 'GadgetRollbackFast';
GRFDialog.static.title = 'الإرجاع السريع';
GRFDialog.static.size = 'small';
GRFDialog.static.actions = [{
action: 'save',
label: 'نعم',
flags: ['primary', 'progressive']
}, {
label: 'لا',
flags: 'safe'
}];
GRFDialog.prototype.initialize = function() {
GRFDialog.super.prototype.initialize.apply(this, arguments);
this.panel = new OO.ui.PanelLayout( {
padded: true,
expanded: false
});
this.content = new OO.ui.FieldsetLayout();
this.Input = new OO.ui.TextInputWidget({
placeholder: 'سبب الإرجاع',
indicator: 'required',
value: ''
});
this.field = new OO.ui.FieldLayout(this.Input, {
label: 'هل تود استرجاع تعديلات '+ _userEdit + '؟',
align: 'top'
});
this.content.addItems([this.field]);
this.panel.$element.append(this.content.$element);
this.$body.append(this.panel.$element);
this.Input.connect(this, {
'change': 'onInputChange'
});
};
var SummaryRollback = 'استرجاع اخر تعديلات [[Special:Contributions/'+_userEdit+'|'+_userEdit+']] ([[User talk:'+_userEdit+'|نقاش]]) علي صفحة '+_namePage.replace(/_/g, ' ')+' ('+LGadgetRollbackFast+')';
GRFDialog.prototype.onInputChange = function (value) {
if (value != '') {
SummaryRollback = 'استرجاع اخر تعديلات [[Special:Contributions/'+_userEdit+'|'+_userEdit+']] ([[User talk:'+_userEdit+'|نقاش]]) علي صفحة '+_namePage.replace(/_/g, ' ')+' : '+value+' ('+LGadgetRollbackFast+')';
}
};
GRFDialog.prototype.getActionProcess = function(action) {
var dialog = this;
if (action == 'save') {
return GRFDialog.super.prototype.getActionProcess.call(this, action).next(function() {
return APIRollback.rollback(_namePage, _userEdit, {
summary: SummaryRollback
});
}, this).execute().then(
function() {
mw.notify('استرجعت التعديلات');
dialog.close();
setTimeout(function() {
location.reload();
}, 1000);
},
function(_, data) {
dialog.close();
mw.notify(APIRollback.getErrorMessage(data), {
type: 'error'
});
});
}
return GRFDialog.super.prototype.getActionProcess.call(this, action);
};
var windowManager = new OO.ui.WindowManager();
$(document.body).append(windowManager.$element);
var dialog = new GRFDialog();
windowManager.addWindows([dialog]);
windowManager.openWindow(dialog);
});
});
});