משתמש:ממוני גבך/בקשת העברת דף.js
מראה
לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
$(function () {
// מניעת הרצה בדפים מיוחדים
if (mw.config.get('wgNamespaceNumber') < 0) {
return;
}
// הוספת הקישור לתפריט הכלים
mw.loader.using(['mediawiki.util'], function () {
var link = mw.util.addPortletLink(
'p-tb',
'#',
'בקשת העברה',
't-req-move',
'שליחת בקשה להעברת הדף הנוכחי למפעילי המערכת'
);
// חסימת הקישור מיד לאחר היצירה כדי למנוע # בכתובת
$(link).find('a').on('click', function (e) {
e.preventDefault();
e.stopPropagation();
mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows', 'mediawiki.api'], function () {
if (!window.RequestMoveDialog) {
defineDialogClass();
}
openMoveRequestDialog();
});
return false;
});
});
function defineDialogClass() {
window.RequestMoveDialog = function(config) {
window.RequestMoveDialog.super.call(this, config);
};
OO.inheritClass(window.RequestMoveDialog, OO.ui.ProcessDialog);
window.RequestMoveDialog.static.name = 'requestMoveDialog';
window.RequestMoveDialog.static.title = 'בקשת העברת דף';
window.RequestMoveDialog.static.actions = [
{ action: 'save', label: 'שליחת בקשה', flags: ['primary', 'progressive'] },
{ label: 'ביטול', flags: 'safe' }
];
window.RequestMoveDialog.prototype.initialize = function () {
window.RequestMoveDialog.super.prototype.initialize.apply(this, arguments);
this.panel = new OO.ui.PanelLayout({ padded: true, expanded: false });
this.sourceInput = new OO.ui.TextInputWidget({ value: mw.config.get('wgPageName').replace(/_/g, ' '), disabled: true });
this.targetInput = new OO.ui.TextInputWidget({ placeholder: 'הזינו את השם החדש המבוקש לדף', required: true });
this.reasonSelect = new OO.ui.DropdownInputWidget({
options: [
{ data: 'משמעות ראשית', label: 'משמעות ראשית' },
{ data: 'שינוי שם לשם המקובל', label: 'שינוי שם לשם המקובל' },
{ data: 'תיקון שגיאת כתיב', label: 'תיקון שגיאת כתיב' },
{ data: 'אחר', label: 'אחר' }
]
});
this.detailsInput = new OO.ui.MultilineTextInputWidget({ placeholder: 'פירוט נוסף...', rows: 3 });
this.panel.$element.append(
new OO.ui.FieldLayout(this.sourceInput, { label: 'דף מקור:', align: 'top' }).$element,
new OO.ui.FieldLayout(this.targetInput, { label: 'דף יעד:', align: 'top' }).$element,
new OO.ui.FieldLayout(this.reasonSelect, { label: 'סיבה:', align: 'top' }).$element,
new OO.ui.FieldLayout(this.detailsInput, { label: 'פירוט נוסף:', align: 'top' }).$element
);
this.$body.append(this.panel.$element);
};
window.RequestMoveDialog.prototype.getActionProcess = function (action) {
if (action === 'save') {
var target = this.targetInput.getValue().trim();
var reason = this.reasonSelect.getValue();
var details = this.detailsInput.getValue().trim();
if (!target) return new OO.ui.Process(function() { mw.notify('נא להזין דף יעד'); });
return new OO.ui.Process(function () {
var api = new mw.Api();
var sourcePage = mw.config.get('wgPageName').replace(/_/g, ' ');
var finalReason = details ? reason + ' - ' + details : reason;
var requestLine = '\n* {{בקשת העברה|' + sourcePage + '|' + target + '|' + finalReason + '}} [[מש:ממוני גבך|ממוני גבך]] • [[שיחת משתמש:ממוני גבך|בואו נשוחח]] • ד' Sivan ה'תשפ"ו • 00:59, 20 במאי 2026 (IDT)';
return api.get({ action: 'parse', page: 'המכלול:בקשות ממפעילים', prop: 'sections' })
.then(function (secData) {
var sectionIndex = -1;
secData.parse.sections.forEach(function(s) {
if (s.line.indexOf('העברת דף') !== -1) sectionIndex = s.index;
});
if (sectionIndex === -1) return $.Deferred().reject('לא נמצאה הפסקה המתאימה.');
return api.postWithEditToken({
action: 'edit',
title: 'המכלול:בקשות ממפעילים',
section: sectionIndex,
appendtext: requestLine,
summary: 'בקשת העברת דף: [[' + sourcePage + ']] ← [[' + target + ']]'
});
}).then(function () { mw.notify('הבקשה נשלחה!'); });
});
}
return window.RequestMoveDialog.super.prototype.getActionProcess.call(this, action);
};
}
function openMoveRequestDialog() {
var windowManager = new OO.ui.WindowManager();
$('body').append(windowManager.$element);
var dialog = new window.RequestMoveDialog({ size: 'medium' });
windowManager.addWindows([dialog]);
windowManager.openWindow(dialog);
}
});