Revision ee056f23
Von Jan Büren vor mehr als 7 Jahren hinzugefügt
bin/mozilla/generictranslations.pl | ||
---|---|---|
5 | 5 |
|
6 | 6 |
use strict; |
7 | 7 |
|
8 |
# convention: |
|
9 |
# preset_text_$formname will generate a input textarea |
|
10 |
# and will be preset in $form email dialog if the form name matches |
|
11 |
|
|
12 |
my %mail_strings = ( |
|
13 |
salutation_male => t8('Salutation male'), |
|
14 |
salutation_female => t8('Salutation female'), |
|
15 |
salutation_general => t8('Salutation general'), |
|
16 |
salutation_punctuation_mark => t8('Salutation punctuation mark'), |
|
17 |
preset_text_sales_quotation => t8('Preset email text for sales quotations'), |
|
18 |
preset_text_sales_order => t8('Preset email text for sales orders'), |
|
19 |
preset_text_sales_delivery_order => t8('Preset email text for sales delivery orders'), |
|
20 |
preset_text_invoice => t8('Preset email text for sales invoices'), |
|
21 |
preset_text_request_quotation => t8('Preset email text for requests (rfq)'), |
|
22 |
preset_text_purchase_order => t8('Preset email text for purchase orders'), |
|
23 |
); |
|
24 |
|
|
8 | 25 |
sub edit_greetings { |
9 | 26 |
$main::lxdebug->enter_sub(); |
10 | 27 |
|
... | ... | |
135 | 152 |
|
136 | 153 |
$main::lxdebug->leave_sub(); |
137 | 154 |
} |
155 |
sub edit_email_strings { |
|
156 |
$main::lxdebug->enter_sub(); |
|
157 |
|
|
158 |
$main::auth->assert('config'); |
|
159 |
|
|
160 |
my $form = $main::form; |
|
161 |
my $locale = $main::locale; |
|
162 |
|
|
163 |
$form->get_lists('languages' => 'LANGUAGES'); |
|
164 |
unshift @{ $form->{LANGUAGES} }, { 'id' => 'default', }; |
|
165 |
|
|
166 |
my (%translations, $translation_list); |
|
167 |
foreach (keys %mail_strings) { |
|
168 |
$translation_list = GenericTranslations->list(translation_type => $_); |
|
169 |
%translations = map { ( ($_->{language_id} || 'default') => $_->{translation} ) } @{ $translation_list }; |
|
170 |
|
|
171 |
foreach my $language (@{ $form->{LANGUAGES} }) { |
|
172 |
$language->{$_} = $translations{$language->{id}}; |
|
173 |
} |
|
174 |
} |
|
175 |
setup_generictranslations_edit_email_strings_action_bar(); |
|
176 |
|
|
177 |
$form->{title} = $locale->text('Edit preset email strings'); |
|
178 |
$form->header(); |
|
179 |
print $form->parse_html_template('generictranslations/edit_email_strings',{ 'MAIL_STRINGS' => \%mail_strings }); |
|
180 |
|
|
181 |
$main::lxdebug->leave_sub(); |
|
182 |
} |
|
183 |
|
|
184 |
sub save_email_strings { |
|
185 |
$main::lxdebug->enter_sub(); |
|
186 |
|
|
187 |
$main::auth->assert('config'); |
|
188 |
|
|
189 |
my $form = $main::form; |
|
190 |
my $locale = $main::locale; |
|
191 |
|
|
192 |
$form->get_lists('languages' => 'LANGUAGES'); |
|
193 |
|
|
194 |
unshift @{ $form->{LANGUAGES} }, { }; |
|
195 |
foreach my $language (@{ $form->{LANGUAGES} }) { |
|
196 |
foreach (keys %mail_strings) { |
|
197 |
GenericTranslations->save('translation_type' => $_, |
|
198 |
'translation_id' => undef, |
|
199 |
'language_id' => $language->{id}, |
|
200 |
'translation' => $form->{"translation__" . ($language->{id} || 'default') . "__" . $_}, |
|
201 |
); |
|
202 |
} |
|
203 |
} |
|
204 |
$form->{message} = $locale->text('The Mail strings have been saved.'); |
|
205 |
|
|
206 |
edit_email_strings(); |
|
207 |
|
|
208 |
$main::lxdebug->leave_sub(); |
|
209 |
} |
|
138 | 210 |
|
139 | 211 |
sub setup_generictranslations_edit_greetings_action_bar { |
140 | 212 |
my %params = @_; |
... | ... | |
163 | 235 |
); |
164 | 236 |
} |
165 | 237 |
} |
238 |
sub setup_generictranslations_edit_email_strings_action_bar { |
|
239 |
my %params = @_; |
|
240 |
|
|
241 |
for my $bar ($::request->layout->get('actionbar')) { |
|
242 |
$bar->add( |
|
243 |
action => [ |
|
244 |
t8('Save'), |
|
245 |
submit => [ '#form', { action => "save_email_strings" } ], |
|
246 |
accesskey => 'enter', |
|
247 |
], |
|
248 |
); |
|
249 |
} |
|
250 |
} |
|
166 | 251 |
|
167 | 252 |
1; |
doc/changelog | ||
---|---|---|
9 | 9 |
- SEPA-XML: alle Sonderzeichen filtern |
10 | 10 |
- SEPA-Export: Export wieder rückgängig machen, falls noch Status offen |
11 | 11 |
- Stammdaten -> Berichte -> Artikel: Standardlager und Lagerplatz optional anzeigen |
12 |
- Vorbelegte Texte inkl. Ansprechpartner für den E-Mail-Versand bei allen Workflows hinzugefügt. |
|
12 | 13 |
|
13 | 14 |
2017-07-17 - Release 3.5.0 |
14 | 15 |
|
locale/de/all | ||
---|---|---|
1132 | 1132 |
'Edit payment term' => 'Zahlungsbedingungen bearbeiten', |
1133 | 1133 |
'Edit picture' => 'Bild bearbeiten', |
1134 | 1134 |
'Edit pre-defined text' => 'Vordefinierten Textblock bearbeiten', |
1135 |
'Edit preset email strings' => 'Vorbelegte Texte für E-Mails editieren', |
|
1135 | 1136 |
'Edit price rule' => 'Preisregel bearbeiten', |
1136 | 1137 |
'Edit pricegroup' => 'Preisgruppe bearbeiten', |
1137 | 1138 |
'Edit prices and discount (if not used, textfield is ONLY set readonly)' => 'Preise und Rabatt in Formularen frei anpassen (falls deaktiviert, wird allerdings NUR das textfield auf READONLY gesetzt / kann je nach Browserversion und technischen Fähigkeiten des Anwenders noch umgangen werden)', |
... | ... | |
2200 | 2201 |
'Prepare bank collection via SEPA XML' => 'Einzug via SEPA XML vorbereiten', |
2201 | 2202 |
'Prepare bank transfer via SEPA XML' => 'Überweisung via SEPA XML vorbereiten', |
2202 | 2203 |
'Prepayment' => 'Vorauszahlung', |
2204 |
'Preset email strings' => 'Vorbelegte E-Mail-Texte', |
|
2205 |
'Preset email text for purchase orders' => 'Vorbelegter E-Mail-Text für Einkaufsaufträge', |
|
2206 |
'Preset email text for requests (rfq)' => 'Vorbelegter E-Mail-Text für Anfragen', |
|
2207 |
'Preset email text for sales delivery orders' => 'Vorbelegter E-Mail-Text für Verkaufs-Lieferscheine', |
|
2208 |
'Preset email text for sales invoices' => 'Vorbelegter E-Mail-Text für Rechnungen', |
|
2209 |
'Preset email text for sales orders' => 'Vorbelegter E-Mail-Text für Aufträge', |
|
2210 |
'Preset email text for sales quotations' => 'Vorbelegter E-Mail-Text für Angebote', |
|
2203 | 2211 |
'Preview' => 'Vorschau', |
2204 | 2212 |
'Preview Mode' => 'Vorschaumodus', |
2205 | 2213 |
'Previous transdate text' => 'wurde gespeichert am', |
... | ... | |
2530 | 2538 |
'Sales quotation #1 has been deleted.' => 'Angebot #1 wurde gelöscht.', |
2531 | 2539 |
'Sales quotation #1 has been updated.' => 'Angebot #1 wurde aktualisiert.', |
2532 | 2540 |
'Salesman' => 'Verkäufer/in', |
2533 |
'Salesman (ID)' => 'Verkäufer/in (ID)', |
|
2534 | 2541 |
'Salesman (database ID)' => 'Verkäufer/in (Datenbank-ID)', |
2535 | 2542 |
'Salesman (login)' => 'Verkäufer/in (Login)', |
2536 | 2543 |
'Salesperson' => 'Verkäufer', |
2544 |
'Salutation female' => 'Anrede weiblich', |
|
2545 |
'Salutation general' => 'Anrede anonym (personenlos)', |
|
2546 |
'Salutation male' => 'Anrede männlich', |
|
2547 |
'Salutation punctuation mark' => 'Zeichensetzungs-Trenner nach der Anrede-Formel (Punkt, Ausrufezeichen, etc)', |
|
2537 | 2548 |
'Same Filename !' => 'unveränderter Dateiname !', |
2538 | 2549 |
'Same as the quote character' => 'Wie Anführungszeichen', |
2539 | 2550 |
'Sat. Fax' => 'Sat. Fax', |
... | ... | |
2901 | 2912 |
'The ID #1 is not a valid database ID.' => 'Die ID #1 ist keine gültige Datenbank-ID.', |
2902 | 2913 |
'The LDAP server "#1:#2" is unreachable. Please check config/kivitendo.conf.' => 'Der LDAP-Server "#1:#2" ist nicht erreichbar. Bitte überprüfen Sie die Angaben in config/kivitendo.conf.', |
2903 | 2914 |
'The MT940 import needs an import profile called MT940' => 'Der MT940 Import benötigt ein Importprofil mit dem Namen "MT940"', |
2915 |
'The Mail strings have been saved.' => 'Die vorbelegten E-Mail-Texte wurden gespeichert.', |
|
2904 | 2916 |
'The PDF has been created' => 'Die PDF-Datei wurde erstellt.', |
2905 | 2917 |
'The PDF has been printed' => 'Das PDF-Dokument wurde gedruckt.', |
2906 | 2918 |
'The SEPA export has been created.' => 'Der SEPA-Export wurde erstellt', |
menus/user/00-erp.yaml | ||
---|---|---|
1200 | 1200 |
module: generictranslations.pl |
1201 | 1201 |
params: |
1202 | 1202 |
action: edit_sepa_strings |
1203 |
- parent: system_languages_and_translations |
|
1204 |
id: system_languages_and_translations_email_strings |
|
1205 |
name: Preset email strings |
|
1206 |
order: 500 |
|
1207 |
module: generictranslations.pl |
|
1208 |
params: |
|
1209 |
action: edit_email_strings |
|
1203 | 1210 |
- parent: system |
1204 | 1211 |
id: system_payment_terms |
1205 | 1212 |
name: Payment Terms |
templates/webpages/generictranslations/edit_email_strings.html | ||
---|---|---|
1 |
[%- USE T8 %] |
|
2 |
[%- USE HTML %] |
|
3 |
<h1>[% HTML.escape(title) %]</h1> |
|
4 |
[%- IF message %] |
|
5 |
<p> |
|
6 |
[% HTML.escape(message) %] |
|
7 |
</p> |
|
8 |
[%- END %] |
|
9 |
<form method="post" action="generictranslations.pl" id="form"> |
|
10 |
<table> |
|
11 |
[%- FOREACH mail_string IN MAIL_STRINGS.keys.sort %] |
|
12 |
<tr> |
|
13 |
<th class="listheading"> </th> |
|
14 |
<th class="listheading">[% MAIL_STRINGS.$mail_string %]</th> |
|
15 |
</tr> |
|
16 |
|
|
17 |
[%- FOREACH language = LANGUAGES %] |
|
18 |
<tr> |
|
19 |
<td> |
|
20 |
[%- IF language.id == 'default' %] |
|
21 |
[% 'Default (no language selected)' | $T8 %] |
|
22 |
[%- ELSE %] |
|
23 |
[%- HTML.escape(language.description) %] |
|
24 |
[%- END %] |
|
25 |
</td> |
|
26 |
<td> |
|
27 |
[%- IF mail_string.search('preset') %] |
|
28 |
<textarea name="translation__[% language.id %]__[% mail_string %]" rows="4" cols="60">[% HTML.escape(language.$mail_string) %]</textarea> |
|
29 |
[%- ELSE %] |
|
30 |
<input name="translation__[% language.id %]__[% mail_string %]" size="40" value="[% HTML.escape(language.$mail_string) %]"> |
|
31 |
[%- END %] |
|
32 |
</td> |
|
33 |
</tr> |
|
34 |
[%- END %] |
|
35 |
[%- END %] |
|
36 |
</table> |
|
37 |
</form> |
Auch abrufbar als: Unified diff
GenericTranslation um Vorbelegungen für E-Mail-Texte erweitert
Neuer Menüpunkt:
System-> Sprachen und Übersetzungen
> Vorbelegte Texte für E-MailundFalls ein Ansprechpartner hinterlegt ist, wird entsprechend des
Geschlechts und der vorbelegten Textbaustein die Anrede zusammengesetzt.
Falls kein Ansprechpartner gewählt ist, kommt die allgemeine Grußformel.
Bis auf Gutschrift und Mahnung(en) sind alle Workflow Masken im Ein
Verkauf umgesetzt.