ActionBar: Brieffunktion: E-Mail-Versand über Dialog
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 16 Jan 2017 14:33:34 +0000 (15:33 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 28 Feb 2017 09:44:01 +0000 (10:44 +0100)
SL/Controller/Letter.pm
js/kivi.SalesPurchase.js
locale/de/all
templates/webpages/letter/edit.html

index d0ef0c9..d299eea 100644 (file)
@@ -301,48 +301,11 @@ sub action_delete_drafts {
   $self->action_add(skip_drafts => 1);
 }
 
-sub action_edit_email {
-  my ($self) = @_;
-
-  my $letter = $self->_update;
-  $self->export_letter_to_form($letter);
-
-  $::form->{formname}     = "letter";
-  $::form->{type}         = "letter";
-  $::form->{letternumber} = $self->letter->letternumber;
-
-  my @hiddens = map {
-    my $value = $letter->$_;
-    $value    = $value->to_kivitendo if ref($_) =~ m{Date};
-
-    { name => "letter.$_", value => $value }
-  } ($letter->meta->columns);
-
-  my %vars = (
-    script     => 'controller.pl',
-    title      => t8('Send letter via e-mail'),
-    email      => $letter->contact ? $letter->contact->cp_email : '',
-    subject    => $::form->generate_email_subject,
-    a_filename => $::form->generate_attachment_filename,
-    HIDDEN     => \@hiddens,
-    SHOW_BCC   => $::auth->assert('email_bcc', 'may fail'),
-  );
-
-  $::request->layout->use_javascript("kivi.SalesPurchase.js");
-  $self->setup_edit_email_action_bar;
-  $self->render('letter/edit_email', %vars);
-}
-
 sub action_send_email {
   my ($self) = @_;
 
   $::form->{media} = 'email';
-  $self->action_print_letter(
-    email => {
-      to => $::form->{email},
-      map { ($_ => $::form->{$_}) } qw(cc bcc subject attachment_filename message)
-    }
-  );
+  $self->action_print_letter(email => $::form->{email_form});
 }
 
 ### internal methods
@@ -377,7 +340,9 @@ sub _display {
       options => { no_postscript   => 1,
                    no_opendocument => 1,
                    no_html         => 1,
-                   no_queue        => 1 }),
+                   no_queue        => 1,
+                   show_headers    => 1,
+                 }),
 
   );
 }
@@ -695,7 +660,7 @@ sub setup_display_action_bar {
         ],
         action => [
           t8('E-mail'),
-          submit   => [ '#form', { action => 'Letter/edit_email' } ],
+          call     => [ 'kivi.SalesPurchase.show_email_dialog', 'Letter/send_email' ],
           disabled => !$self->letter->id ? t8('The object has not been saved yet.') : undef,
         ],
       ],
@@ -703,21 +668,6 @@ sub setup_display_action_bar {
   }
 }
 
-sub setup_edit_email_action_bar {
-  my ($self, %params) = @_;
-
-  for my $bar ($::request->layout->get('actionbar')) {
-    $bar->add(
-      action => [
-        t8('Continue'),
-        submit    => [ '#form', { action => 'Letter/send_email' } ],
-        checks    => [ 'kivi.SalesPurchase.check_required_email_fields' ],
-        accesskey => 'enter',
-      ],
-    );
-  }
-}
-
 sub setup_list_action_bar {
   my ($self, %params) = @_;
 
index 5dc81f5..c19c10a 100644 (file)
@@ -245,7 +245,7 @@ namespace('kivi.SalesPurchase', function(ns) {
     $('#send_email_dialog').children().remove().appendTo('#email_inputs');
     $('#send_email_dialog').dialog('close');
 
-    kivi.submit_form_with_action('#form', 'send_sales_purchase_email');
+    kivi.submit_form_with_action('#form', $('#form').data('send-email-action'));
 
     return true;
   };
@@ -265,7 +265,9 @@ namespace('kivi.SalesPurchase', function(ns) {
     return true;
   };
 
-  this.show_email_dialog = function() {
+  this.show_email_dialog = function(send_action) {
+    $('#form').data('send-email-action', send_action || 'send_sales_purchase_email');
+
     kivi.popup_dialog({
       id:     'send_email_dialog',
       url:    'io.pl',
index 7f858ec..0cc5f0e 100755 (executable)
@@ -2581,7 +2581,6 @@ $self->{texts} = {
   'Send a blind copy of all outgoing emails to current user\'s email address?' => 'Eine blinde Kopie aller ausgehenden E-Mails wird an den angemeldeten Nutzer geschickt',
   'Send email'                  => 'E-Mail verschicken',
   'Send invoice via email'      => 'Rechnung via E-Mail verschicken',
-  'Send letter via e-mail'      => 'Brief via E-Mail verschicken',
   'Sender'                      => 'AbsenderIn',
   'Sending E-mail: '            => 'E-Mail versenden: ',
   'Sent emails can be optionally stored in the database with or without their attachments.' => 'Gesendete E-Mails können optional mit oder ohne ihre Anhänge in der Datenbank gespeichert werden.',
index a31d391..027abe8 100644 (file)
   <!-- /central block -->
  </td>
 </tr>
-<tr>
-  <td colspan=3><hr size="3" noshade></td>
-</tr>
-<tr>
- <td>
-   [% print_options %]
- </td>
-</tr>
 </table>
 
+<div id="email_inputs" class="hidden"></div>
+<div id="print_options" class="hidden">
+ [% print_options %]
+</div>
+
  </div>
  [% PROCESS 'webdav/_list.html' %]
  <div id="ui-tabs-1">