Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/mod_security/views/addVendorController.js

/*
# templates/mod_security/views/addVendorController.js Copyright(c) 2020 cPanel, L.L.C.
#                                                           All rights reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited
*/

/* global define: false */

define(
    [
        "angular",
        "lodash",
        "cjt/util/locale",
        "uiBootstrap",
        "cjt/directives/autoFocus",
        "cjt/directives/spinnerDirective",
        "cjt/directives/validationItemDirective",
        "cjt/directives/validationContainerDirective",
        "cjt/services/alertService",
        "app/services/vendorService",
        "app/directives/ruleVendorUrlValidator",
        "cjt/filters/notApplicableFilter",
    ],
    function(angular, _, LOCALE) {
        "use strict";

        // Retrieve the current application
        var app = angular.module("App");

        var controller = app.controller(
            "addVendorController", [
                "$scope",
                "$filter",
                "spinnerAPI",
                "alertService",
                "vendorService",
                function(
                    $scope,
                    $filter,
                    spinnerAPI,
                    alertService,
                    vendorService) {

                    /**
                         * Disable buttons based on form state
                         *
                         * @method disableForm
                         * @param  {FormController} form
                         * @return {Boolean}
                         */
                    $scope.disableForm = function(form) {
                        return form.$pristine || (form.$dirty && form.$invalid) || $scope.loading;
                    };

                    /**
                         * Load the form with vendor configuration from a specified URL
                         *
                         * @method load
                         * @param  {String} url Address of the YAML configuration file
                         * @return {Promise}
                         */
                    $scope.load = function(url) {
                        alertService.clear();
                        spinnerAPI.start("loadingSpinner");
                        $scope.loading = true;
                        return vendorService
                            .loadVendor(url)
                            .then(function(vendor) {
                                angular.extend($scope.vendor, vendor);
                                $scope.vendor.isLoaded = true;
                                $scope.vendor.report_url = $filter("na")($scope.vendor.report_url);
                            }, function(error) {

                                // failure
                                alertService.add({
                                    type: "danger",
                                    message: _.escape(error),
                                    id: "errorLoadVendorConfig",
                                });
                                $scope.vendor.isLoaded = false;
                            })
                            .finally(function() {
                                spinnerAPI.stop("loadingSpinner");
                                $scope.loading = false;
                            });
                    };

                    /**
                         * Save the form
                         *
                         * @method save
                         * @param  {String} url         Address of the YAML configuration file
                         * @return {Promise}
                         */
                    $scope.save = function(url) {
                        alertService.clear();
                        spinnerAPI.start("savingSpinner");
                        return vendorService
                            .saveVendor(url)
                            .then(function(vendor) {

                                // success
                                alertService.add({
                                    type: "success",
                                    message: LOCALE.maketext("You have successfully added “[_1]” to the vendor configuration list.", vendor.name),
                                    id: "successSaveVendorConfig",
                                });
                                $scope.loadView("/vendors");
                            }, function(error) {

                                // failure
                                alertService.add({
                                    type: "danger",
                                    message: _.escape(error),
                                    id: "errorSaveVendorConfig",
                                });
                                $scope.scrollTo("top");
                            })
                            .finally(function() {
                                spinnerAPI.stop("savingSpinner");
                            });
                    };

                    /**
                         * Navigate to the previous view.
                         *
                         * @method  cancel
                         */
                    $scope.cancel = function() {
                        alertService.clear();
                        $scope.loadView("vendors");
                    };

                    /**
                         * Clear alerts and restore form defaults
                         *
                         * @method clearForm
                         */
                    $scope.clearForm = function() {
                        $scope.vendor = {
                            enabled: true,
                            isLoaded: false,
                        };
                        alertService.clear();
                    };

                    // Use SSL for YAML URL recommendation warning

                    $scope.showSSLwarning = false;

                    $scope.vendorURLchange = function(url) {
                        var show = false;
                        var matches = /^(https?):\/\//.exec(url);
                        if (matches && ( matches[1] === "http" ) ) {
                            show = true;
                        }
                        $scope.showSSLwarning = show;
                    };

                    // Initialize the form on first load.
                    $scope.isEditor = false;
                    $scope.clearForm();
                },
            ]
        );

        return controller;
    }
);
Back to Directory File Manager