Skip to content
Code-Schnipsel Gruppen Projekte
CronWindow.js 6,9 KiB
Newer Older
  • Learn to ignore specific revisions
  •  * Cron Window
    
     * @module package/quiqqer/cron/bin/CronWindow
     * @author www.pcsg.de (Henning Leutz)
    
    Henning Leutz's avatar
    Henning Leutz committed
     *
     * @require qui/controls/windows/Confirm
     * @require qui/controls/input/Params
     * @require Ajax
    
     * @require text!package/quiqqer/cron/bin/CronWindow.html
    
    Henning Leutz's avatar
    Henning Leutz committed
     * @require css!package/quiqqer/cron/bin/CronWindow.css
    
    Henning Leutz's avatar
    Henning Leutz committed
    define('package/quiqqer/cron/bin/CronWindow', [
    
    Henning Leutz's avatar
    Henning Leutz committed
    
        'qui/controls/windows/Confirm',
    
        'qui/controls/buttons/Select',
    
        'qui/controls/input/Params',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'Ajax',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'Locale',
    
        'package/quiqqer/cron/bin/controls/CronTime',
    
    
        'text!package/quiqqer/cron/bin/CronWindow.html',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'css!package/quiqqer/cron/bin/CronWindow.css'
    
    ], function (QUIConfirm, QUISelect, QUIParams, Ajax, QUILocale, CronTime, cronWindowTemplate) {
    
    Henning Leutz's avatar
    Henning Leutz committed
        "use strict";
    
    
        var lg = 'quiqqer/cron';
    
    Henning Leutz's avatar
    Henning Leutz committed
    
        return new Class({
    
    
            Type   : 'package/quiqqer/cron/bin/CronWindow',
            Extends: QUIConfirm,
    
            options: {
                title    : QUILocale.get('quiqqer/cron', 'cron.window.add.cron.title'),
    
    Henning Leutz's avatar
    Henning Leutz committed
                icon     : 'fa fa-clock-o',
    
                maxWidth : 750,
                maxHeight: 500,
    
                cronId: null, // if you want to edit a cron
    
                cancel_button: {
                    text     : QUILocale.get('quiqqer/system', 'cancel'),
                    textimage: 'fa fa-remove'
    
                ok_button    : {
                    text     : QUILocale.get('quiqqer/system', 'ok'),
                    textimage: 'fa fa-check'
    
            initialize: function (options) {
                this.parent(options);
    
    Henning Leutz's avatar
    Henning Leutz committed
    
                this.$available = [];
    
    
                this.$List            = null;
                this.$CronTimeControl = null;
    
    
                this.$ParamsControl = null;
    
    Henning Leutz's avatar
    Henning Leutz committed
            },
    
            /**
             * Open the Window
             *
    
             * @return {Object} self
    
    Henning Leutz's avatar
    Henning Leutz committed
             */
    
    Henning Leutz's avatar
    Henning Leutz committed
                this.parent();
                this.Loader.show();
    
                var self    = this,
                    Content = this.getContent();
    
    
                Content.set('html', cronWindowTemplate);
    
                // locale
                Content.getElement(
                    '.control-cron-add-intervall-title'
                ).set('html', QUILocale.get(lg, 'cron.interval'));
    
                Content.getElement(
                    '[for="control-cron-add-params"]'
                ).set('html', QUILocale.get(lg, 'cron.params'));
    
    
                // data
    
                //this.$List   = Content.getElement('.control-cron-add-list');
                this.$List = new QUISelect({
                    showIcons: false
                }).inject(
                    Content.getElement('.control-cron-add-list')
                );
    
    
                this.$Params = Content.getElement('[name="params"]');
    
    
                this.$List.addEvent('change', function (val) {
    
                    if (!self.$available) {
    
                    if (!self.$ParamsControl) {
    
                        return;
                    }
    
                    var i, len, p, plen;
    
                    var available     = self.$available,
    
    
                        allowedParams = [],
                        params        = [];
    
    
                    for (i = 0, len = available.length; i < len; i++) {
                        if (available[i].title != val) {
    
                        params = available[i].params;
    
                        for (p = 0, plen = params.length; p < plen; p++) {
                            allowedParams.push(params[p].name);
    
                    self.$ParamsControl.setAttribute('allowedParams', allowedParams);
    
                this.$CronTimeControl = new CronTime().inject(
                    this.$Elm.getElement(
                        '.control-cron-add-intervall-control'
                    )
                );
    
    
                Ajax.get('package_quiqqer_cron_ajax_getAvailableCrons', function (result) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                    self.$available = result;
    
    
                    for (var i = 0, len = result.length; i < len; i++) {
    
                        self.$List.appendChild(
                            '<b>' + result[i].title + '</b> - ' + result[i].description,
                            result[i].title,
                            false
                        );
    
                    self.$ParamsControl = new QUIParams(self.$Params);
    
                    if (!self.getAttribute('cronId')) {
    
                        self.Loader.hide();
                        return;
                    }
    
    
                    Ajax.get('package_quiqqer_cron_ajax_cron_get', function (result) {
    
                        self.$List.setValue(result.title);
    
                        self.$CronTimeControl.setValue(
                            result.min,
                            result.hour,
                            result.day,
                            result.month,
                            result.dayOfWeek
                        );
    
                        self.$Params.value = result.params;
    
                        self.$Params.fireEvent('change');
    
                        //self.$List.fireEvent('change');
    
    
                        self.Loader.hide();
                    }, {
    
                        'package': 'quiqqer/cron',
                        cronId   : self.getAttribute('cronId')
    
                    'package': 'quiqqer/cron'
    
    Henning Leutz's avatar
    Henning Leutz committed
                });
    
    
                return this;
            },
    
            /**
             * Add the Cron to the list
             *
    
             * @return {Object} self
    
    Henning Leutz's avatar
    Henning Leutz committed
             */
    
            submit: function () {
    
    Henning Leutz's avatar
    Henning Leutz committed
                    return this;
                }
    
    
                if (!this.getContent()) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                    return this;
                }
    
    
                var CronTime = this.$CronTimeControl.getValue();
    
                if (this.getAttribute('cronId')) {
                    Ajax.post('package_quiqqer_cron_ajax_edit', function () {
                        self.fireEvent('submit');
    
                        self.close();
                    }, {
    
                        'package': 'quiqqer/cron',
                        cronId   : this.getAttribute('cronId'),
    
                        cron     : this.$List.getValue(),
                        min      : CronTime.minute,
                        hour     : CronTime.hour,
                        day      : CronTime.day,
                        month    : CronTime.month,
                        dayOfWeek: CronTime.dayOfWeek,
    
                        params   : JSON.encode(this.$ParamsControl.getValue())
    
                Ajax.post('package_quiqqer_cron_ajax_add', function () {
                    self.fireEvent('submit');
    
    Henning Leutz's avatar
    Henning Leutz committed
                    self.close();
    
    Henning Leutz's avatar
    Henning Leutz committed
                }, {
    
                    'package': 'quiqqer/cron',
    
                    cron     : this.$List.getValue(),
                    min      : CronTime.minute,
                    hour     : CronTime.hour,
                    day      : CronTime.day,
                    month    : CronTime.month,
                    dayOfWeek: CronTime.dayOfWeek,
    
                    params   : JSON.encode(this.$ParamsControl.getValue())
    
    Henning Leutz's avatar
    Henning Leutz committed
                });
    
    Henning Leutz's avatar
    Henning Leutz committed
            }
        });