Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / bin / mozilla / generictranslations.pl
index 7b8d4a1..de7d924 100644 (file)
@@ -1,9 +1,30 @@
 use SL::Auth;
 use SL::Form;
 use SL::GenericTranslations;
+use SL::Locale::String qw(t8);
 
 use strict;
 
+# convention:
+# preset_text_$formname will generate a input textarea
+# and will be preset in $form email dialog if the form name matches
+
+my %mail_strings = (
+  salutation_male                             => t8('Salutation male'),
+  salutation_female                           => t8('Salutation female'),
+  salutation_general                          => t8('Salutation general'),
+  salutation_punctuation_mark                 => t8('Salutation punctuation mark'),
+  preset_text_sales_quotation                 => t8('Preset email text for sales quotations'),
+  preset_text_sales_order                     => t8('Preset email text for sales orders'),
+  preset_text_sales_delivery_order            => t8('Preset email text for sales delivery orders'),
+  preset_text_invoice                         => t8('Preset email text for sales invoices'),
+  preset_text_invoice_direct_debit            => t8('Preset email text for sales invoices with direct debit'),
+  preset_text_request_quotation               => t8('Preset email text for requests (rfq)'),
+  preset_text_purchase_order                  => t8('Preset email text for purchase orders'),
+  preset_text_periodic_invoices_email_body    => t8('Preset email body for periodic invoices'),
+  preset_text_periodic_invoices_email_subject => t8('Preset email subject for periodic invoices'),
+);
+
 sub edit_greetings {
   $main::lxdebug->enter_sub();
 
@@ -34,6 +55,8 @@ sub edit_greetings {
     }
   }
 
+  setup_generictranslations_edit_greetings_action_bar();
+
   $form->{title} = $locale->text('Edit greetings');
   $form->header();
   print $form->parse_html_template('generictranslations/edit_greetings');
@@ -84,12 +107,18 @@ sub edit_sepa_strings {
   my $translation_list = GenericTranslations->list(translation_type => 'sepa_remittance_info_pfx');
   my %translations     = map { ( ($_->{language_id} || 'default') => $_->{translation} ) } @{ $translation_list };
 
+  my $translation_list_vc = GenericTranslations->list(translation_type => 'sepa_remittance_vc_no_pfx');
+  my %translations_vc     =  map { ( ($_->{language_id} || 'default') => $_->{translation} ) } @{ $translation_list_vc };
+
   unshift @{ $form->{LANGUAGES} }, { 'id' => 'default', };
 
   foreach my $language (@{ $form->{LANGUAGES} }) {
-    $language->{translation} = $translations{$language->{id}};
+    $language->{translation}    = $translations{$language->{id}};
+    $language->{translation_vc} = $translations_vc{$language->{id}};
   }
 
+  setup_generictranslations_edit_sepa_strings_action_bar();
+
   $form->{title} = $locale->text('Edit SEPA strings');
   $form->header();
   print $form->parse_html_template('generictranslations/edit_sepa_strings');
@@ -114,6 +143,10 @@ sub save_sepa_strings {
                               'translation_id'   => undef,
                               'language_id'      => $language->{id},
                               'translation'      => $form->{"translation__" . ($language->{id} || 'default')},);
+    GenericTranslations->save('translation_type' => 'sepa_remittance_vc_no_pfx',
+                              'translation_id'   => undef,
+                              'language_id'      => $language->{id},
+                              'translation'      => $form->{"translation__" . ($language->{id} || 'default') . "__vc" },);
   }
 
   $form->{message} = $locale->text('The SEPA strings have been saved.');
@@ -122,5 +155,159 @@ sub save_sepa_strings {
 
   $main::lxdebug->leave_sub();
 }
