mirror of
https://github.com/ZwareBear/awx.git
synced 2026-04-04 07:01:49 -05:00
467 lines
20 KiB
JavaScript
467 lines
20 KiB
JavaScript
/*************************************************
|
|
* Copyright (c) 2015 Ansible, Inc.
|
|
*
|
|
* All Rights Reserved
|
|
*************************************************/
|
|
|
|
/**
|
|
* @ngdoc function
|
|
* @name forms.function:CustomInventory
|
|
* @description This form is for adding/editing an organization
|
|
*/
|
|
|
|
export default ['i18n', function(i18n) {
|
|
return {
|
|
|
|
addTitle: i18n._('NEW NOTIFICATION TEMPLATE'),
|
|
editTitle: '{{ name }}',
|
|
name: 'notification_template',
|
|
// I18N for "CREATE NOTIFICATION_TEMPLATE"
|
|
// on /#/notification_templates/add
|
|
breadcrumbName: i18n._('NOTIFICATION TEMPLATE'),
|
|
stateTree: 'notifications',
|
|
basePath: 'notification_templates',
|
|
showActions: true,
|
|
subFormTitles: {
|
|
typeSubForm: i18n._('Type Details'),
|
|
},
|
|
|
|
|
|
fields: {
|
|
name: {
|
|
label: i18n._('Name'),
|
|
type: 'text',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)',
|
|
required: true,
|
|
capitalize: false
|
|
},
|
|
description: {
|
|
label: i18n._('Description'),
|
|
type: 'text',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
organization: {
|
|
label: i18n._('Organization'),
|
|
type: 'lookup',
|
|
list: 'OrganizationList',
|
|
basePath: 'organizations',
|
|
sourceModel: 'organization',
|
|
sourceField: 'name',
|
|
required: true,
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
notification_type: {
|
|
label: i18n._('Type'),
|
|
type: 'select',
|
|
required: true,
|
|
class: 'NotificationsForm-typeSelect',
|
|
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 || canAdd)'
|
|
},
|
|
username: {
|
|
label: i18n._('Username'),
|
|
type: 'text',
|
|
ngShow: "notification_type.value == 'email' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
password: {
|
|
labelBind: 'passwordLabel',
|
|
type: 'sensitive',
|
|
hasShowInputButton: true,
|
|
awRequiredWhen: {
|
|
reqExpression: "password_required" ,
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'email' || notification_type.value == 'irc' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
host: {
|
|
label: i18n._('Host'),
|
|
type: 'text',
|
|
awRequiredWhen: {
|
|
reqExpression: "email_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'email' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
recipients: {
|
|
label: i18n._('Recipient List'),
|
|
type: 'textarea',
|
|
rows: 3,
|
|
awPopOver: i18n._('Enter one email address per line to create a recipient list for this type of notification.'),
|
|
dataTitle: i18n._('Recipient List'),
|
|
dataPlacement: 'right',
|
|
dataContainer: "body",
|
|
awRequiredWhen: {
|
|
reqExpression: "email_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'email' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
sender: {
|
|
label: i18n._('Sender Email'),
|
|
type: 'text',
|
|
awRequiredWhen: {
|
|
reqExpression: "email_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'email' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
port: {
|
|
labelBind: 'portLabel',
|
|
type: 'number',
|
|
integer: true,
|
|
spinner: true,
|
|
'class': "input-small",
|
|
min: 0,
|
|
awRequiredWhen: {
|
|
reqExpression: "port_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'email' || notification_type.value == 'irc'",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
channels: {
|
|
label: i18n._('Destination Channels'),
|
|
type: 'textarea',
|
|
rows: 3,
|
|
awPopOver: i18n._('Enter one Slack channel per line. The pound symbol (#) is not required.'),
|
|
dataTitle: i18n._('Destination Channels'),
|
|
dataPlacement: 'right',
|
|
dataContainer: "body",
|
|
awRequiredWhen: {
|
|
reqExpression: "channel_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'slack'",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
rooms: {
|
|
label: i18n._('Destination Channels'),
|
|
type: 'textarea',
|
|
rows: 3,
|
|
awPopOver: i18n._('Enter one HipChat channel per line. The pound symbol (#) is not required.'),
|
|
dataTitle: i18n._('Destination Channels'),
|
|
dataPlacement: 'right',
|
|
dataContainer: "body",
|
|
awRequiredWhen: {
|
|
reqExpression: "room_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'hipchat'",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
token: {
|
|
labelBind: 'tokenLabel',
|
|
type: 'sensitive',
|
|
hasShowInputButton: true,
|
|
awRequiredWhen: {
|
|
reqExpression: "token_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'slack' || notification_type.value == 'pagerduty' || notification_type.value == 'hipchat'",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
account_token: {
|
|
label: i18n._('Account Token'),
|
|
type: 'sensitive',
|
|
hasShowInputButton: true,
|
|
awRequiredWhen: {
|
|
reqExpression: "twilio_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'twilio' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
from_number: {
|
|
label: i18n._('Source Phone Number'),
|
|
dataTitle: i18n._('Source Phone Number'),
|
|
type: 'text',
|
|
awPopOver: i18n._('Enter the number associated with the "Messaging Service" in Twilio in the format +18005550199.'),
|
|
awRequiredWhen: {
|
|
reqExpression: "twilio_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'twilio' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
to_numbers: {
|
|
label: i18n._('Destination SMS Number'),
|
|
dataTitle: i18n._('Destination SMS Number'),
|
|
type: 'textarea',
|
|
rows: 3,
|
|
awPopOver: i18n._('Enter one phone number per line to specify where to route SMS messages.'),
|
|
dataPlacement: 'right',
|
|
dataContainer: "body",
|
|
awRequiredWhen: {
|
|
reqExpression: "twilio_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'twilio' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
account_sid: {
|
|
label: i18n._('Account SID'),
|
|
type: 'text',
|
|
awRequiredWhen: {
|
|
reqExpression: "twilio_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'twilio' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
subdomain: {
|
|
label: i18n._('Pagerduty subdomain'),
|
|
type: 'text',
|
|
awRequiredWhen: {
|
|
reqExpression: "pagerduty_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'pagerduty' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
service_key: {
|
|
label: i18n._('API Service/Integration Key'),
|
|
type: 'text',
|
|
awRequiredWhen: {
|
|
reqExpression: "pagerduty_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'pagerduty' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
client_name: {
|
|
label: i18n._('Client Identifier'),
|
|
type: 'text',
|
|
awRequiredWhen: {
|
|
reqExpression: "pagerduty_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'pagerduty' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
api_url: {
|
|
label: 'API URL',
|
|
type: 'text',
|
|
placeholder: 'https://mycompany.hipchat.com',
|
|
awRequiredWhen: {
|
|
reqExpression: "hipchat_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'hipchat' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
message_from: {
|
|
label: i18n._('Notification Label'),
|
|
type: 'text',
|
|
awRequiredWhen: {
|
|
reqExpression: "hipchat_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'hipchat' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
color: {
|
|
label: i18n._('Notification Color'),
|
|
dataTitle: i18n._('Notification Color'),
|
|
type: 'select',
|
|
ngOptions: 'color for color in hipchatColors track by color',
|
|
awPopOver: i18n._('Specify a notification color. Acceptable colors are: yellow, green, red purple, gray or random.'),
|
|
awRequiredWhen: {
|
|
reqExpression: "hipchat_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'hipchat' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
notify: {
|
|
label: i18n._('Notify Channel'),
|
|
type: 'checkbox',
|
|
ngShow: "notification_type.value == 'hipchat' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
url: {
|
|
label: i18n._('Target URL'),
|
|
type: 'text',
|
|
awRequiredWhen: {
|
|
reqExpression: "webhook_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'webhook' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
headers: {
|
|
label: i18n._('HTTP Headers'),
|
|
dataTitle: i18n._('HTTP Headers'),
|
|
type: 'textarea',
|
|
name: 'headers',
|
|
rows: 5,
|
|
'class': 'Form-formGroup--fullWidth',
|
|
awRequiredWhen: {
|
|
reqExpression: "webhook_required",
|
|
init: "false"
|
|
},
|
|
awPopOver: i18n._('Specify HTTP Headers in JSON format. Refer to the Ansible Tower documentation for example syntax.'),
|
|
dataPlacement: 'right',
|
|
ngShow: "notification_type.value == 'webhook' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
mattermost_url: {
|
|
label: i18n._('Target URL'),
|
|
type: 'text',
|
|
awRequiredWhen: {
|
|
reqExpression: "mattermost_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'mattermost' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
mattermost_username: {
|
|
label: i18n._('Username'),
|
|
type: 'text',
|
|
ngShow: "notification_type.value == 'mattermost' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
mattermost_channel: {
|
|
label: i18n._('Channel'),
|
|
type: 'text',
|
|
ngShow: "notification_type.value == 'mattermost' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
mattermost_icon_url: {
|
|
label: i18n._('Icon URL'),
|
|
type: 'text',
|
|
ngShow: "notification_type.value == 'mattermost' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
mattermost_no_verify_ssl: {
|
|
label: i18n._('Disable SSL Verification'),
|
|
type: 'checkbox',
|
|
ngShow: "notification_type.value == 'mattermost' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
server: {
|
|
label: i18n._('IRC Server Address'),
|
|
type: 'text',
|
|
awRequiredWhen: {
|
|
reqExpression: "irc_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'irc' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
nickname: {
|
|
label: i18n._('IRC Nick'),
|
|
type: 'text',
|
|
awRequiredWhen: {
|
|
reqExpression: "irc_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'irc' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
targets: {
|
|
label: i18n._('Destination Channels or Users'),
|
|
type: 'textarea',
|
|
rows: 3,
|
|
awPopOver: i18n._('Enter one IRC channel or username per line. The pound symbol (#) for channels, and the at (@) symbol for users, are not required.'),
|
|
dataTitle: i18n._('Destination Channels or Users'),
|
|
dataPlacement: 'right',
|
|
dataContainer: "body",
|
|
awRequiredWhen: {
|
|
reqExpression: "irc_required",
|
|
init: "false"
|
|
},
|
|
ngShow: "notification_type.value == 'irc' ",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
use_ssl: {
|
|
label: i18n._('SSL Connection'),
|
|
type: 'checkbox',
|
|
ngShow: "notification_type.value == 'irc'",
|
|
subForm: 'typeSubForm',
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
email_options: {
|
|
label: i18n._('Options'),
|
|
type: 'radio_group',
|
|
subForm: 'typeSubForm',
|
|
ngShow: "notification_type.value == 'email'",
|
|
ngClick: "emailOptionsChange()",
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)',
|
|
options: [{
|
|
value: 'use_tls',
|
|
label: i18n._('Use TLS'),
|
|
ngShow: "notification_type.value == 'email' ",
|
|
labelClass: 'NotificationsForm-radioButtons'
|
|
}, {
|
|
value: 'use_ssl',
|
|
label: i18n._('Use SSL'),
|
|
ngShow: "notification_type.value == 'email'",
|
|
labelClass: 'NotificationsForm-radioButtons'
|
|
}]
|
|
},
|
|
hex_color: {
|
|
label: i18n._('Notification Color'),
|
|
dataTitle: i18n._('Notification Color'),
|
|
type: 'text',
|
|
subForm: 'typeSubForm',
|
|
ngShow: "notification_type.value == 'slack' ",
|
|
ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)',
|
|
awPopOver: i18n._('Specify a notification color. Acceptable colors are hex color code (example: #3af or #789abc) .')
|
|
}
|
|
},
|
|
|
|
buttons: { //for now always generates <button> tags
|
|
cancel: {
|
|
ngClick: 'formCancel()',
|
|
ngShow: '(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
close: {
|
|
ngClick: 'formCancel()',
|
|
ngShow: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)'
|
|
},
|
|
save: {
|
|
ngClick: 'formSave()',
|
|
ngShow: '(notification_template.summary_fields.user_capabilities.edit || canAdd)', //$scope.function to call on click, optional
|
|
ngDisabled: true //Disable when $pristine or $invalid, optional
|
|
}
|
|
}
|
|
};
|
|
}];
|