[freeside-commits] branch master updated. eef99d4b1595d23b73f8800900ba984fe242b8c4

Mark Wells mark at 420.am
Mon May 20 12:36:23 PDT 2013


The branch, master has been updated
       via  eef99d4b1595d23b73f8800900ba984fe242b8c4 (commit)
      from  508756cf10352b6cf54a32fbce18ec57121214ce (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit eef99d4b1595d23b73f8800900ba984fe242b8c4
Author: Mark Wells <mark at freeside.biz>
Date:   Mon May 20 12:36:06 2013 -0700

    allow friendly from: addresses on email notices, #22962

diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm
index dbebf33..9c18961 100644
--- a/FS/FS/Misc.pm
+++ b/FS/FS/Misc.pm
@@ -171,8 +171,15 @@ sub send_email {
 
   }
 
+  my $from = $options{from};
+  $from =~ s/^\s*//; $from =~ s/\s*$//;
+  if ( $from =~ /^(.*)\s*<(.*@.*)>$/ ) {
+    # a common idiom
+    $from = $2;
+  }
+
   my $domain;
-  if ( $options{'from'} =~ /\@([\w\.\-]+)/ ) {
+  if ( $from =~ /\@([\w\.\-]+)/ ) {
     $domain = $1;
   } else {
     warn 'no domain found in invoice from address '. $options{'from'}.
@@ -247,7 +254,7 @@ sub send_email {
   push @to, $options{bcc} if defined($options{bcc});
   local $@; # just in case
   eval { sendmail($message, { transport => $transport,
-                              from      => $options{from},
+                              from      => $from,
                               to        => \@to }) };
 
   my $error = '';
diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm
index f63854c..ccba1de 100644
--- a/FS/FS/UI/Web.pm
+++ b/FS/FS/UI/Web.pm
@@ -678,6 +678,10 @@ sub start_job {
   
   #warn 'froze string of size '. length(nfreeze(\%param)). " for job args\n"
   #  if $DEBUG;
+  #
+  #  XXX FS::queue::insert knows how to do this.
+  #  not changing it here because that requires changing it everywhere else,
+  #  too, but we should eventually fix it
 
   my $error = $job->insert( '_JOB', encode_base64(nfreeze(\%param)) );
 
diff --git a/FS/FS/cust_main_Mixin.pm b/FS/FS/cust_main_Mixin.pm
index a067706..212c04e 100644
--- a/FS/FS/cust_main_Mixin.pm
+++ b/FS/FS/cust_main_Mixin.pm
@@ -539,6 +539,7 @@ sub process_email_search_result {
   die "error loading FS::$table: $@\n" if $@;
 
   my $error = "FS::$table"->email_search_result( $param );
+  dbh->commit; # save failed jobs before rethrowing the error
   die $error if $error;
 
 }
diff --git a/httemplate/misc/email-customers.html b/httemplate/misc/email-customers.html
index fcd79d7..ad67b8d 100644
--- a/httemplate/misc/email-customers.html
+++ b/httemplate/misc/email-customers.html
@@ -104,13 +104,19 @@ Template:
               )
     %><BR>
   <TABLE BGCOLOR="#cccccc" CELLSPACING=0 WIDTH="100%" id="table_no_template">
-    <% include('/elements/tr-input-text.html',
-                 'field' => 'from',
-                 'label' => 'From:',
-                 'size'  => 50,
-              )
-    %>
-
+    <& /elements/tr-td-label.html, 'label' => 'From:' &>
+      <TD><& /elements/input-text.html,
+              'field' => 'from_name',
+              'value' => $conf->config('company_name'), #?
+              'size'  => 20,
+          &> <\
+          <& /elements/input-text.html,
+              'field' => 'from_addr',
+              'type'  => 'email', # HTML5, woot
+              'value' => $conf->config('invoice_from'),
+              'size'  => 20,
+          &>></TD>
+ 
     <% include('/elements/tr-input-text.html',
                  'field' => 'subject',
                  'label' => 'Subject:',
@@ -151,6 +157,7 @@ Template:
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Bulk send customer notices');
 
+my $conf = FS::Conf->new;
 my $table = $cgi->param('table') or die "'table' required";
 my %search;
 if ( $cgi->param('search') ) {
@@ -169,7 +176,15 @@ else {
 my $title = 'Send customer notices';
 
 my $num_cust;
-my $from = $cgi->param('from') || '';
+my $from = '';
+if ( $cgi->param('from') ) {
+  $from = $cgi->param('from');
+} elsif ( $cgi->param('from_name') ) {
+  $from = ($cgi->param('from_name') . ' <' . $cgi->param('from_addr') . '>');
+} elsif ( $cgi->param('from_addr') ) {
+  $from = $cgi->param('from_addr');
+}
+
 my $subject = $cgi->param('subject') || '';
 my $html_body = $cgi->param('html_body') || '';
 

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/Misc.pm                        |   11 +++++++++--
 FS/FS/UI/Web.pm                      |    4 ++++
 FS/FS/cust_main_Mixin.pm             |    1 +
 httemplate/misc/email-customers.html |   31 +++++++++++++++++++++++--------
 4 files changed, 37 insertions(+), 10 deletions(-)




More information about the freeside-commits mailing list