diff --git a/awx/ui/client/legacy-styles/ansible-ui.less b/awx/ui/client/legacy-styles/ansible-ui.less index 6c06dbf4e2..7cdb4f7da5 100644 --- a/awx/ui/client/legacy-styles/ansible-ui.less +++ b/awx/ui/client/legacy-styles/ansible-ui.less @@ -422,6 +422,19 @@ textarea.allowresize { max-width: 325px; background-color: @default-interface-txt; color: @default-bg; //white + + code { + color: @default-data-txt; + background-color: @default-white-button-bord; + line-height: 18px; + } + + a { + color: @default-warning; + &:hover { + color: @default-warning-hov; + } + } } .popover.right>.arrow:after { border-right-color: @default-interface-txt; diff --git a/awx/ui/client/legacy-styles/forms.less b/awx/ui/client/legacy-styles/forms.less index cc1efb49e7..20bf364141 100644 --- a/awx/ui/client/legacy-styles/forms.less +++ b/awx/ui/client/legacy-styles/forms.less @@ -201,6 +201,11 @@ .Form-textAreaLabel{ width:100%; + order: 1; +} + +.Form-formGroup.Form-textAreaLabel { + max-width: 100%; } .Form-textArea{ diff --git a/awx/ui/client/src/app.js b/awx/ui/client/src/app.js index 9a2e38ccfd..e03acc43b0 100644 --- a/awx/ui/client/src/app.js +++ b/awx/ui/client/src/app.js @@ -422,6 +422,10 @@ var tower = angular.module('Tower', [ controller: CredentialsEdit, data: { activityStreamId: 'credential_id' + }, + ncyBreadcrumb: { + parent: "credentials", + label: "EDIT CREDENTIAL" } }). @@ -742,12 +746,12 @@ var tower = angular.module('Tower', [ // remove any lingering intervals // except on jobDetails.* states var jobDetailStates = [ - 'jobDetail', - 'jobDetail.host-summary', + 'jobDetail', + 'jobDetail.host-summary', 'jobDetail.host-event.details', - 'jobDetail.host-event.json', + 'jobDetail.host-event.json', 'jobDetail.host-events', - 'jobDetail.host-event.stdout' + 'jobDetail.host-event.stdout' ]; if ($rootScope.jobDetailInterval && !_.includes(jobDetailStates, next.name) ) { window.clearInterval($rootScope.jobDetailInterval); diff --git a/awx/ui/client/src/controllers/Credentials.js b/awx/ui/client/src/controllers/Credentials.js index f7115aafb5..db1b3a3527 100644 --- a/awx/ui/client/src/controllers/Credentials.js +++ b/awx/ui/client/src/controllers/Credentials.js @@ -15,7 +15,6 @@ export function CredentialsList($scope, $rootScope, $location, $log, $stateParams, Rest, Alert, CredentialList, GenerateList, Prompt, SearchInit, PaginateInit, ReturnToCaller, ClearScope, ProcessErrors, GetBasePath, SelectionInit, GetChoices, Wait, $state) { - ClearScope(); Wait('start'); @@ -33,7 +32,6 @@ export function CredentialsList($scope, $rootScope, $location, $log, $scope.credentialLoading = true; url = GetBasePath(base) + ( (base === 'users') ? $stateParams.user_id + '/credentials/' : $stateParams.team_id + '/credentials/' ); - if (mode === 'select') { SelectionInit({ scope: $scope, list: list, url: url, returnToCaller: 1 }); } @@ -119,13 +117,15 @@ export function CredentialsList($scope, $rootScope, $location, $log, actionText: 'DELETE' }); }; + + $scope.$emit('choicesReadyCredential'); } CredentialsList.$inject = ['$scope', '$rootScope', '$location', '$log', '$stateParams', 'Rest', 'Alert', 'CredentialList', 'generateList', 'Prompt', 'SearchInit', 'PaginateInit', 'ReturnToCaller', 'ClearScope', 'ProcessErrors', 'GetBasePath', 'SelectionInit', 'GetChoices', 'Wait', - '$state' + '$state', ]; @@ -320,10 +320,12 @@ export function CredentialsEdit($scope, $rootScope, $compile, $location, $log, $stateParams, CredentialForm, GenerateForm, Rest, Alert, ProcessErrors, RelatedSearchInit, RelatedPaginateInit, ReturnToCaller, ClearScope, Prompt, GetBasePath, GetChoices, KindChange, OrganizationList, LookUpInit, Empty, - OwnerChange, FormSave, Wait, $state, CreateSelect2) { + OwnerChange, FormSave, Wait, $state, CreateSelect2, Authorization) { + if (!$rootScope.current_user) { + Authorization.restoreUserInfo(); + } ClearScope(); - var defaultUrl = GetBasePath('credentials'), generator = GenerateForm, form = CredentialForm, @@ -331,7 +333,6 @@ export function CredentialsEdit($scope, $rootScope, $compile, $location, $log, master = {}, id = $stateParams.credential_id, relatedSets = {}; - generator.inject(form, { mode: 'edit', related: true, scope: $scope }); generator.reset(); $scope.id = id; @@ -672,5 +673,5 @@ CredentialsEdit.$inject = ['$scope', '$rootScope', '$compile', '$location', 'ProcessErrors', 'RelatedSearchInit', 'RelatedPaginateInit', 'ReturnToCaller', 'ClearScope', 'Prompt', 'GetBasePath', 'GetChoices', 'KindChange', 'OrganizationList', 'LookUpInit', 'Empty', 'OwnerChange', - 'FormSave', 'Wait', '$state', 'CreateSelect2' + 'FormSave', 'Wait', '$state', 'CreateSelect2', 'Authorization' ]; diff --git a/awx/ui/client/src/helpers/Credentials.js b/awx/ui/client/src/helpers/Credentials.js index b5e3fbd3d1..2abb06e4eb 100644 --- a/awx/ui/client/src/helpers/Credentials.js +++ b/awx/ui/client/src/helpers/Credentials.js @@ -39,7 +39,7 @@ angular.module('CredentialsHelper', ['Utilities']) scope.project_required = false; scope.subscription_required = false; scope.key_description = "Paste the contents of the SSH private key file.
"; - scope.key_hint= "drag and drop an SSH private key file on the field below"; + scope.key_hint= "paste or drag and drop an SSH private key file on the field below"; scope.host_required = false; scope.password_required = false; scope.hostLabel = ''; @@ -65,7 +65,7 @@ angular.module('CredentialsHelper', ['Utilities']) scope.domain_required = false; scope.subscription_required = false; scope.key_description = "Paste the contents of the SSH private key file."; - scope.key_hint= "drag and drop an SSH private key file on the field below"; + scope.key_hint= "paste or drag and drop an SSH private key file on the field below"; scope.host_required = false; scope.password_required = false; scope.hostLabel = ''; @@ -75,7 +75,6 @@ angular.module('CredentialsHelper', ['Utilities']) scope.passwordLabel = 'Password (API Key)'; scope.projectPopOver = "The project value
"; scope.hostPopOver = "The host value
"; - if (!Empty(scope.kind)) { // Apply kind specific settings switch (scope.kind.value) { @@ -131,6 +130,7 @@ angular.module('CredentialsHelper', ['Utilities']) scope.password_required = true; scope.hostLabel = "vCenter Host"; scope.passwordLabel = 'Password'; + scope.hostPopOver = "Enter the hostname or IP address which corresponds to your VMware vCenter."; break; case 'openstack': scope.hostLabel = "Host (Authentication URL)"; @@ -152,6 +152,8 @@ angular.module('CredentialsHelper', ['Utilities']) scope.passwordLabel = 'Password'; scope.host_required = true; scope.hostLabel = "Satellite 6 Host"; + scope.hostPopOver = "Enter the hostname or IP address name which