Merge pull request #5694 from jlmitch5/addOrgToPermModal

add org to user/team perm modal
This commit is contained in:
jlmitch5
2017-03-14 11:18:35 -04:00
committed by GitHub
6 changed files with 59 additions and 28 deletions

View File

@@ -7,8 +7,10 @@
/* jshint unused: vars */ /* jshint unused: vars */
export default ['$compile','templateUrl', 'i18n', 'generateList', export default ['$compile','templateUrl', 'i18n', 'generateList',
'ProjectList', 'TemplateList', 'InventoryList', 'CredentialList', 'ProjectList', 'TemplateList', 'InventoryList', 'CredentialList',
'OrganizationList',
function($compile, templateUrl, i18n, generateList, function($compile, templateUrl, i18n, generateList,
ProjectList, TemplateList, InventoryList, CredentialList) { ProjectList, TemplateList, InventoryList, CredentialList,
OrganizationList) {
return { return {
restrict: 'E', restrict: 'E',
scope: { scope: {
@@ -24,7 +26,8 @@ export default ['$compile','templateUrl', 'i18n', 'generateList',
job_templates: TemplateList, job_templates: TemplateList,
workflow_templates: TemplateList, workflow_templates: TemplateList,
inventories: InventoryList, inventories: InventoryList,
credentials: CredentialList credentials: CredentialList,
organizations: OrganizationList
}; };
list = _.cloneDeep(listMap[scope.resourceType]); list = _.cloneDeep(listMap[scope.resourceType]);
@@ -63,6 +66,9 @@ export default ['$compile','templateUrl', 'i18n', 'generateList',
break; break;
case 'job_templates': case 'job_templates':
case 'workflow_templates':
case 'credentials':
case 'organizations':
list.name = 'job_templates'; list.name = 'job_templates';
list.iterator = 'job_template'; list.iterator = 'job_template';
list.fields = { list.fields = {
@@ -72,25 +78,6 @@ export default ['$compile','templateUrl', 'i18n', 'generateList',
list.fields.name.columnClass = 'col-md-5 col-sm-5 col-xs-10'; list.fields.name.columnClass = 'col-md-5 col-sm-5 col-xs-10';
list.fields.description.columnClass = 'col-md-5 col-sm-5 hidden-xs'; list.fields.description.columnClass = 'col-md-5 col-sm-5 hidden-xs';
break; break;
case 'workflow_templates':
list.name = 'workflow_templates';
list.iterator = 'workflow_template';
list.basePath = 'workflow_job_templates';
list.fields = {
name: list.fields.name,
description: list.fields.description
};
list.fields.name.columnClass = 'col-md-5 col-sm-5 col-xs-10';
list.fields.description.columnClass = 'col-md-5 col-sm-5 hidden-xs';
break;
case 'credentials':
list.fields = {
name: list.fields.name,
description: list.fields.description
};
list.fields.name.columnClass = 'col-md-5 col-sm-5 col-xs-10';
list.fields.description.columnClass = 'col-md-5 col-sm-5 hidden-xs';
} }
list.fields = _.each(list.fields, (field) => field.nosort = true); list.fields = _.each(list.fields, (field) => field.nosort = true);

View File

@@ -18,7 +18,7 @@ function(rootScope, scope, $state, i18n, CreateSelect2, GetBasePath, Rest, $q, W
function init(){ function init(){
let resources = ['job_templates', 'workflow_templates', 'projects', 'inventories', 'credentials']; let resources = ['job_templates', 'workflow_templates', 'projects', 'inventories', 'credentials', 'organizations'];
// data model: // data model:
// selected - keyed by type of resource // selected - keyed by type of resource
@@ -43,7 +43,8 @@ function(rootScope, scope, $state, i18n, CreateSelect2, GetBasePath, Rest, $q, W
workflow_templates: false, workflow_templates: false,
projects: false, projects: false,
inventories: false, inventories: false,
credentials: false credentials: false,
organizations: false
}; };
// initializes select2 per select field // initializes select2 per select field

View File

@@ -1,7 +1,8 @@
<div id="add-permissions-modal" class="AddPermissions modal fade"> <div id="add-permissions-modal" class="AddPermissions modal fade">
<div class="AddPermissions-backDrop is-loggedOut"></div> <div class="AddPermissions-backDrop is-loggedOut"></div>
<div class="AddPermissions-dialog"> <div class="AddPermissions-dialog">
<div class="AddPermissions-content is-loggedOut"> <div class="AddPermissions-content AddPermissions-content--userTeam
is-loggedOut">
<!-- begin header --> <!-- begin header -->
<div class="AddPermissions-header"> <div class="AddPermissions-header">
<div class="List-header"> <div class="List-header">
@@ -9,7 +10,7 @@
<div class="List-titleText ng-binding"> <div class="List-titleText ng-binding">
{{ owner.name || owner.username }} {{ owner.name || owner.username }}
<div class="List-titleLockup"></div> <div class="List-titleLockup"></div>
{{ title }} {{ title | uppercase }}
</div> </div>
</div> </div>
<div class="Form-exitHolder"> <div class="Form-exitHolder">
@@ -60,6 +61,12 @@
translate> translate>
Credentials Credentials
</div> </div>
<div class="Form-tab"
ng-click="selectTab('organizations')"
ng-class="{'is-selected': tab.organizations}"
translate>
Organizations
</div>
</div> </div>
<div id="AddPermissions-jobTemplates" class="AddPermissions-list" ng-show="tab.job_templates"> <div id="AddPermissions-jobTemplates" class="AddPermissions-list" ng-show="tab.job_templates">
@@ -77,6 +84,9 @@
<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>
<div id="AddPermissions-organizations" class="AddPermissions-list" ng-show="tab.organizations">
<rbac-multiselect-list view="Organizations" all-selected="allSelected" dataset="resolve.organizationsDataset"></rbac-multiselect-list>
</div>
<!-- end section 1 --> <!-- end section 1 -->
<!-- begin section 2 --> <!-- begin section 2 -->
@@ -127,6 +137,13 @@
translate> translate>
Credentials Credentials
</div> </div>
<div class="Form-tab"
ng-click="selectTab('organizations')"
ng-class="{'is-selected': tab.organizations}"
ng-show="showSection2Tab('organizations')"
translate>
Organizations
</div>
</div> </div>
<div class="AddPermissions-keyPane" <div class="AddPermissions-keyPane"
ng-show="showKeyPane"> ng-show="showKeyPane">
@@ -142,7 +159,8 @@
</div> </div>
<!-- role drop-downs --> <!-- role drop-downs -->
<div ng-repeat="(type, roleSet) in keys" ng-show="tab[type]"> <div ng-repeat="(type, roleSet) in keys"
ng-show="tab[type] && showSection2Tab(type)">
<select <select
id="{{type}}-role-select" class="form-control" id="{{type}}-role-select" class="form-control"
ng-model="roleSelection[type]" ng-model="roleSelection[type]"

View File

@@ -32,6 +32,10 @@
opacity: 1; opacity: 1;
} }
.AddPermissions-content--userTeam {
max-width: 820px;
}
.AddPermissions-header { .AddPermissions-header {
padding: 20px; padding: 20px;
padding-bottom: 10px; padding-bottom: 10px;

View File

@@ -7,8 +7,10 @@
/* jshint unused: vars */ /* jshint unused: vars */
export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateList', 'ProjectList', export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateList', 'ProjectList',
'InventoryList', 'CredentialList', '$compile', 'generateList', 'GetBasePath', 'InventoryList', 'CredentialList', '$compile', 'generateList', 'GetBasePath',
'OrganizationList',
function(addPermissionsTeamsList, addPermissionsUsersList, TemplateList, ProjectList, function(addPermissionsTeamsList, addPermissionsUsersList, TemplateList, ProjectList,
InventoryList, CredentialList, $compile, generateList, GetBasePath) { InventoryList, CredentialList, $compile, generateList, GetBasePath,
OrganizationList) {
return { return {
restrict: 'E', restrict: 'E',
scope: { scope: {
@@ -27,7 +29,8 @@ export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateL
JobTemplates: TemplateList, JobTemplates: TemplateList,
WorkflowTemplates: TemplateList, WorkflowTemplates: TemplateList,
Inventories: InventoryList, Inventories: InventoryList,
Credentials: CredentialList Credentials: CredentialList,
Organizations: OrganizationList
}; };
list = _.cloneDeep(listMap[scope.view]); list = _.cloneDeep(listMap[scope.view]);
list.multiSelect = true; list.multiSelect = true;
@@ -99,6 +102,14 @@ export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateL
list.fields.name.columnClass = 'col-md-6 col-sm-6 col-xs-11'; list.fields.name.columnClass = 'col-md-6 col-sm-6 col-xs-11';
list.fields.organization.columnClass = 'col-md-5 col-sm-5 hidden-xs'; list.fields.organization.columnClass = 'col-md-5 col-sm-5 hidden-xs';
break; break;
case 'Organizations':
list.fields = {
name: list.fields.name,
description: list.fields.description,
};
list.fields.name.columnClass = 'col-md-6 col-sm-6 col-xs-11';
list.fields.description.columnClass = 'col-md-5 col-sm-5 hidden-xs';
break;
default: default:
list.fields = { list.fields = {
name: list.fields.name, name: list.fields.name,

View File

@@ -270,6 +270,10 @@ export default ['$injector', '$stateExtender', '$log', 'i18n', function($injecto
credential_search: { credential_search: {
value: {order_by: 'name', page_size: '5', role_level: 'admin_role'}, value: {order_by: 'name', page_size: '5', role_level: 'admin_role'},
dynamic: true dynamic: true
},
organization_search: {
value: {order_by: 'name', page_size: '5', role_level: 'admin_role'},
dynamic: true
} }
}, },
ncyBreadcrumb:{ ncyBreadcrumb:{
@@ -311,6 +315,12 @@ export default ['$injector', '$stateExtender', '$log', 'i18n', function($injecto
return qs.search(path, $stateParams[`${list.iterator}_search`]); return qs.search(path, $stateParams[`${list.iterator}_search`]);
} }
], ],
organizationsDataset: ['OrganizationList', 'QuerySet', '$stateParams', 'GetBasePath',
function(list, qs, $stateParams, GetBasePath) {
let path = GetBasePath(list.basePath) || GetBasePath(list.name);
return qs.search(path, $stateParams[`${list.iterator}_search`]);
}
],
}, },
onExit: function($state) { onExit: function($state) {
if ($state.transition) { if ($state.transition) {