pager_tree-integrations 1.0.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/pager_tree/integrations/alert.rb +3 -1
- data/app/models/pager_tree/integrations/app_dynamics/v3.rb +74 -0
- data/app/models/pager_tree/integrations/auvik/v3.rb +94 -0
- data/app/models/pager_tree/integrations/aws_cloudwatch/v3.rb +108 -0
- data/app/models/pager_tree/integrations/azure_monitor/v3.rb +79 -0
- data/app/models/pager_tree/integrations/boolean_store_accessor.rb +42 -0
- data/app/models/pager_tree/integrations/channel/hangouts/v3.rb +176 -0
- data/app/models/pager_tree/integrations/channel/mattermost/v3.rb +6 -0
- data/app/models/pager_tree/integrations/channel/microsoft_teams/v3.rb +142 -0
- data/app/models/pager_tree/integrations/channel/slack/v3.rb +136 -0
- data/app/models/pager_tree/integrations/cronitor/v3.rb +64 -0
- data/app/models/pager_tree/integrations/datadog/v3.rb +72 -0
- data/app/models/pager_tree/integrations/dead_mans_snitch/v3.rb +76 -0
- data/app/models/pager_tree/integrations/elast_alert/v3.rb +63 -0
- data/app/models/pager_tree/integrations/form/v3.rb +114 -0
- data/app/models/pager_tree/integrations/freshdesk/v3.rb +103 -0
- data/app/models/pager_tree/integrations/freshservice/v3.rb +103 -0
- data/app/models/pager_tree/integrations/grafana/v3.rb +67 -0
- data/app/models/pager_tree/integrations/healthchecks/v3.rb +68 -0
- data/app/models/pager_tree/integrations/honeybadger/v3.rb +76 -0
- data/app/models/pager_tree/integrations/hyperping/v3.rb +60 -0
- data/app/models/pager_tree/integrations/integration.rb +28 -6
- data/app/models/pager_tree/integrations/jira_server/v3.rb +61 -0
- data/app/models/pager_tree/integrations/jotform/v3.rb +50 -0
- data/app/models/pager_tree/integrations/kapacitor/v3.rb +65 -0
- data/app/models/pager_tree/integrations/logic_monitor/v3.rb +79 -0
- data/app/models/pager_tree/integrations/mattermost/outgoing_webhook/v3.rb +77 -0
- data/app/models/pager_tree/integrations/new_relic/v3.rb +67 -0
- data/app/models/pager_tree/integrations/outgoing_event.rb +2 -0
- data/app/models/pager_tree/integrations/outgoing_webhook/v3.rb +37 -6
- data/app/models/pager_tree/integrations/outgoing_webhook_delivery/hook_relay.rb +8 -6
- data/app/models/pager_tree/integrations/outgoing_webhook_delivery.rb +1 -1
- data/app/models/pager_tree/integrations/pingdom/v3.rb +71 -0
- data/app/models/pager_tree/integrations/prometheus/v3.rb +79 -0
- data/app/models/pager_tree/integrations/prtg/v3.rb +58 -0
- data/app/models/pager_tree/integrations/server_guard24/v3.rb +74 -0
- data/app/models/pager_tree/integrations/site24x7/v3.rb +68 -0
- data/app/models/pager_tree/integrations/solar_winds/v3.rb +77 -0
- data/app/models/pager_tree/integrations/stackdriver/v3.rb +60 -0
- data/app/models/pager_tree/integrations/status_cake/v3.rb +65 -0
- data/app/models/pager_tree/integrations/twilio/incoming_sms/v3.rb +78 -0
- data/app/models/pager_tree/integrations/typeform/v3.rb +43 -0
- data/app/models/pager_tree/integrations/uptime/v3.rb +68 -0
- data/app/models/pager_tree/integrations/uptime_robot/v3.rb +79 -0
- data/app/models/pager_tree/integrations/webhook/v3.rb +112 -0
- data/app/models/pager_tree/integrations/zendesk/v3.rb +83 -0
- data/app/views/pager_tree/integrations/app_dynamics/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/app_dynamics/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/auvik/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/auvik/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/aws_cloudwatch/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/aws_cloudwatch/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/azure_monitor/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/azure_monitor/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/channel/hangouts/v3/_form_options.html.erb +34 -0
- data/app/views/pager_tree/integrations/channel/hangouts/v3/_show_options.html.erb +40 -0
- data/app/views/pager_tree/integrations/channel/mattermost/v3/_form_options.html.erb +1 -0
- data/app/views/pager_tree/integrations/channel/mattermost/v3/_show_options.html.erb +1 -0
- data/app/views/pager_tree/integrations/channel/microsoft_teams/v3/_form_options.html.erb +34 -0
- data/app/views/pager_tree/integrations/channel/microsoft_teams/v3/_show_options.html.erb +40 -0
- data/app/views/pager_tree/integrations/channel/slack/v3/_form_options.html.erb +34 -0
- data/app/views/pager_tree/integrations/channel/slack/v3/_show_options.html.erb +40 -0
- data/app/views/pager_tree/integrations/cronitor/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/cronitor/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/datadog/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/datadog/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/dead_mans_snitch/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/dead_mans_snitch/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/elast_alert/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/elast_alert/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/form/v3/_form_options.html.erb +64 -0
- data/app/views/pager_tree/integrations/form/v3/_show_options.html.erb +122 -0
- data/app/views/pager_tree/integrations/freshdesk/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/freshdesk/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/freshservice/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/freshservice/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/grafana/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/grafana/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/healthchecks/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/healthchecks/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/honeybadger/v3/_form_options.html.erb +7 -0
- data/app/views/pager_tree/integrations/honeybadger/v3/_show_options.html.erb +12 -0
- data/app/views/pager_tree/integrations/hyperping/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/hyperping/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/jira_server/v3/_form_options.html.erb +7 -0
- data/app/views/pager_tree/integrations/jira_server/v3/_show_options.html.erb +12 -0
- data/app/views/pager_tree/integrations/jotform/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/jotform/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/kapacitor/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/kapacitor/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/logic_monitor/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/logic_monitor/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/mattermost/outgoing_webhook/v3/_form_options.html.erb +7 -0
- data/app/views/pager_tree/integrations/mattermost/outgoing_webhook/v3/_show_options.html.erb +12 -0
- data/app/views/pager_tree/integrations/new_relic/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/new_relic/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/outgoing_webhook/v3/_form_options.html.erb +12 -4
- data/app/views/pager_tree/integrations/outgoing_webhook/v3/_show_options.html.erb +20 -2
- data/app/views/pager_tree/integrations/pingdom/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/pingdom/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/prometheus/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/prometheus/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/prtg/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/prtg/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/server_guard24/v3/_form_options.html.erb +7 -0
- data/app/views/pager_tree/integrations/server_guard24/v3/_show_options.html.erb +12 -0
- data/app/views/pager_tree/integrations/site24x7/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/site24x7/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/solar_winds/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/solar_winds/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/stackdriver/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/stackdriver/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/status_cake/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/status_cake/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/twilio/incoming_sms/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/twilio/incoming_sms/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/typeform/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/typeform/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/uptime/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/uptime/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/uptime_robot/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/uptime_robot/v3/_show_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/webhook/v3/_form_options.html.erb +15 -0
- data/app/views/pager_tree/integrations/webhook/v3/_show_options.html.erb +26 -0
- data/app/views/pager_tree/integrations/zendesk/v3/_form_options.html.erb +0 -0
- data/app/views/pager_tree/integrations/zendesk/v3/_show_options.html.erb +0 -0
- data/config/locales/en.yml +83 -23
- data/lib/generators/integration/integration_generator.rb +2 -1
- data/lib/generators/integration/templates/model.rb.tt +16 -6
- data/lib/pager_tree/integrations/version.rb +1 -1
- metadata +121 -3
@@ -0,0 +1,112 @@
|
|
1
|
+
module PagerTree::Integrations
|
2
|
+
class Webhook::V3 < Integration
|
3
|
+
OPTIONS = [
|
4
|
+
{key: :token, type: :string, default: nil},
|
5
|
+
{key: :capture_additional_data, type: :boolean, default: false}
|
6
|
+
]
|
7
|
+
store_accessor :options, *OPTIONS.map { |x| x[:key] }.map(&:to_s), prefix: "option"
|
8
|
+
|
9
|
+
after_initialize do
|
10
|
+
self.option_token ||= nil
|
11
|
+
self.option_capture_additional_data ||= false
|
12
|
+
end
|
13
|
+
|
14
|
+
def adapter_should_block_incoming?(request)
|
15
|
+
self.option_token.present? && (request.headers["pagertree-token"] != self.option_token)
|
16
|
+
end
|
17
|
+
|
18
|
+
def adapter_supports_incoming?
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
def adapter_supports_outgoing?
|
23
|
+
false
|
24
|
+
end
|
25
|
+
|
26
|
+
def adapter_incoming_can_defer?
|
27
|
+
true
|
28
|
+
end
|
29
|
+
|
30
|
+
def adapter_thirdparty_id
|
31
|
+
adapter_incoming_request_params.dig("Id") || adapter_incoming_request_params.dig("id")
|
32
|
+
end
|
33
|
+
|
34
|
+
def adapter_action
|
35
|
+
case adapter_incoming_request_params.dig("event_type").to_s.downcase.strip
|
36
|
+
when "create"
|
37
|
+
:create
|
38
|
+
# when "acknowledge"
|
39
|
+
# :acknowledge
|
40
|
+
when "resolve"
|
41
|
+
:resolve
|
42
|
+
else
|
43
|
+
:other
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def adapter_process_create
|
48
|
+
Alert.new(
|
49
|
+
title: _title,
|
50
|
+
description: _description,
|
51
|
+
urgency: _urgency,
|
52
|
+
thirdparty_id: adapter_thirdparty_id,
|
53
|
+
dedup_keys: [adapter_thirdparty_id],
|
54
|
+
incident: _incident,
|
55
|
+
incident_severity: _incident_severity,
|
56
|
+
incident_message: _incident_message,
|
57
|
+
tags: _tags,
|
58
|
+
meta: _meta,
|
59
|
+
additional_data: _additional_datums
|
60
|
+
)
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
def _title
|
66
|
+
adapter_incoming_request_params.dig("Title") || adapter_incoming_request_params.dig("title")
|
67
|
+
end
|
68
|
+
|
69
|
+
def _description
|
70
|
+
adapter_incoming_request_params.dig("Description") || adapter_incoming_request_params.dig("description")
|
71
|
+
end
|
72
|
+
|
73
|
+
def _tags
|
74
|
+
tags = adapter_incoming_request_params.dig("Tags") || adapter_incoming_request_params.dig("tags")
|
75
|
+
Array(tags).compact_blank.map(&:to_s).uniq
|
76
|
+
end
|
77
|
+
|
78
|
+
def _urgency
|
79
|
+
urgency = adapter_incoming_request_params.dig("Urgency") || adapter_incoming_request_params.dig("urgency")
|
80
|
+
urgency&.to_s&.downcase&.strip
|
81
|
+
end
|
82
|
+
|
83
|
+
def _incident
|
84
|
+
!!adapter_incoming_request_params.dig("Meta", "incident")
|
85
|
+
end
|
86
|
+
|
87
|
+
def _incident_message
|
88
|
+
adapter_incoming_request_params.dig("Meta", "incident_message")
|
89
|
+
end
|
90
|
+
|
91
|
+
def _incident_severity
|
92
|
+
adapter_incoming_request_params.dig("Meta", "incident_severity")&.to_s&.upcase&.strip
|
93
|
+
end
|
94
|
+
|
95
|
+
def _meta
|
96
|
+
meta = adapter_incoming_request_params.dig("Meta")
|
97
|
+
meta.is_a?(Hash) ? meta.except("incident", "incident_message", "incident_severity") : {}
|
98
|
+
end
|
99
|
+
|
100
|
+
def _additional_datums
|
101
|
+
if self.option_capture_additional_data == true
|
102
|
+
adapter_incoming_request_params.except(
|
103
|
+
"Id", "Title", "Description", "Urgency", "Tags", "Meta", "id", "title", "description", "urgency", "tags", "meta", "event_type", "pagertree_integration_id"
|
104
|
+
).map do |key, value|
|
105
|
+
AdditionalDatum.new(format: "text", label: key, value: value.to_s)
|
106
|
+
end
|
107
|
+
else
|
108
|
+
[]
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module PagerTree::Integrations
|
2
|
+
class Zendesk::V3 < Integration
|
3
|
+
OPTIONS = []
|
4
|
+
store_accessor :options, *OPTIONS.map { |x| x[:key] }.map(&:to_s), prefix: "option"
|
5
|
+
|
6
|
+
after_initialize do
|
7
|
+
end
|
8
|
+
|
9
|
+
def adapter_supports_incoming?
|
10
|
+
true
|
11
|
+
end
|
12
|
+
|
13
|
+
def adapter_supports_outgoing?
|
14
|
+
false
|
15
|
+
end
|
16
|
+
|
17
|
+
def adapter_incoming_can_defer?
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
21
|
+
def adapter_thirdparty_id
|
22
|
+
adapter_incoming_request_params.dig("id")
|
23
|
+
end
|
24
|
+
|
25
|
+
def adapter_action
|
26
|
+
case adapter_incoming_request_params.dig("event_type")
|
27
|
+
when "create"
|
28
|
+
:create
|
29
|
+
when "acknowledge"
|
30
|
+
:acknowledge
|
31
|
+
when "resolve"
|
32
|
+
:resolve
|
33
|
+
else
|
34
|
+
:other
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def adapter_process_create
|
39
|
+
Alert.new(
|
40
|
+
title: _title,
|
41
|
+
description: _description,
|
42
|
+
urgency: _urgency,
|
43
|
+
thirdparty_id: adapter_thirdparty_id,
|
44
|
+
dedup_keys: [adapter_thirdparty_id],
|
45
|
+
additional_data: _additional_datums
|
46
|
+
)
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def _title
|
52
|
+
adapter_incoming_request_params.dig("title")
|
53
|
+
end
|
54
|
+
|
55
|
+
def _description
|
56
|
+
# this comes in as text format, so wrap it in a pre tag so it shows nicely in the web app
|
57
|
+
"<pre>#{adapter_incoming_request_params.dig("description")}</pre>"
|
58
|
+
end
|
59
|
+
|
60
|
+
def _additional_datums
|
61
|
+
[
|
62
|
+
AdditionalDatum.new(format: "link", label: "Zendesk Link", value: adapter_incoming_request_params.dig("link")),
|
63
|
+
AdditionalDatum.new(format: "text", label: "Priority", value: adapter_incoming_request_params.dig("priority")),
|
64
|
+
AdditionalDatum.new(format: "text", label: "Ticket Type", value: adapter_incoming_request_params.dig("ticket_type")),
|
65
|
+
AdditionalDatum.new(format: "text", label: "Via", value: adapter_incoming_request_params.dig("via")),
|
66
|
+
AdditionalDatum.new(format: "text", label: "Assignee Name", value: adapter_incoming_request_params.dig("assignee_name"))
|
67
|
+
]
|
68
|
+
end
|
69
|
+
|
70
|
+
def _urgency
|
71
|
+
case adapter_incoming_request_params.dig("priority").to_s.downcase
|
72
|
+
when "urgent"
|
73
|
+
"critical"
|
74
|
+
when "high"
|
75
|
+
"high"
|
76
|
+
when "normal"
|
77
|
+
"medium"
|
78
|
+
when "low"
|
79
|
+
"low"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
2
|
+
<div class="form-group md:col-span-3">
|
3
|
+
<%= form.label :option_incoming_webhook_url %>
|
4
|
+
<%= form.text_field :option_incoming_webhook_url, class: "form-control" %>
|
5
|
+
<p class="form-hint"><%== t("pager_tree.integrations.common.option_incoming_webhook_url_hint_html") %></p>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<%
|
9
|
+
opts = [
|
10
|
+
:alert_open,
|
11
|
+
:alert_acknowledged,
|
12
|
+
:alert_resolved,
|
13
|
+
:alert_dropped,
|
14
|
+
]
|
15
|
+
%>
|
16
|
+
<% opts.each do |opt| %>
|
17
|
+
<div class="form-group">
|
18
|
+
<%= form.check_box "option_#{opt.to_s}".to_sym, class: "form-checkbox mr-1" %>
|
19
|
+
<%= form.label "option_#{opt.to_s}".to_sym, class: "inline-block" %>
|
20
|
+
<p class="form-hint"><%== t("pager_tree.integrations.common.option_#{opt.to_s}_hint_html") %></p>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
</div>
|
25
|
+
|
26
|
+
|
27
|
+
<div class="grid grid-cols-1 gap-4">
|
28
|
+
<%= tag.div class: "form-group", data: {controller: "code-editor", code_editor_language_value: "yaml", code_editor_read_only_value: false } do %>
|
29
|
+
<%= form.label :option_outgoing_rules, t("pager_tree.integrations.common.option_outgoing_rules") %>
|
30
|
+
<%= form.hidden_field :option_outgoing_rules, class: "form-control", data: {code_editor_target: "form"} %>
|
31
|
+
<%= tag.div class: "h-96", data: {code_editor_target: "editor"} do %><%= form.object.option_outgoing_rules %><% end %>
|
32
|
+
<p class="form-hint"><%== t("pager_tree.integrations.common.option_outgoing_rules_hint_html") %></p>
|
33
|
+
<% end %>
|
34
|
+
</div>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<div class="sm:col-span-2">
|
2
|
+
<dt class="text-sm font-medium text-gray-500">
|
3
|
+
<%= t("activerecord.attributes.pager_tree/integrations/integration.option_incoming_webhook_url") %>
|
4
|
+
</dt>
|
5
|
+
<dd class="mt-1 text-sm text-gray-900">
|
6
|
+
<div class="flex items-center gap-2">
|
7
|
+
<p class="text-sm truncate">
|
8
|
+
<%= integration.option_incoming_webhook_url %>
|
9
|
+
</p>
|
10
|
+
</div>
|
11
|
+
</dd>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<%
|
15
|
+
opts = [
|
16
|
+
:alert_open,
|
17
|
+
:alert_acknowledged,
|
18
|
+
:alert_resolved,
|
19
|
+
:alert_dropped,
|
20
|
+
]
|
21
|
+
%>
|
22
|
+
<% opts.each do |opt| %>
|
23
|
+
<div class="sm:col-span-1">
|
24
|
+
<dt class="text-sm font-medium text-gray-500">
|
25
|
+
<%= t("activerecord.attributes.pager_tree/integrations/integration.option_#{opt.to_s}") %>
|
26
|
+
</dt>
|
27
|
+
<dd class="mt-1 text-sm text-gray-900">
|
28
|
+
<%= render partial: "shared/components/badge_enabled", locals: { enabled: integration.send("option_#{opt.to_s}") } %>
|
29
|
+
</dd>
|
30
|
+
</div>
|
31
|
+
<% end %>
|
32
|
+
|
33
|
+
<div class="sm:col-span-1">
|
34
|
+
<dt class="text-sm font-medium text-gray-500">
|
35
|
+
<%= t("pager_tree.integrations.common.option_outgoing_rules") %>
|
36
|
+
</dt>
|
37
|
+
<dd class="mt-1 text-sm text-gray-900">
|
38
|
+
<%= render partial: "shared/components/badge_enabled", locals: { enabled: integration.option_outgoing_rules.present? } %>
|
39
|
+
</dd>
|
40
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render partial: "pager_tree/integrations/channel/slack/v3/form_options", locals: local_assigns %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render partial: "pager_tree/integrations/channel/slack/v3/show_options", locals: local_assigns %>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
2
|
+
<div class="form-group md:col-span-3">
|
3
|
+
<%= form.label :option_incoming_webhook_url %>
|
4
|
+
<%= form.text_field :option_incoming_webhook_url, class: "form-control" %>
|
5
|
+
<p class="form-hint"><%== t("pager_tree.integrations.common.option_incoming_webhook_url_hint_html") %></p>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<%
|
9
|
+
opts = [
|
10
|
+
:alert_open,
|
11
|
+
:alert_acknowledged,
|
12
|
+
:alert_resolved,
|
13
|
+
:alert_dropped,
|
14
|
+
]
|
15
|
+
%>
|
16
|
+
<% opts.each do |opt| %>
|
17
|
+
<div class="form-group">
|
18
|
+
<%= form.check_box "option_#{opt.to_s}".to_sym, class: "form-checkbox mr-1" %>
|
19
|
+
<%= form.label "option_#{opt.to_s}".to_sym, class: "inline-block" %>
|
20
|
+
<p class="form-hint"><%== t("pager_tree.integrations.common.option_#{opt.to_s}_hint_html") %></p>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
</div>
|
25
|
+
|
26
|
+
|
27
|
+
<div class="grid grid-cols-1 gap-4">
|
28
|
+
<%= tag.div class: "form-group", data: {controller: "code-editor", code_editor_language_value: "yaml", code_editor_read_only_value: false } do %>
|
29
|
+
<%= form.label :option_outgoing_rules, t("pager_tree.integrations.common.option_outgoing_rules") %>
|
30
|
+
<%= form.hidden_field :option_outgoing_rules, class: "form-control", data: {code_editor_target: "form"} %>
|
31
|
+
<%= tag.div class: "h-96", data: {code_editor_target: "editor"} do %><%= form.object.option_outgoing_rules %><% end %>
|
32
|
+
<p class="form-hint"><%== t("pager_tree.integrations.common.option_outgoing_rules_hint_html") %></p>
|
33
|
+
<% end %>
|
34
|
+
</div>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<div class="sm:col-span-2">
|
2
|
+
<dt class="text-sm font-medium text-gray-500">
|
3
|
+
<%= t("activerecord.attributes.pager_tree/integrations/integration.option_incoming_webhook_url") %>
|
4
|
+
</dt>
|
5
|
+
<dd class="mt-1 text-sm text-gray-900">
|
6
|
+
<div class="flex items-center gap-2">
|
7
|
+
<p class="text-sm truncate">
|
8
|
+
<%= integration.option_incoming_webhook_url %>
|
9
|
+
</p>
|
10
|
+
</div>
|
11
|
+
</dd>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<%
|
15
|
+
opts = [
|
16
|
+
:alert_open,
|
17
|
+
:alert_acknowledged,
|
18
|
+
:alert_resolved,
|
19
|
+
:alert_dropped,
|
20
|
+
]
|
21
|
+
%>
|
22
|
+
<% opts.each do |opt| %>
|
23
|
+
<div class="sm:col-span-1">
|
24
|
+
<dt class="text-sm font-medium text-gray-500">
|
25
|
+
<%= t("activerecord.attributes.pager_tree/integrations/integration.option_#{opt.to_s}") %>
|
26
|
+
</dt>
|
27
|
+
<dd class="mt-1 text-sm text-gray-900">
|
28
|
+
<%= render partial: "shared/components/badge_enabled", locals: { enabled: integration.send("option_#{opt.to_s}") } %>
|
29
|
+
</dd>
|
30
|
+
</div>
|
31
|
+
<% end %>
|
32
|
+
|
33
|
+
<div class="sm:col-span-1">
|
34
|
+
<dt class="text-sm font-medium text-gray-500">
|
35
|
+
<%= t("pager_tree.integrations.common.option_outgoing_rules") %>
|
36
|
+
</dt>
|
37
|
+
<dd class="mt-1 text-sm text-gray-900">
|
38
|
+
<%= render partial: "shared/components/badge_enabled", locals: { enabled: integration.option_outgoing_rules.present? } %>
|
39
|
+
</dd>
|
40
|
+
</div>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
2
|
+
<div class="form-group md:col-span-3">
|
3
|
+
<%= form.label :option_incoming_webhook_url %>
|
4
|
+
<%= form.text_field :option_incoming_webhook_url, class: "form-control" %>
|
5
|
+
<p class="form-hint"><%== t("pager_tree.integrations.common.option_incoming_webhook_url_hint_html") %></p>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<%
|
9
|
+
opts = [
|
10
|
+
:alert_open,
|
11
|
+
:alert_acknowledged,
|
12
|
+
:alert_resolved,
|
13
|
+
:alert_dropped,
|
14
|
+
]
|
15
|
+
%>
|
16
|
+
<% opts.each do |opt| %>
|
17
|
+
<div class="form-group">
|
18
|
+
<%= form.check_box "option_#{opt.to_s}".to_sym, class: "form-checkbox mr-1" %>
|
19
|
+
<%= form.label "option_#{opt.to_s}".to_sym, class: "inline-block" %>
|
20
|
+
<p class="form-hint"><%== t("pager_tree.integrations.common.option_#{opt.to_s}_hint_html") %></p>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
</div>
|
25
|
+
|
26
|
+
|
27
|
+
<div class="grid grid-cols-1 gap-4">
|
28
|
+
<%= tag.div class: "form-group", data: {controller: "code-editor", code_editor_language_value: "yaml", code_editor_read_only_value: false } do %>
|
29
|
+
<%= form.label :option_outgoing_rules, t("pager_tree.integrations.common.option_outgoing_rules") %>
|
30
|
+
<%= form.hidden_field :option_outgoing_rules, class: "form-control", data: {code_editor_target: "form"} %>
|
31
|
+
<%= tag.div class: "h-96", data: {code_editor_target: "editor"} do %><%= form.object.option_outgoing_rules %><% end %>
|
32
|
+
<p class="form-hint"><%== t("pager_tree.integrations.common.option_outgoing_rules_hint_html") %></p>
|
33
|
+
<% end %>
|
34
|
+
</div>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<div class="sm:col-span-2">
|
2
|
+
<dt class="text-sm font-medium text-gray-500">
|
3
|
+
<%= t("activerecord.attributes.pager_tree/integrations/integration.option_incoming_webhook_url") %>
|
4
|
+
</dt>
|
5
|
+
<dd class="mt-1 text-sm text-gray-900">
|
6
|
+
<div class="flex items-center gap-2">
|
7
|
+
<p class="text-sm truncate">
|
8
|
+
<%= integration.option_incoming_webhook_url %>
|
9
|
+
</p>
|
10
|
+
</div>
|
11
|
+
</dd>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<%
|
15
|
+
opts = [
|
16
|
+
:alert_open,
|
17
|
+
:alert_acknowledged,
|
18
|
+
:alert_resolved,
|
19
|
+
:alert_dropped,
|
20
|
+
]
|
21
|
+
%>
|
22
|
+
<% opts.each do |opt| %>
|
23
|
+
<div class="sm:col-span-1">
|
24
|
+
<dt class="text-sm font-medium text-gray-500">
|
25
|
+
<%= t("activerecord.attributes.pager_tree/integrations/integration.option_#{opt.to_s}") %>
|
26
|
+
</dt>
|
27
|
+
<dd class="mt-1 text-sm text-gray-900">
|
28
|
+
<%= render partial: "shared/components/badge_enabled", locals: { enabled: integration.send("option_#{opt.to_s}") } %>
|
29
|
+
</dd>
|
30
|
+
</div>
|
31
|
+
<% end %>
|
32
|
+
|
33
|
+
<div class="sm:col-span-1">
|
34
|
+
<dt class="text-sm font-medium text-gray-500">
|
35
|
+
<%= t("pager_tree.integrations.common.option_outgoing_rules") %>
|
36
|
+
</dt>
|
37
|
+
<dd class="mt-1 text-sm text-gray-900">
|
38
|
+
<%= render partial: "shared/components/badge_enabled", locals: { enabled: integration.option_outgoing_rules.present? } %>
|
39
|
+
</dd>
|
40
|
+
</div>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,64 @@
|
|
1
|
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
2
|
+
<div class="form-group md:col-span-2">
|
3
|
+
<%= form.label :option_form_title %>
|
4
|
+
<%= form.text_field :option_form_title, class: "form-control" %>
|
5
|
+
<p class="form-hint"><%== t(".option_form_title_hint_html") %></p>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<div class="form-group md:col-span-2">
|
9
|
+
<%= form.label :option_form_header %>
|
10
|
+
<%= form.text_field :option_form_header, class: "form-control" %>
|
11
|
+
<p class="form-hint"><%== t(".option_form_header_hint_html") %></p>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="form-group md:col-span-2">
|
15
|
+
<%= form.label :option_form_instructions %>
|
16
|
+
<%= form.text_area :option_form_instructions, class: "form-control" %>
|
17
|
+
<p class="form-hint"><%== t(".option_form_instructions_hint_html") %></p>
|
18
|
+
</div>
|
19
|
+
|
20
|
+
<div class="form-group">
|
21
|
+
<%= form.label :option_form_footer_text %>
|
22
|
+
<%= form.text_field :option_form_footer_text, class: "form-control" %>
|
23
|
+
<p class="form-hint"><%== t(".option_form_footer_text_hint_html") %></p>
|
24
|
+
</div>
|
25
|
+
|
26
|
+
<div class="form-group">
|
27
|
+
<%= form.label :option_form_footer_link %>
|
28
|
+
<%= form.text_field :option_form_footer_link, class: "form-control" %>
|
29
|
+
<p class="form-hint"><%== t(".option_form_footer_link_hint_html") %></p>
|
30
|
+
</div>
|
31
|
+
|
32
|
+
<div class="form-group">
|
33
|
+
<%= form.label :option_form_logo %>
|
34
|
+
<%= form.file_field :option_form_logo, accept: "image/*", class: "file:mr-4 file:py-2 file:px-4 file:rounded-full file:border-0 file:text-sm file:font-semibold file:bg-gray-50 file:text-gray-700 hover:file:bg-gray-100" %>
|
35
|
+
<p class="form-hint"><%== t(".option_form_logo_hint_html") %></p>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div class="grid grid-cols-4 gap-4">
|
40
|
+
|
41
|
+
<div class="form-group">
|
42
|
+
<%= form.check_box :option_form_email_required, class: "form-checkbox mr-1" %>
|
43
|
+
<%= form.label :option_form_email_required, class: "inline-block" %>
|
44
|
+
<p class="form-hint"><%== t(".option_form_email_required_hint_html") %></p>
|
45
|
+
</div>
|
46
|
+
|
47
|
+
<div class="form-group">
|
48
|
+
<%= form.check_box :option_form_phone_required, class: "form-checkbox mr-1" %>
|
49
|
+
<%= form.label :option_form_phone_required, class: "inline-block" %>
|
50
|
+
<p class="form-hint"><%== t(".option_form_phone_required_hint_html") %></p>
|
51
|
+
</div>
|
52
|
+
|
53
|
+
<div class="form-group">
|
54
|
+
<%= form.check_box :option_form_description_required, class: "form-checkbox mr-1" %>
|
55
|
+
<%= form.label :option_form_description_required, class: "inline-block" %>
|
56
|
+
<p class="form-hint"><%== t(".option_form_description_required_hint_html") %></p>
|
57
|
+
</div>
|
58
|
+
|
59
|
+
<div class="form-group">
|
60
|
+
<%= form.check_box :option_form_urgency_required, class: "form-checkbox mr-1" %>
|
61
|
+
<%= form.label :option_form_urgency_required, class: "inline-block" %>
|
62
|
+
<p class="form-hint"><%== t(".option_form_urgency_required_hint_html") %></p>
|
63
|
+
</div>
|
64
|
+
</div>
|
@@ -0,0 +1,122 @@
|
|
1
|
+
<div class="sm:col-span-2">
|
2
|
+
<dt class="text-sm font-medium text-gray-500">
|
3
|
+
<%= t("activerecord.attributes.pager_tree/integrations/form/v3.option_form_title") %>
|
4
|
+
</dt>
|
5
|
+
<dd class="mt-1 text-sm text-gray-900">
|
6
|
+
<div class="flex items-center gap-2">
|
7
|
+
<p class="text-sm truncate">
|
8
|
+
<%= integration.option_form_title %>
|
9
|
+
</p>
|
10
|
+
</div>
|
11
|
+
</dd>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="sm:col-span-2">
|
15
|
+
<dt class="text-sm font-medium text-gray-500">
|
16
|
+
<%= t("activerecord.attributes.pager_tree/integrations/form/v3.option_form_header") %>
|
17
|
+
</dt>
|
18
|
+
<dd class="mt-1 text-sm text-gray-900">
|
19
|
+
<div class="flex items-center gap-2">
|
20
|
+
<p class="text-sm truncate">
|
21
|
+
<%= integration.option_form_header %>
|
22
|
+
</p>
|
23
|
+
</div>
|
24
|
+
</dd>
|
25
|
+
</div>
|
26
|
+
|
27
|
+
<div class="sm:col-span-2">
|
28
|
+
<dt class="text-sm font-medium text-gray-500">
|
29
|
+
<%= t("activerecord.attributes.pager_tree/integrations/form/v3.option_form_instructions") %>
|
30
|
+
</dt>
|
31
|
+
<dd class="mt-1 text-sm text-gray-900">
|
32
|
+
<div class="flex items-center gap-2">
|
33
|
+
<p class="text-sm truncate">
|
34
|
+
<%= integration.option_form_instructions %>
|
35
|
+
</p>
|
36
|
+
</div>
|
37
|
+
</dd>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
<div class="sm:col-span-2">
|
41
|
+
<dt class="text-sm font-medium text-gray-500">
|
42
|
+
<%= t("activerecord.attributes.pager_tree/integrations/form/v3.option_form_footer_text") %>
|
43
|
+
</dt>
|
44
|
+
<dd class="mt-1 text-sm text-gray-900">
|
45
|
+
<div class="flex items-center gap-2">
|
46
|
+
<p class="text-sm truncate">
|
47
|
+
<%= integration.option_form_footer_text %>
|
48
|
+
</p>
|
49
|
+
</div>
|
50
|
+
</dd>
|
51
|
+
</div>
|
52
|
+
|
53
|
+
<div class="sm:col-span-2">
|
54
|
+
<dt class="text-sm font-medium text-gray-500">
|
55
|
+
<%= t("activerecord.attributes.pager_tree/integrations/form/v3.option_form_footer_link") %>
|
56
|
+
</dt>
|
57
|
+
<dd class="mt-1 text-sm text-gray-900">
|
58
|
+
<div class="flex items-center gap-2">
|
59
|
+
<p class="text-sm truncate">
|
60
|
+
<%= integration.option_form_footer_link %>
|
61
|
+
</p>
|
62
|
+
</div>
|
63
|
+
</dd>
|
64
|
+
</div>
|
65
|
+
|
66
|
+
<div class="sm:col-span-2">
|
67
|
+
<dt class="text-sm font-medium text-gray-500">
|
68
|
+
<%= t("activerecord.attributes.pager_tree/integrations/form/v3.option_form_logo") %>
|
69
|
+
</dt>
|
70
|
+
<dd class="mt-1 text-sm text-gray-900">
|
71
|
+
<div class="flex items-center gap-2">
|
72
|
+
<p class="text-sm truncate">
|
73
|
+
<% if integration.option_form_logo.present? %>
|
74
|
+
<%= link_to integration.option_form_logo.blob.filename, integration.option_form_logo, target: "_blank" %>
|
75
|
+
<% else %>
|
76
|
+
-
|
77
|
+
<% end %>
|
78
|
+
</p>
|
79
|
+
<%= link_to t("delete"), main_app.integration_attachment_path(integration, integration.option_form_logo.id), method: :delete, class: "btn btn-small btn-danger outline", data: { confirm: t("are_you_sure") } if integration.option_form_logo.present? %>
|
80
|
+
</div>
|
81
|
+
</dd>
|
82
|
+
</div>
|
83
|
+
|
84
|
+
<div class="sm:col-span-1">
|
85
|
+
<dt class="text-sm font-medium text-gray-500">
|
86
|
+
<%= t("activerecord.attributes.pager_tree/integrations/form/v3.option_form_email_required") %>
|
87
|
+
</dt>
|
88
|
+
<dd class="mt-1 text-sm text-gray-900">
|
89
|
+
<div class="flex items-center gap-2">
|
90
|
+
<p class="text-sm truncate">
|
91
|
+
<%= render partial: "shared/components/badge_enabled", locals: { enabled: integration.option_form_email_required } %>
|
92
|
+
</p>
|
93
|
+
</div>
|
94
|
+
</dd>
|
95
|
+
</div>
|
96
|
+
|
97
|
+
<div class="sm:col-span-1">
|
98
|
+
<dt class="text-sm font-medium text-gray-500">
|
99
|
+
<%= t("activerecord.attributes.pager_tree/integrations/form/v3.option_form_phone_required") %>
|
100
|
+
</dt>
|
101
|
+
<dd class="mt-1 text-sm text-gray-900">
|
102
|
+
<%= render partial: "shared/components/badge_enabled", locals: { enabled: integration.option_form_phone_required } %>
|
103
|
+
</dd>
|
104
|
+
</div>
|
105
|
+
|
106
|
+
<div class="sm:col-span-1">
|
107
|
+
<dt class="text-sm font-medium text-gray-500">
|
108
|
+
<%= t("activerecord.attributes.pager_tree/integrations/form/v3.option_form_description_required") %>
|
109
|
+
</dt>
|
110
|
+
<dd class="mt-1 text-sm text-gray-900">
|
111
|
+
<%= render partial: "shared/components/badge_enabled", locals: { enabled: integration.option_form_description_required } %>
|
112
|
+
</dd>
|
113
|
+
</div>
|
114
|
+
|
115
|
+
<div class="sm:col-span-1">
|
116
|
+
<dt class="text-sm font-medium text-gray-500">
|
117
|
+
<%= t("activerecord.attributes.pager_tree/integrations/form/v3.option_form_urgency_required") %>
|
118
|
+
</dt>
|
119
|
+
<dd class="mt-1 text-sm text-gray-900">
|
120
|
+
<%= render partial: "shared/components/badge_enabled", locals: { enabled: integration.option_form_urgency_required } %>
|
121
|
+
</dd>
|
122
|
+
</div>
|
File without changes
|
File without changes
|
File without changes
|