Користувач:Base/newBoardDecision.js

Матеріал з Вікімедіа Україна
Перейти до навігації Перейти до пошуку

Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.

  • Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
  • Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
  • Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
  • Opera: натисніть Ctrl-F5
/**
 * An attempt to make a script that simplifies publishing board decisions
 *
 */
var DecisionPublisher = function () {
    mw.loader.using([
        'oojs-ui-core',
        'oojs-ui-windows',
        'mediawiki.widgets',
        'mediawiki.widgets.DateInputWidget',
    ]).done(function () {

        function DecisionDialogue(config) {
            DecisionDialogue.super.call(this, config);
        }

        OO.inheritClass(DecisionDialogue, OO.ui.ProcessDialog);

        $.extend(DecisionDialogue.static, {
            name: 'DecisionDialogue',
            actions: [
                {
                    flags: ['close'],
                    action: 'save'
                },
            ],
            title: 'Публікація рішення Правління',
            size: 'large',
        });

        $.extend(DecisionDialogue.prototype, {
            initialize: function () {
                var me = this;
                DecisionDialogue.super.prototype.initialize.call(this);

                this.panel = new OO.ui.PanelLayout({
                    padded: true,
                    expanded: false
                });
                this.content = new OO.ui.FieldsetLayout();


                this.decisionNumber = new OO.ui.TextInputWidget({
                    placeholder: '00/' + new Date().toISOString().slice(0, 4),
                    validate: /[0-9]{1,2}\/20[0-9]{2}/,
                    required: true
                });
                this.decisionNumberField = new OO.ui.FieldLayout(this.decisionNumber, {
                    align: 'left',
                    label: 'Рішення №'
                });

                this.dateDecided = new mw.widgets.DateInputWidget({
                    $overlay: this.$overlay,
                    value: new Date().toISOString().slice(0, 10),
                    inputFormat: 'YYYY-MM-DD',
                    displayFormat: 'YYYY-MM-DD',
                    required: true
                });
                this.dateDecidedField = new OO.ui.FieldLayout(this.dateDecided, {
                    align: 'left',
                    label: 'Рішення від'
                });

                this.decisionText = new OO.ui.MultilineTextInputWidget({
                    rows: 10,
                    value: 'Правління вирішило\n',
                    required: true,
                });
                this.decisionTextField = new OO.ui.FieldLayout(this.decisionText, {
                    align: 'top',
                    label: 'Текст рішення'
                });

                this.content.addItems([
                    this.decisionNumberField,
                    this.dateDecidedField,
                    this.decisionTextField,
                ]);

                this.panel.$element.append(this.content.$element);
                this.$body.append(this.panel.$element);

                var api = new mw.Api();
                var booklet = new OO.ui.BookletLayout({
                    outlined: true
                });
            },
            getActionProcess: function (action) {
                var dialog = this;
                if (action) {
                    return new OO.ui.Process(function () {
                        dialog.close({action: action});
                    });
                }
                return DecisionDialogue.super.prototype.getActionProcess.call(this, action);
            },
            getBodyHeight: function () {
                return 250;
            },

        });

        var windowManager = new OO.ui.WindowManager();
        $(document.body).append(windowManager.$element);

        var decisionDialogue = new DecisionDialogue();

        windowManager.addWindows([decisionDialogue]);
        windowManager.openWindow(decisionDialogue, {});
    });
};

DecisionPublisher();