#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
$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'};
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'".
+% 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 %>">
%# 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' ) {
'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,
)
%>
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_
'query' => $sql_query,
'count_query' => $count_sql,
'header' => [
+ @act_blank,
@cust_header,
'0-30',
'30-60',
'90+',
emt('Total'),
@pay_head,
- @act_header,
],
'footer' => [
+ @act_blank,
'Total',
( map '',( 1 .. $#cust_header ),),
sprintf( $money_char.'%.2f',
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'),
format_rangecol('90_0'),
format_rangecol('0_0'),
@pay_labels,
- @act_fields,
],
'links' => [
+ @act_blank,
( map { $_ ne 'Cust. Status' ? $clink : '' }
@cust_header
),
'',
'',
@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>
@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, '';
}