File manager - Edit - /usr/local/cpanel/whostmgr/docroot/templates/cpanel_customization/index.js
Back
/* # cpanel - whostmgr/docroot/templates/cpanel_customization/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 */ /* jshint -W100 */ (function() { "use strict"; define( [ "lodash", "angular", "cjt/core", "cjt/util/locale", "app/constants", "cjt/modules", "uiBootstrap", "cjt/directives/callout", "app/services/savedService", "app/services/beforeUnloadService", // Jupiter Views "app/views/jupiter/logoController", "app/views/jupiter/faviconController", "app/views/jupiter/linksController", "app/views/jupiter/colorsController", // Shared Views "app/views/publicContactController", ], function(_, angular, CJT, LOCALE, CONSTANTS) { return function() { angular.module("App", [ "cjt2.config.whm.configProvider", // This needs to load first "ngRoute", "ui.bootstrap", "angular-growl", "cjt2.whm", "customize.services.savedService", "customize.services.beforeUnloadService", // Jupiter "customize.views.logoController", "customize.views.faviconController", "customize.views.linksController", "customize.views.colorsController", // Shared "customize.views.publicContactController", ]); var app = require( [ "cjt/bootstrap", // Application Modules "uiBootstrap", // Jupiter Views "app/views/jupiter/logoController", "app/views/jupiter/faviconController", "app/views/jupiter/linksController", "app/views/jupiter/colorsController", // Shared Views "app/views/publicContactController", // Services "app/services/contactService", "app/services/customizeService", ], function(BOOTSTRAP) { var app = angular.module("App"); app.value("PAGE", PAGE); app.value("firstLoad", { branding: true, }); app.controller("BaseController", [ "$rootScope", "$scope", "$route", "$location", "growl", "growlMessages", "$timeout", "savedService", "customizeService", function($rootScope, $scope, $route, $location, growl, growlMessages, $timeout, savedService, customizeService) { CONSTANTS.DEFAULT_THEME = PAGE.data.default_theme; $scope.loading = false; $scope.selectedThemeTabList = []; savedService.registerTabs(CONSTANTS.JUPITER_TAB_ORDER); // Convenience functions so we can track changing views for loading purposes $rootScope.$on("$routeChangeStart", function() { if (savedService.needToSave()) { $scope.reportNotSaved(); event.preventDefault(); } $scope.loading = true; }); $rootScope.$on("$routeChangeSuccess", function() { $scope.loading = false; }); $rootScope.$on("$routeChangeError", function() { $scope.loading = false; }); $rootScope.$on("onBeforeUnload", function(e, config) { if (savedService.needToSave()) { config.prompt = LOCALE.maketext("The current tab has unsaved changes. You should save the changes before you navigate to another tab."); e.preventDefault(); return; } delete e["returnValue"]; }); /** * Select a tab by its key. See the indexes for each tab in the ./index.html.tt file. * * @param {number} index */ $scope.selectTab = function(index) { var tabInfo = getTabInfo(); tabInfo.lastTab = index; var activeIndex = tabInfo.index[index]; $scope.activeTab = activeIndex; }; /** * Navigate to the selected path and change the tab being viewed. * * @param {string} path */ $scope.goTo = function(path) { var tabInfo = getTabInfo(); tabInfo.lastTab = path; $scope.selectTab(path); $location.path(path); $scope.selectTab(path); $scope.currentTabName = path; }; /** * Growl a message about not changing tabs. */ $scope.reportNotSaved = function() { growlMessages.destroyAllMessages(); growl.error(LOCALE.maketext("The current tab has unsaved changes. You should save the changes before you navigate to another tab.")); }; /** * Do not let the user navigate away from a tab if there * is unsaved work. */ $scope.preventDeselect = function($event) { if (!$event || !$event.target) { return; } var tabName = findTabName(angular.element($event.target)); if (savedService.needToSave($scope.currentTabName)) { if (tabName !== $scope.currentTabName) { $scope.reportNotSaved(); } $event.preventDefault(); } return; }; /** * Dig thru the els to find the parent with the data-tab-name attribute * * @private * @param {JqLiteHtmlElement} el * @returns {string} */ function findTabName(el) { var name = el.attr("data-tab-name"); if (name) { return name; } var parent = el.parent(); if (parent) { return findTabName(parent); } return; } /** * @typedef ThemeInfo - a set of properties used to configure the tabs for a given theme. * @property {string[]} order - the list of tab names in the order they are shown. * @property {Dictionayr<string,number>} index - the lookup table of tab names to tab indexes. * @property {string} lastTab - the previously selected tab. */ /** * @typedef ThemesInfo - lookup table of tab configuration per theme. * @property {ThemeInfo} jupiter - the jupiter theme configuraiton */ /** * @name byTheme * @scope * @type {ThemesInfo} */ $scope.byTheme = { jupiter: { order: CONSTANTS.JUPITER_TAB_ORDER, index: CONSTANTS.JUPITER_TAB_INDEX, lastTab: "", }, }; $scope.selectedTheme = CONSTANTS.DEFAULT_THEME; /** * Handle theme changes. */ $scope.onThemeSelect = function() { initTab(); }; /** * Retrieve the tab information for the current selected theme. * * @returns {ThemeInfo} */ function getTabInfo() { return $scope.byTheme[$scope.selectedTheme]; } /** * Check if the theme matches the current theme. * * @param {string} themeName * @returns {boolean} true when they are the same, false otherwise. */ $scope.isTheme = function(themeName) { return $scope.selectedTheme === themeName; }; /** * Check if the tab with the tabName is the active tab. * * @param {String} tabName * @returns {boolean} true when the tab is active, false otherwise. */ $scope.isActive = function(tabName) { return $scope.activeTab === tabName; }; /** * Get the active tab name. * * @returns {string} The name of the active tab. */ $scope.getActiveTab = function() { return $scope.activeTab; }; /** * The name of the currently selected tab * @type {string} */ $scope.currentTabName = ""; /** * Select the initial tab. */ function initTab() { var tabInfo = getTabInfo(); $scope.selectedThemeTabList = customizeService.getThemeTabList(tabInfo); var tabName = tabInfo.lastTab || tabInfo.order[0]; $timeout(function() { $scope.goTo(tabName); }); } initTab(); }, ]); app.config(["$routeProvider", function($routeProvider) { // Setup a route - copy this to add additional routes as necessary $routeProvider.when("/logos", { controller: "logoController", templateUrl: CJT.buildFullPath("cpanel_customization/views/jupiter/logo.ptt"), }); $routeProvider.when("/colors", { controller: "colorsController", templateUrl: CJT.buildFullPath("cpanel_customization/views/jupiter/colors.ptt"), }); $routeProvider.when("/links", { controller: "linksController", templateUrl: CJT.buildFullPath("cpanel_customization/views/jupiter/links.ptt"), }); $routeProvider.when("/favicon", { controller: "faviconController", templateUrl: CJT.buildFullPath("cpanel_customization/views/jupiter/favicon.ptt"), }); $routeProvider.when("/public-contact", { controller: "publicContactController", templateUrl: CJT.buildFullPath("cpanel_customization/views/publicContact.ptt"), }); // default route $routeProvider.otherwise({ "redirectTo": "/" + CONSTANTS.DEFAULT_ROUTE, }); }, ]); // Initialize the application BOOTSTRAP(); }); return app; }; } ); })();
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings