Skip to content
Code-Schnipsel Gruppen Projekte
CronServiceWindow.js 9,33 KiB
Newer Older
  • Learn to ignore specific revisions
  • /**
     *
     */
    define('package/quiqqer/cron/bin/CronServiceWindow', [
    
        'qui/QUI',
        'qui/controls/windows/Popup',
        'qui/controls/buttons/Button',
        'Mustache',
        'Locale',
        'Ajax',
        'qui/controls/desktop/panels/Sheet',
    
        'text!package/quiqqer/cron/bin/CronServiceWindow.html',
        'text!package/quiqqer/cron/bin/CronServiceWindowRegistration.html',
        'css!package/quiqqer/cron/bin/CronServiceWindow.css'
    
    ], function (QUI, QUIPopup, QUIButton, Mustache, QUILocale, QUIAjax, QUISheets, template, registrationTemplate) {
        "use strict";
    
        var lg = 'quiqqer/cron';
    
        return new Class({
    
            Extends: QUIPopup,
            Type   : 'package/quiqqer/cron/bin/CronServiceWindow',
    
            Binds: [
                '$onSubmit',
                '$onOpen',
                'showRegistration'
            ],
    
            options: {
                title    : QUILocale.get(lg, 'cron.window.cronservice.title'),
                icon     : 'fa fa-cloud',
                maxWidth : 400,
                maxHeight: 600,
                autoclose: false,
                buttons  : false
            },
    
            initialize: function (options) {
                this.parent(options);
    
    
                this.registered = false;
    
    
                this.addEvents({
                    onOpen: this.$onOpen
                });
            },
    
            $onOpen: function () {
                var Content = this.getContent();
    
                Content.set('html', '');
                Content.addClass('quiqqer-cron-cronserviceWindow');
    
                this.refresh();
            },
    
            /**
             * refresh
             */
            refresh: function () {
                var self    = this,
                    Content = this.getContent();
    
                this.Loader.show();
    
                QUIAjax.get('package_quiqqer_cron_ajax_cronservice_getStatus', function (result) {
                    var status = result;
    
                    var statusText = QUILocale.get(lg, 'cron.window.cronservice.status.text.unregistered');
                    if (status['status'] == 1) {
                        statusText = QUILocale.get(lg, 'cron.window.cronservice.status.text.registered');
                    }
                    if (status['status'] == 2) {
                        statusText = QUILocale.get(lg, 'cron.window.cronservice.status.text.inactive');
                    }
    
    
                    Content.set('html', Mustache.render(template, {
                        cron_window_cronservice_content_title                           : QUILocale.get(lg, 'cron.window.cronservice.content.title'),
                        cron_window_cronservice_content_about_title                     : QUILocale.get(lg, 'cron.window.cronservice.content.about.title'),
                        cron_window_cronservice_content_about_text                      : QUILocale.get(lg, 'cron.window.cronservice.content.about.text'),
                        cron_window_cronservice_content_status_title                    : QUILocale.get(lg, 'cron.window.cronservice.content.status.title'),
                        cron_window_cronservice_content_status_text                     : QUILocale.get(lg, 'cron.window.cronservice.content.status.text'),
                        cron_window_cronservice_content_btn_unregister                  : QUILocale.get(lg, 'cron.window.cronservice.content.register.btn.unregister'),
                        cron_window_cronservice_content_btn_register                    : QUILocale.get(lg, 'cron.window.cronservice.content.btn.register'),
                        cron_window_cronservice_content_register_lbl_stats_status       : QUILocale.get(lg, 'cron.window.cronservice.content.register.lbl.stats.status'),
                        cron_window_cronservice_content_register_lbl_stats_errors       : QUILocale.get(lg, 'cron.window.cronservice.content.register.lbl.stats.errors'),
                        cron_window_cronservice_content_register_lbl_stats_lastExecution: QUILocale.get(lg, 'cron.window.cronservice.content.register.lbl.stats.lastExecution'),
                        statusText                                                      : statusText,
                        status                                                          : status['status'],
    
                        statusErrors                                                    : status['current_failures'], //== 0 ? "0": status['errors'].toString(),
    
                        statusLastExecution                                             : status['last_execution'],
    
                        registered                                                      : (status['status'] != 0),
                        active                                                          : (status['status'] == 1),
                        inactive                                                        : (status['status'] == 2)
    
                    self.registered = (status['status'] != 0);
    
    
                    var Buttons = Content.getElement('.quiqqer-cron-cronservicewindow-buttons');
    
    
                    // get the button text : register or unregister
                    var btnText = QUILocale.get(lg, 'cron.window.cronservice.content.btn.register');
                    if (self.registered) {
                        btnText = QUILocale.get(lg, 'cron.window.cronservice.content.btn.unregister');
                    }
    
    
                    new QUIButton({
    
                        text     : btnText,
    
                        textimage: 'fa fa-arrow-right',
                        events   : {
    
                            onClick: function (Button) {
                                if (!self.registered) {
    
                                    self.showRegistration();
                                    return;
                                }
    
                                Button.setAttribute('text', QUILocale.get('quiqqer/cron', 'cron.window.cronservice.content.btn.unregister.confirm'));
                                if (Button.getAttribute('clickcnt') == 1) {
                                    self.unregister().then(function () {
                                        self.refresh();
                                    });
                                }
                                Button.setAttribute('clickcnt', 1);
    
                            }
                        },
                        styles   : {
                            'float': 'none',
                            margin : '0 auto',
                            width  : 200
                        }
                    }).inject(Buttons);
    
    
                    self.Loader.hide();
                }, {
                    'package': lg,
                    'onError': function () {
                        self.Loader.hide();
                    }
                });
            },
    
            /**
             * Opens the registration sheet
             */
            showRegistration: function () {
                var self = this;
    
                new QUISheets({
                    header : true,
    
                    icon   : 'fa fa-cloud',
                    title  : QUILocale.get(lg, 'cron.window.cronservice.title'),
    
                    buttons: false,
                    events : {
                        onOpen: function (Sheet) {
                            var Content = Sheet.getContent();
    
                            Content.set('html', Mustache.render(registrationTemplate, {
                                cron_window_cronservice_registration_title                : QUILocale.get(lg, 'cron.window.cronservice.registration.title'),
                                cron_window_cronservice_content_register_txt_email_title  : QUILocale.get(lg, 'cron.window.cronservice.content.register.txt.email.title'),
                                cron_window_cronservice_content_register_placeholder_email: QUILocale.get(lg, 'cron.window.cronservice.content.register.placeholder.email'),
                                cron_window_cronservice_content_btn_register              : QUILocale.get(lg, 'cron.window.cronservice.registration.title')
                            }));
    
                            var Email = Content.getElement('.quiqqer-cron-cronservicewindow-registration-txt-email');
    
                            Content.getElement('.quiqqer-cron-cronservicewindow-btn-register').addEvent('click', function () {
                                self.Loader.show();
                                self.register(Email.value).then(function () {
                                    self.refresh();
    
                                    Sheet.destroy();
    
                                }).catch(function () {
                                    self.Loader.hide();
    
                                });
                            });
                        },
    
                        onClose: function (Sheet) {
                            Sheet.destroy();
                        }
                    }
                }).inject(this.$Elm).show();
            },
    
            /**
             * Register a email to the cron service
             *
             * @param {String} email
             * @returns {Promise}
             */
            register: function (email) {
                return new Promise(function (resolve, reject) {
                    QUIAjax.post('package_quiqqer_cron_ajax_cronservice_sendRegistration', resolve, {
                        'package': lg,
                        'email'  : email,
                        onError  : reject
                    });
                });
            },
    
            /**
             * Unregister a email to the cron service
             *
             * @returns {Promise}
             */
            unregister: function () {
                return new Promise(function (resolve, reject) {
                    QUIAjax.get('package_quiqqer_cron_ajax_cronservice_revokeRegistration', resolve, {
                        'package': lg,
                        onError  : reject
                    });
                });
            }
        });
    });