לדלג לתוכן

משתמש:ממוני גבך/בקשת העברת דף.js

מתוך המכלול, האנציקלופדיה היהודית

לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
/* הסקריפט מוסיף לשונית "בקש העברה", על מנת שאפשר יהיה לבקש העברת דפים באמצעות דף בקשות ממפעילים. */
if(mw.config.get('wgNamespaceNumber') + 1) // not a special page
$(function(){


function addMenuItem(caption, tooltip, message, accessKey) {
	var a = mw.util.addPortletLink('p-cactions','#',caption,'',tooltip.replace(/replaceParam/g, mw.config.get("wgPageName").replace(/_/g, " ")).replace(/replaceUser/g, mw.config.get('wgRelevantUserName')),(accessKey||''));
	$(a).click(function() {
		checkRequest().fail(function(err){
			mw.notify(err);
		}).done(function(){
			if (message.match(/reason/)) {message += ' ~~' + '~~'}else{message += ' - reason ~~' + '~~'}
			message = message.replace(/replaceParam/g, mw.config.get('wgPageName').replace(/_/g, " ")).replace(/replaceUser/g, mw.config.get('wgRelevantUserName'));
			switch (caption) {
				case "בקשת העברה":
					openDialog();
					openMoveRequestDialog();
						break;
			}
		});
	});
}

/**
 * פונקציה חדשה המנהלת את הדיאלוג והשליחה
 */
function openMoveRequestDialog() {
    // יצירת חלון הדיאלוג באמצעות OOjs UI
    function MoveDialog(config) {
        MoveDialog.super.call(this, config);
    }
    OO.inheritClass(MoveDialog, OO.ui.ProcessDialog);

    MoveDialog.static.name = 'moveDialog';
    MoveDialog.static.title = 'בקשת העברת דף';
    MoveDialog.static.actions = [
        { action: 'save', label: 'שליחה', flags: ['primary', 'progressive'] },
        { label: 'ביטול', flags: 'safe' }
    ];

    MoveDialog.prototype.initialize = function () {
        MoveDialog.super.prototype.initialize.apply(this, arguments);
        this.content = new OO.ui.PanelLayout({ padded: true, expanded: false });

        this.targetPage = new OO.ui.TextInputWidget({ placeholder: 'שם דף היעד' });
        this.targetField = new OO.ui.FieldLayout(this.targetPage, { label: 'דף יעד:', align: 'top' });

        this.reasonDropdown = new OO.ui.DropdownWidget({
            menu: {
                items: [
                    new OO.ui.MenuOptionWidget({ data: 'משמעות ראשית', label: 'משמעות ראשית' }),
                    new OO.ui.MenuOptionWidget({ data: 'שינוי שם לשם המקובל', label: 'שינוי שם לשם המקובל' }),
                    new OO.ui.MenuOptionWidget({ data: 'תיקון שגיאת כתיב', label: 'תיקון שגיאת כתיב' }),
                    new OO.ui.MenuOptionWidget({ data: 'אחר', label: 'אחר' })
                ]
            }
        });
        this.reasonField = new OO.ui.FieldLayout(this.reasonDropdown, { label: 'סיבה:', align: 'top' });

        this.detailsInput = new OO.ui.TextInputWidget({ placeholder: 'פירוט נוסף (אופציונלי)' });
        this.detailsField = new OO.ui.FieldLayout(this.detailsInput, { label: 'פירוט נוסף:', align: 'top' });

        this.content.$element.append(this.targetField.$element, this.reasonField.$element, this.detailsField.$element);
        this.$body.append(this.content.$element);
    };

    MoveDialog.prototype.getActionProcess = function (action) {
        var dialog = this;
        if (action === 'save') {
            var target = this.targetPage.getValue().trim();
            var reasonItem = this.reasonDropdown.getMenu().findSelectedItem();
            var details = this.detailsInput.getValue().trim();

            if (!target || !reasonItem) {
                mw.notify('יש למלא דף יעד ולבחור סיבה', { type: 'error' });
                return new OO.ui.Process();
            }

            return new OO.ui.Process(function () {
                return executeMoveSubmission(target, reasonItem.getData(), details).then(function () {
                    dialog.close();
                    mw.notify('הבקשה נשלחה בהצלחה');
                }, function (err) {
                    mw.notify('שגיאה בשליחה: ' + err, { type: 'error' });
                });
            });
        }
        return MoveDialog.super.prototype.getActionProcess.call(this, action);
    };

    var windowManager = new OO.ui.WindowManager();
    $(document.body).append(windowManager.$element);
    var dialog = new MoveDialog({ size: 'medium' });
    windowManager.addWindows([dialog]);
    windowManager.openWindow(dialog);
}

var deleteTemplate = $('.redirectMsg').length ? '{{בקשת העברה+|replaceParam|reason|הפניה=כן}}' : '{{בקשת העברה+|replaceParam|reason}}';
if (!mw.util.getParamValue('redlink'))
	addMenuItem('בקשת העברה', 'בקשה להעביר את הדף replaceParam', deleteTemplate,'d');

});