File manager - Edit - /usr/local/cpanel/whostmgr/docroot/templates/server_profile/index.cmb.js
Back
/* # cpanel - whostmgr/docroot/templates/server_profile/filters/rolesLocaleStringFilter.js Copyright 2022 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( 'app/filters/rolesLocaleString',[ "angular", "cjt/util/locale", "lodash" ], function(angular, LOCALE, _) { "use strict"; /** * Filter that accepts a list of roles and a locale string and returns the localized text * @param {String} roles The list of roles to inject into the locale string * @param {String} localeString The locale string to inject the roles into * * @example * <div>{{ profile.roles | rolesLocaleString:'Enables: [list_and,_1]'"> * * NOTE: The locale string passed to this filter must be defined in a maketext string. ## no extract maketext */ var module = angular.module("whm.serverProfile.rolesLocaleString", []); module.filter("rolesLocaleString", function() { return function(roles, localeString) { var roleNames = _.map(roles, "name"); return LOCALE.makevar(localeString, roleNames, roles.length); }; }); } ); /* # cpanel - whostmgr/docroot/templates/server_profile/services/serverProfileService.js Copyright 2022 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 */ define( 'app/services/serverProfileService',[ "angular", "cjt/util/parse", "cjt/io/batch-request", "cjt/io/whm-v1-request", "cjt/services/APICatcher", "cjt/io/whm-v1", // IMPORTANT: Load the driver so its ready ], function(angular, PARSE, BATCH, APIREQUEST) { "use strict"; var app = angular.module("whm.serverProfile.serverProfileService", ["cjt2.services.apicatcher", "cjt2.services.api"]); return app.factory("serverProfileService", ["APICatcher", "$q", "PAGE", function(api, $q, PAGE) { var NO_MODULE = ""; var state = { availableProfiles: undefined, currentProfile: undefined, logId: undefined, optionalRoles: [], selectedProfile: undefined }; if ( PAGE.availableProfiles ) { state.availableProfiles = PAGE.availableProfiles; if ( state.availableProfiles.length > 0 && PAGE.currentProfile ) { for ( var i = 0; i < state.availableProfiles.length; i++ ) { if ( state.availableProfiles[i].code === PAGE.currentProfile.code ) { state.currentProfile = state.selectedProfile = state.availableProfiles[i]; break; } } } } function getAvailableProfiles() { var defer = $q.defer(); if ( state.availableProfiles ) { defer.resolve({ data: state.availableProfiles }); } else { var apiCall = new APIREQUEST.Class().initialize(NO_MODULE, "get_available_profiles"); api.promise(apiCall).then( function(response) { state.availableProfiles = response.data; defer.resolve(response); }, function(error) { defer.reject(error); } ); } return defer.promise; } function getCurrentProfile() { var defer = $q.defer(); if ( state.currentProfile ) { defer.resolve({ data: state.currentProfile }); } else { var apiCall = new APIREQUEST.Class().initialize(NO_MODULE, "get_current_profile"); api.promise(apiCall).then( function(response) { state.currentProfile = response.data; defer.resolve(response); }, function(error) { defer.reject(error); } ); } return defer.promise; } function setCurrentProfile(profile) { state.currentProfile = profile; } function getSelectedProfile() { return state.selectedProfile; } function setSelectedProfile(profile) { state.selectedProfile = profile; } function activateProfile(code, optional) { var apiCall = new APIREQUEST.Class().initialize(NO_MODULE, "start_profile_activation", { code: code, optional: JSON.stringify(optional) }); return api.promise(apiCall); } function isRoleEnabled(role) { var apiCall = new APIREQUEST.Class().initialize(NO_MODULE, "is_role_enabled", { role: role }); return api.promise(apiCall); } function getOptionalRoles() { return state.optionalRoles; } function setOptionalRoles(roles) { state.optionalRoles = roles; } function getLogId() { return state.logId; } function setLogId(id) { state.logId = id; } // Returns a promise whose resolution is an array of booleans // that corresponds with the array of roles passed in. function areRolesEnabled(roles) { if ( roles.length === 0 ) { return $q(function(r) { r({ data: [] }); }); } var commands = roles.map( function(r) { return new APIREQUEST.Class().initialize( NO_MODULE, "is_role_enabled", { role: r } ); } ); return api.promise( new BATCH.Class( commands ) ).then( function(result) { return result.data.map( function(resp) { return PARSE.parsePerlBoolean( resp.data.enabled ); }); } ); } return { activateProfile: activateProfile, areRolesEnabled: areRolesEnabled, getAvailableProfiles: getAvailableProfiles, getCurrentProfile: getCurrentProfile, getLogId: getLogId, getOptionalRoles: getOptionalRoles, getSelectedProfile: getSelectedProfile, isRoleEnabled: isRoleEnabled, setCurrentProfile: setCurrentProfile, setOptionalRoles: setOptionalRoles, setSelectedProfile: setSelectedProfile, setLogId: setLogId }; }]); } ); /* # cpanel - whostmgr/docroot/templates/server_profile/views/activatingProfileView.js Copyright 2022 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 */ define( 'app/views/activatingProfileView',[ "angular", "cjt/core", "cjt/util/parse", "cjt/util/locale", "cjt/io/eventsource", ], function(angular, CJT, PARSE, LOCALE, EVENTSOURCE) { "use strict"; var app = angular.module("whm.serverProfile"); function ProfileEventSource(sse) { var obj = this; sse.addEventListener("finish", function(e) { sse.close(); obj._meta = JSON.parse( e.data ); if (obj._onclose) { obj._onclose(); } }); this._sse = sse; } ProfileEventSource.prototype.succeeded = function() { return this._meta && PARSE.parsePerlBoolean(this._meta.SUCCESS); }; ProfileEventSource.prototype.onmessage = function(func) { this._sse.addEventListener("message", function(e) { func(JSON.parse(e.data)); }); }; ProfileEventSource.prototype.onclose = function(func) { this._onclose = func; }; app.controller("activatingProfileController", ["$scope", "$location", "$document", "$q", "alertService", "serverProfileService", function($scope, $location, $document, $q, alertService, serverProfileService) { $scope.settingProfile = true; $scope.$emit("ActivateProfileEvent"); $scope.back = function() { $location.path("/selectProfile"); }; $scope.pageTitle = LOCALE.maketext("Activating Profile …"); $scope.activationState = "inProgress"; $scope.activationInitiated = true; $scope.logId = serverProfileService.getLogId(); $scope.selected = serverProfileService.getSelectedProfile(); $scope.actionLog = ""; $scope.transferLogMessage = LOCALE.maketext("The profile activation log is located at: [_1]", "/var/cpanel/logs/activate_profile/" + $scope.logId + "/txt" ); $scope.showDetails = false; $scope.toggleDetails = function() { $scope.showDetails = !$scope.showDetails; }; var sseUrl = CJT.securityToken + "/sse/ActivateProfile?log_id=" + serverProfileService.getLogId(); EVENTSOURCE.create(sseUrl).then( function(e) { var sse = new ProfileEventSource(e.target); sse.onmessage( function(msg) { $scope.actionLog += msg; $scope.$apply(); if ( !$scope.logElement ) { $scope.logElement = $document[0].getElementById("activationLog"); } if ( $scope.logElement ) { $scope.logElement.scrollTop = $scope.logElement.scrollHeight; } } ); sse.onclose(function() { if ( $scope.logElement ) { $scope.logElement.scrollTop = $scope.logElement.scrollHeight; } if (sse.succeeded()) { serverProfileService.setCurrentProfile($scope.selected); $scope.activationState = "success"; $scope.pageTitle = LOCALE.maketext("Activation Successful"); alertService.add({ type: "success", message: LOCALE.maketext("Successfully changed the server profile to “[_1]”.", $scope.selected.name), closeable: true, autoClose: 5000 }); } else { $scope.activationState = "failed"; $scope.pageTitle = LOCALE.maketext("Activation Failed"); alertService.add({ type: "danger", message: LOCALE.maketext("The system failed to change the server profile to “[_1]”.", $scope.selected.name), closeable: true, }); $scope.showDetails = true; } $scope.settingProfile = false; $scope.$apply(); }); }).catch( function(err) { alertService.add({ type: "danger", message: err, closeable: true, }); } ); } ] ); } ); /* # cpanel - whostmgr/docroot/templates/server_profile/views/confirmProfileView.js Copyright 2022 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 */ define( 'app/views/confirmProfileView',[ "angular", "lodash", "cjt/util/locale" ], function(angular, _, LOCALE) { "use strict"; var app = angular.module("whm.serverProfile"); app.controller("confirmProfileController", ["$rootScope", "$scope", "$location", "serverProfileService", function($rootScope, $scope, $location, serverProfileService) { var ENABLED = LOCALE.maketext("Enabled"); var DISABLED = LOCALE.maketext("Disabled"); $scope.loading = true; $scope.selected = serverProfileService.getSelectedProfile(); $scope.newEnabled = []; $scope.newDisabled = []; $scope.optional = serverProfileService.getOptionalRoles(); $scope.unchanged = []; var appendStateToName = function(name, state) { return name + " (" + (state ? ENABLED : DISABLED) + ")"; }; serverProfileService.getCurrentProfile().then( function(result) { $scope.current = result.data; var roleLookups = []; _.forEach($scope.selected.enabled_roles, function(o) { if ( _.includes($scope.current.enabled_roles, o) ) { $scope.unchanged.push(_.assign({}, o, { name: appendStateToName(o.name, true) })); } else { roleLookups.push(o.module); } }); _.forEach($scope.selected.disabled_roles, function(o) { if ( _.includes($scope.current.disabled_roles, o) ) { $scope.unchanged.push(_.assign({}, o, { name: appendStateToName(o.name, false) })); } else { roleLookups.push(o.module); } }); _.forEach($scope.optional, function(o) { if ( o.current === o.selected ) { $scope.unchanged.push(_.assign({}, o, { name: appendStateToName(o.name, o.current) })); } else if ( o.current ) { $scope.newDisabled.push(o); } else { $scope.newEnabled.push(o); } }); serverProfileService.areRolesEnabled(roleLookups).then( function(result) { for ( var i = 0; i < result.length; i++ ) { var enabled = result[i]; var r; if ( (r = _.find($scope.selected.enabled_roles, function(o) { return o.module === roleLookups[i]; })) ) { if ( !enabled ) { $scope.newEnabled.push(r); } else { $scope.unchanged.push(_.assign({}, r, { name: appendStateToName(r.name, true) })); } } else if ( (r = _.find($scope.selected.disabled_roles, function(o) { return o.module === roleLookups[i]; })) ) { if ( enabled ) { $scope.newDisabled.push(r); } else { $scope.unchanged.push(_.assign({}, r, { name: appendStateToName(r.name, false) })); } } } } ).finally( function() { $scope.loading = false; } ); }, function() { $scope.loading = false; } ); $scope.cancel = function() { $location.path("/selectProfile"); }; $scope.continue = function(profile) { $scope.settingProfile = true; var optional = {}; _.each($scope.optional, function(role) { optional[role.module] = role.selected ? 1 : 0; }); return serverProfileService.activateProfile(profile.code, optional).then( function(resp) { serverProfileService.setLogId(resp.data.log_id); $location.path("/activatingProfile"); } ).finally(function() { $scope.settingProfile = false; }); }; } ] ); } ); /* # cpanel - whostmgr/docroot/templates/server_profile/views/selectOptionsView.js Copyright 2022 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 */ define( 'app/views/selectOptionsView',[ "angular", "lodash", "cjt/util/locale", ], function(angular, _, LOCALE, PARSE) { "use strict"; var app = angular.module("whm.serverProfile"); app.controller("selectOptionsController", ["$scope", "$location", "serverProfileService", "LICENSE_BASED_SERVER_PROFILE", function($scope, $location, serverProfileService, LICENSE_BASED_SERVER_PROFILE) { $scope.loading = true; $scope.licenseBasedServerProfile = LICENSE_BASED_SERVER_PROFILE; var lookups = []; $scope.selectedProfile = serverProfileService.getSelectedProfile(); $scope.optional = _.map($scope.selectedProfile.optional_roles, function(o) { var role = { name: o.name, description: o.description, module: o.module, selected: false }; lookups.push(o.module); return role; }); serverProfileService.areRolesEnabled(lookups).then( function(result) { for ( var i = 0; i < result.length; i++ ) { var enabled = result[i]; $scope.optional[i].current = $scope.optional[i].selected = enabled; } } ).finally( function() { $scope.loading = false; } ); $scope.cancel = function() { $location.path("/selectProfile"); }; $scope.continue = function() { serverProfileService.setOptionalRoles($scope.optional); $location.path("/confirmProfile"); }; } ] ); } ); /* # cpanel - whostmgr/docroot/templates/server_profile/views/selectProfileView.js Copyright 2022 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 */ define( 'app/views/selectProfileView',[ "angular" ], function(angular) { "use strict"; var app = angular.module("whm.serverProfile"); app.controller("selectProfileController", ["$scope", "$location", "serverProfileService", function($scope, $location, serverProfileService) { $scope.profiles = {}; serverProfileService.getAvailableProfiles().then( function(response) { $scope.profiles.available = response.data; return serverProfileService.getCurrentProfile().then( function(response) { $scope.profiles.selected = $scope.profiles.current = response.data; } ); } ); $scope.continue = function() { serverProfileService.setSelectedProfile($scope.profiles.selected); if ( $scope.profiles.selected.optional_roles.length === 0 ) { serverProfileService.setOptionalRoles([]); $location.path("/confirmProfile"); } else { $location.path("/selectOptions"); } }; $scope.info = function(profile) { $scope.openInfo = profile === $scope.openInfo ? undefined : profile; }; } ] ); } ); /* # cpanel - whostmgr/docroot/templates/server_profile/index.js Copyright 2022 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 require: false, define: false, PAGE: false */ define( 'app/index',[ "angular", "cjt/core", "cjt/modules", "app/filters/rolesLocaleString", "app/services/serverProfileService" ], function(angular, CJT) { "use strict"; var APP = "whm.serverProfile"; var COMPONENT_NAME = "ServerProfileSelector"; return function() { angular.module(APP, ["cjt2.config.whm.configProvider", "cjt2.whm", "cjt2.services.alert", "whm.serverProfile.rolesLocaleString", "whm.serverProfile.serverProfileService"]); require( [ "cjt/bootstrap", "app/views/activatingProfileView", "app/views/confirmProfileView", "app/views/selectOptionsView", "app/views/selectProfileView" ], function(BOOTSTRAP) { var app = angular.module(APP); var LICENSE_BASED_SERVER_PROFILE = PAGE.availableProfiles.length === 1; var currentProfile = PAGE.currentProfile; var hasOptionalRoles = !!currentProfile.optional_roles.length; app.value("PAGE", PAGE); app.value("LICENSE_BASED_SERVER_PROFILE", LICENSE_BASED_SERVER_PROFILE); app.config(["$routeProvider", function($routeProvider) { // Do not include profile selection in routes if the license specifies a non-standard profile if (!LICENSE_BASED_SERVER_PROFILE) { $routeProvider.when("/selectProfile", { controller: "selectProfileController", templateUrl: CJT.buildFullPath("server_profile/views/selectProfileView.ptt") }); } $routeProvider.when("/selectOptions", { controller: "selectOptionsController", templateUrl: CJT.buildFullPath("server_profile/views/selectOptionsView.ptt") }); $routeProvider.when("/confirmProfile", { controller: "confirmProfileController", templateUrl: CJT.buildFullPath("server_profile/views/confirmProfileView.ptt") }); $routeProvider.when("/activatingProfile", { controller: "activatingProfileController", templateUrl: CJT.buildFullPath("server_profile/views/activatingProfileView.ptt") }); // If the license specifies the profile, go straight to options if (LICENSE_BASED_SERVER_PROFILE) { $routeProvider.otherwise("/selectOptions"); } else { $routeProvider.otherwise("/selectProfile"); } }]); app.controller("baseController", ["$scope", "componentSettingSaverService", "$location", "$timeout", function($scope, csss, $location, $timeout) { $scope.licenseBasedServerProfile = LICENSE_BASED_SERVER_PROFILE; $scope.noOptionalRoles = !hasOptionalRoles; $scope.$on("ActivateProfileEvent", function() { $scope.activationInitiated = true; }); $scope.$on("$destroy", function() { csss.unregister(COMPONENT_NAME); }); $scope.dismissWarning = function() { csss.set(COMPONENT_NAME, { dismissedWarning: true }); $scope.dismissedWarning = true; }; var register = csss.register(COMPONENT_NAME); if ( register ) { register.then(function(result) { if ( result && result.dismissedWarning !== undefined ) { $scope.dismissedWarning = true; } }).finally(function() { $location.path("/selectProfile"); $timeout(function() { $scope.loaded = true; }); }); } else { $location.path("/selectProfile"); $timeout(function() { $scope.loaded = true; }); } }] ); BOOTSTRAP("#contentContainer", APP); } ); }; } );
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.04 |
proxy
|
phpinfo
|
Settings