diff --git a/awx/ui/client/legacy/styles/ansible-ui.less b/awx/ui/client/legacy/styles/ansible-ui.less index 79e554c0f3..a992d805c1 100644 --- a/awx/ui/client/legacy/styles/ansible-ui.less +++ b/awx/ui/client/legacy/styles/ansible-ui.less @@ -2328,6 +2328,10 @@ body { margin-top: 20px; } +.Panel--noBottomPadding { + padding-bottom: 0px; +} + .Panel-hidden { display: none; } diff --git a/awx/ui/client/src/configuration/configuration.controller.js b/awx/ui/client/src/configuration/configuration.controller.js index 90a2b554d8..9752522e9d 100644 --- a/awx/ui/client/src/configuration/configuration.controller.js +++ b/awx/ui/client/src/configuration/configuration.controller.js @@ -3,6 +3,7 @@ * * All Rights Reserved *************************************************/ +import defaultStrings from '~assets/default.strings.json'; export default [ '$scope', '$rootScope', '$state', '$stateParams', '$timeout', '$q', 'Alert', @@ -55,6 +56,8 @@ export default [ ) { var vm = this; + vm.product = defaultStrings.BRAND_NAME; + var formDefs = { 'azure': configurationAzureForm, 'github': configurationGithubForm, @@ -219,7 +222,7 @@ export default [ }; function activeTabCheck(setForm) { - if(!$scope[formTracker.currentFormName()].$dirty) { + if(!$scope[formTracker.currentFormName()] || !$scope[formTracker.currentFormName()].$dirty) { active(setForm); } else { var msg = i18n._('You have unsaved changes. Would you like to proceed without saving?'); @@ -268,18 +271,30 @@ export default [ formTracker.setCurrentSystem(formTracker.currentSystem); } } - else { - formTracker.setCurrent(setForm); - } + vm.activeTab = setForm; - $state.go('configuration', { - currentTab: setForm - }, { - location: true, - inherit: false, - notify: false, - reload: false - }); + + if (setForm !== 'license') { + formTracker.setCurrent(setForm); + + $state.go('configuration', { + currentTab: setForm + }, { + location: true, + inherit: false, + notify: false, + reload: false + }); + } else { + $state.go('configuration.license', { + currentTab: setForm + }, { + location: true, + inherit: false, + notify: false, + reload: false + }); + } } var formCancel = function() { diff --git a/awx/ui/client/src/configuration/configuration.partial.html b/awx/ui/client/src/configuration/configuration.partial.html index 3f61a44603..a567e6bde2 100644 --- a/awx/ui/client/src/configuration/configuration.partial.html +++ b/awx/ui/client/src/configuration/configuration.partial.html @@ -5,7 +5,7 @@
-
+
CONFIGURE {{BRAND_NAME}}
@@ -16,6 +16,7 @@
Jobs
System
User Interface
+
License
@@ -26,3 +27,5 @@
+ +
diff --git a/awx/ui/client/src/configuration/configuration.route.js b/awx/ui/client/src/configuration/configuration.route.js index c916ecf59d..4b1febbb74 100644 --- a/awx/ui/client/src/configuration/configuration.route.js +++ b/awx/ui/client/src/configuration/configuration.route.js @@ -3,16 +3,15 @@ * * All Rights Reserved *************************************************/ - - import {templateUrl} from '../shared/template-url/template-url.factory'; - import ConfigurationController from './configuration.controller'; - import { N_ } from '../i18n'; +import {templateUrl} from '../shared/template-url/template-url.factory'; +import ConfigurationController from './configuration.controller'; +import { N_ } from '../i18n'; // Import form controllers - import ConfigurationAuthController from './auth-form/configuration-auth.controller'; - import ConfigurationJobsController from './jobs-form/configuration-jobs.controller'; - import ConfigurationSystemController from './system-form/configuration-system.controller'; - import ConfigurationUiController from './ui-form/configuration-ui.controller'; +import ConfigurationAuthController from './auth-form/configuration-auth.controller'; +import ConfigurationJobsController from './jobs-form/configuration-jobs.controller'; +import ConfigurationSystemController from './system-form/configuration-system.controller'; +import ConfigurationUiController from './ui-form/configuration-ui.controller'; export default { name: 'configuration', @@ -58,6 +57,6 @@ templateUrl: templateUrl('configuration/ui-form/configuration-ui'), controller: ConfigurationUiController, controllerAs: 'uiVm' - } + }, }, }; diff --git a/awx/ui/client/src/configuration/license.route.js b/awx/ui/client/src/configuration/license.route.js new file mode 100644 index 0000000000..2efa23bcae --- /dev/null +++ b/awx/ui/client/src/configuration/license.route.js @@ -0,0 +1,52 @@ +/************************************************* + * Copyright (c) 2016 Ansible, Inc. + * + * All Rights Reserved + *************************************************/ + +import {templateUrl} from '../shared/template-url/template-url.factory'; +import { N_ } from '../i18n'; +import _ from 'lodash'; + +export default { + name: 'configuration.license', + route: '/license', + // templateUrl: templateUrl('license/license'), + // controller: 'licenseController', + data: {}, + ncyBreadcrumb: { + label: N_('LICENSE') + }, + onEnter: ['$state', 'ConfigService', (state, configService) => { + return configService.getConfig() + .then(config => { + if (_.get(config, 'license_info.license_type') === 'open') { + return state.go('setup'); + } + }); + }], + views: { + 'license@configuration': { + templateUrl: templateUrl('license/license'), + controller: 'licenseController' + }, + }, + resolve: { + features: ['CheckLicense', '$rootScope', + function(CheckLicense, $rootScope) { + if($rootScope.licenseMissing === undefined){ + return CheckLicense.notify(); + } + + }], + config: ['ConfigService', 'CheckLicense', '$rootScope', + function(ConfigService, CheckLicense, $rootScope) { + ConfigService.delete(); + return ConfigService.getConfig() + .then(function(config){ + $rootScope.licenseMissing = (CheckLicense.valid(config.license_info) === false) ? true : false; + return config; + }); + }] + }, +}; diff --git a/awx/ui/client/src/configuration/main.js b/awx/ui/client/src/configuration/main.js index 3846354546..5e20fa830d 100644 --- a/awx/ui/client/src/configuration/main.js +++ b/awx/ui/client/src/configuration/main.js @@ -7,6 +7,7 @@ import configurationService from './configuration.service'; import ConfigurationUtils from './configurationUtils.service'; import configurationRoute from './configuration.route'; +import licenseRoute from './license.route'; import configurationController from './configuration.controller.js'; // Import forms @@ -66,4 +67,5 @@ angular.module('configuration', []) .service('ConfigurationService', configurationService) .run(['$stateExtender', function($stateExtender) { $stateExtender.addState(configurationRoute); + $stateExtender.addState(licenseRoute); }]);