Skip to content
Code-Schnipsel Gruppen Projekte
CronWindow.js 8,82 KiB
Newer Older
  • Learn to ignore specific revisions
  •  * Cron Window
    
     * @module URL_OPT_DIR/quiqqer/cron/bin/CronWindow
    
     * @author www.namerobot.com (Henning Leutz)
    
    Henning Leutz's avatar
    Henning Leutz committed
     *
     * @require qui/controls/windows/Confirm
     * @require qui/controls/input/Params
     * @require Ajax
     * @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/input/Params',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'Ajax',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'Locale',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'css!package/quiqqer/cron/bin/CronWindow.css'
    
    Henning Leutz's avatar
    Henning Leutz committed
    ], function(QUIConfirm, QUIParams, Ajax, QUILocale)
    
    Henning Leutz's avatar
    Henning Leutz committed
    {
        "use strict";
    
    
        return new Class({
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            Type : 'package/quiqqer/cron/bin/CronWindow',
    
    Henning Leutz's avatar
    Henning Leutz committed
            Extends : QUIConfirm,
    
            options : {
    
    Henning Leutz's avatar
    Henning Leutz committed
                title     : QUILocale.get( 'quiqqer/cron', 'cron.window.add.cron.title' ),
    
                icon      : 'icon-time',
    
                maxWidth  : 440,
                maxHeight : 500,
    
    
                cronId : null // if you want to edit a cron
    
    Henning Leutz's avatar
    Henning Leutz committed
            },
    
            initialize : function(options)
            {
                this.parent( options );
    
                this.$available = [];
    
                this.$List  = null;
                this.$Min   = null;
                this.$Hour  = null;
                this.$Day   = null;
                this.$Month = null;
    
    
                this.$ParamsControl = null;
    
    Henning Leutz's avatar
    Henning Leutz committed
            },
    
            /**
             * Open the Window
             *
             * @return {self}
             */
            open : function()
            {
                this.parent();
                this.Loader.show();
    
                var self    = this,
                    Content = this.getContent();
    
                Content.set(
                    'html',
    
                    '<div class="control-cron-add">' +
                        '<label for="control-cron-add-list">' +
                            'Cron' +
                        '</label>' +
                        '<select ' +
                            'class="control-cron-add-list" ' +
                            'id="control-cron-add-list">' +
                        '</select>' +
    
                        '<div class="control-cron-add-intervall">' +
                            '<div class="control-cron-add-intervall-title">' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                QUILocale.get( 'quiqqer/cron', 'cron.interval' ) +
    
    Henning Leutz's avatar
    Henning Leutz committed
                            '</div>' +
    
                            '<div class="control-cron-add-intervall-entries">' +
                                '<div class="control-cron-add-intervall-entry">' +
                                    '<input type="text" name="min" id="control-cron-add-minute" />' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                    '<label for="control-cron-add-minute">'+
                                        QUILocale.get( 'quiqqer/system', 'minute' ) +
                                    '</label>' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                '</div>' +
                                '<div class="control-cron-add-intervall-entry">' +
                                    '<input type="text" name="hour" id="control-cron-add-hour" />' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                    '<label for="control-cron-add-hour">'+
                                        QUILocale.get( 'quiqqer/system', 'hour' ) +
                                    '</label>' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                '</div>' +
                                '<div class="control-cron-add-intervall-entry">' +
                                    '<input type="text" name="day" id="control-cron-add-day" />' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                    '<label for="control-cron-add-day">'+
    
    Henning Leutz's avatar
    Henning Leutz committed
                                        QUILocale.get( 'quiqqer/cron', 'cron.day' ) +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                    '</label>' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                '</div>' +
                                '<div class="control-cron-add-intervall-entry">' +
                                    '<input type="text" name="month" id="control-cron-add-month" />' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                    '<label for="control-cron-add-month">'+
    
                                        QUILocale.get( 'quiqqer/system', 'month' ) +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                    '</label>' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                '</div>' +
                            '</div>' +
                        '</div>' +
    
    
                        '<div class="control-cron-add-params-container">' +
                            '<label for="control-cron-add-params">' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                QUILocale.get( 'quiqqer/cron', 'cron.params' ) +
    
                            '</label>' +
                            '<input type="text" name="params" id="control-cron-add-params"  />' +
                        '</div>' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                    '</div>'
                );
    
                this.$List = Content.getElement( '.control-cron-add-list' );
    
                this.$Min   = Content.getElement( '[name="min"]' );
                this.$Hour  = Content.getElement( '[name="hour"]' );
                this.$Day   = Content.getElement( '[name="day"]' );
                this.$Month = Content.getElement( '[name="month"]' );
    
    
                this.$Params = Content.getElement( '[name="params"]' );
    
    
                this.$List.addEvent('change', function()
                {
                    if ( !self.$available ) {
                        return;
                    }
    
                    if ( !self.$ParamsControl ) {
                        return;
                    }
    
                    var i, len, p, plen;
                    var val       = self.$List.value,
                        available = self.$available,
    
                        allowedParams = [],
                        params        = [];
    
                    for ( i = 0, len = available.length; i < len; i++ )
                    {
                        if ( available[ i ].title != val ) {
                            continue;
                        }
    
                        params = available[ i ].params;
    
                        for ( p = 0, plen = params.length; p < plen; p++ ) {
                            allowedParams.push( params[ p ].name );
                        }
                    }
    
                    self.$ParamsControl.setAttribute( 'allowedParams', allowedParams );
                });
    
    Henning Leutz's avatar
    Henning Leutz committed
    
                Ajax.get('package_quiqqer_cron_ajax_getAvailableCrons', function(result)
                {
    
                    var size = self.getElm().getSize();
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                    self.$available = result;
    
    
                    for ( var i = 0, len = result.length; i < len; i++ )
    
    Henning Leutz's avatar
    Henning Leutz committed
                    {
                        new Element('option', {
    
                            value : result[ i ].title,
    
                            html  : result[ i ].title +' - '+ result[ i ].description
    
    Henning Leutz's avatar
    Henning Leutz committed
                        }).inject( self.$List );
                    }
    
    
                    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.value   = result.title;
    
                        self.$Min.value    = result.min;
                        self.$Hour.value   = result.hour;
                        self.$Day.value    = result.day;
                        self.$Month.value  = result.month;
                        self.$Params.value = result.params;
    
    
                        self.$Params.fireEvent( 'change' );
    
                        self.$List.fireEvent( 'change' );
    
    
                        self.Loader.hide();
                    }, {
                        'package' : 'quiqqer/cron',
                        cronId    : self.getAttribute( 'cronId' )
                    });
    
    Henning Leutz's avatar
    Henning Leutz committed
    
                }, {
                    'package' : 'quiqqer/cron'
                });
    
    
                return this;
            },
    
            /**
             * Add the Cron to the list
             *
             * @return {self}
             */
            submit : function()
            {
    
    Henning Leutz's avatar
    Henning Leutz committed
                if ( !this.$List ) {
                    return this;
                }
    
                if ( !this.getContent() ) {
                    return this;
                }
    
    
                if ( this.getAttribute( 'cronId' ) )
                {
    
    Henning Leutz's avatar
    Henning Leutz committed
                    Ajax.post('package_quiqqer_cron_ajax_edit', function()
    
                    {
                        self.fireEvent( 'submit' );
                        self.close();
                    }, {
                        'package' : 'quiqqer/cron',
                        cronId : this.getAttribute( 'cronId' ),
                        cron   : this.$List.value,
                        min    : this.$Min.value,
                        hour   : this.$Hour.value,
                        day    : this.$Day.value,
                        month  : this.$Month.value,
    
                        params : JSON.encode( this.$ParamsControl.getValue() )
    
    Henning Leutz's avatar
    Henning Leutz committed
                Ajax.post('package_quiqqer_cron_ajax_add', function()
    
    Henning Leutz's avatar
    Henning Leutz committed
                {
    
    Henning Leutz's avatar
    Henning Leutz committed
                    self.close();
    
    Henning Leutz's avatar
    Henning Leutz committed
                }, {
    
                    'package' : 'quiqqer/cron',
    
                    cron   : this.$List.value,
                    min    : this.$Min.value,
                    hour   : this.$Hour.value,
                    day    : this.$Day.value,
                    month  : this.$Month.value,
    
                    params : JSON.encode( this.$ParamsControl.getValue() )
    
    Henning Leutz's avatar
    Henning Leutz committed
                });
    
    Henning Leutz's avatar
    Henning Leutz committed
            }
        });