summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2013-11-16 18:22:39 -0800
committerMark Wells <mark@freeside.biz>2013-11-16 18:22:39 -0800
commit517ad7e0c5bd5a6329dfd3ef9c35f69afea9fc49 (patch)
tree3fe2e243630ff9acc7130e8085e268d21b9e8b22
parentcf5608f9ce868ccb91244f6cab58022869fc7c17 (diff)
UI to disable message templates, #26035
-rw-r--r--FS/FS/part_event/Action/letter.pm1
-rw-r--r--FS/FS/part_event/Action/notice.pm1
-rw-r--r--FS/FS/part_event/Action/notice_to.pm1
-rw-r--r--FS/FS/part_event/Action/svc_acct_notice.pm1
-rw-r--r--FS/FS/part_export/rt_ticket.pm2
-rw-r--r--FS/FS/part_export/send_email.pm2
-rw-r--r--httemplate/browse/msg_template.html29
-rw-r--r--httemplate/misc/disable-msg_template.cgi77
-rw-r--r--httemplate/misc/email-customers.html1
9 files changed, 106 insertions, 9 deletions
diff --git a/FS/FS/part_event/Action/letter.pm b/FS/FS/part_event/Action/letter.pm
index 57b7b7783..835dec2b9 100644
--- a/FS/FS/part_event/Action/letter.pm
+++ b/FS/FS/part_event/Action/letter.pm
@@ -20,6 +20,7 @@ sub option_fields {
'type' => 'select-table',
'table' => 'msg_template',
'name_col' => 'msgname',
+ 'hashref' => { disabled => '' },
'disable_empty' => 1,
},
);
diff --git a/FS/FS/part_event/Action/notice.pm b/FS/FS/part_event/Action/notice.pm
index 8e22c6844..7c8ed1682 100644
--- a/FS/FS/part_event/Action/notice.pm
+++ b/FS/FS/part_event/Action/notice.pm
@@ -19,6 +19,7 @@ sub option_fields {
'msgnum' => { 'label' => 'Template',
'type' => 'select-table',
'table' => 'msg_template',
+ 'hashref' => { disabled => '' },
'name_col' => 'msgname',
'disable_empty' => 1,
},
diff --git a/FS/FS/part_event/Action/notice_to.pm b/FS/FS/part_event/Action/notice_to.pm
index 194aeb84f..d300e3385 100644
--- a/FS/FS/part_event/Action/notice_to.pm
+++ b/FS/FS/part_event/Action/notice_to.pm
@@ -24,6 +24,7 @@ sub option_fields {
'type' => 'select-table',
'table' => 'msg_template',
'name_col' => 'msgname',
+ 'hashref' => { disabled => '' },
'disable_empty' => 1,
},
);
diff --git a/FS/FS/part_event/Action/svc_acct_notice.pm b/FS/FS/part_event/Action/svc_acct_notice.pm
index d71a1371a..97a4ad686 100644
--- a/FS/FS/part_event/Action/svc_acct_notice.pm
+++ b/FS/FS/part_event/Action/svc_acct_notice.pm
@@ -18,6 +18,7 @@ sub option_fields {
'type' => 'select-table',
'table' => 'msg_template',
'name_col' => 'msgname',
+ 'hashref' => { disabled => '' },
'disable_empty' => 1,
},
);
diff --git a/FS/FS/part_export/rt_ticket.pm b/FS/FS/part_export/rt_ticket.pm
index 7ae6105a0..72e387c56 100644
--- a/FS/FS/part_export/rt_ticket.pm
+++ b/FS/FS/part_export/rt_ticket.pm
@@ -21,7 +21,7 @@ my %template_select = (
%templates = (0 => '',
map { $_->msgnum, $_->msgname }
qsearch({ table => 'msg_template',
- hashref => {},
+ hashref => { disabled => '' },
order_by => 'ORDER BY msgnum ASC'
})
);
diff --git a/FS/FS/part_export/send_email.pm b/FS/FS/part_export/send_email.pm
index 6ba131f18..1fcb828b7 100644
--- a/FS/FS/part_export/send_email.pm
+++ b/FS/FS/part_export/send_email.pm
@@ -21,7 +21,7 @@ my %template_select = (
%templates = (0 => '',
map { $_->msgnum, $_->msgname }
qsearch({ table => 'msg_template',
- hashref => {},
+ hashref => { disabled => 1 },
order_by => 'ORDER BY msgnum ASC'
})
);
diff --git a/httemplate/browse/msg_template.html b/httemplate/browse/msg_template.html
index bb5ac94a0..ef0b2dafd 100644
--- a/httemplate/browse/msg_template.html
+++ b/httemplate/browse/msg_template.html
@@ -5,14 +5,15 @@
'query' => { 'table' => 'msg_template', },
'count_query' => 'SELECT COUNT(*) FROM msg_template',
'disableable' => 1,
- 'disabled_statuspos' => 2,
+ 'disabled_statuspos' => (scalar(@locales) + 3),
'agent_virt' => 1,
'agent_null_right' => ['View global templates','Edit global templates'],
'agent_pos' => 1,
- 'header' => [ 'Name', '', map '', @locales ],
- 'fields' => [ 'msgname', @locales ],
- 'links' => [ $link, @locale_links ],
- 'cell_style' => [ '', '', map $locale_style, @locales ],
+ 'header' => [ 'Name', '', map ('', @locales), '' ],
+ 'fields' => [ 'msgname', @locales, $disable_link_label ],
+ 'links' => [ $link, @locale_links, '' ],
+ 'link_onclicks' => [ '', map('', @locale_links), $disable_link ],
+ 'cell_style' => [ '', '', map ($locale_style, @locales), $locale_style ],
)
%>
<%init>
@@ -30,7 +31,7 @@ if ( $curuser->access_right(['Edit templates', 'Edit global templates']) ) {
my $link = [ "${p}edit/msg_template.html?msgnum=", 'msgnum' ];
-my $locale_style = 'font-size:0.8em; padding:3px; background-color:';
+my $locale_style = 'font-size:0.8em; padding:3px';
my (@locales, @locale_links);
foreach my $l ( FS::Locales->locales ) {
@@ -44,6 +45,20 @@ foreach my $l ( FS::Locales->locales ) {
[ "${p}edit/msg_template.html?locale=$l;msgnum=", 'msgnum' ];
};
}
-
+
+my $disable_link = sub {
+ my $template = shift;
+ include('/elements/popup_link_onclick.html',
+ action => $p.'misc/disable-msg_template.cgi?msgnum=' .
+ $template->msgnum .
+ ($template->disabled ? ';enable=1' : ''),
+ actionlabel => 'Disable lemplate',
+ );
+};
+
+my $disable_link_label = sub {
+ my $template = shift;
+ $template->disabled ? '(enable)' : '(disable)' ;
+};
</%init>
diff --git a/httemplate/misc/disable-msg_template.cgi b/httemplate/misc/disable-msg_template.cgi
new file mode 100644
index 000000000..1eb4d25e5
--- /dev/null
+++ b/httemplate/misc/disable-msg_template.cgi
@@ -0,0 +1,77 @@
+% if ( @error ) {
+<& /elements/errorpage-popup.html, @error &>
+% } else {
+<& /elements/header-popup.html, "Template ${actioned}" &>
+ <SCRIPT TYPE="text/javascript">
+ window.top.location.reload();
+ </SCRIPT>
+</BODY>
+</HTML>
+% }
+<%init>
+
+my $curuser = $FS::CurrentUser::CurrentUser;
+my $conf = FS::Conf->new;
+my @error;
+my $actioned;
+
+die "access denied"
+ unless $curuser->access_right([ 'Edit templates', 'Edit global templates' ]);
+
+my $msgnum = $cgi->param('msgnum');
+$msgnum =~ /^\d+$/ or die "bad msgnum '$msgnum'";
+my $msg_template = qsearchs({
+ table => 'msg_template',
+ hashref => { msgnum => $msgnum },
+ extra_sql => ' AND '.
+ $curuser->agentnums_sql(null_right => 'Edit global templates'),
+});
+die "unknown msgnum $msgnum" unless $msg_template;
+
+if ( $cgi->param('enable') ) {
+ $actioned = 'enabled';
+ $msg_template->set('disabled' => '');
+} else {
+ $actioned = 'disabled';
+ # make sure it's not in use anywhere
+ my @inuse;
+
+ # notice, letter, notice_to events (if they're enabled)
+ my @events = qsearch({
+ table => 'part_event_option',
+ addl_from => ' JOIN part_event USING (eventpart)',
+ hashref => {
+ optionname => 'msgnum',
+ optionvalue => $msgnum,
+ },
+ extra_sql => ' AND disabled IS NULL',
+ });
+ push @inuse, map {"Billing event #".$_->eventpart} @events;
+
+ # send_email and rt_ticket exports
+ my @exports = qsearch( 'part_export_option', {
+ optionname => { op => 'LIKE', value => '%_template' },
+ optionvalue => $msgnum,
+ });
+ push @inuse, map {"Export #".$_->exportnum} @exports;
+
+ # payment_receipt_msgnum, decline_msgnum, etc.
+ my @confs = qsearch( 'conf', {
+ name => { op => 'LIKE', value => '%_msgnum' },
+ value => $msgnum,
+ });
+ push @inuse, map {"Configuration setting ".$_->name} @confs;
+ # XXX pending queue jobs?
+ if (@inuse) {
+ @error = ("This template is in use. Check the following settings:",
+ @inuse);
+ }
+
+ # good to go
+ $msg_template->set(disabled => 'Y');
+}
+if (!@error) {
+ my $error = $msg_template->replace;
+ push @error, $error if $error;
+}
+</%init>
diff --git a/httemplate/misc/email-customers.html b/httemplate/misc/email-customers.html
index ad67b8d7e..3b2ac3c5f 100644
--- a/httemplate/misc/email-customers.html
+++ b/httemplate/misc/email-customers.html
@@ -98,6 +98,7 @@ Template:
<% include('/elements/select-table.html',
'label' => 'Template:',
'table' => 'msg_template',
+ 'hashref' => { disabled => '' },
'name_col' => 'msgname',
'empty_label' => '(none)',
'onchange' => 'toggle(this)',