import BWGroupNumber as charged_party when accountcode is empty, RT#27946
[freeside.git] / httemplate / misc / email-customers.html
index 3327303..bffd0cf 100644 (file)
@@ -1,35 +1,40 @@
 <%doc>
 
-Allows emailing one or more customers, based on a search for customers.  Search can
-be specified either through cust_main fields as cgi params, or through a base64 encoded
-frozen hash in the 'search' cgi param.  Form allows selecting an existing msg_template,
-or creating a custom message, and shows a preview of the message before sending.
-If linked to as a popup, include the cgi parameter 'popup' for proper header handling.
+Allows emailing one or more customers, based on a search for customers.
+Search can be specified either through cust_main fields as cgi params, or
+through a base64 encoded frozen hash in the 'search' cgi param.  Form allows
+selecting an existing msg_template, or creating a custom message, and shows a
+preview of the message before sending.  If linked to as a popup, include the
+cgi parameter 'popup' for proper header handling.
 
 This may also be used as an element in other pages, enabling you to provide an
 alternate initial form while using this for search freezing/thawing and 
 preview/send actions, with the following options:
 
+acl - the access right to use (defaults to 'Bulk send customer notices')
+
 form_action - the URL to submit the form to
 
+process_url - the URL for starting the JSRPC process
+
 title - the title of the page
 
 no_search_fields - arrayref of additional fields that are not search parameters
 
 alternate_form - subroutine that returns alternate html for the initial form,
-replaces msgnum/from/subject/html_body/action inputs and submit button,
-not used if an action is specified
+replaces msgnum/from/subject/html_body/action inputs and submit button, not
+used if an action is specified
 
-post_search_hook - sub hook for additional processing after search has been processed from cgi,
-gets passed options 'conf' and 'search' (a reference to the unfrozen %search hash),
-should be used to set msgnum or from/subject/html_body cgi params
+post_search_hook - sub hook for additional processing after search has been
+processed from cgi, gets passed options 'conf' and 'search' (a reference to
+the unfrozen %search hash), should be used to set msgnum or
+from/subject/html_body cgi params
 
 </%doc>
-
 % if ($popup) {
-<% include('/elements/header-popup.html', $title) %>
+<& /elements/header-popup.html, $title &>
 % } else {
-<% include('/elements/header.html', $title) %>
+<& /elements/header.html, $title &>
 % }
 
 
@@ -47,13 +52,12 @@ should be used to set msgnum or from/subject/html_body cgi params
 
     <FONT SIZE="+2">Sending notice</FONT>
 
-    <% include('/elements/progress-init.html',
+    <& /elements/progress-init.html,
                  'OneTrueForm',
                  [ qw( search table from subject html_body text_body msgnum ) ],
-                 'process/email-customers.html',
+                 $process_url,
                  $pdest,
-              )
-    %>
+    &>
 
 % } elsif ( $cgi->param('action') eq 'preview' ) {
 
@@ -63,34 +67,32 @@ should be used to set msgnum or from/subject/html_body cgi params
 
 % if ( $cgi->param('action') ) {
 
-    <TABLE BGCOLOR="#cccccc" CELLSPACING=0>
-    <INPUT TYPE="hidden" NAME="msgnum" VALUE="<% $cgi->param('msgnum') %>">
+    <TABLE CLASS="fsinnerbox">
+    <INPUT TYPE="hidden" NAME="msgnum" VALUE="<% scalar($cgi->param('msgnum')) %>">
 
 %   if ( $msg_template ) {
-      <% include('/elements/tr-fixed.html',
+      <& /elements/tr-fixed.html,
                    'label'      => 'Template:',
                    'value'      => $msg_template->msgname,
-                )
-      %>
+      &>
 % }
 
-      <% include('/elements/tr-fixed.html',
+      <& /elements/tr-fixed.html,
                    'field'      => 'from',
                    'label'      => 'From:',
-                   'value' => scalar( $from ),
-                )
-      %>
+                   'value'      => $from,
+      &>
 
-      <% include('/elements/tr-fixed.html',
+      <& /elements/tr-fixed.html,
                    'field'      => 'subject',
                    'label'      => 'Subject:',
-                   'value' => scalar( $subject ),
-                )
-      %>
+                   'value'      => $subject,
+      &>
 
       <INPUT TYPE="hidden" NAME="html_body" VALUE="<% $html_body |h %>">
+      <TR><TD COLSPAN=2>&nbsp;</TD></TR>
       <TR>
-        <TD ALIGN="right" VALIGN="top">Message (HTML display): </TD>
+        <TH ALIGN="right" VALIGN="top">Message (HTML display): </TD>
         <TD CLASS="background" ALIGN="left"><% $html_body %></TD>
       </TR>
 
@@ -100,9 +102,14 @@ should be used to set msgnum or from/subject/html_body cgi params
 %                       )
 %                     );
       <INPUT TYPE="hidden" NAME="text_body" VALUE="<% $text_body |h %>">
