Fix for adding batch permissions to teams. Also added logic to properly enable/disable the save button on this modal.

This commit is contained in:
Michael Abashian
2016-12-19 12:27:41 -05:00
parent c8f1f11816
commit a5f275bcca
4 changed files with 35 additions and 21 deletions

View File

@@ -100,6 +100,21 @@ function(rootScope, scope, $state, i18n, CreateSelect2, GetBasePath, Rest, $q, W
return Object.keys(scope.selected[tab]).length > 0; return Object.keys(scope.selected[tab]).length > 0;
}; };
scope.saveEnabled = function(){
let missingRole = false;
let resourceSelected = false;
_.forOwn(scope.selected, function(value, key) {
if(Object.keys(value).length > 0) {
// A resource from this tab has been selected
resourceSelected = true;
if(!scope.roleSelection[key]) {
missingRole = true;
}
}
});
return resourceSelected && !missingRole;
};
// handle form tab changes // handle form tab changes
scope.selectTab = function(selected){ scope.selectTab = function(selected){
_.each(scope.tab, (value, key, collection) => { _.each(scope.tab, (value, key, collection) => {

View File

@@ -76,11 +76,11 @@
</div> </div>
<div id="AddPermissions-credentials" class="AddPermissions-list" ng-show="tab.credentials"> <div id="AddPermissions-credentials" class="AddPermissions-list" ng-show="tab.credentials">
<rbac-multiselect-list view="Credentials" all-selected="allSelected" dataset="resolve.credentialsDataset"></rbac-multiselect-list> <rbac-multiselect-list view="Credentials" all-selected="allSelected" dataset="resolve.credentialsDataset"></rbac-multiselect-list>
</div> </div>
<!-- end section 1 --> <!-- end section 1 -->
<!-- begin section 2 --> <!-- begin section 2 -->
<div ng-show="showSection2Container()"> <div ng-show="showSection2Container()">
<div class="AddPermissions-separator"></div> <div class="AddPermissions-separator"></div>
<div class="AddPermissions-directions"> <div class="AddPermissions-directions">
<span class="AddPermissions-directionNumber"> <span class="AddPermissions-directionNumber">
@@ -176,7 +176,7 @@
<button type="button" <button type="button"
class="btn btn-sm Form-saveButton" class="btn btn-sm Form-saveButton"
ng-click="saveForm()" ng-click="saveForm()"
ng-disabled="!showSection2Container()"> ng-disabled="!saveEnabled()">
Save Save
</button> </button>
</div> </div>

View File

@@ -64,7 +64,7 @@ export default
}, },
related: { related: {
permissions: { users: {
dataPlacement: 'top', dataPlacement: 'top',
awToolTip: i18n._('Please save before adding users'), awToolTip: i18n._('Please save before adding users'),
basePath: 'api/v1/teams/{{$stateParams.team_id}}/access_list/', basePath: 'api/v1/teams/{{$stateParams.team_id}}/access_list/',
@@ -73,15 +73,14 @@ export default
}, },
type: 'collection', type: 'collection',
title: i18n._('Users'), title: i18n._('Users'),
iterator: 'permission', iterator: 'user',
index: false, index: false,
open: false, open: false,
actions: { actions: {
add: { add: {
// @issue https://github.com/ansible/ansible-tower/issues/3487 ngClick: "$state.go('.add')",
//ngClick: "addPermissionWithoutTeamTab",
label: i18n._('Add'), label: i18n._('Add'),
awToolTip: i18n._('Add user to team'), awToolTip: i18n._('Add User'),
actionClass: 'btn List-buttonSubmit', actionClass: 'btn List-buttonSubmit',
buttonContent: '&#43; ' + i18n._('ADD'), buttonContent: '&#43; ' + i18n._('ADD'),
ngShow: '(team_obj.summary_fields.user_capabilities.edit || canAdd)' ngShow: '(team_obj.summary_fields.user_capabilities.edit || canAdd)'
@@ -104,44 +103,44 @@ export default
} }
} }
}, },
roles: { permissions: {
hideSearchAndActions: true,
dataPlacement: 'top',
awToolTip: i18n._('Please save before assigning permissions'),
basePath: 'api/v1/teams/{{$stateParams.team_id}}/roles/', basePath: 'api/v1/teams/{{$stateParams.team_id}}/roles/',
search: { search: {
page_size: '10', page_size: '10',
// @todo ask about name field / serializer on this endpoint // @todo ask about name field / serializer on this endpoint
order_by: 'id' order_by: 'id'
}, },
awToolTip: i18n._('Please save before assigning permissions'),
dataPlacement: 'top',
hideSearchAndActions: true,
type: 'collection', type: 'collection',
title: i18n._('Permissions'), title: i18n._('Permissions'),
iterator: 'role', iterator: 'permission',
open: false, open: false,
index: false, index: false,
emptyListText: i18n._('No permissions have been granted'), emptyListText: i18n._('No permissions have been granted'),
fields: { fields: {
name: { name: {
label: i18n._('Name'), label: i18n._('Name'),
ngBind: 'role.summary_fields.resource_name', ngBind: 'permission.summary_fields.resource_name',
linkTo: '{{convertApiUrl(role.related[role.summary_fields.resource_type])}}', linkTo: '{{convertApiUrl(permission.related[permission.summary_fields.resource_type])}}',
noSort: true noSort: true
}, },
type: { type: {
label: i18n._('Type'), label: i18n._('Type'),
ngBind: 'role.summary_fields.resource_type_display_name', ngBind: 'permission.summary_fields.resource_type_display_name',
noSort: true noSort: true
}, },
role: { role: {
label: i18n._('Role'), label: i18n._('Role'),
ngBind: 'role.name', ngBind: 'permission.name',
noSort: true noSort: true
} }
}, },
fieldActions: { fieldActions: {
"delete": { "delete": {
label: i18n._('Remove'), label: i18n._('Remove'),
ngClick: 'deletePermissionFromTeam(team_id, team_obj.name, role.name, role.summary_fields.resource_name, role.related.teams)', ngClick: 'deletePermissionFromTeam(team_id, team_obj.name, permission.name, permission.summary_fields.resource_name, permission.related.teams)',
'class': "List-actionButton--delete", 'class': "List-actionButton--delete",
iconClass: 'fa fa-times', iconClass: 'fa fa-times',
awToolTip: i18n._('Dissasociate permission from team'), awToolTip: i18n._('Dissasociate permission from team'),
@@ -156,7 +155,7 @@ export default
awToolTip: i18n._('Grant Permission'), awToolTip: i18n._('Grant Permission'),
actionClass: 'btn List-buttonSubmit', actionClass: 'btn List-buttonSubmit',
buttonContent: '&#43; ' + i18n._('ADD PERMISSIONS'), buttonContent: '&#43; ' + i18n._('ADD PERMISSIONS'),
ngShow: '(puser_obj.summary_fields.user_capabilities.edit || canAdd)' ngShow: '(team_obj.summary_fields.user_capabilities.edit || canAdd)'
} }
} }
} }

View File

@@ -209,7 +209,7 @@ export default
awToolTip: i18n._('Grant Permission'), awToolTip: i18n._('Grant Permission'),
actionClass: 'btn List-buttonSubmit', actionClass: 'btn List-buttonSubmit',
buttonContent: '&#43; ' + i18n._('ADD PERMISSIONS'), buttonContent: '&#43; ' + i18n._('ADD PERMISSIONS'),
ngShow: '(puser_obj.summary_fields.user_capabilities.edit || canAdd)' ngShow: '(user_obj.summary_fields.user_capabilities.edit || canAdd)'
} }
}, },
fieldActions: { fieldActions: {