403Webshell
Server IP : 85.158.181.41  /  Your IP : 216.73.217.12
Web Server : Apache
System : Linux cloud9-vm129 6.1.178+1-ph #ph SMP PREEMPT_DYNAMIC Wed Jul 29 09:00:54 UTC 2026 x86_64
User : moncbefd ( 1024)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/moncbefd/www.moneta.at/admin/javascript/engine/controllers/cronjobs/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/moncbefd/www.moneta.at/admin/javascript/engine/controllers/cronjobs//job_configuration.js
/* --------------------------------------------------------------
 job_configuration.js 2018-08-24
 Gambio GmbH
 http://www.gambio.de
 Copyright (c) 2018 Gambio GmbH
 Released under the GNU General Public License (Version 2)
 [http://www.gnu.org/licenses/gpl-2.0.html]
 --------------------------------------------------------------
 */

/**
 * TODO: Change URL for Ajax calls when endpoint is ready
 */
gx.controllers.module(
    // ------------------------------------------------------------------------
    // CONTROLLER NAME
    // ------------------------------------------------------------------------
    'job_configuration',

    // ------------------------------------------------------------------------
    // CONTROLLER LIBRARIES
    // ------------------------------------------------------------------------
    [
        'xhr',
        'modal',
        `${gx.source}/libs/info_box`
    ],

    // ------------------------------------------------------------------------
    // CONTROLLER BUSINESS LOGIC
    // ------------------------------------------------------------------------
    function (data) {
        'use strict';

        // ------------------------------------------------------------------------
        // VARIABLES
        // ------------------------------------------------------------------------

        /**
         * Controller reference.
         *
         * @type {jQuery}
         */
        const $this = $(this);

        /**
         * Default options for controller,
         *
         * @type {object}
         */
        const defaults = {};

        /**
         * Final controller options.
         *
         * @type {object}
         */
        const options = $.extend(true, {}, defaults, data);

        /**
         * Module object.
         *
         * @type {{}}
         */
        const module = {};

        const $btnOpenConfig = $('.open-configuration');

        const $modal = $('.modal.configuration');

        const $modalBody = $modal.find('.modal-body');

        // ------------------------------------------------------------------------
        // PRIVATE METHODS
        // ------------------------------------------------------------------------

        /**
         * Get configuration elements for specific task
         *
         * @param task
         * @private
         */
        const _getConfigurationContent = function (task) {
            // Perform request.
            $.ajax({
                url: 'admin.php?do=CronjobAjax/getConfiguration&task=' + task
            }).done(
                function (response) {
                    return response;
                }
            ).fail(
                function () {
                    return 'No configuration found';
                }
            );
        }

        /**
         * Triggers Ajax call to save new configuration values
         *
         * @param task
         * @param data
         * @private
         */
        const _saveConfiguration = function (task, data) {
            // AJAX request options.
            const requestOptions = {
                type: 'POST',
                data: {data},
                url: 'admin.php?do=CronjobAjax/saveConfiguration&task=' + task
            };

            const $modal = $('.modal.configuration');

            // Perform request.
            $.ajax(requestOptions)
                .done(response => _handleSaveRequestResponse(response))
                .always(() => $modal.modal('hide'));
        }

        /**
         * Shows success message if save was successful otherwise an error will be displayed
         *
         * @param response
         * @private
         */
        const _handleSaveRequestResponse = function (response) {
            // Error message phrases.
            const errorTitle = jse.core.lang.translate('save_configuration_error_title', 'cronjobs');
            const errorMessage = jse.core.lang.translate('save_configuration_error_text', 'cronjobs');

            // Check for action success.
            if (response.includes('success')) {
                // Add success message to admin info box.
                jse.libs.info_box.addSuccessMessage();
            } else {
                // Show error message modal.
                jse.libs.modal.showMessage(errorTitle, errorMessage);
            }
        }


        const _showCronjobConfiguration = response => {

            $modalBody.empty();

            $modalBody.attr('data-gx-widget', 'switcher')

            const $form = $('<form/>', {
                'class': 'form-horizontal'
            });
            $form.appendTo($modalBody);

            const configuration = response.configuration;

            for (let i = 0; i < configuration.length; i++) {

                const fieldset = _renderFieldset(jse.core.lang.translate(configuration[i].title, response.language_section));

                for (let test in configuration[i].fields) {
                    if (!configuration[i].fields.hasOwnProperty(test)) {
                        continue
                    }

                    const configField = configuration[i].fields[test];
                    const $input = $('<input/>', {
                        'type': configField.type,
                        'id': configField.name,
                        'name': configField.name,
                        'class': 'form-control',
                        'value': undefined !== configField.value ? configField.value : configField.defaultValue
                    });

                    if (configuration[i].fields[test].type === 'hidden') {
                        $form.prepend($input);
                        continue;
                    }

                    if (configField.type === 'select') {
                        const $select = $('<select/>', {
                            'class': 'form-control'
                        });

                        for (let k = 0; k < configField.values.length; k++) {
                            $select.append($('<option/>', {
                                'value': configField.values[k].value,
                                'text': jse.core.lang.translate(configField.values[k].text, response.language_section)
                            }));
                        }
                        const $formGroup = _renderFormGroup(configField.label, response.language_section, $select);
                        fieldset.append($formGroup);

                    } else {
                        const $formGroup = _renderFormGroup(configField.label, response.language_section, $input);
                        fieldset.append($formGroup);
                    }
                }

                $form.append(fieldset);
            }

            gx.widgets.init($modalBody);
            $modal.modal('show');
        };

        const _renderFieldset = (legendTitle) => {
            const $fieldset = $('<fieldset/>');
            const $legend = $('<legend/>', {'text': legendTitle});

            return $fieldset.append($legend);
        }

        const _renderFormGroup = (label, section, $inputHtml) => {
            const $formGroup = $('<div/>', {
                'class': 'form-group'
            });
            const $label = $('<label/>', {
                'class': 'col-sm-3 control-label',
                'for': 'active',
                'text': jse.core.lang.translate(label, section)
            });
            const $container = $('<div/>', {
                'class': 'col-sm-9'
            });

            $container.append($inputHtml)
            return $formGroup.append($label).append($container);
        };

        // ------------------------------------------------------------------------
        // INITIALIZATION
        // ------------------------------------------------------------------------
        module.init = done => {
            $btnOpenConfig.on('click', function (event) {
                const task = $(this).closest('.cronjob-element').attr('data-task');

                event.preventDefault();

                jse.libs.xhr.get({
                    url: './admin.php?do=CronjobAjax/getConfiguration&task=' + task
                }).done(_showCronjobConfiguration).fail(r => console.error(r));

                // let confData = _getConfigurationContent(task);
                //
                // $('.configuration.modal .modal-body').html(confData);
                //
                // $modal.attr('data-task', task);
                // $modal.modal('show');
            })

            $('.modal.configuration button[type="submit"]').on('click', function (event) {
                event.preventDefault();

                let formData = $(this).serializeArray();
                let task = $('.modal.configuration').attr('data-task');

                _saveConfiguration(task, formData);
            });

            $('.modal.configuration').on('hide.bs.modal', function () {
                $('.modal.configuration').removeAttr('data-task');
            })

            done();
        }

        return module;
    }
);

Youez - 2016 - github.com/yon3zu
LinuXploit