+      <TR><TD COLSPAN=2>&nbsp;</TD></TR>
       <TR>
-        <TD ALIGN="right" VALIGN="top">Message (Text display): </TD>
-        <TD CLASS="background" STYLE="background-color:white" ALIGN="left"><PRE><% $text_body %></PRE></TD>
+        <TH ALIGN="right" VALIGN="top">Message (Text display): </TD>
+        <TD CLASS="background" ALIGN="left">
+          <a href="javascript:void(0)" ID="email-message-text-view" style="color:#666666" onclick="showtext()">(view)</a>
+          <a href="javascript:void(0)" ID="email-message-text-hide" style="color:#666666; display: none;" onclick="hidetext()">(hide)</a>
+          <PRE id="email-message-text" style="display: none;"><% $text_body %></PRE>
+        </TD>
       </TR>
 
     </TABLE>
@@ -110,6 +117,19 @@ should be used to set msgnum or from/subject/html_body cgi params
 %   if ( $cgi->param('action') eq 'preview' ) {
 
       <SCRIPT>
+
+        function showtext() {
+          $('#email-message-text-view').css('display','none');
+          $('#email-message-text-hide').css('display','');
+          $('#email-message-text').slideDown();
+        }
+
+        function hidetext() {
+          $('#email-message-text-view').css('display','');
+          $('#email-message-text-hide').css('display','none');
+          $('#email-message-text').slideUp();
+        }
+
         function areyousure(href) {
           return confirm("Send this notice to <% ($num_cust > 1) ? "$num_cust customers" : '1 customer' %> ?");
         }
@@ -153,12 +173,11 @@ Template:
               'size'  => 20,
           &>&gt;</TD>
  
-    <% include('/elements/tr-input-text.html',
+    <& /elements/tr-input-text.html,
                  'field' => 'subject',
                  'label' => 'Subject:',
                  'size'  => 50,
-              )
-    %>
+    &>
 
     <TR>
       <TD ALIGN="right" VALIGN="top" STYLE="padding-top:3px">Message: </TD>
@@ -186,19 +205,22 @@ Template:
     </SCRIPT>
 % }
 
-<% include('/elements/footer.html') %>
+<& /elements/footer.html &>
 
 <%init>
 
 my %opt = @_;
 
+$opt{'acl'} ||= 'Bulk send customer notices';
+
 die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right('Bulk send customer notices');
+  unless $FS::CurrentUser::CurrentUser->access_right($opt{'acl'});
 
 my $conf = FS::Conf->new;
 my @no_search_fields = qw( action table from subject html_body text_body popup url );
 
 my $form_action = $opt{'form_action'} || 'email-customers.html';
+my $process_url = $opt{'process_url'} || 'process/email-customers.html';
 my $title = $opt{'title'} || 'Send customer notices';
 push( @no_search_fields, @{$opt{'no_search_fields'}} ) if $opt{'no_search_fields'};
 
@@ -212,7 +234,7 @@ $pdest->{'url'} = $cgi->param('url') if $url;
 
 my %search;
 if ( $cgi->param('search') ) {
-  %search = %{ thaw(decode_base64($cgi->param('search'))) };
+  %search = %{ thaw(decode_base64( $cgi->param('search') )) };
 }
 else {
   %search = $cgi->Vars;
@@ -257,7 +279,7 @@ if ( $cgi->param('action') eq 'preview' ) {
 
   if ( $cgi->param('msgnum') ) {
     $msg_template = qsearchs('msg_template', 
-                             { msgnum => $cgi->param('msgnum') } )
+                             { msgnum => scalar($cgi->param('msgnum')) } )
         or die "template not found: ".$cgi->param('msgnum');
     $sql_query->{'extra_sql'} .= ' LIMIT 1';
     $sql_query->{'select'} = "$table.*";
@@ -268,8 +290,13 @@ if ( $cgi->param('action') eq 'preview' ) {
       'cust_main' => $cust,
       'object' => $object,
     );
-    my %message = $msg_template->prepare(%msgopts);
-    ($from, $subject, $html_body) = @message{'from', 'subject', 'html_body'};
+
+    my $cust_msg = $msg_template->prepare(%msgopts);
+    $from = $cust_msg->env_from;
+    $html_body = $cust_msg->preview;
+    if ( $cust_msg->header =~ /^subject: (.*)/mi ) {
+      $subject = $1;
+    }
   }
 }