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 @@
-
+
@@ -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);
}]);