fix disabled add forms

This commit is contained in:
John Mitchell 2016-09-16 10:39:38 -04:00
parent 766dac9663
commit b0731181ff
23 changed files with 256 additions and 181 deletions

View File

@ -14,9 +14,14 @@
export function CredentialsList($scope, $rootScope, $location, $log,
$stateParams, Rest, Alert, CredentialList, GenerateList, Prompt, SearchInit,
PaginateInit, ReturnToCaller, ClearScope, ProcessErrors, GetBasePath,
SelectionInit, GetChoices, Wait, $state, $filter) {
SelectionInit, GetChoices, Wait, $state, $filter, rbacUiControlService) {
ClearScope();
rbacUiControlService.canAdd('credentials')
.then(function(canAdd) {
$scope.canAdd = canAdd;
});
Wait('start');
var list = CredentialList,
@ -129,7 +134,7 @@ CredentialsList.$inject = ['$scope', '$rootScope', '$location', '$log',
'$stateParams', 'Rest', 'Alert', 'CredentialList', 'generateList', 'Prompt',
'SearchInit', 'PaginateInit', 'ReturnToCaller', 'ClearScope',
'ProcessErrors', 'GetBasePath', 'SelectionInit', 'GetChoices', 'Wait',
'$state', '$filter'
'$state', '$filter', 'rbacUiControlService'
];
@ -349,6 +354,12 @@ export function CredentialsEdit($scope, $rootScope, $compile, $location, $log,
generator.reset();
$scope.id = id;
$scope.$watch('credential_obj.summary_fields.user_capabilities.edit', function(val) {
if (val === false) {
$scope.canAdd = false;
}
});
$scope.canShareCredential = false;
if ($rootScope.current_user.is_superuser) {

View File

@ -574,6 +574,12 @@ export function ProjectsEdit($scope, $rootScope, $compile, $location, $log,
ClearScope('htmlTemplate');
$scope.$watch('project_obj.summary_fields.user_capabilities.edit', function(val) {
if (val === false) {
$scope.canAdd = false;
}
});
// Inject dynamic view
var form = ProjectsForm(),
generator = GenerateForm,

View File

@ -223,6 +223,12 @@ export function TeamsEdit($scope, $rootScope, $location,
$scope.team_id = id;
$scope.$watch('team_obj.summary_fields.user_capabilities.edit', function(val) {
if (val === false) {
$scope.canAdd = false;
}
});
generator.inject(form, { mode: 'edit', related: true, scope: $scope });
generator.reset();

View File

@ -294,6 +294,12 @@ export function UsersEdit($scope, $rootScope, $location,
$scope.user_type = user_type_options[0];
$scope.$watch('user_type', user_type_sync($scope));
$scope.$watch('user_obj.summary_fields.user_capabilities.edit', function(val) {
if (val === false) {
$scope.canAdd = false;
}
});
var setScopeFields = function(data){
_(data)
.pick(function(value, key){

View File

@ -33,14 +33,14 @@ export default
addRequired: true,
editRequired: true,
autocomplete: false,
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
description: {
label: 'Description',
type: 'text',
addRequired: false,
editRequired: false,
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
organization: {
addRequired: false,
@ -55,7 +55,7 @@ export default
dataTitle: 'Organization ',
dataPlacement: 'bottom',
dataContainer: "body",
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
kind: {
label: 'Type',
@ -87,7 +87,7 @@ export default
dataPlacement: 'right',
dataContainer: "body",
hasSubForm: true,
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
access_key: {
label: 'Access Key',
@ -100,13 +100,13 @@ export default
autocomplete: false,
apiField: 'username',
subForm: 'credentialSubForm',
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
secret_key: {
label: 'Secret Key',
type: 'sensitive',
ngShow: "kind.value == 'aws'",
ngDisabled: "secret_key_ask || !credential_obj.summary_fields.user_capabilities.edit",
ngDisabled: "secret_key_ask || !(credential_obj.summary_fields.user_capabilities.edit || canAdd)",
awRequiredWhen: {
reqExpression: "aws_required",
init: false
@ -129,7 +129,7 @@ export default
dataPlacement: 'right',
dataContainer: "body",
subForm: 'credentialSubForm',
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"host": {
labelBind: 'hostLabel',
@ -146,7 +146,7 @@ export default
init: false
},
subForm: 'credentialSubForm',
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"subscription": {
label: "Subscription ID",
@ -164,7 +164,7 @@ export default
dataPlacement: 'right',
dataContainer: "body",
subForm: 'credentialSubForm',
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"username": {
labelBind: 'usernameLabel',
@ -177,7 +177,7 @@ export default
},
autocomplete: false,
subForm: "credentialSubForm",
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"email_address": {
labelBind: 'usernameLabel',
@ -193,7 +193,7 @@ export default
dataPlacement: 'right',
dataContainer: "body",
subForm: 'credentialSubForm',
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"api_key": {
label: 'API Key',
@ -207,7 +207,7 @@ export default
hasShowInputButton: true,
clear: false,
subForm: 'credentialSubForm',
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"password": {
labelBind: 'passwordLabel',
@ -221,13 +221,13 @@ export default
init: false
},
subForm: "credentialSubForm",
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"ssh_password": {
label: 'Password',
type: 'sensitive',
ngShow: "kind.value == 'ssh'",
ngDisabled: "ssh_password_ask || !credential_obj.summary_fields.user_capabilities.edit",
ngDisabled: "ssh_password_ask || !(credential_obj.summary_fields.user_capabilities.edit || canAdd)",
addRequired: false,
editRequired: false,
subCheckbox: {
@ -260,7 +260,7 @@ export default
dataPlacement: 'right',
dataContainer: "body",
subForm: "credentialSubForm",
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"ssh_key_unlock": {
label: 'Private Key Passphrase',
@ -268,7 +268,7 @@ export default
ngShow: "kind.value == 'ssh' || kind.value == 'scm'",
addRequired: false,
editRequired: false,
ngDisabled: "keyEntered === false || ssh_key_unlock_ask || !credential_obj.summary_fields.user_capabilities.edit",
ngDisabled: "keyEntered === false || ssh_key_unlock_ask || !(credential_obj.summary_fields.user_capabilities.edit || canAdd)",
subCheckbox: {
variable: 'ssh_key_unlock_ask',
ngShow: "kind.value == 'ssh'",
@ -292,7 +292,7 @@ export default
dataPlacement: 'right',
dataContainer: "body",
subForm: 'credentialSubForm',
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"become_username": {
labelBind: 'becomeUsernameLabel',
@ -302,13 +302,13 @@ export default
editRequired: false,
autocomplete: false,
subForm: 'credentialSubForm',
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"become_password": {
labelBind: 'becomePasswordLabel',
type: 'sensitive',
ngShow: "(kind.value == 'ssh' && (become_method && become_method.value)) ",
ngDisabled: "become_password_ask || !credential_obj.summary_fields.user_capabilities.edit",
ngDisabled: "become_password_ask || !(credential_obj.summary_fields.user_capabilities.edit || canAdd)",
addRequired: false,
editRequired: false,
subCheckbox: {
@ -325,7 +325,7 @@ export default
label: 'Client ID',
subForm: 'credentialSubForm',
ngShow: "kind.value === 'azure_rm'",
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
secret:{
type: 'sensitive',
@ -334,14 +334,14 @@ export default
label: 'Client Secret',
subForm: 'credentialSubForm',
ngShow: "kind.value === 'azure_rm'",
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
tenant: {
type: 'text',
label: 'Tenant ID',
subForm: 'credentialSubForm',
ngShow: "kind.value === 'azure_rm'",
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
authorize: {
label: 'Authorize',
@ -349,7 +349,7 @@ export default
ngChange: "toggleCallback('host_config_key')",
subForm: 'credentialSubForm',
ngShow: "kind.value === 'net'",
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
authorize_password: {
label: 'Authorize Password',
@ -358,7 +358,7 @@ export default
autocomplete: false,
subForm: 'credentialSubForm',
ngShow: "authorize && authorize !== 'false'",
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"project": {
labelBind: 'projectLabel',
@ -376,7 +376,7 @@ export default
init: false
},
subForm: 'credentialSubForm',
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"domain": {
labelBind: 'domainLabel',
@ -393,13 +393,13 @@ export default
addRequired: false,
editRequired: false,
subForm: 'credentialSubForm',
ngDisabled: '!credential_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
"vault_password": {
label: "Vault Password",
type: 'sensitive',
ngShow: "kind.value == 'ssh'",
ngDisabled: "vault_password_ask || !credential_obj.summary_fields.user_capabilities.edit",
ngDisabled: "vault_password_ask || !(credential_obj.summary_fields.user_capabilities.edit || canAdd)",
addRequired: false,
editRequired: false,
subCheckbox: {
@ -416,17 +416,17 @@ export default
buttons: {
cancel: {
ngClick: 'formCancel()',
ngShow: 'credential_obj.summary_fields.user_capabilities.edit'
ngShow: '(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
close: {
ngClick: 'formCancel()',
ngShow: '!credential_obj.summary_fields.user_capabilities.edit'
ngShow: '!(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
},
save: {
label: 'Save',
ngClick: 'formSave()', //$scope.function to call on click, optional
ngDisabled: true,
ngShow: 'credential_obj.summary_fields.user_capabilities.edit' //Disable when $pristine or $invalid, optional
ngShow: '(credential_obj.summary_fields.user_capabilities.edit || canAdd)' //Disable when $pristine or $invalid, optional
}
},
@ -450,7 +450,7 @@ export default
awToolTip: 'Add a permission',
actionClass: 'btn List-buttonSubmit',
buttonContent: '+ ADD',
ngShow: 'credential_obj.summary_fields.user_capabilities.edit'
ngShow: '(credential_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},

View File

@ -27,7 +27,7 @@ export default
addRequired: true,
editRequired: true,
tab: 'properties',
ngDisabled: '!group_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(group_obj.summary_fields.user_capabilities.edit || canAdd)'
},
description: {
label: 'Description',
@ -35,7 +35,7 @@ export default
addRequired: false,
editRequired: false,
tab: 'properties',
ngDisabled: '!group_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(group_obj.summary_fields.user_capabilities.edit || canAdd)'
},
variables: {
label: 'Variables',
@ -68,7 +68,7 @@ export default
addRequired: false,
editRequired: false,
ngModel: 'source',
ngDisabled: '!group_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(group_obj.summary_fields.user_capabilities.edit || canAdd)'
},
credential: {
label: 'Cloud Credential',
@ -81,7 +81,7 @@ export default
reqExpression: "cloudCredentialRequired",
init: "false"
},
ngDisabled: '!group_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(group_obj.summary_fields.user_capabilities.edit || canAdd)'
},
source_regions: {
label: 'Regions',
@ -97,7 +97,7 @@ export default
"or choose <em>All</em> to include all regions. Tower will only be updated with Hosts associated with the selected regions." +
"</p>",
dataContainer: 'body',
ngDisabled: '!group_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(group_obj.summary_fields.user_capabilities.edit || canAdd)'
},
instance_filters: {
label: 'Instance Filters',
@ -118,7 +118,7 @@ export default
"<p>View the <a href=\"http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html\" target=\"_blank\">Describe Instances documentation</a> " +
"for a complete list of supported filters.</p>",
dataContainer: 'body',
ngDisabled: '!group_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(group_obj.summary_fields.user_capabilities.edit || canAdd)'
},
group_by: {
label: 'Only Group By',
@ -144,7 +144,7 @@ export default
"<li>Tag None: <strong>tags &raquo; tag_none</strong></li>" +
"</ul><p>If blank, all groups above are created except <em>Instance ID</em>.</p>",
dataContainer: 'body',
ngDisabled: '!group_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(group_obj.summary_fields.user_capabilities.edit || canAdd)'
},
inventory_script: {
label : "Custom Inventory Script",
@ -156,7 +156,7 @@ export default
addRequired: true,
editRequired: true,
ngRequired: "source && source.value === 'custom'",
ngDisabled: '!group_obj.summary_fields.user_capabilities.edit',
ngDisabled: '!(group_obj.summary_fields.user_capabilities.edit || canAdd)',
},
custom_variables: {
id: 'custom_variables',
@ -278,7 +278,7 @@ export default
dataContainer: 'body',
dataPlacement: 'right',
labelClass: 'checkbox-options',
ngDisabled: '!group_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(group_obj.summary_fields.user_capabilities.edit || canAdd)'
}, {
name: 'overwrite_vars',
label: 'Overwrite Variables',
@ -293,7 +293,7 @@ export default
dataContainer: 'body',
dataPlacement: 'right',
labelClass: 'checkbox-options',
ngDisabled: '!group_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(group_obj.summary_fields.user_capabilities.edit || canAdd)'
}, {
name: 'update_on_launch',
label: 'Update on Launch',
@ -307,7 +307,7 @@ export default
dataContainer: 'body',
dataPlacement: 'right',
labelClass: 'checkbox-options',
ngDisabled: '!group_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(group_obj.summary_fields.user_capabilities.edit || canAdd)'
}]
},
update_cache_timeout: {
@ -333,16 +333,16 @@ export default
buttons: {
cancel: {
ngClick: 'formCancel()',
ngShow: 'group_obj.summary_fields.user_capabilities.edit'
ngShow: '(group_obj.summary_fields.user_capabilities.edit || canAdd)'
},
close: {
ngClick: 'formCancel()',
ngShow: '!group_obj.summary_fields.user_capabilities.edit'
ngShow: '!(group_obj.summary_fields.user_capabilities.edit || canAdd)'
},
save: {
ngClick: 'formSave()',
ngDisabled: true,
ngShow: 'group_obj.summary_fields.user_capabilities.edit'
ngShow: '(group_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},

View File

@ -47,14 +47,14 @@ export default
dataTitle: 'Host Name',
dataPlacement: 'right',
dataContainer: 'body',
ngDisabled: '!host.summary_fields.user_capabilities.edit'
ngDisabled: '!(host.summary_fields.user_capabilities.edit || canAdd)'
},
description: {
label: 'Description',
type: 'text',
addRequired: false,
editRequired: false,
ngDisabled: '!host.summary_fields.user_capabilities.edit'
ngDisabled: '!(host.summary_fields.user_capabilities.edit || canAdd)'
},
variables: {
label: 'Variables',
@ -85,16 +85,16 @@ export default
buttons: {
cancel: {
ngClick: 'formCancel()',
ngShow: 'host.summary_fields.user_capabilities.edit'
ngShow: '(host.summary_fields.user_capabilities.edit || canAdd)'
},
close: {
ngClick: 'formCancel()',
ngShow: '!host.summary_fields.user_capabilities.edit'
ngShow: '!(host.summary_fields.user_capabilities.edit || canAdd)'
},
save: {
ngClick: 'formSave()',
ngDisabled: true,
ngShow: 'host.summary_fields.user_capabilities.edit'
ngShow: '(host.summary_fields.user_capabilities.edit || canAdd)'
}
},

View File

@ -27,7 +27,7 @@ export default
addRequired: true,
editRequired: true,
capitalize: false,
ngDisabled: '!inventory_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(inventory_obj.summary_fields.user_capabilities.edit || canAdd)'
},
inventory_description: {
realName: 'description',
@ -35,7 +35,7 @@ export default
type: 'text',
addRequired: false,
editRequired: false,
ngDisabled: '!inventory_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(inventory_obj.summary_fields.user_capabilities.edit || canAdd)'
},
organization: {
label: 'Organization',
@ -47,7 +47,7 @@ export default
reqExpression: "organizationrequired",
init: "true"
},
ngDisabled: '!inventory_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(inventory_obj.summary_fields.user_capabilities.edit || canAdd)'
},
variables: {
label: 'Variables',
@ -67,23 +67,23 @@ export default
dataTitle: 'Inventory Variables',
dataPlacement: 'right',
dataContainer: 'body',
ngDisabled: '!inventory_obj.summary_fields.user_capabilities.edit' // TODO: get working
ngDisabled: '!(inventory_obj.summary_fields.user_capabilities.edit || canAdd)' // TODO: get working
}
},
buttons: {
cancel: {
ngClick: 'formCancel()',
ngShow: 'inventory_obj.summary_fields.user_capabilities.edit'
ngShow: '(inventory_obj.summary_fields.user_capabilities.edit || canAdd)'
},
close: {
ngClick: 'formCancel()',
ngHide: 'inventory_obj.summary_fields.user_capabilities.edit'
ngHide: '(inventory_obj.summary_fields.user_capabilities.edit || canAdd)'
},
save: {
ngClick: 'formSave()',
ngDisabled: true,
ngShow: 'inventory_obj.summary_fields.user_capabilities.edit'
ngShow: '(inventory_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},
@ -105,7 +105,7 @@ export default
awToolTip: 'Add a permission',
actionClass: 'btn List-buttonSubmit',
buttonContent: '&#43; ADD',
ngShow: 'inventory_obj.summary_fields.user_capabilities.edit'
ngShow: '(inventory_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},

View File

@ -28,7 +28,7 @@ export default
addRequired: true,
editRequired: true,
column: 1,
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
description: {
label: 'Description',
@ -36,7 +36,7 @@ export default
addRequired: false,
editRequired: false,
column: 1,
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
job_type: {
label: 'Job Type',
@ -59,7 +59,7 @@ export default
ngShow: "!job_type.value || job_type.value !== 'scan'",
text: 'Prompt on launch'
},
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
inventory: {
label: 'Inventory',
@ -82,7 +82,7 @@ export default
ngShow: "!job_type.value || job_type.value !== 'scan'",
text: 'Prompt on launch'
},
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
project: {
label: 'Project',
@ -104,13 +104,13 @@ export default
dataTitle: 'Project',
dataPlacement: 'right',
dataContainer: "body",
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
playbook: {
label: 'Playbook',
type:'select',
ngOptions: 'book for book in playbook_options track by book',
ngDisabled: "(job_type.value === 'scan' && project_name === 'Default') || !job_template_obj.summary_fields.user_capabilities.edit",
ngDisabled: "(job_type.value === 'scan' && project_name === 'Default') || !(job_template_obj.summary_fields.user_capabilities.edit || canAdd)",
id: 'playbook-select',
awRequiredWhen: {
reqExpression: "playbookrequired",
@ -144,7 +144,7 @@ export default
variable: 'ask_credential_on_launch',
text: 'Prompt on launch'
},
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
cloud_credential: {
label: 'Cloud Credential',
@ -160,7 +160,7 @@ export default
dataTitle: 'Cloud Credential',
dataPlacement: 'right',
dataContainer: "body",
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
network_credential: {
label: 'Network Credential',
@ -175,7 +175,7 @@ export default
dataTitle: 'Network Credential',
dataPlacement: 'right',
dataContainer: "body",
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
forks: {
label: 'Forks',
@ -195,7 +195,7 @@ export default
dataTitle: 'Forks',
dataPlacement: 'right',
dataContainer: "body",
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit' // TODO: get working
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)' // TODO: get working
},
limit: {
label: 'Limit',
@ -213,7 +213,7 @@ export default
variable: 'ask_limit_on_launch',
text: 'Prompt on launch'
},
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
verbosity: {
label: 'Verbosity',
@ -227,7 +227,7 @@ export default
dataTitle: 'Verbosity',
dataPlacement: 'right',
dataContainer: "body",
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
job_tags: {
label: 'Job Tags',
@ -247,7 +247,7 @@ export default
variable: 'ask_tags_on_launch',
text: 'Prompt on launch'
},
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
skip_tags: {
label: 'Skip Tags',
@ -267,7 +267,7 @@ export default
variable: 'ask_skip_tags_on_launch',
text: 'Prompt on launch'
},
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
checkbox_group: {
label: 'Options',
@ -284,7 +284,7 @@ export default
dataTitle: 'Become Privilege Escalation',
dataContainer: "body",
labelClass: 'stack-inline',
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
}, {
name: 'allow_callbacks',
label: 'Allow Provisioning Callbacks',
@ -299,7 +299,7 @@ export default
dataTitle: 'Allow Provisioning Callbacks',
dataContainer: "body",
labelClass: 'stack-inline',
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
}]
},
callback_url: {
@ -315,7 +315,7 @@ export default
dataPlacement: 'top',
dataTitle: 'Provisioning Callback URL',
dataContainer: "body",
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
host_config_key: {
label: 'Host Config Key',
@ -329,7 +329,7 @@ export default
dataPlacement: 'right',
dataTitle: "Host Config Key",
dataContainer: "body",
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
labels: {
label: 'Labels',
@ -343,7 +343,7 @@ export default
dataPlacement: 'right',
awPopOver: "<p>Optional labels that describe this job template, such as 'dev' or 'test'. Labels can be used to group and filter job templates and completed jobs in the Tower display.</p>",
dataContainer: 'body',
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
variables: {
label: 'Extra Variables',
@ -367,14 +367,14 @@ export default
variable: 'ask_variables_on_launch',
text: 'Prompt on launch'
},
ngDisabled: '!job_template_obj.summary_fields.user_capabilities.edit' // TODO: get working
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)' // TODO: get working
}
},
buttons: { //for now always generates <button> tags
add_survey: {
ngClick: 'addSurvey()',
ngShow: 'job_type.value !== "scan" && !survey_exists && job_template_obj.summary_fields.user_capabilities.edit',
ngShow: 'job_type.value !== "scan" && !survey_exists && (job_template_obj.summary_fields.user_capabilities.edit || canAdd)',
awFeature: 'surveys',
awToolTip: 'Surveys allow users to be prompted at job launch with a series of questions related to the job. This allows for variables to be defined that affect the playbook run at time of launch.',
dataPlacement: 'top'
@ -382,25 +382,25 @@ export default
edit_survey: {
ngClick: 'editSurvey()',
awFeature: 'surveys',
ngShow: 'job_type.value !== "scan" && survey_exists && job_template_obj.summary_fields.user_capabilities.edit'
ngShow: 'job_type.value !== "scan" && survey_exists && (job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
view_survey: {
ngClick: 'editSurvey()',
awFeature: 'surveys',
ngShow: 'job_type.value !== "scan" && survey_exists && !job_template_obj.summary_fields.user_capabilities.edit'
ngShow: 'job_type.value !== "scan" && survey_exists && !(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
cancel: {
ngClick: 'formCancel()',
ngShow: 'job_template_obj.summary_fields.user_capabilities.edit'
ngShow: '(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
close: {
ngClick: 'formCancel()',
ngShow: '!job_template_obj.summary_fields.user_capabilities.edit'
ngShow: '!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
},
save: {
ngClick: 'formSave()', //$scope.function to call on click, optional
ngDisabled: "job_templates_form.$invalid || can_edit!==true",//true //Disable when $pristine or $invalid, optional and when can_edit = false, for permission reasons
ngShow: 'job_template_obj.summary_fields.user_capabilities.edit'
ngShow: '(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},
@ -425,7 +425,7 @@ export default
awToolTip: 'Add a permission',
actionClass: 'btn List-buttonSubmit',
buttonContent: '&#43; ADD',
ngShow: 'job_template_obj.summary_fields.user_capabilities.edit'
ngShow: '(job_template_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},

View File

@ -26,30 +26,30 @@ export default
addRequired: true,
editRequired: true,
capitalize: false,
ngDisabled: '!organization_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(organization_obj.summary_fields.user_capabilities.edit || canAdd)'
},
description: {
label: 'Description',
type: 'text',
addRequired: false,
editRequired: false,
ngDisabled: '!organization_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(organization_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},
buttons: { //for now always generates <button> tags
cancel: {
ngClick: 'formCancel()',
ngShow: 'organization_obj.summary_fields.user_capabilities.edit'
ngShow: '(organization_obj.summary_fields.user_capabilities.edit || canAdd)'
},
close: {
ngClick: 'formCancel()',
ngShow: '!organization_obj.summary_fields.user_capabilities.edit'
ngShow: '!(organization_obj.summary_fields.user_capabilities.edit || canAdd)'
},
save: {
ngClick: 'formSave()', //$scope.function to call on click, optional
ngDisabled: true,
ngShow: 'organization_obj.summary_fields.user_capabilities.edit'
ngShow: '(organization_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},
@ -71,7 +71,7 @@ export default
awToolTip: 'Add a permission',
actionClass: 'btn List-buttonSubmit',
buttonContent: '&#43; ADD',
ngShow: 'organization_obj.summary_fields.user_capabilities.edit'
ngShow: '(organization_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},

View File

@ -31,14 +31,14 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
addRequired: true,
editRequired: true,
capitalize: false,
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
},
description: {
label: 'Description',
type: 'text',
addRequired: false,
editRequired: false,
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
},
organization: {
label: 'Organization',
@ -53,7 +53,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
dataTitle: 'Organization',
dataContainer: 'body',
dataPlacement: 'right',
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
},
scm_type: {
label: 'SCM Type',
@ -64,7 +64,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
addRequired: true,
editRequired: true,
hasSubForm: true,
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
},
missing_path_alert: {
type: 'alertblock',
@ -87,7 +87,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
dataTitle: 'Project Base Path',
dataContainer: 'body',
dataPlacement: 'right',
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
},
local_path: {
label: 'Playbook Directory',
@ -105,7 +105,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
dataTitle: 'Project Path',
dataContainer: 'body',
dataPlacement: 'right',
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
},
scm_url: {
label: 'SCM URL',
@ -122,7 +122,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
dataTitle: 'SCM URL',
dataContainer: 'body',
dataPlacement: 'right',
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
},
scm_branch: {
labelBind: "scmBranchLabel",
@ -131,7 +131,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
addRequired: false,
editRequired: false,
subForm: 'sourceSubForm',
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
},
credential: {
label: 'SCM Credential',
@ -143,7 +143,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
addRequired: false,
editRequired: false,
subForm: 'sourceSubForm',
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
},
checkbox_group: {
label: 'SCM Update Options',
@ -161,7 +161,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
dataContainer: 'body',
dataPlacement: 'right',
labelClass: 'checkbox-options stack-inline',
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
}, {
name: 'scm_delete_on_update',
label: 'Delete on Update',
@ -174,7 +174,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
dataContainer: 'body',
dataPlacement: 'right',
labelClass: 'checkbox-options stack-inline',
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
}, {
name: 'scm_update_on_launch',
label: 'Update on Launch',
@ -186,7 +186,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
dataContainer: 'body',
dataPlacement: 'right',
labelClass: 'checkbox-options stack-inline',
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
}]
},
scm_update_cache_timeout: {
@ -206,23 +206,23 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
dataTitle: 'Cache Timeout',
dataPlacement: 'right',
dataContainer: "body",
ngDisabled: '!project_obj.summary_fields.user_capabilities.edit' // TODO: get working
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)' // TODO: get working
}
},
buttons: {
cancel: {
ngClick: 'formCancel()',
ngShow: 'project_obj.summary_fields.user_capabilities.edit'
ngShow: '(project_obj.summary_fields.user_capabilities.edit || canAdd)'
},
close: {
ngClick: 'formCancel()',
ngShow: '!project_obj.summary_fields.user_capabilities.edit'
ngShow: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
},
save: {
ngClick: 'formSave()',
ngDisabled: true,
ngShow: 'project_obj.summary_fields.user_capabilities.edit'
ngShow: '(project_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},
@ -244,7 +244,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
awToolTip: 'Add a permission',
actionClass: 'btn List-buttonSubmit',
buttonContent: '&#43; ADD',
ngShow: 'project_obj.summary_fields.user_capabilities.edit'
ngShow: '(project_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},

View File

@ -26,14 +26,14 @@ export default
addRequired: true,
editRequired: true,
capitalize: false,
ngDisabled: '!team_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(team_obj.summary_fields.user_capabilities.edit || canAdd)'
},
description: {
label: 'Description',
type: 'text',
addRequired: false,
editRequired: false,
ngDisabled: '!team_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(team_obj.summary_fields.user_capabilities.edit || canAdd)'
},
organization: {
label: 'Organization',
@ -47,23 +47,23 @@ export default
reqExpression: "orgrequired",
init: true
},
ngDisabled: '!team_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(team_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},
buttons: {
cancel: {
ngClick: 'formCancel()',
ngShow: 'team_obj.summary_fields.user_capabilities.edit'
ngShow: '(team_obj.summary_fields.user_capabilities.edit || canAdd)'
},
close: {
ngClick: 'formCancel()',
ngShow: '!team_obj.summary_fields.user_capabilities.edit'
ngShow: '!(team_obj.summary_fields.user_capabilities.edit || canAdd)'
},
save: {
ngClick: 'formSave()',
ngDisabled: true,
ngShow: 'team_obj.summary_fields.user_capabilities.edit'
ngShow: '(team_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},
@ -85,7 +85,7 @@ export default
awToolTip: 'Add user to team',
actionClass: 'btn List-buttonSubmit',
buttonContent: '&#43; ADD',
ngShow: 'team_obj.summary_fields.user_capabilities.edit'
ngShow: '(team_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},

View File

@ -27,7 +27,7 @@ export default
addRequired: true,
editRequired: true,
capitalize: true,
ngDisabled: '!user_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(user_obj.summary_fields.user_capabilities.edit || canAdd)'
},
last_name: {
label: 'Last Name',
@ -35,7 +35,7 @@ export default
addRequired: true,
editRequired: true,
capitalize: true,
ngDisabled: '!user_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(user_obj.summary_fields.user_capabilities.edit || canAdd)'
},
email: {
label: 'Email',
@ -43,7 +43,7 @@ export default
addRequired: true,
editRequired: true,
autocomplete: false,
ngDisabled: '!user_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(user_obj.summary_fields.user_capabilities.edit || canAdd)'
},
username: {
label: 'Username',
@ -53,7 +53,7 @@ export default
init: true
},
autocomplete: false,
ngDisabled: '!user_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(user_obj.summary_fields.user_capabilities.edit || canAdd)'
},
organization: {
label: 'Organization',
@ -68,7 +68,7 @@ export default
reqExpression: "orgrequired",
init: true
},
ngDisabled: '!user_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(user_obj.summary_fields.user_capabilities.edit || canAdd)'
},
password: {
label: 'Password',
@ -80,7 +80,7 @@ export default
ngChange: "clearPWConfirm('password_confirm')",
autocomplete: false,
chkPass: true,
ngDisabled: '!user_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(user_obj.summary_fields.user_capabilities.edit || canAdd)'
},
password_confirm: {
label: 'Confirm Password',
@ -92,7 +92,7 @@ export default
awPassMatch: true,
associated: 'password',
autocomplete: false,
ngDisabled: '!user_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(user_obj.summary_fields.user_capabilities.edit || canAdd)'
},
user_type: {
label: 'User Type',
@ -101,23 +101,23 @@ export default
disableChooseOption: true,
ngModel: 'user_type',
ngShow: 'current_user["is_superuser"]',
ngDisabled: '!user_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(user_obj.summary_fields.user_capabilities.edit || canAdd)'
},
},
buttons: {
cancel: {
ngClick: 'formCancel()',
ngShow: 'user_obj.summary_fields.user_capabilities.edit'
ngShow: '(user_obj.summary_fields.user_capabilities.edit || canAdd)'
},
close: {
ngClick: 'formCancel()',
ngShow: '!user_obj.summary_fields.user_capabilities.edit'
ngShow: '!(user_obj.summary_fields.user_capabilities.edit || canAdd)'
},
save: {
ngClick: 'formSave()',
ngDisabled: true,
ngShow: 'user_obj.summary_fields.user_capabilities.edit'
ngShow: '(user_obj.summary_fields.user_capabilities.edit || canAdd)'
}
},

View File

@ -31,6 +31,13 @@ function InventoriesEdit($scope, $rootScope, $compile, $location,
form.formLabelSize = null;
form.formFieldSize = null;
$scope.inventory_id = inventory_id;
$scope.$watch('invnentory_obj.summary_fields.user_capabilities.edit', function(val) {
if (val === false) {
$scope.canAdd = false;
}
});
generator.inject(form, { mode: 'edit', related: true, scope: $scope });
generator.reset();

View File

@ -18,6 +18,12 @@
CredentialList = _.cloneDeep(CredentialList);
CredentialList.fields.kind.noSearch = true;
$scope.$watch('group_obj.summary_fields.user_capabilities.edit', function(val) {
if (val === false) {
$scope.canAdd = false;
}
});
$scope.formCancel = function(){
$state.go('^');
};

View File

@ -5,10 +5,17 @@
*************************************************/
export default
['$state', '$stateParams', '$scope', 'HostForm', 'ParseTypeChange', 'GenerateForm', 'HostManageService', 'host', 'GetBasePath', 'Rest',
function($state, $stateParams, $scope, HostForm, ParseTypeChange, GenerateForm, HostManageService, host, GetBasePath, Rest){
['$state', '$stateParams', '$scope', 'HostForm', 'ParseTypeChange', 'GenerateForm', 'HostManageService', 'host',
function($state, $stateParams, $scope, HostForm, ParseTypeChange, GenerateForm, HostManageService, host){
var generator = GenerateForm,
form = HostForm;
$scope.$watch('host.summary_fields.user_capabilities.edit', function(val) {
if (val === false) {
$scope.canAdd = false;
}
});
$scope.parseType = 'yaml';
$scope.formCancel = function(){
$state.go('^');

View File

@ -25,6 +25,13 @@ export default
url = GetBasePath('inventory_scripts');
$scope.inventory_script = inventory_script;
$scope.$watch('inventory_script_obj.summary_fields.user_capabilities.edit', function(val) {
if (val === false) {
$scope.canAdd = false;
}
});
generator.inject(form, {
mode: 'edit' ,
scope:$scope,

View File

@ -25,14 +25,14 @@ export default function() {
addRequired: true,
editRequired: true,
capitalize: false,
ngDisabled: '!inventory_script_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(inventory_script_obj.summary_fields.user_capabilities.edit || canAdd)'
},
description: {
label: 'Description',
type: 'text',
addRequired: false,
editRequired: false,
ngDisabled: '!inventory_script_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(inventory_script_obj.summary_fields.user_capabilities.edit || canAdd)'
},
organization: {
label: 'Organization',
@ -44,7 +44,7 @@ export default function() {
sourceModel: 'organization',
sourceField: 'name',
ngClick: 'lookUpOrganization()',
ngDisabled: '!inventory_script_obj.summary_fields.user_capabilities.edit'
ngDisabled: '!(inventory_script_obj.summary_fields.user_capabilities.edit || canAdd)'
},
script: {
label: 'Custom Script',
@ -54,7 +54,7 @@ export default function() {
addRequired: true,
editRequired: true,
awDropFile: true,
ngDisabled: '!inventory_script_obj.summary_fields.user_capabilities.edit',
ngDisabled: '!(inventory_script_obj.summary_fields.user_capabilities.edit || canAdd)',
rows: 10,
awPopOver: "<p>Drag and drop your custom inventory script file here or create one in the field to import your custom inventory. " +
"<br><br> Script must begin with a hashbang sequence: i.e.... #!/usr/bin/env python</p>",
@ -67,16 +67,16 @@ export default function() {
buttons: { //for now always generates <button> tags
cancel: {
ngClick: 'formCancel()',
ngShow: 'inventory_script_obj.summary_fields.user_capabilities.edit'
ngShow: '(inventory_script_obj.summary_fields.user_capabilities.edit || canAdd)'
},
close: {
ngClick: 'formCancel()',
ngShow: '!inventory_script_obj.summary_fields.user_capabilities.edit'
ngShow: '!(inventory_script_obj.summary_fields.user_capabilities.edit || canAdd)'
},
save: {
ngClick: 'formSave()', //$scope.function to call on click, optional
ngDisabled: 'custom_inventory_form.$pristine || custom_inventory_form.$invalid || !canEdit', //Disable when $pristine or $invalid, optional
ngShow: 'inventory_script_obj.summary_fields.user_capabilities.edit'
ngShow: '(inventory_script_obj.summary_fields.user_capabilities.edit || canAdd)'
}
}
};

View File

@ -36,6 +36,12 @@ export default
ClearScope();
$scope.$watch('job_template_obj.summary_fields.user_capabilities.edit', function(val) {
if (val === false) {
$scope.canAdd = false;
}
});
var defaultUrl = GetBasePath('job_templates'),
generator = GenerateForm,
form = JobTemplateForm(),

View File

@ -26,6 +26,13 @@ export default
url = GetBasePath('notification_templates');
$scope.notification_template = notification_template;
$scope.$watch('notification_template.summary_fields.user_capabilities.edit', function(val) {
if (val === false) {
$scope.canAdd = false;
}
});
generator.inject(form, {
mode: 'edit' ,
scope:$scope,

View File

@ -28,14 +28,14 @@ export default function() {
addRequired: true,
editRequired: true,
capitalize: false,
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
description: {
label: 'Description',
type: 'text',
addRequired: false,
editRequired: false,
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
organization: {
label: 'Organization',
@ -47,7 +47,7 @@ export default function() {
reqExpression: "organizationrequired",
init: "true"
},
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
notification_type: {
label: 'Type',
@ -58,14 +58,14 @@ export default function() {
ngOptions: 'type.label for type in notification_type_options track by type.value',
ngChange: 'typeChange()',
hasSubForm: true,
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
username: {
label: 'Username',
type: 'text',
ngShow: "notification_type.value == 'email' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
host: {
@ -77,7 +77,7 @@ export default function() {
},
ngShow: "notification_type.value == 'email' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
sender: {
label: 'Sender Email',
@ -88,7 +88,7 @@ export default function() {
},
ngShow: "notification_type.value == 'email' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
recipients: {
label: 'Recipient List',
@ -105,7 +105,7 @@ export default function() {
},
ngShow: "notification_type.value == 'email' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
password: {
labelBind: 'passwordLabel',
@ -117,7 +117,7 @@ export default function() {
},
ngShow: "notification_type.value == 'email' || notification_type.value == 'irc' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
port: {
labelBind: 'portLabel',
@ -132,7 +132,7 @@ export default function() {
},
ngShow: "notification_type.value == 'email' || notification_type.value == 'irc'",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
channels: {
label: 'Destination Channels',
@ -149,7 +149,7 @@ export default function() {
},
ngShow: "notification_type.value == 'slack'",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
rooms: {
label: 'Destination Channels',
@ -166,7 +166,7 @@ export default function() {
},
ngShow: "notification_type.value == 'hipchat'",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
token: {
labelBind: 'tokenLabel',
@ -178,7 +178,7 @@ export default function() {
},
ngShow: "notification_type.value == 'slack' || notification_type.value == 'pagerduty' || notification_type.value == 'hipchat'",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
account_token: {
label: 'Account Token',
@ -190,7 +190,7 @@ export default function() {
},
ngShow: "notification_type.value == 'twilio' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
from_number: {
label: 'Source Phone Number',
@ -203,7 +203,7 @@ export default function() {
},
ngShow: "notification_type.value == 'twilio' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
to_numbers: {
label: 'Destination SMS Number',
@ -220,7 +220,7 @@ export default function() {
},
ngShow: "notification_type.value == 'twilio' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
account_sid: {
label: 'Account SID',
@ -231,7 +231,7 @@ export default function() {
},
ngShow: "notification_type.value == 'twilio' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
subdomain: {
label: 'Pagerduty subdomain',
@ -242,7 +242,7 @@ export default function() {
},
ngShow: "notification_type.value == 'pagerduty' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
service_key: {
label: 'API Service/Integration Key',
@ -253,7 +253,7 @@ export default function() {
},
ngShow: "notification_type.value == 'pagerduty' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
client_name: {
label: 'Client Identifier',
@ -264,7 +264,7 @@ export default function() {
},
ngShow: "notification_type.value == 'pagerduty' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
message_from: {
label: 'Label to be shown with notification',
@ -275,7 +275,7 @@ export default function() {
},
ngShow: "notification_type.value == 'hipchat' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
api_url: {
label: 'API URL',
@ -287,7 +287,7 @@ export default function() {
},
ngShow: "notification_type.value == 'hipchat' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
color: {
label: 'Notification Color',
@ -300,14 +300,14 @@ export default function() {
},
ngShow: "notification_type.value == 'hipchat' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
notify: {
label: 'Notify Channel',
type: 'checkbox',
ngShow: "notification_type.value == 'hipchat' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
url: {
label: 'Target URL',
@ -318,7 +318,7 @@ export default function() {
},
ngShow: "notification_type.value == 'webhook' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
headers: {
label: 'HTTP Headers',
@ -339,7 +339,7 @@ export default function() {
dataPlacement: 'right',
ngShow: "notification_type.value == 'webhook' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
server: {
label: 'IRC Server Address',
@ -350,7 +350,7 @@ export default function() {
},
ngShow: "notification_type.value == 'irc' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
nickname: {
label: 'IRC Nick',
@ -361,7 +361,7 @@ export default function() {
},
ngShow: "notification_type.value == 'irc' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
targets: {
label: 'Destination Channels or Users',
@ -378,14 +378,14 @@ export default function() {
},
ngShow: "notification_type.value == 'irc' ",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
use_ssl: {
label: 'SSL Connection',
type: 'checkbox',
ngShow: "notification_type.value == 'irc'",
subForm: 'typeSubForm',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
checkbox_group: {
label: 'Options',
@ -398,14 +398,14 @@ export default function() {
type: 'checkbox',
ngShow: "notification_type.value == 'email' ",
labelClass: 'checkbox-options stack-inline',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
}, {
name: 'use_ssl',
label: 'Use SSL',
type: 'checkbox',
ngShow: "notification_type.value == 'email'",
labelClass: 'checkbox-options stack-inline',
ngDisabled: '!notification_template.summary_fields.user_capabilities.edit'
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
}]
}
},
@ -413,15 +413,15 @@ export default function() {
buttons: { //for now always generates <button> tags
cancel: {
ngClick: 'formCancel()',
ngShow: 'notification_template.summary_fields.user_capabilities.edit'
ngShow: '(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
close: {
ngClick: 'formCancel()',
ngShow: '!notification_template.summary_fields.user_capabilities.edit'
ngShow: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
},
save: {
ngClick: 'formSave()',
ngShow: 'notification_template.summary_fields.user_capabilities.edit', //$scope.function to call on click, optional
ngShow: '(notification_template.summary_fields.user_capabilities.edit || canAdd)', //$scope.function to call on click, optional
ngDisabled: true //Disable when $pristine or $invalid, optional
}
}

View File

@ -25,6 +25,12 @@ export default ['$scope', '$rootScope', '$compile', '$location',
id = $stateParams.organization_id,
relatedSets = {};
$scope.$watch('organization_obj.summary_fields.user_capabilities.edit', function(val) {
if (val === false) {
$scope.canAdd = false;
}
});
$scope.$parent.activeMode = 'edit';
$scope.$parent.activeCard = parseInt(id);

View File

@ -32,13 +32,13 @@
</div>
</div>
<div class="SurveyMaker-content">
<div class="SurveyMaker-questionPanel" ng-show="job_template_obj.summary_fields.user_capabilities.edit">
<div class="SurveyMaker-questionPanel" ng-show="(job_template_obj.summary_fields.user_capabilities.edit || canAdd)">
<div id="survey_maker_question_form"></div>
</div>
<div class="SurveyMaker-separatorPanel" ng-show="job_template_obj.summary_fields.user_capabilities.edit">
<div class="SurveyMaker-separatorPanel" ng-show="(job_template_obj.summary_fields.user_capabilities.edit || canAdd)">
<div class="SurveyMaker-contentSeparator"></div>
</div>
<div class="SurveyMaker-previewPanel" ng-class="{'SurveyMaker-previewPanel--viewOnly': !job_template_obj.summary_fields.user_capabilities.edit}">
<div class="SurveyMaker-previewPanel" ng-class="{'SurveyMaker-previewPanel--viewOnly': !(job_template_obj.summary_fields.user_capabilities.edit || canAdd)}">
<div style="display: flex; flex-direction: column; width: 100%;">
<div class="SurveyMaker-panelHeader">PREVIEW</div>
<div class="SurveyMaker-panelBody">
@ -56,13 +56,13 @@
<i>{{question.question_description}}</i>
</div>
<div class="SurveyMaker-previewInputRow">
<span dnd-handle class="SurveyMaker-reorderButton" data-placement="top" aw-tool-tip="Drag to reorder question" data-original-title="" title="" ng-show="job_template_obj.summary_fields.user_capabilities.edit">
<span dnd-handle class="SurveyMaker-reorderButton" data-placement="top" aw-tool-tip="Drag to reorder question" data-original-title="" title="" ng-show="(job_template_obj.summary_fields.user_capabilities.edit || canAdd)">
<i class="fa fa-ellipsis-v"></i>
<span>&nbsp;</span>
<i class="fa fa-ellipsis-v"></i>
</span>
<survey-question class="SurveyMaker-previewInput" preview="true" question="question" ng-required="question.required" ng-disabled=true></survey-question>
<div class="SurveyMaker-previewActions" ng-show="job_template_obj.summary_fields.user_capabilities.edit">
<div class="SurveyMaker-previewActions" ng-show="(job_template_obj.summary_fields.user_capabilities.edit || canAdd)">
<button class="List-actionButton" data-placement="top" ng-class="{'SurveyMaker-previewActions--selected' : editQuestionIndex == $index}" ng-click="editQuestion($index)" aw-tool-tip="Edit question" data-original-title="" title="">
<i class="fa fa-pencil"></i>
</button>
@ -80,10 +80,10 @@
</div>
<div class="SurveyMaker-panelFooter">
<div class="Form-buttons">
<button id="survey-delete-button" class="btn btn-sm SurveyMaker-deleteButton" ng-show="survey_exists && job_template_obj.summary_fields.user_capabilities.edit" ng-click="showDeleteOverlay('survey')">DELETE SURVEY</button>
<button id="survey-close-button" class="btn btn-sm Form-buttonDefault" ng-click="closeSurvey('survey-modal-dialog')" ng-show="job_template_obj.summary_fields.user_capabilities.edit">CANCEL</button>
<button id="survey-close-button" class="btn btn-sm Form-buttonDefault" ng-click="closeSurvey('survey-modal-dialog')" ng-show="!job_template_obj.summary_fields.user_capabilities.edit">CLOSE</button>
<button id="survey-save-button" class="btn btn-sm Form-saveButton" ng-click="saveSurvey()" ng-disabled="survey_questions.length < 1 || !can_edit || editQuestionIndex !== null" ng-show="job_template_obj.summary_fields.user_capabilities.edit">SAVE</button>
<button id="survey-delete-button" class="btn btn-sm SurveyMaker-deleteButton" ng-show="survey_exists && (job_template_obj.summary_fields.user_capabilities.edit || canAdd)" ng-click="showDeleteOverlay('survey')">DELETE SURVEY</button>
<button id="survey-close-button" class="btn btn-sm Form-buttonDefault" ng-click="closeSurvey('survey-modal-dialog')" ng-show="(job_template_obj.summary_fields.user_capabilities.edit || canAdd)">CANCEL</button>
<button id="survey-close-button" class="btn btn-sm Form-buttonDefault" ng-click="closeSurvey('survey-modal-dialog')" ng-show="!(job_template_obj.summary_fields.user_capabilities.edit || canAdd)">CLOSE</button>
<button id="survey-save-button" class="btn btn-sm Form-saveButton" ng-click="saveSurvey()" ng-disabled="survey_questions.length < 1 || !can_edit || editQuestionIndex !== null" ng-show="(job_template_obj.summary_fields.user_capabilities.edit || canAdd)">SAVE</button>
</div>
</div>
</div>