summaryrefslogtreecommitdiff
path: root/httemplate
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2015-10-20 20:56:13 -0500
committerMitch Jackson <mitch@freeside.biz>2018-10-09 12:20:05 -0400
commit6d42808bbd3ac9c840c6259aef1dc79a0dc620ff (patch)
treecdcdeeb07f00b43774408e43930c06c398cf7f42 /httemplate
parent61d5de1214428faa8bae0a50653ce8dff8d98ad8 (diff)
RT#38217: Send email when logging conditions are met
Diffstat (limited to 'httemplate')
-rw-r--r--httemplate/browse/log_email.html92
-rw-r--r--httemplate/edit/log_email.html45
-rw-r--r--httemplate/edit/process/log_email.html18
-rw-r--r--httemplate/elements/menu.html4
-rw-r--r--httemplate/elements/tr-select-msg_template.html12
-rw-r--r--httemplate/misc/delete-log_email.html20
-rw-r--r--httemplate/search/log.html4
7 files changed, 195 insertions, 0 deletions
diff --git a/httemplate/browse/log_email.html b/httemplate/browse/log_email.html
new file mode 100644
index 000000000..0f64dd454
--- /dev/null
+++ b/httemplate/browse/log_email.html
@@ -0,0 +1,92 @@
+<% include('/elements/init_overlib.html') %>
+<% include('/browse/elements/browse.html',
+ 'title' => 'Log email condition configuration',
+ 'name_singular' => 'condition',
+ 'html_init' => '<P STYLE="margin-top: 0">'
+ . $add_condition_link
+ . ' | '
+ . $system_log_link
+ . '</P>'
+ . '<SCRIPT>'
+ . $areyousure
+ . '</SCRIPT>',
+ 'query' => $query,
+ 'count_query' => $count_query,
+ 'header' => [ '#',
+ 'Context',
+ 'Min. Level',
+ 'Template',
+ 'To',
+ '',
+ ],
+ 'fields' => [ 'logemailnum',
+ sub { $_[0]->context || '(all)' },
+ sub { $FS::Log::LEVELS[$_[0]->min_level] },
+ 'msgname',
+ 'to_addr',
+ $actions,
+ ],
+ 'sort_fields' => [ 'logemailnum',
+ 'context',
+ 'min_level',
+ 'msgname',
+ 'to_addr',
+ '',
+ ],
+ 'links' => [ $editlink,
+ $editlink,
+ $editlink,
+ $editlink,
+ $editlink,
+ '',
+ ],
+
+ ) %>
+
+<%init>
+
+my $curuser = $FS::CurrentUser::CurrentUser;
+
+die "access denied"
+ unless $curuser->access_right([ 'View system logs', 'Configuration' ]);
+
+my $add_condition_link = include('/elements/popup_link.html',
+ 'action' => $p.'edit/log_email.html?popup=1',
+ 'label' => 'Add log email condition',
+ 'actionlabel' => 'Add log email condition',
+);
+
+my $system_log_link = qq(<A HREF="${p}search/log.html">System Log</A>);
+
+my $query = {
+ 'table' => 'log_email',
+ 'select' => '*',
+ 'addl_from' => 'LEFT JOIN msg_template USING (msgnum)',
+ 'hashref' => { },
+};
+
+my $count_query = "SELECT COUNT(*) FROM log_email";
+
+my $actions = sub {
+ my $log_email = shift;
+ my $logemailnum = $log_email->logemailnum;
+ qq!<A HREF="javascript:areyousure_delete_log_email($logemailnum)">(delete)</A>!;
+};
+
+my $areyousure_onclick = include('/elements/popup_link_onclick.html',
+ 'js_action' => q(') . $p . q(misc/delete-log_email.html?logemailnum=' + logemailnum),
+ 'actionlabel' => 'Delete log email condition',
+);
+
+my $areyousure = <<EOF;
+function areyousure_delete_log_email(logemailnum) {
+ if (confirm('Are you sure you want to delete log email condition #'+logemailnum+'?')) {
+${areyousure_onclick}
+ }
+}
+EOF
+
+my $editlink = [ $p.'edit/log_email.html?logemailnum=', 'logemailnum' ];
+
+</%init>
+
diff --git a/httemplate/edit/log_email.html b/httemplate/edit/log_email.html
new file mode 100644
index 000000000..bbce7c708
--- /dev/null
+++ b/httemplate/edit/log_email.html
@@ -0,0 +1,45 @@
+<% include( 'elements/edit.html',
+ 'name_singular' => 'log email condition',
+ 'table' => 'log_email',
+ 'fields' => [
+ { 'field' => 'context',
+ 'type' => 'select',
+ 'options' => [ '', @contexts ],
+ 'labels' => { '' => '(all)', map { $_ => $_ } @contexts },
+ 'curr_value' => scalar($cgi->param('context')),
+ },
+ { 'field' => 'min_level',
+ 'type' => 'select',
+ 'options' => [ 0..7 ],
+ 'labels' => { map {$_ => $FS::Log::LEVELS[$_]} 0..7 },
+ 'curr_value' => scalar($cgi->param('min_level')),
+ },
+ 'to_addr',
+ { 'field' => 'msgnum',
+ 'type' => 'select-msg_template',
+ 'empty_label' => 'Select template',
+ 'required' => 1,
+ },
+ ],
+ 'labels' => {
+ 'context' => 'Context',
+ 'min_level' => 'Min. Level',
+ 'to_addr' => 'To',
+ 'msgnum' => 'Message',
+ },
+ 'viewall_dir' => 'browse',
+ 'popup' => $opts{'popup'},
+ 'form_init' => $opts{'popup'} ? q(<INPUT TYPE="hidden" NAME="popup" VALUE="1">) : '',
+ )
+%>
+<%once>
+my @contexts = sort FS::log_context->contexts;
+</%once>
+<%init>
+
+my %opts = @_;
+
+die "access denied"
+ unless $FS::CurrentUser::CurrentUser->access_right([ 'View system logs', 'Configuration' ]);
+
+</%init>
diff --git a/httemplate/edit/process/log_email.html b/httemplate/edit/process/log_email.html
new file mode 100644
index 000000000..769e180a8
--- /dev/null
+++ b/httemplate/edit/process/log_email.html
@@ -0,0 +1,18 @@
+<% include('elements/process.html',
+ 'table' => 'log_email',
+ %processopts
+ ) %>
+<%init>
+
+my %opts = @_;
+
+my $curuser = $FS::CurrentUser::CurrentUser;
+
+die "access denied"
+ unless $curuser->access_right([ 'View system logs', 'Configuration' ]);
+
+my %processopts = $opts{'popup'}
+ ? ( 'popup_reload' => 'Logging email added' )
+ : ( 'redirect' => $fsurl.'browse/log_email.html?' ); # id will be needlessly appended, should be harmless
+
+</%init>
diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html
index 9b30b6cd0..759ae338c 100644
--- a/httemplate/elements/menu.html
+++ b/httemplate/elements/menu.html
@@ -801,6 +801,10 @@ $config_misc{'Inventory classes and inventory'} = [ $fsurl.'browse/inventory_cla
$config_misc{'Upload targets'} = [ $fsurl.'browse/upload_target.html', 'Billing and payment upload destinations' ]
if $curuser->access_right('Configuration');
+$config_misc{'System log emails'} = [ $fsurl.'browse/log_email.html', 'Configure conditions for sending email when logging' ]
+ if $curuser->access_right('View system logs')
+ || $curuser->access_right('Configuration');
+
tie my %config_menu, 'Tie::IxHash';
if ( $curuser->access_right('Configuration' ) ) {
%config_menu = (
diff --git a/httemplate/elements/tr-select-msg_template.html b/httemplate/elements/tr-select-msg_template.html
new file mode 100644
index 000000000..1f899e01c
--- /dev/null
+++ b/httemplate/elements/tr-select-msg_template.html
@@ -0,0 +1,12 @@
+<% include('/elements/tr-td-label.html',
+ 'label' => $opt{'label'} || 'Message template: ',
+ 'required' => $opt{'required'} ) %>
+ <TD><% include('select-msg_template.html', %opt) %></TD>
+</TR>
+
+<%init>
+
+my %opt = @_;
+
+</%init>
+
diff --git a/httemplate/misc/delete-log_email.html b/httemplate/misc/delete-log_email.html
new file mode 100644
index 000000000..cc17b15a0
--- /dev/null
+++ b/httemplate/misc/delete-log_email.html
@@ -0,0 +1,20 @@
+% if ($error) {
+<P STYLE="color: red"><% $error %></P>
+% } else {
+<H1>Log email condition deleted</H1>
+<SCRIPT>
+window.top.location.reload();
+</SCRIPT>
+% }
+
+<%init>
+die "access denied"
+ unless $FS::CurrentUser::CurrentUser->access_right([ 'View system logs', 'Configuration' ]);
+
+my $logemailnum = $cgi->param('logemailnum');
+$logemailnum =~ /^\d+$/ or die "bad logemailnum '$logemailnum'";
+my $log_email = FS::log_email->by_key($logemailnum)
+ or die "logemailnum '$logemailnum' not found";
+my $error = $log_email->delete;
+</%init>
+
diff --git a/httemplate/search/log.html b/httemplate/search/log.html
index 9aa37365d..9a61a71e1 100644
--- a/httemplate/search/log.html
+++ b/httemplate/search/log.html
@@ -1,6 +1,7 @@
<& elements/search.html,
'title' => 'System Log',
'name_singular' => 'event',
+ 'menubar' => \@menubar,
'html_init' => include('.head'),
'query' => $query,
'count_query' => $count_query,
@@ -210,6 +211,9 @@ my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
unless $curuser->access_right([ 'View system logs', 'Configuration' ]);
+my @menubar = ();
+push @menubar, qq(<A HREF="${fsurl}browse/log_email.html" STYLE="text-decoration: underline;">Configure conditions for sending email when logging</A>),
+
$cgi->param('min_level', 0) unless defined($cgi->param('min_level'));
$cgi->param('max_level', 7) unless defined($cgi->param('max_level'));