+sub edit_email_strings {
+  $main::lxdebug->enter_sub();
+
+  $main::auth->assert('config');
+
+  my $form     = $main::form;
+  my $locale   = $main::locale;
+
+  $form->get_lists('languages' => 'LANGUAGES');
+  unshift @{ $form->{LANGUAGES} }, { 'id' => 'default', };
+
+  my (%translations, $translation_list);
+  foreach (keys %mail_strings)  {
+    $translation_list = GenericTranslations->list(translation_type => $_);
+    %translations     = map { ( ($_->{language_id} || 'default') => $_->{translation} ) } @{ $translation_list };
+
+    foreach my $language (@{ $form->{LANGUAGES} }) {
+      $language->{$_} = $translations{$language->{id}};
+    }
+  }
+  setup_generictranslations_edit_email_strings_action_bar();
+
+  $form->{title} = $locale->text('Edit preset email strings');
+  $::request->{layout}->use_javascript(map { "${_}.js" } qw(ckeditor/ckeditor ckeditor/adapters/jquery));
+  $form->header();
+  print $form->parse_html_template('generictranslations/edit_email_strings',{ 'MAIL_STRINGS' => \%mail_strings });
+
+  $main::lxdebug->leave_sub();
+}
+
+sub save_email_strings {
+  $main::lxdebug->enter_sub();
+
+  $main::auth->assert('config');
+
+  my $form     = $main::form;
+  my $locale   = $main::locale;
+
+  $form->get_lists('languages' => 'LANGUAGES');
+
+  unshift @{ $form->{LANGUAGES} }, { };
+  foreach my $language (@{ $form->{LANGUAGES} }) {
+    foreach (keys %mail_strings)  {
+      GenericTranslations->save('translation_type' => $_,
+                                'translation_id'   => undef,
+                                'language_id'      => $language->{id},
+                                'translation'      => $form->{"translation__" . ($language->{id} || 'default') . "__" . $_},
+                               );
+    }
+  }
+  $form->{message} = $locale->text('The Mail strings have been saved.');
+
+  edit_email_strings();
+
+  $main::lxdebug->leave_sub();
+}
+
+sub edit_zugferd_notes {
+  $::auth->assert('config');
+
+  $::form->get_lists('languages' => 'LANGUAGES');
+
+  my $translation_list = GenericTranslations->list(translation_type => 'ZUGFeRD/notes');
+  my %translations     = map { ( ($_->{language_id} || 'default') => $_->{translation} ) } @{ $translation_list };
+
+  unshift @{ $::form->{LANGUAGES} }, { 'id' => 'default', };
+
+  foreach my $language (@{ $::form->{LANGUAGES} }) {
+    $language->{translation} = $translations{$language->{id}};
+  }
+
+  setup_generictranslations_edit_zugferd_notes_action_bar();
+
+  $::form->{title} = $::locale->text('Edit Factur-X/ZUGFeRD notes');
+  $::form->header;
+  print $::form->parse_html_template('generictranslations/edit_zugferd_notes');
+}
+
+sub save_zugferd_notes {
+  $::auth->assert('config');
+
+  $::form->get_lists('languages' => 'LANGUAGES');
+
+  unshift @{ $::form->{LANGUAGES} }, { };
+
+  foreach my $language (@{ $::form->{LANGUAGES} }) {
+    GenericTranslations->save(
+      translation_type => 'ZUGFeRD/notes',
+      translation_id   => undef,
+      language_id      => $language->{id},
+      translation      => $::form->{"translation__" . ($language->{id} || 'default')},
+    );
+  }
+
+  $::form->{message} = $::locale->text('The Factur-X/ZUGFeRD notes have been saved.');
+
+  edit_zugferd_notes();
+}
+
+sub setup_generictranslations_edit_greetings_action_bar {
+  my %params = @_;
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      action => [
+        t8('Save'),
+        submit    => [ '#form', { action => "save_greetings" } ],
+        accesskey => 'enter',
+      ],
+    );
+  }
+}
+
+sub setup_generictranslations_edit_sepa_strings_action_bar {
+  my %params = @_;
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      action => [
+        t8('Save'),
+        submit    => [ '#form', { action => "save_sepa_strings" } ],
+        accesskey => 'enter',
+      ],
+    );
+  }
+}
+
+sub setup_generictranslations_edit_email_strings_action_bar {
+  my %params = @_;
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      action => [
+        t8('Save'),
+        submit    => [ '#form', { action => "save_email_strings" } ],
+        accesskey => 'enter',
+      ],
+    );
+  }
+}
+
+sub setup_generictranslations_edit_zugferd_notes_action_bar {
+  my %params = @_;
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      action => [
+        t8('Save'),
+        submit    => [ '#form', { action => "save_zugferd_notes" } ],
+        accesskey => 'enter',
+      ],
+    );
+  }
+}
 
 1;