summaryrefslogtreecommitdiff
path: root/httemplate
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2015-02-20 15:28:46 -0600
committerJonathan Prykop <jonathan@freeside.biz>2015-02-23 17:14:55 -0600
commitaac2d8662226b1105d157f59983140589bd89c43 (patch)
treeb9383fff194458e900500f3d84827258495fd9f8 /httemplate
parent2fd56c72e2bc28352da250e061277918f3fdb17c (diff)
RT#23598: Feature Request - Email notice to A/R Report Results [now uses checkboxes and a proper popup]
Diffstat (limited to 'httemplate')
-rw-r--r--httemplate/elements/popup_link_onclick.html8
-rw-r--r--httemplate/misc/email-customers.html16
-rw-r--r--httemplate/search/elements/checkbox-foot.html9
-rw-r--r--httemplate/search/elements/cust_main_dayranges.html65
-rwxr-xr-xhttemplate/search/report_receivables.cgi2
5 files changed, 68 insertions, 32 deletions
diff --git a/httemplate/elements/popup_link_onclick.html b/httemplate/elements/popup_link_onclick.html
index 961f62336..5173115a5 100644
--- a/httemplate/elements/popup_link_onclick.html
+++ b/httemplate/elements/popup_link_onclick.html
@@ -8,6 +8,9 @@ Example:
#required
'action' => 'content.html', # uri for content of popup
+
+ #alternately, use instead of action
+ 'js_action' => 'url', # javascript variable or expression
#strongly recommended
'actionlabel => 'You clicked', # popup title
@@ -47,7 +50,8 @@ if (ref($_[0]) eq 'HASH') {
$params = { @_ };
}
-$action = $params->{'action'} if exists $params->{'action'};
+$action = q(') . $params->{'action'} . q(') if exists $params->{'action'};
+$action = $params->{'js_action'} if exists $params->{'js_action'};
$actionlabel = $params->{'actionlabel'} if exists $params->{'actionlabel'};
$width = $params->{'width'} if exists $params->{'width'};
$height = $params->{'height'} if exists $params->{'height'};
@@ -61,7 +65,7 @@ $scrolling = $params->{'scrolling'} if exists $params->{'scrolling'};
my $popup_name = 'popup-'.time. "-$$-". rand() * 2**32;
my $onclick =
- "overlib( OLiframeContent('$action', $width, $height, '$popup_name', 0, '$scrolling' ), ".
+ "overlib( OLiframeContent($action, $width, $height, '$popup_name', 0, '$scrolling' ), ".
"CAPTION, '$actionlabel', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, ".
"DRAGGABLE, CLOSECLICK, ".
"BGCOLOR, '$color', CGCOLOR, '$color', CLOSETEXT, '$closetext'".
diff --git a/httemplate/misc/email-customers.html b/httemplate/misc/email-customers.html
index c74c15b1e..83e86158f 100644
--- a/httemplate/misc/email-customers.html
+++ b/httemplate/misc/email-customers.html
@@ -1,4 +1,9 @@
+% if ($popup) {
+<% include('/elements/header-popup.html', $title) %>
+% } else {
<% include('/elements/header.html', $title) %>
+% }
+
<FORM NAME="OneTrueForm" ACTION="email-customers.html" METHOD="POST">
<INPUT TYPE="hidden" NAME="table" VALUE="<% $table %>">
@@ -7,6 +12,8 @@
%# multi-valued search params. We are no longer in search context, so we
%# pack the search into a Storable string for later use.
<INPUT TYPE="hidden" NAME="search" VALUE="<% encode_base64(nfreeze(\%search)) %>">
+<INPUT TYPE="hidden" NAME="popup" VALUE="<% $popup %>">
+<INPUT TYPE="hidden" NAME="url" VALUE="<% $url | h %>">
% if ( $cgi->param('action') eq 'send' ) {
@@ -16,7 +23,7 @@
'OneTrueForm',
[ qw( search table from subject html_body text_body msgnum ) ],
'process/email-customers.html',
- { 'message' => "Notice sent" }, #would be nice to show #, but..
+ $pdest,
)
%>
@@ -159,13 +166,18 @@ my $conf = FS::Conf->new;
my $table = $cgi->param('table') or die "'table' required";
my $agent_virt_agentnum = $cgi->param('agent_virt_agentnum') || '';
+my $popup = $cgi->param('popup');
+my $url = $cgi->param('url');
+my $pdest = { 'message' => "Notice sent" };
+$pdest->{'url'} = $cgi->param('url') if $url;
+
my %search;
if ( $cgi->param('search') ) {
%search = %{ thaw(decode_base64($cgi->param('search'))) };
}
else {
%search = $cgi->Vars;
- delete $search{$_} for qw( action table from subject html_body text_body );
+ delete $search{$_} for qw( action table from subject html_body text_body popup url );
# FS::$table->search is expected to know which parameters might be
# multi-valued, and to accept scalar values for them also. No good
# solution to this since CGI can't tell whether a parameter _might_
diff --git a/httemplate/search/elements/checkbox-foot.html b/httemplate/search/elements/checkbox-foot.html
index cc4bac69b..c47009425 100644
--- a/httemplate/search/elements/checkbox-foot.html
+++ b/httemplate/search/elements/checkbox-foot.html
@@ -75,6 +75,15 @@ function setAll(setTo) {
checkboxes[i].checked = setTo;
}
}
+function toCGIString() {
+ var out = '';
+ for (var i = 0; i < checkboxes.length; i++) {
+ if (checkboxes[i].checked) {
+ out += '&' + checkboxes[i].name + '=' + checkboxes[i].value;
+ }
+ }
+ return out;
+}
</SCRIPT>
<%init>
my %opt = @_;
diff --git a/httemplate/search/elements/cust_main_dayranges.html b/httemplate/search/elements/cust_main_dayranges.html
index 73a429f8a..e5b1f478c 100644
--- a/httemplate/search/elements/cust_main_dayranges.html
+++ b/httemplate/search/elements/cust_main_dayranges.html
@@ -21,6 +21,7 @@ Example:
'query' => $sql_query,
'count_query' => $count_sql,
'header' => [
+ @act_blank,
@cust_header,
'0-30',
'30-60',
@@ -28,9 +29,9 @@ Example:
'90+',
emt('Total'),
@pay_head,
- @act_header,
],
'footer' => [
+ @act_blank,
'Total',
( map '',( 1 .. $#cust_header ),),
sprintf( $money_char.'%.2f',
@@ -44,9 +45,9 @@ Example:
sprintf( '<b>'.$money_char.'%.2f</b>',
$row->{'rangecol_0_0'} ),
('') x @pay_labels,
- @act_blank,
],
'fields' => [
+ @act_fields,
FS::UI::Web::cust_fields_subs(),
format_rangecol('0_30'),
format_rangecol('30_60'),
@@ -54,9 +55,9 @@ Example:
format_rangecol('90_0'),
format_rangecol('0_0'),
@pay_labels,
- @act_fields,
],
'links' => [
+ @act_blank,
( map { $_ ne 'Cust. Status' ? $clink : '' }
@cust_header
),
@@ -66,44 +67,41 @@ Example:
'',
'',
@pay_links,
- @act_blank,
],
- 'link_onclicks' => [ ( map '', @cust_header ),
- '', '', '', '', '',
- ( map '', @pay_labels ),
- @act_link_onclicks,
- ],
- 'align' => FS::UI::Web::cust_aligns().
+ 'align' => $act_align.
+ FS::UI::Web::cust_aligns().
'rrrrr'.
('c' x @pay_labels),
- @act_align,
- 'size' => [ ( map '', @cust_header ),
+ 'size' => [
+ @act_blank,
+ ( map '', @cust_header ),
#'-1', '', '', '', '', '', ],
- '', '', '', '', '', '',
+ '', '', '', '', '',
( map '', @pay_labels ),
+ ],
+ 'style' => [
@act_blank,
- ],
- 'style' => [ FS::UI::Web::cust_styles(),
+ FS::UI::Web::cust_styles(),
#'b', '', '', '', '', 'b', ],
'', '', '', '', 'b',
( map '', @pay_labels ),
- @act_blank,
],
- 'xls_format' => [ (map '', FS::UI::Web::cust_styles),
- '', '', '', '', { bold => 1 },
+ 'xls_format' => [
@act_blank,
+ (map '', FS::UI::Web::cust_styles),
+ '', '', '', '', { bold => 1 },
],
'color' => [
+ @act_blank,
FS::UI::Web::cust_colors(),
'',
'',
'',
'',
'',
- '',
( map '', @pay_labels ),
- @act_blank,
],
+ 'html_foot' => $html_foot,
%opt,
&>
<%init>
@@ -250,16 +248,29 @@ if($opt{'payment_links'} && $curuser->access_right('Process payment') && @payby)
@payby );
}
-my (@act_header, @act_fields, @act_link_onclicks, @act_align, @act_blank);
-if (delete($opt{'email_links'})) {
- push @act_header, 'Actions';
- push @act_fields, sub { 'send email' };
- push @act_link_onclicks, sub {
+my (@act_blank, @act_fields, $act_align, $html_foot);
+if (delete($opt{'email_checkboxes'})) {
+ my $email_link = q!var url = toCGIString(); !;
+ $email_link .= q/if (!url) { alert('No customers selected'); return false; }; /;
+ $email_link .= q!url = '!;
+ $email_link .= "${p}misc/email-customers.html?table=cust_main";
+ $email_link .= q!' + url + '&popup=1&url=javascript%3Awindow.top.location.reload%28%29%3B'; !;
+ $email_link .= include('/elements/popup_link_onclick.html',
+ 'js_action' => 'url',
+ 'actionlabel' => 'Send Customer Email',
+ 'width' => '900',
+ 'height' => '500',
+ );
+ $html_foot = include('checkbox-foot.html',
+ label => 'Email selected customers',
+ onclick => $email_link,
+ );
+ push @act_fields, sub {
my $row = shift;
my $custnum = $row->custnum;
- return qq!window.open('${p}misc/email-customers.html?table=cust_main&custnum=$custnum','_blank')!;
+ qq!<input type="checkbox" name="custnum" value="$custnum">!;
};
- push @act_align, 'l';
+ $act_align = 'l';
push @act_blank, '';
}
diff --git a/httemplate/search/report_receivables.cgi b/httemplate/search/report_receivables.cgi
index bca2a057a..adbbc859c 100755
--- a/httemplate/search/report_receivables.cgi
+++ b/httemplate/search/report_receivables.cgi
@@ -2,7 +2,7 @@
'title' => emt('Accounts Receivable Aging Summary'),
'range_sub' => \&balance,
'payment_links' => 1,
- 'email_links' => 1,
+ 'email_checkboxes' => 1,
&>
<%init>