WooCommerce Germanized - Version 2.2.1

Version Description

  • Fix: Make sure that order confirmation email is not being sent twice
  • Improvement: Override on-hold-email to disallow triggering by third party plugins
  • Improvement: Added WPML string translation (>
Download this release

Release Info

Developer vendidero
Plugin Icon 128x128 WooCommerce Germanized
Version 2.2.1
Comparing to
See all releases

Code changes from version 2.2.0 to 2.2.1

assets/js/admin/settings-wpml.js ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global */
2
+ window.germanized = window.germanized || {};
3
+
4
+ ( function( $, wp, germanized ) {
5
+
6
+ germanized.settings_wpml = {
7
+ params: {},
8
+
9
+ init: function() {
10
+ this.params = wc_gzd_settings_wpml_params;
11
+
12
+ $.each( this.params.options, this.maybeUpdateDesc );
13
+ },
14
+
15
+ stripSlashes: function( str ) {
16
+ str = str.replace(/\\'/g, '\'');
17
+ str = str.replace(/\\"/g, '"');
18
+ str = str.replace(/\\0/g, '\0');
19
+ str = str.replace(/\\\\/g, '\\');
20
+ return str;
21
+ },
22
+
23
+ maybeUpdateDesc: function( index, id ) {
24
+ var $element = $( id ),
25
+ self = germanized.settings_wpml;
26
+
27
+ if ( $element.length > 0 ) {
28
+ if ( ! $element.data( 'wpml-notice' ) && $( id + '-attribute-container' ).length > 0 ) {
29
+ $element = $( id + '-attribute-container' );
30
+ }
31
+
32
+ if ( $element.data( 'wpml-notice' ) ) {
33
+ var str = $element.data( 'wpml-notice' );
34
+ str = self.stripSlashes( str );
35
+
36
+ $element.after( '<span class="wc-gzd-wpml-notice">' + str + '</span>' );
37
+ }
38
+ }
39
+ }
40
+ };
41
+
42
+ $( document ).ready( function() {
43
+ germanized.settings_wpml.init();
44
+ });
45
+
46
+ })( jQuery, wp, window.germanized );
assets/js/admin/settings-wpml.min.js ADDED
@@ -0,0 +1 @@
 
1
+ window.germanized=window.germanized||{},function(a,b,c){c.settings_wpml={params:{},init:function(){this.params=wc_gzd_settings_wpml_params,a.each(this.params.options,this.maybeUpdateDesc)},stripSlashes:function(a){return a=a.replace(/\\'/g,"'"),a=a.replace(/\\"/g,'"'),a=a.replace(/\\0/g,"\x00"),a=a.replace(/\\\\/g,"\\")},maybeUpdateDesc:function(b,d){var e=a(d),f=c.settings_wpml;if(e.length>0&&(!e.data("wpml-notice")&&a(d+"-attribute-container").length>0&&(e=a(d+"-attribute-container")),e.data("wpml-notice"))){var g=e.data("wpml-notice");g=f.stripSlashes(g),e.after('<span class="wc-gzd-wpml-notice">'+g+"</span>")}}},a(document).ready(function(){c.settings_wpml.init()})}(jQuery,wp,window.germanized);
i18n/languages/woocommerce-germanized-de_DE.mo CHANGED
Binary file
i18n/languages/woocommerce-germanized-de_DE.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Germanized v1.5.1\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2018-09-26 14:28+0200\n"
6
- "PO-Revision-Date: 2018-09-26 14:28+0200\n"
7
  "Last-Translator: holzhannes <holzhannes@posteo.de>\n"
8
  "Language-Team: \n"
9
  "Language: de_DE\n"
@@ -95,7 +95,7 @@ msgstr "l"
95
  #: includes/abstracts/abstract-wc-gzd-product.php:264
96
  #: includes/abstracts/abstract-wc-gzd-product.php:273
97
  #: includes/wc-gzd-core-functions.php:148
98
- #: includes/wc-gzd-template-functions.php:448 woocommerce-germanized.php:887
99
  msgid "incl. VAT"
100
  msgstr "inkl. MwSt."
101
 
@@ -106,7 +106,7 @@ msgstr "exkl. MwSt."
106
 
107
  # @ woocommerce-germanized
108
  #: includes/abstracts/abstract-wc-gzd-product.php:266
109
- #: includes/wc-gzd-core-functions.php:148 woocommerce-germanized.php:887
110
  #, php-format
111
  msgid "incl. %s%% VAT"
112
  msgstr "inkl. %s%% MwSt."
@@ -135,9 +135,9 @@ msgstr "Aktivierungscode erneut versenden"
135
  # @ woocommerce-germanized
136
  #: includes/admin/class-wc-gzd-admin-importer.php:36
137
  #: includes/admin/class-wc-gzd-admin-importer.php:45
138
- #: includes/admin/class-wc-gzd-admin.php:28
139
- #: includes/admin/class-wc-gzd-admin.php:37
140
- #: includes/class-wc-gzd-checkout.php:24 includes/class-wc-gzd-checkout.php:33
141
  #: includes/class-wc-gzd-coupon-helper.php:24
142
  #: includes/class-wc-gzd-coupon-helper.php:33
143
  #: includes/class-wc-gzd-customer-helper.php:19
@@ -408,53 +408,53 @@ msgstr "Willkommen bei WooCommerce Germanized"
408
  msgid "Go to WooCommerce Germanized Settings"
409
  msgstr "zu den WooCommerce Germanized Einstellungen"
410
 
411
- #: includes/admin/class-wc-gzd-admin.php:104
412
  msgid "Order confirmation manually sent to customer."
413
  msgstr "Bestellbestätigung manuell an den Kunden versendet."
414
 
415
  # @ woocommerce-germanized
416
- #: includes/admin/class-wc-gzd-admin.php:110
417
  msgid "Resend order confirmation"
418
  msgstr "Bestellbestätigung erneut versenden"
419
 
420
  # @ woocommerce-germanized
421
- #: includes/admin/class-wc-gzd-admin.php:119
422
  #: includes/admin/settings/class-wc-gzd-settings-germanized.php:25
423
  msgid "Germanized"
424
  msgstr "Germanized"
425
 
426
- #: includes/admin/class-wc-gzd-admin.php:129
427
  msgid "Parcel Delivery Data Transfer:"
428
  msgstr "Paketdienstleister Datenweitergabe:"
429
 
430
- #: includes/admin/class-wc-gzd-admin.php:130
431
  msgid "allowed"
432
  msgstr "akzeptiert"
433
 
434
- #: includes/admin/class-wc-gzd-admin.php:130
435
  msgid "not allowed"
436
  msgstr "nicht akzeptiert"
437
 
438
  # @ woocommerce-germanized
439
- #: includes/admin/class-wc-gzd-admin.php:204
440
  msgid "Optional Email Content"
441
  msgstr "Optionaler E-Mail Inhalt"
442
 
443
  # @ woocommerce-germanized
444
- #: includes/admin/class-wc-gzd-admin.php:213
445
  msgid "Add content which will be replacing default page content within emails."
446
  msgstr ""
447
  "Fülle dieses Feld aus um einen abweichenden E-Mail Anhangstext für diese "
448
  "Seite zu bestimmen."
449
 
450
  # @ woocommerce-germanized
451
- #: includes/admin/class-wc-gzd-admin.php:223
452
  #: includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:154
453
  msgid "Optional Mini Description"
454
  msgstr "Warenkorb Kurzbeschreibung"
455
 
456
  # @ woocommerce-germanized
457
- #: includes/admin/class-wc-gzd-admin.php:240
458
  msgid ""
459
  "This content will be shown as short product description within checkout and "
460
  "emails."
@@ -2093,7 +2093,7 @@ msgstr ""
2093
  "Produktdetails (Tabelle, Kundeninfos) von der Bestätigungsseite entfernen."
2094
 
2095
  # @ woocommerce-germanized
2096
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:1288
2097
  msgid ""
2098
  "Sorry, but the new Virtual VAT rules cannot be applied to small business."
2099
  msgstr ""
@@ -2365,7 +2365,6 @@ msgstr "Mehr über die Pro Version erfahren"
2365
 
2366
  # @ woocommerce-germanized
2367
  #: includes/admin/views/html-notice-pro.php:28
2368
- #: includes/admin/views/html-notice-review.php:23
2369
  #: includes/admin/views/html-notice-theme-incompatibility.php:20
2370
  #: includes/admin/views/html-notice-theme-not-ready.php:20
2371
  #: includes/admin/views/html-notice-theme-supported.php:22
@@ -2373,12 +2372,12 @@ msgid "Hide this notice"
2373
  msgstr "Diese Nachricht ausblenden"
2374
 
2375
  # @ woocommerce-germanized
2376
- #: includes/admin/views/html-notice-review.php:14
2377
  msgid "Do you like WooCommerce Germanized?"
2378
  msgstr "Gefällt dir WooCommerce Germanized?"
2379
 
2380
  # @ woocommerce-germanized
2381
- #: includes/admin/views/html-notice-review.php:16
2382
  msgid ""
2383
  "If you like WooCommerce Germanized and our Plugin does a good job it would "
2384
  "be great if you would write a review about WooCommerce Germanized on "
@@ -2390,15 +2389,23 @@ msgstr ""
2390
  "veröffentlichen. Vielen Dank für deine Mühen!"
2391
 
2392
  # @ woocommerce-germanized
2393
- #: includes/admin/views/html-notice-review.php:19
2394
  msgid "Write review now"
2395
  msgstr "jetzt Bewertung verfassen"
2396
 
2397
  # @ woocommerce-germanized
2398
- #: includes/admin/views/html-notice-review.php:20
2399
  msgid "Found Bugs?"
2400
  msgstr "Bugs oder Wünsche melden"
2401
 
 
 
 
 
 
 
 
 
2402
  # @ woocommerce-germanized
2403
  #: includes/admin/views/html-notice-theme-incompatibility.php:14
2404
  msgid "Theme incompatibility found"
@@ -2722,12 +2729,33 @@ msgid "Renew VAT Rates"
2722
  msgstr "EU MwSt.-Sätze erneuern"
2723
 
2724
  # @ woocommerce-germanized
2725
- #: includes/admin/views/html-page-status-germanized.php:228
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2726
  msgid "Templates"
2727
  msgstr "Templates"
2728
 
2729
  # @ woocommerce-germanized
2730
- #: includes/admin/views/html-page-status-germanized.php:273
2731
  #, php-format
2732
  msgid ""
2733
  "<code>%s</code> version <strong style=\"color:red\">%s</strong> is out of "
@@ -2737,13 +2765,13 @@ msgstr ""
2737
  "veraltet. Die Hauptversion ist %s"
2738
 
2739
  # @ woocommerce-germanized
2740
- #: includes/admin/views/html-page-status-germanized.php:285
2741
- #: includes/admin/views/html-page-status-germanized.php:294
2742
  msgid "Overrides"
2743
  msgstr "Überschreibt"
2744
 
2745
  # @ woocommerce-germanized
2746
- #: includes/admin/views/html-page-status-germanized.php:305
2747
  msgid "Learn how to update outdated templates"
2748
  msgstr "Erfahre, wie du veraltete Templates aktualisierst"
2749
 
@@ -2776,8 +2804,8 @@ msgstr "jetzt upgraden"
2776
  #: includes/api/class-wc-gzd-rest-customers-controller.php:144
2777
  #: includes/api/class-wc-gzd-rest-orders-controller.php:161
2778
  #: includes/api/class-wc-gzd-rest-orders-controller.php:168
2779
- #: includes/class-wc-gzd-checkout.php:358
2780
- #: includes/class-wc-gzd-checkout.php:368
2781
  #: includes/class-wc-gzd-customer-helper.php:106
2782
  #: includes/class-wc-gzd-customer-helper.php:114
2783
  msgid "Title"
@@ -3064,10 +3092,10 @@ msgstr ""
3064
  "Mail mit deinen Daten als Bestätigung."
3065
 
3066
  # @ woocommerce-germanized
3067
- #: includes/class-wc-gzd-checkout.php:359
3068
- #: includes/class-wc-gzd-checkout.php:367
3069
- #: includes/class-wc-gzd-checkout.php:392
3070
- #: includes/class-wc-gzd-checkout.php:618
3071
  #: includes/class-wc-gzd-customer-helper.php:108
3072
  #: includes/class-wc-gzd-customer-helper.php:116
3073
  #: includes/class-wc-gzd-revocation.php:41
@@ -3076,11 +3104,11 @@ msgid "Mr."
3076
  msgstr "Herr"
3077
 
3078
  # @ woocommerce-germanized
3079
- #: includes/class-wc-gzd-checkout.php:359
3080
- #: includes/class-wc-gzd-checkout.php:367
3081
- #: includes/class-wc-gzd-checkout.php:393
3082
- #: includes/class-wc-gzd-checkout.php:618
3083
- #: includes/class-wc-gzd-checkout.php:627
3084
  #: includes/class-wc-gzd-customer-helper.php:108
3085
  #: includes/class-wc-gzd-customer-helper.php:116
3086
  #: includes/class-wc-gzd-revocation.php:42
@@ -3310,7 +3338,7 @@ msgstr ""
3310
  "Dieser Text wird in die Bestellbestätigung eingefügt. Verwende "
3311
  "{order_number}, {site_title} oder {order_date} als Platzhalter."
3312
 
3313
- #: includes/class-wc-gzd-emails.php:125
3314
  msgid ""
3315
  "Your order has been received and is now being processed. Your order details "
3316
  "are shown below for your reference."
@@ -3318,18 +3346,18 @@ msgstr ""
3318
  "Deine Bestellung ist eingegangen und wird nun bearbeitet. Die Einzelheiten "
3319
  "deiner Bestellung kannst du der nachfolgenden Tabelle entnehmen."
3320
 
3321
- #: includes/class-wc-gzd-emails.php:164
3322
  msgid "Someone requested a password reset for your account."
3323
  msgstr ""
3324
  "Jemand hat das Zurücksetzen des Passworts für deinen Account beantragt."
3325
 
3326
- #: includes/class-wc-gzd-emails.php:177
3327
  #, php-format
3328
  msgid "Thanks for creating an account on %s."
3329
  msgstr "Danke, dass du ein Konto bei %s erstellt hast."
3330
 
3331
  # @ woocommerce-germanized
3332
- #: includes/class-wc-gzd-emails.php:628
3333
  msgctxt "revocation-form"
3334
  msgid "Forward your Revocation online"
3335
  msgstr "Deinen Widerruf online erklären"
@@ -3345,73 +3373,73 @@ msgstr ""
3345
  "WooCommerce Germanized installierst. Vielen Dank!"
3346
 
3347
  # @ woocommerce-germanized
3348
- #: includes/class-wc-gzd-install.php:484
3349
  msgctxt "Page slug"
3350
  msgid "data-security"
3351
  msgstr "datenschutzbelehrung"
3352
 
3353
  # @ woocommerce-germanized
3354
- #: includes/class-wc-gzd-install.php:485
3355
  msgctxt "Page title"
3356
  msgid "Data Security Statement"
3357
  msgstr "Datenschutzbelehrung"
3358
 
3359
  # @ woocommerce-germanized
3360
- #: includes/class-wc-gzd-install.php:489
3361
  msgctxt "Page slug"
3362
  msgid "imprint"
3363
  msgstr "impressum"
3364
 
3365
  # @ woocommerce-germanized
3366
- #: includes/class-wc-gzd-install.php:490
3367
  msgctxt "Page title"
3368
  msgid "Imprint"
3369
  msgstr "Impressum"
3370
 
3371
  # @ woocommerce-germanized
3372
- #: includes/class-wc-gzd-install.php:494
3373
  msgctxt "Page slug"
3374
  msgid "terms"
3375
  msgstr "agb"
3376
 
3377
  # @ woocommerce-germanized
3378
- #: includes/class-wc-gzd-install.php:495
3379
  msgctxt "Page title"
3380
  msgid "Terms & Conditions"
3381
  msgstr "AGB"
3382
 
3383
  # @ woocommerce-germanized
3384
- #: includes/class-wc-gzd-install.php:499
3385
  msgctxt "Page slug"
3386
  msgid "revocation"
3387
  msgstr "widerrufsbelehrung"
3388
 
3389
  # @ woocommerce-germanized
3390
- #: includes/class-wc-gzd-install.php:500
3391
  msgctxt "Page title"
3392
  msgid "Power of Revocation"
3393
  msgstr "Widerrufsbelehrung"
3394
 
3395
  # @ woocommerce-germanized
3396
- #: includes/class-wc-gzd-install.php:504
3397
  msgctxt "Page slug"
3398
  msgid "shipping-methods"
3399
  msgstr "versandarten"
3400
 
3401
  # @ woocommerce-germanized
3402
- #: includes/class-wc-gzd-install.php:505
3403
  msgctxt "Page title"
3404
  msgid "Shipping Methods"
3405
  msgstr "Versandarten"
3406
 
3407
  # @ woocommerce-germanized
3408
- #: includes/class-wc-gzd-install.php:509
3409
  msgctxt "Page slug"
3410
  msgid "payment-methods"
3411
  msgstr "bezahlmoeglichkeiten"
3412
 
3413
  # @ woocommerce-germanized
3414
- #: includes/class-wc-gzd-install.php:510
3415
  msgctxt "Page title"
3416
  msgid "Payment Methods"
3417
  msgstr "Zahlungsarten"
@@ -4043,6 +4071,15 @@ msgid ""
4043
  "Sale price labels used to mark old prices (e.g. Recommended Retail Price)"
4044
  msgstr "Preishinweise zur Markierung von Streichpreisen"
4045
 
 
 
 
 
 
 
 
 
 
4046
  # @ woocommerce-germanized
4047
  #: includes/emails/class-wc-gzd-email-customer-ekomi.php:24
4048
  msgctxt "ekomi"
@@ -4119,16 +4156,16 @@ msgid "Payment received"
4119
  msgstr "Zahlung erhalten"
4120
 
4121
  # @ woocommerce-germanized
4122
- #: includes/emails/class-wc-gzd-email-customer-processing-order.php:25
4123
  msgid "Order Confirmation"
4124
  msgstr "Bestellbestätigung"
4125
 
4126
- #: includes/emails/class-wc-gzd-email-customer-processing-order.php:35
4127
  msgid "Confirmation of your order {order_number}"
4128
  msgstr "Bestätigung deiner Bestellung {order_number}"
4129
 
4130
  # @ woocommerce
4131
- #: includes/emails/class-wc-gzd-email-customer-processing-order.php:45
4132
  msgid "Thank you for your order"
4133
  msgstr "Vielen Dank für deine Bestellung"
4134
 
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Germanized v1.5.1\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2018-10-11 13:10+0200\n"
6
+ "PO-Revision-Date: 2018-10-11 13:12+0200\n"
7
  "Last-Translator: holzhannes <holzhannes@posteo.de>\n"
8
  "Language-Team: \n"
9
  "Language: de_DE\n"
95
  #: includes/abstracts/abstract-wc-gzd-product.php:264
96
  #: includes/abstracts/abstract-wc-gzd-product.php:273
97
  #: includes/wc-gzd-core-functions.php:148
98
+ #: includes/wc-gzd-template-functions.php:448 woocommerce-germanized.php:892
99
  msgid "incl. VAT"
100
  msgstr "inkl. MwSt."
101
 
106
 
107
  # @ woocommerce-germanized
108
  #: includes/abstracts/abstract-wc-gzd-product.php:266
109
+ #: includes/wc-gzd-core-functions.php:148 woocommerce-germanized.php:892
110
  #, php-format
111
  msgid "incl. %s%% VAT"
112
  msgstr "inkl. %s%% MwSt."
135
  # @ woocommerce-germanized
136
  #: includes/admin/class-wc-gzd-admin-importer.php:36
137
  #: includes/admin/class-wc-gzd-admin-importer.php:45
138
+ #: includes/admin/class-wc-gzd-admin.php:34
139
+ #: includes/admin/class-wc-gzd-admin.php:43
140
+ #: includes/class-wc-gzd-checkout.php:25 includes/class-wc-gzd-checkout.php:34
141
  #: includes/class-wc-gzd-coupon-helper.php:24
142
  #: includes/class-wc-gzd-coupon-helper.php:33
143
  #: includes/class-wc-gzd-customer-helper.php:19
408
  msgid "Go to WooCommerce Germanized Settings"
409
  msgstr "zu den WooCommerce Germanized Einstellungen"
410
 
411
+ #: includes/admin/class-wc-gzd-admin.php:114
412
  msgid "Order confirmation manually sent to customer."
413
  msgstr "Bestellbestätigung manuell an den Kunden versendet."
414
 
415
  # @ woocommerce-germanized
416
+ #: includes/admin/class-wc-gzd-admin.php:120
417
  msgid "Resend order confirmation"
418
  msgstr "Bestellbestätigung erneut versenden"
419
 
420
  # @ woocommerce-germanized
421
+ #: includes/admin/class-wc-gzd-admin.php:129
422
  #: includes/admin/settings/class-wc-gzd-settings-germanized.php:25
423
  msgid "Germanized"
424
  msgstr "Germanized"
425
 
426
+ #: includes/admin/class-wc-gzd-admin.php:139
427
  msgid "Parcel Delivery Data Transfer:"
428
  msgstr "Paketdienstleister Datenweitergabe:"
429
 
430
+ #: includes/admin/class-wc-gzd-admin.php:140
431
  msgid "allowed"
432
  msgstr "akzeptiert"
433
 
434
+ #: includes/admin/class-wc-gzd-admin.php:140
435
  msgid "not allowed"
436
  msgstr "nicht akzeptiert"
437
 
438
  # @ woocommerce-germanized
439
+ #: includes/admin/class-wc-gzd-admin.php:228
440
  msgid "Optional Email Content"
441
  msgstr "Optionaler E-Mail Inhalt"
442
 
443
  # @ woocommerce-germanized
444
+ #: includes/admin/class-wc-gzd-admin.php:237
445
  msgid "Add content which will be replacing default page content within emails."
446
  msgstr ""
447
  "Fülle dieses Feld aus um einen abweichenden E-Mail Anhangstext für diese "
448
  "Seite zu bestimmen."
449
 
450
  # @ woocommerce-germanized
451
+ #: includes/admin/class-wc-gzd-admin.php:247
452
  #: includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:154
453
  msgid "Optional Mini Description"
454
  msgstr "Warenkorb Kurzbeschreibung"
455
 
456
  # @ woocommerce-germanized
457
+ #: includes/admin/class-wc-gzd-admin.php:264
458
  msgid ""
459
  "This content will be shown as short product description within checkout and "
460
  "emails."
2093
  "Produktdetails (Tabelle, Kundeninfos) von der Bestätigungsseite entfernen."
2094
 
2095
  # @ woocommerce-germanized
2096
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:1290
2097
  msgid ""
2098
  "Sorry, but the new Virtual VAT rules cannot be applied to small business."
2099
  msgstr ""
2365
 
2366
  # @ woocommerce-germanized
2367
  #: includes/admin/views/html-notice-pro.php:28
 
2368
  #: includes/admin/views/html-notice-theme-incompatibility.php:20
2369
  #: includes/admin/views/html-notice-theme-not-ready.php:20
2370
  #: includes/admin/views/html-notice-theme-supported.php:22
2372
  msgstr "Diese Nachricht ausblenden"
2373
 
2374
  # @ woocommerce-germanized
2375
+ #: includes/admin/views/html-notice-review.php:15
2376
  msgid "Do you like WooCommerce Germanized?"
2377
  msgstr "Gefällt dir WooCommerce Germanized?"
2378
 
2379
  # @ woocommerce-germanized
2380
+ #: includes/admin/views/html-notice-review.php:17
2381
  msgid ""
2382
  "If you like WooCommerce Germanized and our Plugin does a good job it would "
2383
  "be great if you would write a review about WooCommerce Germanized on "
2389
  "veröffentlichen. Vielen Dank für deine Mühen!"
2390
 
2391
  # @ woocommerce-germanized
2392
+ #: includes/admin/views/html-notice-review.php:20
2393
  msgid "Write review now"
2394
  msgstr "jetzt Bewertung verfassen"
2395
 
2396
  # @ woocommerce-germanized
2397
+ #: includes/admin/views/html-notice-review.php:21
2398
  msgid "Found Bugs?"
2399
  msgstr "Bugs oder Wünsche melden"
2400
 
2401
+ #: includes/admin/views/html-notice-review.php:24
2402
+ msgid "I've added my review"
2403
+ msgstr "Ich habe bereits bewertet"
2404
+
2405
+ #: includes/admin/views/html-notice-review.php:25
2406
+ msgid "Not now"
2407
+ msgstr "Nicht jetzt"
2408
+
2409
  # @ woocommerce-germanized
2410
  #: includes/admin/views/html-notice-theme-incompatibility.php:14
2411
  msgid "Theme incompatibility found"
2729
  msgstr "EU MwSt.-Sätze erneuern"
2730
 
2731
  # @ woocommerce-germanized
2732
+ #: includes/admin/views/html-page-status-germanized.php:222
2733
+ #: includes/admin/views/html-page-status-germanized.php:224
2734
+ msgid "Disable notices"
2735
+ msgstr "Meldungen deaktivieren"
2736
+
2737
+ #: includes/admin/views/html-page-status-germanized.php:223
2738
+ msgid ""
2739
+ "Germanized might ask you to leave a review or notices you of using a "
2740
+ "possibly unsupported theme. If you want to disable these notices, check this "
2741
+ "option."
2742
+ msgstr ""
2743
+ "Germanized bittet dich um eine Bewertung oder macht dich darauf aufmerksam, "
2744
+ "wenn du ein nicht unterstütztes Theme verwendest. Wenn du diese Meldungen "
2745
+ "deaktivieren willst, verwende diese Option."
2746
+
2747
+ # @ woocommerce-germanized
2748
+ #: includes/admin/views/html-page-status-germanized.php:224
2749
+ msgid "Enable notices"
2750
+ msgstr "Meldungen aktivieren"
2751
+
2752
+ # @ woocommerce-germanized
2753
+ #: includes/admin/views/html-page-status-germanized.php:233
2754
  msgid "Templates"
2755
  msgstr "Templates"
2756
 
2757
  # @ woocommerce-germanized
2758
+ #: includes/admin/views/html-page-status-germanized.php:278
2759
  #, php-format
2760
  msgid ""
2761
  "<code>%s</code> version <strong style=\"color:red\">%s</strong> is out of "
2765
  "veraltet. Die Hauptversion ist %s"
2766
 
2767
  # @ woocommerce-germanized
2768
+ #: includes/admin/views/html-page-status-germanized.php:290
2769
+ #: includes/admin/views/html-page-status-germanized.php:299
2770
  msgid "Overrides"
2771
  msgstr "Überschreibt"
2772
 
2773
  # @ woocommerce-germanized
2774
+ #: includes/admin/views/html-page-status-germanized.php:310
2775
  msgid "Learn how to update outdated templates"
2776
  msgstr "Erfahre, wie du veraltete Templates aktualisierst"
2777
 
2804
  #: includes/api/class-wc-gzd-rest-customers-controller.php:144
2805
  #: includes/api/class-wc-gzd-rest-orders-controller.php:161
2806
  #: includes/api/class-wc-gzd-rest-orders-controller.php:168
2807
+ #: includes/class-wc-gzd-checkout.php:365
2808
+ #: includes/class-wc-gzd-checkout.php:375
2809
  #: includes/class-wc-gzd-customer-helper.php:106
2810
  #: includes/class-wc-gzd-customer-helper.php:114
2811
  msgid "Title"
3092
  "Mail mit deinen Daten als Bestätigung."
3093
 
3094
  # @ woocommerce-germanized
3095
+ #: includes/class-wc-gzd-checkout.php:366
3096
+ #: includes/class-wc-gzd-checkout.php:374
3097
+ #: includes/class-wc-gzd-checkout.php:399
3098
+ #: includes/class-wc-gzd-checkout.php:625
3099
  #: includes/class-wc-gzd-customer-helper.php:108
3100
  #: includes/class-wc-gzd-customer-helper.php:116
3101
  #: includes/class-wc-gzd-revocation.php:41
3104
  msgstr "Herr"
3105
 
3106
  # @ woocommerce-germanized
3107
+ #: includes/class-wc-gzd-checkout.php:366
3108
+ #: includes/class-wc-gzd-checkout.php:374
3109
+ #: includes/class-wc-gzd-checkout.php:400
3110
+ #: includes/class-wc-gzd-checkout.php:625
3111
+ #: includes/class-wc-gzd-checkout.php:634
3112
  #: includes/class-wc-gzd-customer-helper.php:108
3113
  #: includes/class-wc-gzd-customer-helper.php:116
3114
  #: includes/class-wc-gzd-revocation.php:42
3338
  "Dieser Text wird in die Bestellbestätigung eingefügt. Verwende "
3339
  "{order_number}, {site_title} oder {order_date} als Platzhalter."
3340
 
3341
+ #: includes/class-wc-gzd-emails.php:126
3342
  msgid ""
3343
  "Your order has been received and is now being processed. Your order details "
3344
  "are shown below for your reference."
3346
  "Deine Bestellung ist eingegangen und wird nun bearbeitet. Die Einzelheiten "
3347
  "deiner Bestellung kannst du der nachfolgenden Tabelle entnehmen."
3348
 
3349
+ #: includes/class-wc-gzd-emails.php:165
3350
  msgid "Someone requested a password reset for your account."
3351
  msgstr ""
3352
  "Jemand hat das Zurücksetzen des Passworts für deinen Account beantragt."
3353
 
3354
+ #: includes/class-wc-gzd-emails.php:178
3355
  #, php-format
3356
  msgid "Thanks for creating an account on %s."
3357
  msgstr "Danke, dass du ein Konto bei %s erstellt hast."
3358
 
3359
  # @ woocommerce-germanized
3360
+ #: includes/class-wc-gzd-emails.php:629
3361
  msgctxt "revocation-form"
3362
  msgid "Forward your Revocation online"
3363
  msgstr "Deinen Widerruf online erklären"
3373
  "WooCommerce Germanized installierst. Vielen Dank!"
3374
 
3375
  # @ woocommerce-germanized
3376
+ #: includes/class-wc-gzd-install.php:482
3377
  msgctxt "Page slug"
3378
  msgid "data-security"
3379
  msgstr "datenschutzbelehrung"
3380
 
3381
  # @ woocommerce-germanized
3382
+ #: includes/class-wc-gzd-install.php:483
3383
  msgctxt "Page title"
3384
  msgid "Data Security Statement"
3385
  msgstr "Datenschutzbelehrung"
3386
 
3387
  # @ woocommerce-germanized
3388
+ #: includes/class-wc-gzd-install.php:487
3389
  msgctxt "Page slug"
3390
  msgid "imprint"
3391
  msgstr "impressum"
3392
 
3393
  # @ woocommerce-germanized
3394
+ #: includes/class-wc-gzd-install.php:488
3395
  msgctxt "Page title"
3396
  msgid "Imprint"
3397
  msgstr "Impressum"
3398
 
3399
  # @ woocommerce-germanized
3400
+ #: includes/class-wc-gzd-install.php:492
3401
  msgctxt "Page slug"
3402
  msgid "terms"
3403
  msgstr "agb"
3404
 
3405
  # @ woocommerce-germanized
3406
+ #: includes/class-wc-gzd-install.php:493
3407
  msgctxt "Page title"
3408
  msgid "Terms & Conditions"
3409
  msgstr "AGB"
3410
 
3411
  # @ woocommerce-germanized
3412
+ #: includes/class-wc-gzd-install.php:497
3413
  msgctxt "Page slug"
3414
  msgid "revocation"
3415
  msgstr "widerrufsbelehrung"
3416
 
3417
  # @ woocommerce-germanized
3418
+ #: includes/class-wc-gzd-install.php:498
3419
  msgctxt "Page title"
3420
  msgid "Power of Revocation"
3421
  msgstr "Widerrufsbelehrung"
3422
 
3423
  # @ woocommerce-germanized
3424
+ #: includes/class-wc-gzd-install.php:502
3425
  msgctxt "Page slug"
3426
  msgid "shipping-methods"
3427
  msgstr "versandarten"
3428
 
3429
  # @ woocommerce-germanized
3430
+ #: includes/class-wc-gzd-install.php:503
3431
  msgctxt "Page title"
3432
  msgid "Shipping Methods"
3433
  msgstr "Versandarten"
3434
 
3435
  # @ woocommerce-germanized
3436
+ #: includes/class-wc-gzd-install.php:507
3437
  msgctxt "Page slug"
3438
  msgid "payment-methods"
3439
  msgstr "bezahlmoeglichkeiten"
3440
 
3441
  # @ woocommerce-germanized
3442
+ #: includes/class-wc-gzd-install.php:508
3443
  msgctxt "Page title"
3444
  msgid "Payment Methods"
3445
  msgstr "Zahlungsarten"
4071
  "Sale price labels used to mark old prices (e.g. Recommended Retail Price)"
4072
  msgstr "Preishinweise zur Markierung von Streichpreisen"
4073
 
4074
+ #: includes/compatibility/class-wc-gzd-compatibility-wpml.php:215
4075
+ #, php-format
4076
+ msgid ""
4077
+ "This option may be translated via WPML. You may translate the original "
4078
+ "option (%s) %s to %s by adjusting the value above."
4079
+ msgstr ""
4080
+ "Diese Option kann per WPML übersetzt werden. Du kannst die originale Option "
4081
+ "(%s) %s auf %s übersetzen indem du die Übersetzung oben anpasst."
4082
+
4083
  # @ woocommerce-germanized
4084
  #: includes/emails/class-wc-gzd-email-customer-ekomi.php:24
4085
  msgctxt "ekomi"
4156
  msgstr "Zahlung erhalten"
4157
 
4158
  # @ woocommerce-germanized
4159
+ #: includes/emails/class-wc-gzd-email-customer-processing-order.php:35
4160
  msgid "Order Confirmation"
4161
  msgstr "Bestellbestätigung"
4162
 
4163
+ #: includes/emails/class-wc-gzd-email-customer-processing-order.php:45
4164
  msgid "Confirmation of your order {order_number}"
4165
  msgstr "Bestätigung deiner Bestellung {order_number}"
4166
 
4167
  # @ woocommerce
4168
+ #: includes/emails/class-wc-gzd-email-customer-processing-order.php:55
4169
  msgid "Thank you for your order"
4170
  msgstr "Vielen Dank für deine Bestellung"
4171
 
i18n/languages/woocommerce-germanized-de_DE_formal.mo CHANGED
Binary file
i18n/languages/woocommerce-germanized-de_DE_formal.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Germanized v1.5.1\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2018-09-26 14:28+0200\n"
6
- "PO-Revision-Date: 2018-09-26 14:28+0200\n"
7
  "Last-Translator: holzhannes <holzhannes@posteo.de>\n"
8
  "Language-Team: \n"
9
  "Language: de_DE\n"
@@ -95,7 +95,7 @@ msgstr "l"
95
  #: includes/abstracts/abstract-wc-gzd-product.php:264
96
  #: includes/abstracts/abstract-wc-gzd-product.php:273
97
  #: includes/wc-gzd-core-functions.php:148
98
- #: includes/wc-gzd-template-functions.php:448 woocommerce-germanized.php:887
99
  msgid "incl. VAT"
100
  msgstr "inkl. MwSt."
101
 
@@ -106,7 +106,7 @@ msgstr "exkl. MwSt."
106
 
107
  # @ woocommerce-germanized
108
  #: includes/abstracts/abstract-wc-gzd-product.php:266
109
- #: includes/wc-gzd-core-functions.php:148 woocommerce-germanized.php:887
110
  #, php-format
111
  msgid "incl. %s%% VAT"
112
  msgstr "inkl. %s%% MwSt."
@@ -135,9 +135,9 @@ msgstr "Aktivierungscode erneut versenden"
135
  # @ woocommerce-germanized
136
  #: includes/admin/class-wc-gzd-admin-importer.php:36
137
  #: includes/admin/class-wc-gzd-admin-importer.php:45
138
- #: includes/admin/class-wc-gzd-admin.php:28
139
- #: includes/admin/class-wc-gzd-admin.php:37
140
- #: includes/class-wc-gzd-checkout.php:24 includes/class-wc-gzd-checkout.php:33
141
  #: includes/class-wc-gzd-coupon-helper.php:24
142
  #: includes/class-wc-gzd-coupon-helper.php:33
143
  #: includes/class-wc-gzd-customer-helper.php:19
@@ -408,53 +408,53 @@ msgstr "Willkommen bei WooCommerce Germanized"
408
  msgid "Go to WooCommerce Germanized Settings"
409
  msgstr "zu den WooCommerce Germanized Einstellungen"
410
 
411
- #: includes/admin/class-wc-gzd-admin.php:104
412
  msgid "Order confirmation manually sent to customer."
413
  msgstr "Bestellbestätigung manuell an den Kunden versendet."
414
 
415
  # @ woocommerce-germanized
416
- #: includes/admin/class-wc-gzd-admin.php:110
417
  msgid "Resend order confirmation"
418
  msgstr "Bestellbestätigung erneut versenden"
419
 
420
  # @ woocommerce-germanized
421
- #: includes/admin/class-wc-gzd-admin.php:119
422
  #: includes/admin/settings/class-wc-gzd-settings-germanized.php:25
423
  msgid "Germanized"
424
  msgstr "Germanized"
425
 
426
- #: includes/admin/class-wc-gzd-admin.php:129
427
  msgid "Parcel Delivery Data Transfer:"
428
  msgstr "Paketdienstleister Datenweitergabe:"
429
 
430
- #: includes/admin/class-wc-gzd-admin.php:130
431
  msgid "allowed"
432
  msgstr "akzeptiert"
433
 
434
- #: includes/admin/class-wc-gzd-admin.php:130
435
  msgid "not allowed"
436
  msgstr "nicht akzeptiert"
437
 
438
  # @ woocommerce-germanized
439
- #: includes/admin/class-wc-gzd-admin.php:204
440
  msgid "Optional Email Content"
441
  msgstr "Optionaler E-Mail Inhalt"
442
 
443
  # @ woocommerce-germanized
444
- #: includes/admin/class-wc-gzd-admin.php:213
445
  msgid "Add content which will be replacing default page content within emails."
446
  msgstr ""
447
  "Fülle dieses Feld aus um einen abweichenden E-Mail Anhangstext für diese "
448
  "Seite zu bestimmen."
449
 
450
  # @ woocommerce-germanized
451
- #: includes/admin/class-wc-gzd-admin.php:223
452
  #: includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:154
453
  msgid "Optional Mini Description"
454
  msgstr "Warenkorb Kurzbeschreibung"
455
 
456
  # @ woocommerce-germanized
457
- #: includes/admin/class-wc-gzd-admin.php:240
458
  msgid ""
459
  "This content will be shown as short product description within checkout and "
460
  "emails."
@@ -2093,7 +2093,7 @@ msgstr ""
2093
  "Produktdetails (Tabelle, Kundeninfos) von der Bestätigungsseite entfernen."
2094
 
2095
  # @ woocommerce-germanized
2096
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:1288
2097
  msgid ""
2098
  "Sorry, but the new Virtual VAT rules cannot be applied to small business."
2099
  msgstr ""
@@ -2365,7 +2365,6 @@ msgstr "Mehr über die Pro Version erfahren"
2365
 
2366
  # @ woocommerce-germanized
2367
  #: includes/admin/views/html-notice-pro.php:28
2368
- #: includes/admin/views/html-notice-review.php:23
2369
  #: includes/admin/views/html-notice-theme-incompatibility.php:20
2370
  #: includes/admin/views/html-notice-theme-not-ready.php:20
2371
  #: includes/admin/views/html-notice-theme-supported.php:22
@@ -2373,12 +2372,12 @@ msgid "Hide this notice"
2373
  msgstr "Diese Nachricht ausblenden"
2374
 
2375
  # @ woocommerce-germanized
2376
- #: includes/admin/views/html-notice-review.php:14
2377
  msgid "Do you like WooCommerce Germanized?"
2378
  msgstr "Gefällt dir WooCommerce Germanized?"
2379
 
2380
  # @ woocommerce-germanized
2381
- #: includes/admin/views/html-notice-review.php:16
2382
  msgid ""
2383
  "If you like WooCommerce Germanized and our Plugin does a good job it would "
2384
  "be great if you would write a review about WooCommerce Germanized on "
@@ -2390,15 +2389,23 @@ msgstr ""
2390
  "veröffentlichen. Vielen Dank für deine Mühen!"
2391
 
2392
  # @ woocommerce-germanized
2393
- #: includes/admin/views/html-notice-review.php:19
2394
  msgid "Write review now"
2395
  msgstr "jetzt Bewertung verfassen"
2396
 
2397
  # @ woocommerce-germanized
2398
- #: includes/admin/views/html-notice-review.php:20
2399
  msgid "Found Bugs?"
2400
  msgstr "Bugs oder Wünsche melden"
2401
 
 
 
 
 
 
 
 
 
2402
  # @ woocommerce-germanized
2403
  #: includes/admin/views/html-notice-theme-incompatibility.php:14
2404
  msgid "Theme incompatibility found"
@@ -2722,12 +2729,33 @@ msgid "Renew VAT Rates"
2722
  msgstr "EU MwSt.-Sätze erneuern"
2723
 
2724
  # @ woocommerce-germanized
2725
- #: includes/admin/views/html-page-status-germanized.php:228
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2726
  msgid "Templates"
2727
  msgstr "Templates"
2728
 
2729
  # @ woocommerce-germanized
2730
- #: includes/admin/views/html-page-status-germanized.php:273
2731
  #, php-format
2732
  msgid ""
2733
  "<code>%s</code> version <strong style=\"color:red\">%s</strong> is out of "
@@ -2737,13 +2765,13 @@ msgstr ""
2737
  "veraltet. Die Hauptversion ist %s"
2738
 
2739
  # @ woocommerce-germanized
2740
- #: includes/admin/views/html-page-status-germanized.php:285
2741
- #: includes/admin/views/html-page-status-germanized.php:294
2742
  msgid "Overrides"
2743
  msgstr "Überschreibt"
2744
 
2745
  # @ woocommerce-germanized
2746
- #: includes/admin/views/html-page-status-germanized.php:305
2747
  msgid "Learn how to update outdated templates"
2748
  msgstr "Erfahre, wie du veraltete Templates aktualisierst"
2749
 
@@ -2776,8 +2804,8 @@ msgstr "jetzt upgraden"
2776
  #: includes/api/class-wc-gzd-rest-customers-controller.php:144
2777
  #: includes/api/class-wc-gzd-rest-orders-controller.php:161
2778
  #: includes/api/class-wc-gzd-rest-orders-controller.php:168
2779
- #: includes/class-wc-gzd-checkout.php:358
2780
- #: includes/class-wc-gzd-checkout.php:368
2781
  #: includes/class-wc-gzd-customer-helper.php:106
2782
  #: includes/class-wc-gzd-customer-helper.php:114
2783
  msgid "Title"
@@ -3064,10 +3092,10 @@ msgstr ""
3064
  "Mail mit Ihren Daten als Bestätigung."
3065
 
3066
  # @ woocommerce-germanized
3067
- #: includes/class-wc-gzd-checkout.php:359
3068
- #: includes/class-wc-gzd-checkout.php:367
3069
- #: includes/class-wc-gzd-checkout.php:392
3070
- #: includes/class-wc-gzd-checkout.php:618
3071
  #: includes/class-wc-gzd-customer-helper.php:108
3072
  #: includes/class-wc-gzd-customer-helper.php:116
3073
  #: includes/class-wc-gzd-revocation.php:41
@@ -3076,11 +3104,11 @@ msgid "Mr."
3076
  msgstr "Herr"
3077
 
3078
  # @ woocommerce-germanized
3079
- #: includes/class-wc-gzd-checkout.php:359
3080
- #: includes/class-wc-gzd-checkout.php:367
3081
- #: includes/class-wc-gzd-checkout.php:393
3082
- #: includes/class-wc-gzd-checkout.php:618
3083
- #: includes/class-wc-gzd-checkout.php:627
3084
  #: includes/class-wc-gzd-customer-helper.php:108
3085
  #: includes/class-wc-gzd-customer-helper.php:116
3086
  #: includes/class-wc-gzd-revocation.php:42
@@ -3312,7 +3340,7 @@ msgstr ""
3312
  "Dieser Text wird in die Bestellbestätigung eingefügt. Verwende "
3313
  "{order_number}, {site_title} oder {order_date} als Platzhalter."
3314
 
3315
- #: includes/class-wc-gzd-emails.php:125
3316
  msgid ""
3317
  "Your order has been received and is now being processed. Your order details "
3318
  "are shown below for your reference."
@@ -3320,17 +3348,17 @@ msgstr ""
3320
  "Ihre Bestellung ist eingegangen und wird nun bearbeitet. Die Einzelheiten "
3321
  "Ihrer Bestellung können Sie der nachfolgenden Tabelle entnehmen."
3322
 
3323
- #: includes/class-wc-gzd-emails.php:164
3324
  msgid "Someone requested a password reset for your account."
3325
  msgstr "Jemand hat das Zurücksetzen des Passworts für Ihren Account beantragt."
3326
 
3327
- #: includes/class-wc-gzd-emails.php:177
3328
  #, php-format
3329
  msgid "Thanks for creating an account on %s."
3330
  msgstr "Danke, dass Sie ein Konto bei %s erstellt haben."
3331
 
3332
  # @ woocommerce-germanized
3333
- #: includes/class-wc-gzd-emails.php:628
3334
  msgctxt "revocation-form"
3335
  msgid "Forward your Revocation online"
3336
  msgstr "Widerruf online erklären"
@@ -3346,73 +3374,73 @@ msgstr ""
3346
  "WooCommerce Germanized installierst. Vielen Dank!"
3347
 
3348
  # @ woocommerce-germanized
3349
- #: includes/class-wc-gzd-install.php:484
3350
  msgctxt "Page slug"
3351
  msgid "data-security"
3352
  msgstr "datenschutzbelehrung"
3353
 
3354
  # @ woocommerce-germanized
3355
- #: includes/class-wc-gzd-install.php:485
3356
  msgctxt "Page title"
3357
  msgid "Data Security Statement"
3358
  msgstr "Datenschutzbelehrung"
3359
 
3360
  # @ woocommerce-germanized
3361
- #: includes/class-wc-gzd-install.php:489
3362
  msgctxt "Page slug"
3363
  msgid "imprint"
3364
  msgstr "impressum"
3365
 
3366
  # @ woocommerce-germanized
3367
- #: includes/class-wc-gzd-install.php:490
3368
  msgctxt "Page title"
3369
  msgid "Imprint"
3370
  msgstr "Impressum"
3371
 
3372
  # @ woocommerce-germanized
3373
- #: includes/class-wc-gzd-install.php:494
3374
  msgctxt "Page slug"
3375
  msgid "terms"
3376
  msgstr "agb"
3377
 
3378
  # @ woocommerce-germanized
3379
- #: includes/class-wc-gzd-install.php:495
3380
  msgctxt "Page title"
3381
  msgid "Terms & Conditions"
3382
  msgstr "AGB"
3383
 
3384
  # @ woocommerce-germanized
3385
- #: includes/class-wc-gzd-install.php:499
3386
  msgctxt "Page slug"
3387
  msgid "revocation"
3388
  msgstr "widerrufsbelehrung"
3389
 
3390
  # @ woocommerce-germanized
3391
- #: includes/class-wc-gzd-install.php:500
3392
  msgctxt "Page title"
3393
  msgid "Power of Revocation"
3394
  msgstr "Widerrufsbelehrung"
3395
 
3396
  # @ woocommerce-germanized
3397
- #: includes/class-wc-gzd-install.php:504
3398
  msgctxt "Page slug"
3399
  msgid "shipping-methods"
3400
  msgstr "versandarten"
3401
 
3402
  # @ woocommerce-germanized
3403
- #: includes/class-wc-gzd-install.php:505
3404
  msgctxt "Page title"
3405
  msgid "Shipping Methods"
3406
  msgstr "Versandarten"
3407
 
3408
  # @ woocommerce-germanized
3409
- #: includes/class-wc-gzd-install.php:509
3410
  msgctxt "Page slug"
3411
  msgid "payment-methods"
3412
  msgstr "bezahlmoeglichkeiten"
3413
 
3414
  # @ woocommerce-germanized
3415
- #: includes/class-wc-gzd-install.php:510
3416
  msgctxt "Page title"
3417
  msgid "Payment Methods"
3418
  msgstr "Zahlungsarten"
@@ -4045,6 +4073,15 @@ msgid ""
4045
  "Sale price labels used to mark old prices (e.g. Recommended Retail Price)"
4046
  msgstr "Preishinweise zur Markierung von Streichpreisen"
4047
 
 
 
 
 
 
 
 
 
 
4048
  # @ woocommerce-germanized
4049
  #: includes/emails/class-wc-gzd-email-customer-ekomi.php:24
4050
  msgctxt "ekomi"
@@ -4121,16 +4158,16 @@ msgid "Payment received"
4121
  msgstr "Zahlung erhalten"
4122
 
4123
  # @ woocommerce-germanized
4124
- #: includes/emails/class-wc-gzd-email-customer-processing-order.php:25
4125
  msgid "Order Confirmation"
4126
  msgstr "Bestellbestätigung"
4127
 
4128
- #: includes/emails/class-wc-gzd-email-customer-processing-order.php:35
4129
  msgid "Confirmation of your order {order_number}"
4130
  msgstr "Bestätigung Ihrer Bestellung {order_number}"
4131
 
4132
  # @ woocommerce
4133
- #: includes/emails/class-wc-gzd-email-customer-processing-order.php:45
4134
  msgid "Thank you for your order"
4135
  msgstr "Vielen Dank für Ihre Bestellung"
4136
 
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Germanized v1.5.1\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2018-10-11 13:12+0200\n"
6
+ "PO-Revision-Date: 2018-10-11 13:12+0200\n"
7
  "Last-Translator: holzhannes <holzhannes@posteo.de>\n"
8
  "Language-Team: \n"
9
  "Language: de_DE\n"
95
  #: includes/abstracts/abstract-wc-gzd-product.php:264
96
  #: includes/abstracts/abstract-wc-gzd-product.php:273
97
  #: includes/wc-gzd-core-functions.php:148
98
+ #: includes/wc-gzd-template-functions.php:448 woocommerce-germanized.php:892
99
  msgid "incl. VAT"
100
  msgstr "inkl. MwSt."
101
 
106
 
107
  # @ woocommerce-germanized
108
  #: includes/abstracts/abstract-wc-gzd-product.php:266
109
+ #: includes/wc-gzd-core-functions.php:148 woocommerce-germanized.php:892
110
  #, php-format
111
  msgid "incl. %s%% VAT"
112
  msgstr "inkl. %s%% MwSt."
135
  # @ woocommerce-germanized
136
  #: includes/admin/class-wc-gzd-admin-importer.php:36
137
  #: includes/admin/class-wc-gzd-admin-importer.php:45
138
+ #: includes/admin/class-wc-gzd-admin.php:34
139
+ #: includes/admin/class-wc-gzd-admin.php:43
140
+ #: includes/class-wc-gzd-checkout.php:25 includes/class-wc-gzd-checkout.php:34
141
  #: includes/class-wc-gzd-coupon-helper.php:24
142
  #: includes/class-wc-gzd-coupon-helper.php:33
143
  #: includes/class-wc-gzd-customer-helper.php:19
408
  msgid "Go to WooCommerce Germanized Settings"
409
  msgstr "zu den WooCommerce Germanized Einstellungen"
410
 
411
+ #: includes/admin/class-wc-gzd-admin.php:114
412
  msgid "Order confirmation manually sent to customer."
413
  msgstr "Bestellbestätigung manuell an den Kunden versendet."
414
 
415
  # @ woocommerce-germanized
416
+ #: includes/admin/class-wc-gzd-admin.php:120
417
  msgid "Resend order confirmation"
418
  msgstr "Bestellbestätigung erneut versenden"
419
 
420
  # @ woocommerce-germanized
421
+ #: includes/admin/class-wc-gzd-admin.php:129
422
  #: includes/admin/settings/class-wc-gzd-settings-germanized.php:25
423
  msgid "Germanized"
424
  msgstr "Germanized"
425
 
426
+ #: includes/admin/class-wc-gzd-admin.php:139
427
  msgid "Parcel Delivery Data Transfer:"
428
  msgstr "Paketdienstleister Datenweitergabe:"
429
 
430
+ #: includes/admin/class-wc-gzd-admin.php:140
431
  msgid "allowed"
432
  msgstr "akzeptiert"
433
 
434
+ #: includes/admin/class-wc-gzd-admin.php:140
435
  msgid "not allowed"
436
  msgstr "nicht akzeptiert"
437
 
438
  # @ woocommerce-germanized
439
+ #: includes/admin/class-wc-gzd-admin.php:228
440
  msgid "Optional Email Content"
441
  msgstr "Optionaler E-Mail Inhalt"
442
 
443
  # @ woocommerce-germanized
444
+ #: includes/admin/class-wc-gzd-admin.php:237
445
  msgid "Add content which will be replacing default page content within emails."
446
  msgstr ""
447
  "Fülle dieses Feld aus um einen abweichenden E-Mail Anhangstext für diese "
448
  "Seite zu bestimmen."
449
 
450
  # @ woocommerce-germanized
451
+ #: includes/admin/class-wc-gzd-admin.php:247
452
  #: includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:154
453
  msgid "Optional Mini Description"
454
  msgstr "Warenkorb Kurzbeschreibung"
455
 
456
  # @ woocommerce-germanized
457
+ #: includes/admin/class-wc-gzd-admin.php:264
458
  msgid ""
459
  "This content will be shown as short product description within checkout and "
460
  "emails."
2093
  "Produktdetails (Tabelle, Kundeninfos) von der Bestätigungsseite entfernen."
2094
 
2095
  # @ woocommerce-germanized
2096
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:1290
2097
  msgid ""
2098
  "Sorry, but the new Virtual VAT rules cannot be applied to small business."
2099
  msgstr ""
2365
 
2366
  # @ woocommerce-germanized
2367
  #: includes/admin/views/html-notice-pro.php:28
 
2368
  #: includes/admin/views/html-notice-theme-incompatibility.php:20
2369
  #: includes/admin/views/html-notice-theme-not-ready.php:20
2370
  #: includes/admin/views/html-notice-theme-supported.php:22
2372
  msgstr "Diese Nachricht ausblenden"
2373
 
2374
  # @ woocommerce-germanized
2375
+ #: includes/admin/views/html-notice-review.php:15
2376
  msgid "Do you like WooCommerce Germanized?"
2377
  msgstr "Gefällt dir WooCommerce Germanized?"
2378
 
2379
  # @ woocommerce-germanized
2380
+ #: includes/admin/views/html-notice-review.php:17
2381
  msgid ""
2382
  "If you like WooCommerce Germanized and our Plugin does a good job it would "
2383
  "be great if you would write a review about WooCommerce Germanized on "
2389
  "veröffentlichen. Vielen Dank für deine Mühen!"
2390
 
2391
  # @ woocommerce-germanized
2392
+ #: includes/admin/views/html-notice-review.php:20
2393
  msgid "Write review now"
2394
  msgstr "jetzt Bewertung verfassen"
2395
 
2396
  # @ woocommerce-germanized
2397
+ #: includes/admin/views/html-notice-review.php:21
2398
  msgid "Found Bugs?"
2399
  msgstr "Bugs oder Wünsche melden"
2400
 
2401
+ #: includes/admin/views/html-notice-review.php:24
2402
+ msgid "I've added my review"
2403
+ msgstr "Ich habe bereits bewertet"
2404
+
2405
+ #: includes/admin/views/html-notice-review.php:25
2406
+ msgid "Not now"
2407
+ msgstr "Nicht jetzt"
2408
+
2409
  # @ woocommerce-germanized
2410
  #: includes/admin/views/html-notice-theme-incompatibility.php:14
2411
  msgid "Theme incompatibility found"
2729
  msgstr "EU MwSt.-Sätze erneuern"
2730
 
2731
  # @ woocommerce-germanized
2732
+ #: includes/admin/views/html-page-status-germanized.php:222
2733
+ #: includes/admin/views/html-page-status-germanized.php:224
2734
+ msgid "Disable notices"
2735
+ msgstr "Meldungen deaktivieren"
2736
+
2737
+ #: includes/admin/views/html-page-status-germanized.php:223
2738
+ msgid ""
2739
+ "Germanized might ask you to leave a review or notices you of using a "
2740
+ "possibly unsupported theme. If you want to disable these notices, check this "
2741
+ "option."
2742
+ msgstr ""
2743
+ "Germanized bittet dich um eine Bewertung oder macht dich darauf aufmerksam, "
2744
+ "wenn du ein nicht unterstütztes Theme verwendest. Wenn du diese Meldungen "
2745
+ "deaktivieren willst, verwende diese Option."
2746
+
2747
+ # @ woocommerce-germanized
2748
+ #: includes/admin/views/html-page-status-germanized.php:224
2749
+ msgid "Enable notices"
2750
+ msgstr "Meldungen aktivieren"
2751
+
2752
+ # @ woocommerce-germanized
2753
+ #: includes/admin/views/html-page-status-germanized.php:233
2754
  msgid "Templates"
2755
  msgstr "Templates"
2756
 
2757
  # @ woocommerce-germanized
2758
+ #: includes/admin/views/html-page-status-germanized.php:278
2759
  #, php-format
2760
  msgid ""
2761
  "<code>%s</code> version <strong style=\"color:red\">%s</strong> is out of "
2765
  "veraltet. Die Hauptversion ist %s"
2766
 
2767
  # @ woocommerce-germanized
2768
+ #: includes/admin/views/html-page-status-germanized.php:290
2769
+ #: includes/admin/views/html-page-status-germanized.php:299
2770
  msgid "Overrides"
2771
  msgstr "Überschreibt"
2772
 
2773
  # @ woocommerce-germanized
2774
+ #: includes/admin/views/html-page-status-germanized.php:310
2775
  msgid "Learn how to update outdated templates"
2776
  msgstr "Erfahre, wie du veraltete Templates aktualisierst"
2777
 
2804
  #: includes/api/class-wc-gzd-rest-customers-controller.php:144
2805
  #: includes/api/class-wc-gzd-rest-orders-controller.php:161
2806
  #: includes/api/class-wc-gzd-rest-orders-controller.php:168
2807
+ #: includes/class-wc-gzd-checkout.php:365
2808
+ #: includes/class-wc-gzd-checkout.php:375
2809
  #: includes/class-wc-gzd-customer-helper.php:106
2810
  #: includes/class-wc-gzd-customer-helper.php:114
2811
  msgid "Title"
3092
  "Mail mit Ihren Daten als Bestätigung."
3093
 
3094
  # @ woocommerce-germanized
3095
+ #: includes/class-wc-gzd-checkout.php:366
3096
+ #: includes/class-wc-gzd-checkout.php:374
3097
+ #: includes/class-wc-gzd-checkout.php:399
3098
+ #: includes/class-wc-gzd-checkout.php:625
3099
  #: includes/class-wc-gzd-customer-helper.php:108
3100
  #: includes/class-wc-gzd-customer-helper.php:116
3101
  #: includes/class-wc-gzd-revocation.php:41
3104
  msgstr "Herr"
3105
 
3106
  # @ woocommerce-germanized
3107
+ #: includes/class-wc-gzd-checkout.php:366
3108
+ #: includes/class-wc-gzd-checkout.php:374
3109
+ #: includes/class-wc-gzd-checkout.php:400
3110
+ #: includes/class-wc-gzd-checkout.php:625
3111
+ #: includes/class-wc-gzd-checkout.php:634
3112
  #: includes/class-wc-gzd-customer-helper.php:108
3113
  #: includes/class-wc-gzd-customer-helper.php:116
3114
  #: includes/class-wc-gzd-revocation.php:42
3340
  "Dieser Text wird in die Bestellbestätigung eingefügt. Verwende "
3341
  "{order_number}, {site_title} oder {order_date} als Platzhalter."
3342
 
3343
+ #: includes/class-wc-gzd-emails.php:126
3344
  msgid ""
3345
  "Your order has been received and is now being processed. Your order details "
3346
  "are shown below for your reference."
3348
  "Ihre Bestellung ist eingegangen und wird nun bearbeitet. Die Einzelheiten "
3349
  "Ihrer Bestellung können Sie der nachfolgenden Tabelle entnehmen."
3350
 
3351
+ #: includes/class-wc-gzd-emails.php:165
3352
  msgid "Someone requested a password reset for your account."
3353
  msgstr "Jemand hat das Zurücksetzen des Passworts für Ihren Account beantragt."
3354
 
3355
+ #: includes/class-wc-gzd-emails.php:178
3356
  #, php-format
3357
  msgid "Thanks for creating an account on %s."
3358
  msgstr "Danke, dass Sie ein Konto bei %s erstellt haben."
3359
 
3360
  # @ woocommerce-germanized
3361
+ #: includes/class-wc-gzd-emails.php:629
3362
  msgctxt "revocation-form"
3363
  msgid "Forward your Revocation online"
3364
  msgstr "Widerruf online erklären"
3374
  "WooCommerce Germanized installierst. Vielen Dank!"
3375
 
3376
  # @ woocommerce-germanized
3377
+ #: includes/class-wc-gzd-install.php:482
3378
  msgctxt "Page slug"
3379
  msgid "data-security"
3380
  msgstr "datenschutzbelehrung"
3381
 
3382
  # @ woocommerce-germanized
3383
+ #: includes/class-wc-gzd-install.php:483
3384
  msgctxt "Page title"
3385
  msgid "Data Security Statement"
3386
  msgstr "Datenschutzbelehrung"
3387
 
3388
  # @ woocommerce-germanized
3389
+ #: includes/class-wc-gzd-install.php:487
3390
  msgctxt "Page slug"
3391
  msgid "imprint"
3392
  msgstr "impressum"
3393
 
3394
  # @ woocommerce-germanized
3395
+ #: includes/class-wc-gzd-install.php:488
3396
  msgctxt "Page title"
3397
  msgid "Imprint"
3398
  msgstr "Impressum"
3399
 
3400
  # @ woocommerce-germanized
3401
+ #: includes/class-wc-gzd-install.php:492
3402
  msgctxt "Page slug"
3403
  msgid "terms"
3404
  msgstr "agb"
3405
 
3406
  # @ woocommerce-germanized
3407
+ #: includes/class-wc-gzd-install.php:493
3408
  msgctxt "Page title"
3409
  msgid "Terms & Conditions"
3410
  msgstr "AGB"
3411
 
3412
  # @ woocommerce-germanized
3413
+ #: includes/class-wc-gzd-install.php:497
3414
  msgctxt "Page slug"
3415
  msgid "revocation"
3416
  msgstr "widerrufsbelehrung"
3417
 
3418
  # @ woocommerce-germanized
3419
+ #: includes/class-wc-gzd-install.php:498
3420
  msgctxt "Page title"
3421
  msgid "Power of Revocation"
3422
  msgstr "Widerrufsbelehrung"
3423
 
3424
  # @ woocommerce-germanized
3425
+ #: includes/class-wc-gzd-install.php:502
3426
  msgctxt "Page slug"
3427
  msgid "shipping-methods"
3428
  msgstr "versandarten"
3429
 
3430
  # @ woocommerce-germanized
3431
+ #: includes/class-wc-gzd-install.php:503
3432
  msgctxt "Page title"
3433
  msgid "Shipping Methods"
3434
  msgstr "Versandarten"
3435
 
3436
  # @ woocommerce-germanized
3437
+ #: includes/class-wc-gzd-install.php:507
3438
  msgctxt "Page slug"
3439
  msgid "payment-methods"
3440
  msgstr "bezahlmoeglichkeiten"
3441
 
3442
  # @ woocommerce-germanized
3443
+ #: includes/class-wc-gzd-install.php:508
3444
  msgctxt "Page title"
3445
  msgid "Payment Methods"
3446
  msgstr "Zahlungsarten"
4073
  "Sale price labels used to mark old prices (e.g. Recommended Retail Price)"
4074
  msgstr "Preishinweise zur Markierung von Streichpreisen"
4075
 
4076
+ #: includes/compatibility/class-wc-gzd-compatibility-wpml.php:215
4077
+ #, php-format
4078
+ msgid ""
4079
+ "This option may be translated via WPML. You may translate the original "
4080
+ "option (%s) %s to %s by adjusting the value above."
4081
+ msgstr ""
4082
+ "Diese Option kann per WPML übersetzt werden. Du kannst die originale Option "
4083
+ "(%s) %s auf %s übersetzen indem du die Übersetzung oben anpasst."
4084
+
4085
  # @ woocommerce-germanized
4086
  #: includes/emails/class-wc-gzd-email-customer-ekomi.php:24
4087
  msgctxt "ekomi"
4158
  msgstr "Zahlung erhalten"
4159
 
4160
  # @ woocommerce-germanized
4161
+ #: includes/emails/class-wc-gzd-email-customer-processing-order.php:35
4162
  msgid "Order Confirmation"
4163
  msgstr "Bestellbestätigung"
4164
 
4165
+ #: includes/emails/class-wc-gzd-email-customer-processing-order.php:45
4166
  msgid "Confirmation of your order {order_number}"
4167
  msgstr "Bestätigung Ihrer Bestellung {order_number}"
4168
 
4169
  # @ woocommerce
4170
+ #: includes/emails/class-wc-gzd-email-customer-processing-order.php:55
4171
  msgid "Thank you for your order"
4172
  msgstr "Vielen Dank für Ihre Bestellung"
4173
 
includes/admin/class-wc-gzd-admin-legal-checkboxes.php CHANGED
@@ -58,7 +58,7 @@ class WC_GZD_Admin_Legal_Checkboxes {
58
 
59
  foreach( $fields as $key => $field ) {
60
  if ( isset( $field['id'] ) && $checkbox->get_form_field_id( 'label' ) === $field['id'] ) {
61
- $fields[$key]['desc'] = $field['desc'] . '<span class="gzd-small-desc">' . __( 'e.g. include your privacy policy: {data_security_page}Privacy Policy{/data_security_page}' ) . '</span>';
62
  }
63
  }
64
 
58
 
59
  foreach( $fields as $key => $field ) {
60
  if ( isset( $field['id'] ) && $checkbox->get_form_field_id( 'label' ) === $field['id'] ) {
61
+ $fields[$key]['desc'] = $field['desc'] . '<span class="gzd-small-desc">' . __( 'e.g. include your privacy policy: {data_security_page}Privacy Policy{/data_security_page}', 'woocommerce-germanized' ) . '</span>';
62
  }
63
  }
64
 
includes/admin/class-wc-gzd-admin-notices.php CHANGED
@@ -44,39 +44,65 @@ class WC_GZD_Admin_Notices {
44
  add_action( 'admin_print_styles', array( $this, 'add_notices' ), 1 );
45
  }
46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  /**
48
  * Add notices + styles if needed.
49
  */
50
  public function add_notices() {
51
 
52
- if ( get_option( '_wc_gzd_needs_update' ) == 1 || get_option( '_wc_gzd_needs_pages' ) == 1 || get_option( '_wc_gzd_import_available' ) == 1 ) {
53
-
54
- wp_enqueue_style( 'woocommerce-activation', plugins_url( '/assets/css/activation.css', WC_PLUGIN_FILE ) );
55
- wp_enqueue_style( 'woocommerce-gzd-activation', plugins_url( '/assets/css/woocommerce-gzd-activation.css', WC_GERMANIZED_PLUGIN_FILE ) );
56
- add_action( 'admin_notices', array( $this, 'install_notice' ) );
57
-
 
 
 
 
 
 
58
  }
59
-
60
- if ( ! get_option( '_wc_gzd_hide_theme_notice' ) ) {
61
 
62
- if ( ! WC_germanized()->is_pro() ) {
 
63
 
64
- if ( ! $this->is_theme_compatible() )
65
- add_action( 'admin_notices', array( $this, 'theme_incompatibility_notice' ) );
66
- elseif ( $this->is_theme_supported_by_pro() )
67
- add_action( 'admin_notices', array( $this, 'theme_supported_notice' ) );
68
- elseif ( ! $this->is_theme_ready() )
69
- add_action( 'admin_notices', array( $this, 'theme_not_ready_notice' ) );
70
 
 
71
  }
72
-
73
  }
74
 
75
- if ( ! get_option( '_wc_gzd_hide_review_notice' ) )
 
 
 
 
 
 
 
 
 
76
  add_action( 'admin_notices', array( $this, 'add_review_notice' ) );
 
77
 
78
- if ( ! get_option( '_wc_gzd_hide_pro_notice' ) && ! WC_germanized()->is_pro() )
79
  add_action( 'admin_notices', array( $this, 'add_pro_notice' ) );
 
80
 
81
  if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'wc-gzd-about' || get_option( '_wc_gzd_needs_pages' ) ) {
82
  remove_action( 'admin_notices', array( $this, 'theme_incompatibility_notice' ) );
@@ -108,30 +134,28 @@ class WC_GZD_Admin_Notices {
108
  }
109
 
110
  public function check_notice_hide() {
 
 
 
111
 
112
  $notices = array(
113
- 'wc-gzd-hide-theme-notice',
 
114
  'wc-gzd-hide-review-notice',
115
  'wc-gzd-hide-pro-notice'
116
  );
117
 
118
  if ( ! empty( $notices ) ) {
119
-
120
  foreach ( $notices as $notice ) {
121
-
122
- if ( isset( $_GET[ 'notice' ] ) && $_GET[ 'notice' ] == $notice && isset( $_GET['nonce'] ) && check_admin_referer( $notice, 'nonce' ) ) {
123
-
124
  update_option( '_' . str_replace( '-', '_', $notice ) , true );
125
  $redirect_url = remove_query_arg( 'notice', remove_query_arg( 'nonce', $_SERVER['REQUEST_URI'] ) );
 
126
  wp_safe_redirect( $redirect_url );
127
  exit();
128
-
129
  }
130
-
131
  }
132
-
133
  }
134
-
135
  }
136
 
137
  public function theme_incompatibility_notice() {
@@ -159,7 +183,6 @@ class WC_GZD_Admin_Notices {
159
  }
160
 
161
  public function is_theme_supported_by_pro() {
162
-
163
  $supporting = array(
164
  'enfold',
165
  'flatsome',
@@ -177,30 +200,24 @@ class WC_GZD_Admin_Notices {
177
  }
178
 
179
  public function add_review_notice() {
180
-
181
  if ( get_option( 'woocommerce_gzd_activation_date' ) )
182
- $this->queue_notice( 7, 'html-notice-review.php' );
183
-
184
  }
185
 
186
  public function add_pro_notice() {
187
-
188
  if ( get_option( 'woocommerce_gzd_activation_date' ) )
189
  $this->queue_notice( 4, 'html-notice-pro.php' );
190
  }
191
 
192
  public function queue_notice( $days, $view ) {
193
-
194
  if ( get_option( 'woocommerce_gzd_activation_date' ) ) {
195
 
196
  $activation_date = ( get_option( 'woocommerce_gzd_activation_date' ) ? get_option( 'woocommerce_gzd_activation_date' ) : date( 'Y-m-d' ) );
197
- $diff = WC_germanized()->get_date_diff( $activation_date, date( 'Y-m-d' ) );
198
 
199
- if ( $diff[ 'd' ] >= absint( $days ) )
200
  include( 'views/' . $view );
201
-
202
  }
203
-
204
  }
205
 
206
  /**
@@ -209,7 +226,6 @@ class WC_GZD_Admin_Notices {
209
  * @return boolean
210
  */
211
  public function is_theme_compatible() {
212
-
213
  $templates_to_check = WC_germanized()->get_critical_templates();
214
 
215
  if ( ! empty( $templates_to_check ) ) {
@@ -227,7 +243,6 @@ class WC_GZD_Admin_Notices {
227
  return false;
228
  }
229
  }
230
-
231
  return true;
232
  }
233
  }
44
  add_action( 'admin_print_styles', array( $this, 'add_notices' ), 1 );
45
  }
46
 
47
+ public function enable_notices() {
48
+ $enabled = true;
49
+
50
+ if ( ! current_user_can( 'manage_woocommerce' ) ) {
51
+ $enabled = false;
52
+ }
53
+
54
+ if ( get_option( 'woocommerce_gzd_disable_notices' ) === 'yes' ) {
55
+ $enabled = false;
56
+ }
57
+
58
+ return apply_filters( 'woocommerce_gzd_enable_notices', $enabled );
59
+ }
60
+
61
  /**
62
  * Add notices + styles if needed.
63
  */
64
  public function add_notices() {
65
 
66
+ $screen = get_current_screen();
67
+ $screen_id = $screen ? $screen->id : '';
68
+ $show_on_screens = array(
69
+ 'dashboard',
70
+ 'plugins',
71
+ );
72
+
73
+ $wc_screen_ids = function_exists( 'wc_get_screen_ids' ) ? wc_get_screen_ids() : array();
74
+
75
+ // Notices should only show on WooCommerce screens, the main dashboard, and on the plugins screen.
76
+ if ( ! in_array( $screen_id, $wc_screen_ids, true ) && ! in_array( $screen_id, $show_on_screens, true ) ) {
77
+ return;
78
  }
 
 
79
 
80
+ if ( get_option( '_wc_gzd_needs_update' ) == 1 || get_option( '_wc_gzd_needs_pages' ) == 1 || get_option( '_wc_gzd_import_available' ) == 1 ) {
81
+ if ( current_user_can( 'manage_woocommerce' ) ) {
82
 
83
+ wp_enqueue_style( 'woocommerce-activation', plugins_url( '/assets/css/activation.css', WC_PLUGIN_FILE ) );
84
+ wp_enqueue_style( 'woocommerce-gzd-activation', plugins_url( '/assets/css/woocommerce-gzd-activation.css', WC_GERMANIZED_PLUGIN_FILE ) );
 
 
 
 
85
 
86
+ add_action( 'admin_notices', array( $this, 'install_notice' ) );
87
  }
 
88
  }
89
 
90
+ if ( ! get_option( '_wc_gzd_hide_theme_notice' ) && ! WC_germanized()->is_pro() && $this->enable_notices() ) {
91
+ if ( ! $this->is_theme_compatible() )
92
+ add_action( 'admin_notices', array( $this, 'theme_incompatibility_notice' ) );
93
+ elseif ( $this->is_theme_supported_by_pro() )
94
+ add_action( 'admin_notices', array( $this, 'theme_supported_notice' ) );
95
+ elseif ( ! $this->is_theme_ready() )
96
+ add_action( 'admin_notices', array( $this, 'theme_not_ready_notice' ) );
97
+ }
98
+
99
+ if ( ! get_option( '_wc_gzd_hide_review_notice' ) && ! get_option( '_wc_gzd_disable_review_notice' ) && $this->enable_notices() ) {
100
  add_action( 'admin_notices', array( $this, 'add_review_notice' ) );
101
+ }
102
 
103
+ if ( ! get_option( '_wc_gzd_hide_pro_notice' ) && ! WC_germanized()->is_pro() && $this->enable_notices() ) {
104
  add_action( 'admin_notices', array( $this, 'add_pro_notice' ) );
105
+ }
106
 
107
  if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'wc-gzd-about' || get_option( '_wc_gzd_needs_pages' ) ) {
108
  remove_action( 'admin_notices', array( $this, 'theme_incompatibility_notice' ) );
134
  }
135
 
136
  public function check_notice_hide() {
137
+ if ( ! current_user_can( 'manage_woocommerce' ) ) {
138
+ return;
139
+ }
140
 
141
  $notices = array(
142
+ 'wc-gzd-hide-theme-notice',
143
+ 'wc-gzd-disable-review-notice',
144
  'wc-gzd-hide-review-notice',
145
  'wc-gzd-hide-pro-notice'
146
  );
147
 
148
  if ( ! empty( $notices ) ) {
 
149
  foreach ( $notices as $notice ) {
150
+ if ( isset( $_GET['notice'] ) && $_GET['notice'] == $notice && isset( $_GET['nonce'] ) && check_admin_referer( $notice, 'nonce' ) ) {
 
 
151
  update_option( '_' . str_replace( '-', '_', $notice ) , true );
152
  $redirect_url = remove_query_arg( 'notice', remove_query_arg( 'nonce', $_SERVER['REQUEST_URI'] ) );
153
+
154
  wp_safe_redirect( $redirect_url );
155
  exit();
 
156
  }
 
157
  }
 
158
  }
 
159
  }
160
 
161
  public function theme_incompatibility_notice() {
183
  }
184
 
185
  public function is_theme_supported_by_pro() {
 
186
  $supporting = array(
187
  'enfold',
188
  'flatsome',
200
  }
201
 
202
  public function add_review_notice() {
 
203
  if ( get_option( 'woocommerce_gzd_activation_date' ) )
204
+ $this->queue_notice( 3, 'html-notice-review.php' );
 
205
  }
206
 
207
  public function add_pro_notice() {
 
208
  if ( get_option( 'woocommerce_gzd_activation_date' ) )
209
  $this->queue_notice( 4, 'html-notice-pro.php' );
210
  }
211
 
212
  public function queue_notice( $days, $view ) {
 
213
  if ( get_option( 'woocommerce_gzd_activation_date' ) ) {
214
 
215
  $activation_date = ( get_option( 'woocommerce_gzd_activation_date' ) ? get_option( 'woocommerce_gzd_activation_date' ) : date( 'Y-m-d' ) );
216
+ $diff = WC_germanized()->get_date_diff( $activation_date, date( 'Y-m-d' ) );
217
 
218
+ if ( $diff['d'] >= absint( $days ) )
219
  include( 'views/' . $view );
 
220
  }
 
221
  }
222
 
223
  /**
226
  * @return boolean
227
  */
228
  public function is_theme_compatible() {
 
229
  $templates_to_check = WC_germanized()->get_critical_templates();
230
 
231
  if ( ! empty( $templates_to_check ) ) {
243
  return false;
244
  }
245
  }
 
246
  return true;
247
  }
248
  }
includes/admin/class-wc-gzd-admin.php CHANGED
@@ -12,6 +12,12 @@ class WC_GZD_Admin {
12
  */
13
  protected static $_instance = null;
14
 
 
 
 
 
 
 
15
  public static function instance() {
16
  if ( is_null( self::$_instance ) ) {
17
  self::$_instance = new self();
@@ -42,6 +48,9 @@ class WC_GZD_Admin {
42
  add_action( 'add_meta_boxes', array( $this, 'add_product_mini_desc' ) );
43
 
44
  add_action( 'admin_enqueue_scripts', array( $this, 'add_scripts' ) );
 
 
 
45
  add_action( 'save_post', array( $this, 'save_legal_page_content' ), 10, 3 );
46
 
47
  add_filter( 'woocommerce_admin_status_tabs', array( $this, 'set_gzd_status_tab' ) );
@@ -54,6 +63,7 @@ class WC_GZD_Admin {
54
  add_action( 'admin_init', array( $this, 'check_version_cache_deletion' ) );
55
  add_action( 'admin_init', array( $this, 'check_insert_vat_rates' ) );
56
  add_action( 'admin_init', array( $this, 'check_resend_activation_email' ) );
 
57
 
58
  add_filter( 'woocommerce_addons_section_data', array( $this, 'set_addon' ), 10, 2 );
59
  add_action( 'woocommerce_admin_order_data_after_shipping_address', array( $this, 'set_order_parcel_delivery_opted_in' ), 10, 1 );
@@ -152,10 +162,10 @@ class WC_GZD_Admin {
152
  }
153
 
154
  public function add_scripts() {
155
-
156
- $screen = get_current_screen();
157
- $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
158
- $assets_path = WC_germanized()->plugin_url() . '/assets/';
159
  $admin_script_path = $assets_path . 'js/admin/';
160
 
161
  wp_register_style( 'woocommerce-gzd-admin', $assets_path . 'css/woocommerce-gzd-admin' . $suffix . '.css', false, WC_GERMANIZED_VERSION );
@@ -198,8 +208,22 @@ class WC_GZD_Admin {
198
  // Hide delivery time and unit tagsdiv
199
  if ( version_compare( WC()->version, '2.3', '>=' ) )
200
  wp_add_inline_style( 'woocommerce-gzd-admin', '#tagsdiv-product_delivery_time, #tagsdiv-product_unit, #tagsdiv-product_price_label {display: none}' );
 
 
201
  }
202
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  public function add_legal_page_metabox() {
204
  add_meta_box( 'wc-gzd-legal-page-email-content', __( 'Optional Email Content', 'woocommerce-germanized' ), array( $this, 'init_legal_page_metabox' ), 'page' );
205
  }
@@ -415,6 +439,20 @@ class WC_GZD_Admin {
415
  );
416
  }
417
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
418
  public function check_insert_vat_rates() {
419
  if ( current_user_can( 'manage_woocommerce' ) && isset( $_GET[ 'insert-vat-rates' ] ) && isset( $_GET[ '_wpnonce' ] ) && check_admin_referer( 'wc-gzd-insert-vat-rates' ) ) {
420
 
12
  */
13
  protected static $_instance = null;
14
 
15
+ /**
16
+ * Contains an array of script handles localized by WC.
17
+ * @var array
18
+ */
19
+ private static $wp_localize_scripts = array();
20
+
21
  public static function instance() {
22
  if ( is_null( self::$_instance ) ) {
23
  self::$_instance = new self();
48
  add_action( 'add_meta_boxes', array( $this, 'add_product_mini_desc' ) );
49
 
50
  add_action( 'admin_enqueue_scripts', array( $this, 'add_scripts' ) );
51
+ add_action( 'wp_print_scripts', array( $this, 'localize_printed_scripts' ), 5 );
52
+ add_action( 'wp_print_footer_scripts', array( $this, 'localize_printed_scripts' ), 5 );
53
+
54
  add_action( 'save_post', array( $this, 'save_legal_page_content' ), 10, 3 );
55
 
56
  add_filter( 'woocommerce_admin_status_tabs', array( $this, 'set_gzd_status_tab' ) );
63
  add_action( 'admin_init', array( $this, 'check_version_cache_deletion' ) );
64
  add_action( 'admin_init', array( $this, 'check_insert_vat_rates' ) );
65
  add_action( 'admin_init', array( $this, 'check_resend_activation_email' ) );
66
+ add_action( 'admin_init', array( $this, 'check_notices' ) );
67
 
68
  add_filter( 'woocommerce_addons_section_data', array( $this, 'set_addon' ), 10, 2 );
69
  add_action( 'woocommerce_admin_order_data_after_shipping_address', array( $this, 'set_order_parcel_delivery_opted_in' ), 10, 1 );
162
  }
163
 
164
  public function add_scripts() {
165
+
166
+ $screen = get_current_screen();
167
+ $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
168
+ $assets_path = WC_germanized()->plugin_url() . '/assets/';
169
  $admin_script_path = $assets_path . 'js/admin/';
170
 
171
  wp_register_style( 'woocommerce-gzd-admin', $assets_path . 'css/woocommerce-gzd-admin' . $suffix . '.css', false, WC_GERMANIZED_VERSION );
208
  // Hide delivery time and unit tagsdiv
209
  if ( version_compare( WC()->version, '2.3', '>=' ) )
210
  wp_add_inline_style( 'woocommerce-gzd-admin', '#tagsdiv-product_delivery_time, #tagsdiv-product_unit, #tagsdiv-product_price_label {display: none}' );
211
+
212
+ do_action( 'woocommerce_gzd_admin_assets', $this, $admin_script_path, $suffix );
213
  }
214
 
215
+ public function localize_printed_scripts() {
216
+ $localized_scripts = apply_filters( 'woocommerce_gzd_admin_localized_scripts', array() );
217
+
218
+ foreach( $localized_scripts as $handle => $data ) {
219
+ if ( ! in_array( $handle, self::$wp_localize_scripts ) && wp_script_is( $handle ) ) {
220
+ $name = str_replace( '-', '_', $handle ) . '_params';
221
+ self::$wp_localize_scripts[] = $handle;
222
+ wp_localize_script( $handle, $name, $data );
223
+ }
224
+ }
225
+ }
226
+
227
  public function add_legal_page_metabox() {
228
  add_meta_box( 'wc-gzd-legal-page-email-content', __( 'Optional Email Content', 'woocommerce-germanized' ), array( $this, 'init_legal_page_metabox' ), 'page' );
229
  }
439
  );
440
  }
441
 
442
+ public function check_notices() {
443
+ if ( current_user_can( 'manage_woocommerce' ) && isset( $_GET[ 'check-notices' ] ) && isset( $_GET[ '_wpnonce' ] ) && check_admin_referer( 'wc-gzd-notices' ) ) {
444
+
445
+ if ( get_option( 'woocommerce_gzd_disable_notices' ) ) {
446
+ delete_option( 'woocommerce_gzd_disable_notices' );
447
+ } else {
448
+ update_option( 'woocommerce_gzd_disable_notices', 'yes' );
449
+ }
450
+
451
+ // Redirect to check for updates
452
+ wp_safe_redirect( admin_url( 'admin.php?page=wc-status&tab=germanized' ) );
453
+ }
454
+ }
455
+
456
  public function check_insert_vat_rates() {
457
  if ( current_user_can( 'manage_woocommerce' ) && isset( $_GET[ 'insert-vat-rates' ] ) && isset( $_GET[ '_wpnonce' ] ) && check_admin_referer( 'wc-gzd-insert-vat-rates' ) ) {
458
 
includes/admin/settings/class-wc-gzd-settings-germanized.php CHANGED
@@ -1197,6 +1197,8 @@ class WC_GZD_Settings_Germanized extends WC_Settings_Page {
1197
  foreach ( $this->get_sections() as $section => $name ) {
1198
  if ( $section === $current_section ) {
1199
  $settings = apply_filters( 'woocommerce_gzd_get_settings_' . $section, $this->get_settings() );
 
 
1200
  $sidebar = apply_filters( 'woocommerce_gzd_get_sidebar_' . $section, $sidebar );
1201
  }
1202
  }
1197
  foreach ( $this->get_sections() as $section => $name ) {
1198
  if ( $section === $current_section ) {
1199
  $settings = apply_filters( 'woocommerce_gzd_get_settings_' . $section, $this->get_settings() );
1200
+ $settings = apply_filters( 'woocommerce_gzd_get_settings_filter', $settings );
1201
+
1202
  $sidebar = apply_filters( 'woocommerce_gzd_get_sidebar_' . $section, $sidebar );
1203
  }
1204
  }
includes/admin/views/html-admin-email-text-option.php CHANGED
@@ -4,6 +4,15 @@ if ( ! defined( 'ABSPATH' ) ) {
4
  exit;
5
  }
6
 
 
 
 
 
 
 
 
 
 
7
  ?>
8
 
9
  <table class="form-table">
@@ -12,7 +21,7 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  <label for="<?php echo esc_attr( $args['id'] ); ?>"><?php echo $args['label']; ?> <?php echo wc_gzd_help_tip( $args['desc'] ); ?></label>
13
  </th>
14
  <td class="forminp">
15
- <textarea id="<?php echo esc_attr( $args['id'] ); ?>" name="<?php echo esc_attr( $args['id'] ); ?>" style="height: 65px;" placeholder="<?php echo esc_attr( $args['placeholder'] ); ?>"><?php echo esc_textarea( $args['value'] ); ?></textarea>
16
  </td>
17
  </tr>
18
  </table>
4
  exit;
5
  }
6
 
7
+ // Custom attribute handling.
8
+ $custom_attributes = array();
9
+
10
+ if ( ! empty( $args['custom_attributes'] ) && is_array( $args['custom_attributes'] ) ) {
11
+ foreach ( $args['custom_attributes'] as $attribute => $attribute_value ) {
12
+ $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"';
13
+ }
14
+ }
15
+
16
  ?>
17
 
18
  <table class="form-table">
21
  <label for="<?php echo esc_attr( $args['id'] ); ?>"><?php echo $args['label']; ?> <?php echo wc_gzd_help_tip( $args['desc'] ); ?></label>
22
  </th>
23
  <td class="forminp">
24
+ <textarea id="<?php echo esc_attr( $args['id'] ); ?>" name="<?php echo esc_attr( $args['id'] ); ?>" style="height: 65px;" placeholder="<?php echo esc_attr( $args['placeholder'] ); ?>" <?php echo implode( ' ', $custom_attributes ); // WPCS: XSS ok. ?>><?php echo esc_textarea( $args['value'] ); ?></textarea>
25
  </td>
26
  </tr>
27
  </table>
includes/admin/views/html-notice-review.php CHANGED
@@ -8,6 +8,7 @@ if ( ! defined( 'ABSPATH' ) ) {
8
  }
9
 
10
  $dismiss_url = add_query_arg( 'notice', 'wc-gzd-hide-review-notice', add_query_arg( 'nonce', wp_create_nonce( 'wc-gzd-hide-review-notice' ) ) );
 
11
  ?>
12
 
13
  <div class="updated fade">
@@ -20,7 +21,8 @@ $dismiss_url = add_query_arg( 'notice', 'wc-gzd-hide-review-notice', add_query_a
20
  <a class="button button-secondary" href="https://wordpress.org/support/plugin/woocommerce-germanized" target="_blank"><?php _e( 'Found Bugs?', 'woocommerce-germanized' );?></a>
21
  </p>
22
  <p class="alignright">
23
- <a href="<?php echo esc_url( $dismiss_url );?>"><?php _e( 'Hide this notice', 'woocommerce-germanized' ); ?></a>
 
24
  </p>
25
  <div class="clear"></div>
26
  </div>
8
  }
9
 
10
  $dismiss_url = add_query_arg( 'notice', 'wc-gzd-hide-review-notice', add_query_arg( 'nonce', wp_create_nonce( 'wc-gzd-hide-review-notice' ) ) );
11
+ $disable_url = add_query_arg( 'notice', 'wc-gzd-disable-review-notice', add_query_arg( 'nonce', wp_create_nonce( 'wc-gzd-disable-review-notice' ) ) );
12
  ?>
13
 
14
  <div class="updated fade">
21
  <a class="button button-secondary" href="https://wordpress.org/support/plugin/woocommerce-germanized" target="_blank"><?php _e( 'Found Bugs?', 'woocommerce-germanized' );?></a>
22
  </p>
23
  <p class="alignright">
24
+ <a style="margin-right: 2em;" href="<?php echo esc_url( $disable_url );?>"><?php _e( "I've added my review", 'woocommerce-germanized' ); ?></a>
25
+ <a href="<?php echo esc_url( $dismiss_url );?>"><?php _e( 'Not now', 'woocommerce-germanized' ); ?></a>
26
  </p>
27
  <div class="clear"></div>
28
  </div>
includes/admin/views/html-page-status-germanized.php CHANGED
@@ -217,6 +217,11 @@ if ( ! defined( 'ABSPATH' ) )
217
  <td><?php _e( 'Renew EU VAT Rates', 'woocommerce-germanized' ); ?></td>
218
  <td class="help"><?php echo '<a href="#" class="help_tip" data-tip="' . esc_attr( __( 'Insert VAT rates (standard, recuded and virtual) for EU countries. This option deletes all of your standard, reduced and virtual rates before inserting.', 'woocommerce-germanized' ) ) . '">[?]</a>'; ?></td>
219
  <td><a href="<?php echo wp_nonce_url( add_query_arg( array( 'insert-vat-rates' => true ) ), 'wc-gzd-insert-vat-rates' ); ?>" class="button button-secondary"><?php _e( 'Renew VAT Rates', 'woocommerce-germanized' ); ?></a></td>
 
 
 
 
 
220
  </tr>
221
  <?php do_action( 'woocommerce_gzd_status_after_tools' ); ?>
222
  </tbody>
217
  <td><?php _e( 'Renew EU VAT Rates', 'woocommerce-germanized' ); ?></td>
218
  <td class="help"><?php echo '<a href="#" class="help_tip" data-tip="' . esc_attr( __( 'Insert VAT rates (standard, recuded and virtual) for EU countries. This option deletes all of your standard, reduced and virtual rates before inserting.', 'woocommerce-germanized' ) ) . '">[?]</a>'; ?></td>
219
  <td><a href="<?php echo wp_nonce_url( add_query_arg( array( 'insert-vat-rates' => true ) ), 'wc-gzd-insert-vat-rates' ); ?>" class="button button-secondary"><?php _e( 'Renew VAT Rates', 'woocommerce-germanized' ); ?></a></td>
220
+ </tr>
221
+ <tr>
222
+ <td><?php _e( 'Disable notices', 'woocommerce-germanized' ); ?></td>
223
+ <td class="help"><?php echo '<a href="#" class="help_tip" data-tip="' . esc_attr( __( 'Germanized might ask you to leave a review or notices you of using a possibly unsupported theme. If you want to disable these notices, check this option.', 'woocommerce-germanized' ) ) . '">[?]</a>'; ?></td>
224
+ <td><a href="<?php echo wp_nonce_url( add_query_arg( array( 'check-notices' => true ) ), 'wc-gzd-notices' ); ?>" class="button button-secondary"><?php echo 'yes' === get_option( 'woocommerce_gzd_disable_notices' ) ? __( 'Enable notices', 'woocommerce-germanized' ) : __( 'Disable notices', 'woocommerce-germanized' ); ?></a></td>
225
  </tr>
226
  <?php do_action( 'woocommerce_gzd_status_after_tools' ); ?>
227
  </tbody>
includes/class-wc-gzd-checkout.php CHANGED
@@ -282,7 +282,13 @@ class WC_GZD_Checkout {
282
  }
283
 
284
  if ( apply_filters( 'woocommerce_gzd_show_order_pay_now_button', $enabled, $order_id ) ) {
285
- wc_get_template( 'order/order-pay-now-button.php', array( 'url' => add_query_arg( array( 'force_pay_order' => true ), $order->get_checkout_payment_url() ), 'order_id' => $order_id ) );
 
 
 
 
 
 
286
  }
287
  }
288
 
282
  }
283
 
284
  if ( apply_filters( 'woocommerce_gzd_show_order_pay_now_button', $enabled, $order_id ) ) {
285
+ $url = $order->get_checkout_payment_url();
286
+
287
+ if ( apply_filters( 'woocommerce_gzd_add_force_pay_order_parameter', true, $order_id ) ) {
288
+ $url = add_query_arg( array( 'force_pay_order' => true ), $url );
289
+ }
290
+
291
+ wc_get_template( 'order/order-pay-now-button.php', array( 'url' => $url, 'order_id' => $order_id ) );
292
  }
293
  }
294
 
includes/class-wc-gzd-dependencies.php CHANGED
@@ -223,7 +223,7 @@ class WC_GZD_Dependencies {
223
  public function compare_versions( $main_ver, $ver2, $operator ) {
224
 
225
  $expl_main_ver = explode( '.', $main_ver );
226
- $expl_ver2 = explode( '.', $ver2 );
227
 
228
  // Check if ver2 string is more accurate than main_ver
229
  if ( sizeof( $expl_main_ver ) == 2 && sizeof( $expl_ver2 ) > 2 ) {
223
  public function compare_versions( $main_ver, $ver2, $operator ) {
224
 
225
  $expl_main_ver = explode( '.', $main_ver );
226
+ $expl_ver2 = explode( '.', $ver2 );
227
 
228
  // Check if ver2 string is more accurate than main_ver
229
  if ( sizeof( $expl_main_ver ) == 2 && sizeof( $expl_ver2 ) > 2 ) {
includes/class-wc-gzd-emails.php CHANGED
@@ -76,13 +76,14 @@ class WC_GZD_Emails {
76
  public function confirmation_text_option( $object ) {
77
  if ( 'customer_processing_order' === $object->id ) {
78
 
79
- $args = array(
80
- 'id' => 'woocommerce_gzd_email_order_confirmation_text',
81
- 'label' => __( 'Confirmation text', 'woocommerce-germanized' ),
82
- 'placeholder' => __( 'Your order has been received and is now being processed. Your order details are shown below for your reference:', 'woocommerce-germanized' ),
83
- 'desc' => __( 'This text will be inserted within the order confirmation email. Use {order_number}, {site_title} or {order_date} as placeholder.', 'woocommerce-germanized' ),
84
- 'value' => get_option( 'woocommerce_gzd_email_order_confirmation_text' ),
85
- );
 
86
 
87
  include_once WC_GERMANIZED_ABSPATH . 'includes/admin/views/html-admin-email-text-option.php';
88
  }
@@ -163,7 +164,7 @@ class WC_GZD_Emails {
163
  if ( 'Someone requested that the password be reset for the following account:' === $original ) {
164
  return __( 'Someone requested a password reset for your account.', 'woocommerce-germanized' );
165
  } elseif ( 'Username: %s' === $original ) {
166
- remove_filter( 'gettext', array( $this, 'maybe_hide_username_password_reset' ), 10, 3 );
167
  return '';
168
  }
169
  }
@@ -173,7 +174,7 @@ class WC_GZD_Emails {
173
 
174
  public function maybe_hide_username_new_account( $translated, $original, $domain ) {
175
  if ( 'woocommerce' === $domain && 'Thanks for creating an account on %s. Your username is <strong>%s</strong>' === $original ) {
176
- remove_filter( 'gettext', array( $this, 'maybe_hide_username_new_account' ), 10, 3 );
177
  return __( 'Thanks for creating an account on %s.', 'woocommerce-germanized' );
178
  }
179
  return $translated;
@@ -253,7 +254,6 @@ class WC_GZD_Emails {
253
  }
254
 
255
  public function maybe_disable_order_paid_email_notification_2_6( $order_id ) {
256
-
257
  $order = wc_get_order( $order_id );
258
 
259
  if ( ! $order ) {
@@ -304,6 +304,7 @@ class WC_GZD_Emails {
304
  public function set_woocommerce_template_dir( $dir, $template ) {
305
  if ( file_exists( WC_germanized()->plugin_path() . '/templates/' . $template ) )
306
  return 'woocommerce-germanized';
 
307
  return $dir;
308
  }
309
 
@@ -323,9 +324,9 @@ class WC_GZD_Emails {
323
  remove_action( $status . '_notification', array( $this->get_email_instance_by_id( 'customer_processing_order' ), 'trigger' ) );
324
  remove_action( $status . '_notification', array( $this->get_email_instance_by_id( 'new_order' ), 'trigger' ) );
325
 
326
- if ( $this->get_email_instance_by_id( 'customer_on_hold_order' ) )
327
- remove_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $this->get_email_instance_by_id( 'customer_on_hold_order' ), 'trigger' ) );
328
-
329
  }
330
  }
331
 
76
  public function confirmation_text_option( $object ) {
77
  if ( 'customer_processing_order' === $object->id ) {
78
 
79
+ $args = apply_filters( 'woocommerce_gzd_admin_email_order_confirmation_text_option', array(
80
+ 'id' => 'woocommerce_gzd_email_order_confirmation_text',
81
+ 'label' => __( 'Confirmation text', 'woocommerce-germanized' ),
82
+ 'placeholder' => __( 'Your order has been received and is now being processed. Your order details are shown below for your reference:', 'woocommerce-germanized' ),
83
+ 'desc' => __( 'This text will be inserted within the order confirmation email. Use {order_number}, {site_title} or {order_date} as placeholder.', 'woocommerce-germanized' ),
84
+ 'custom_attributes' => array(),
85
+ 'value' => get_option( 'woocommerce_gzd_email_order_confirmation_text' ),
86
+ ) );
87
 
88
  include_once WC_GERMANIZED_ABSPATH . 'includes/admin/views/html-admin-email-text-option.php';
89
  }
164
  if ( 'Someone requested that the password be reset for the following account:' === $original ) {
165
  return __( 'Someone requested a password reset for your account.', 'woocommerce-germanized' );
166
  } elseif ( 'Username: %s' === $original ) {
167
+ remove_filter( 'gettext', array( $this, 'maybe_hide_username_password_reset' ), 10 );
168
  return '';
169
  }
170
  }
174
 
175
  public function maybe_hide_username_new_account( $translated, $original, $domain ) {
176
  if ( 'woocommerce' === $domain && 'Thanks for creating an account on %s. Your username is <strong>%s</strong>' === $original ) {
177
+ remove_filter( 'gettext', array( $this, 'maybe_hide_username_new_account' ), 10 );
178
  return __( 'Thanks for creating an account on %s.', 'woocommerce-germanized' );
179
  }
180
  return $translated;
254
  }
255
 
256
  public function maybe_disable_order_paid_email_notification_2_6( $order_id ) {
 
257
  $order = wc_get_order( $order_id );
258
 
259
  if ( ! $order ) {
304
  public function set_woocommerce_template_dir( $dir, $template ) {
305
  if ( file_exists( WC_germanized()->plugin_path() . '/templates/' . $template ) )
306
  return 'woocommerce-germanized';
307
+
308
  return $dir;
309
  }
310
 
324
  remove_action( $status . '_notification', array( $this->get_email_instance_by_id( 'customer_processing_order' ), 'trigger' ) );
325
  remove_action( $status . '_notification', array( $this->get_email_instance_by_id( 'new_order' ), 'trigger' ) );
326
 
327
+ if ( $this->get_email_instance_by_id( 'customer_on_hold_order' ) ) {
328
+ remove_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $this->get_email_instance_by_id( 'customer_on_hold_order' ), 'trigger' ) );
329
+ }
330
  }
331
  }
332
 
includes/class-wc-gzd-install.php CHANGED
@@ -167,13 +167,14 @@ class WC_GZD_Install {
167
  // Show tour for new installs only
168
  update_option( 'woocommerce_gzd_hide_tour', 1 );
169
 
170
- $major_version = substr( $current_version, 0, 3 );
171
  $new_major_version = substr( WC_germanized()->version, 0, 3 );
172
 
173
  // Only on major update
174
  if ( version_compare( $new_major_version, $major_version, ">" ) ) {
175
  delete_option( '_wc_gzd_hide_theme_notice' );
176
  delete_option( '_wc_gzd_hide_pro_notice' );
 
177
  }
178
 
179
  } else {
@@ -196,9 +197,6 @@ class WC_GZD_Install {
196
  // Update activation date
197
  update_option( 'woocommerce_gzd_activation_date', date( 'Y-m-d' ) );
198
 
199
- // Add theme compatibility check
200
- delete_option( '_wc_gzd_hide_review_notice' );
201
-
202
  // Check if pages are needed
203
  if ( wc_get_page_id( 'revocation' ) < 1 ) {
204
  update_option( '_wc_gzd_needs_pages', 1 );
167
  // Show tour for new installs only
168
  update_option( 'woocommerce_gzd_hide_tour', 1 );
169
 
170
+ $major_version = substr( $current_version, 0, 3 );
171
  $new_major_version = substr( WC_germanized()->version, 0, 3 );
172
 
173
  // Only on major update
174
  if ( version_compare( $new_major_version, $major_version, ">" ) ) {
175
  delete_option( '_wc_gzd_hide_theme_notice' );
176
  delete_option( '_wc_gzd_hide_pro_notice' );
177
+ delete_option( '_wc_gzd_hide_review_notice' );
178
  }
179
 
180
  } else {
197
  // Update activation date
198
  update_option( 'woocommerce_gzd_activation_date', date( 'Y-m-d' ) );
199
 
 
 
 
200
  // Check if pages are needed
201
  if ( wc_get_page_id( 'revocation' ) < 1 ) {
202
  update_option( '_wc_gzd_needs_pages', 1 );
includes/class-wc-gzd-shortcodes.php CHANGED
@@ -228,11 +228,9 @@ class WC_GZD_Shortcodes {
228
  * @return string
229
  */
230
  public static function gzd_vat_info( $atts, $content = '' ) {
231
-
232
  ob_start();
233
  wc_get_template( 'footer/vat-info.php' );
234
  return ob_get_clean();
235
-
236
  }
237
 
238
  /**
@@ -243,11 +241,9 @@ class WC_GZD_Shortcodes {
243
  * @return string
244
  */
245
  public static function gzd_sale_info( $atts, $content = '' ) {
246
-
247
  ob_start();
248
  wc_get_template( 'footer/sale-info.php' );
249
  return ob_get_clean();
250
-
251
  }
252
 
253
  }
228
  * @return string
229
  */
230
  public static function gzd_vat_info( $atts, $content = '' ) {
 
231
  ob_start();
232
  wc_get_template( 'footer/vat-info.php' );
233
  return ob_get_clean();
 
234
  }
235
 
236
  /**
241
  * @return string
242
  */
243
  public static function gzd_sale_info( $atts, $content = '' ) {
 
244
  ob_start();
245
  wc_get_template( 'footer/sale-info.php' );
246
  return ob_get_clean();
 
247
  }
248
 
249
  }
includes/compatibility/class-wc-gzd-compatibility-wpml.php CHANGED
@@ -12,6 +12,30 @@ class WC_GZD_Compatibility_Wpml extends WC_GZD_Compatibility {
12
 
13
  protected $dynamic_unit_pricing = null;
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  public function __construct() {
16
  parent::__construct(
17
  'WPML',
@@ -48,8 +72,361 @@ class WC_GZD_Compatibility_Wpml extends WC_GZD_Compatibility {
48
  add_action( 'woocommerce_gzd_after_get_term', array( $this, 'rehook_terms_clause' ), 10 );
49
 
50
  add_action( 'woocommerce_gzd_after_revocation_form_fields', array( $this, 'set_language_field' ), 10 );
51
-
52
  $this->filter_page_ids();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  }
54
 
55
  public function before_show_product_unit_price( $product ) {
@@ -65,7 +442,7 @@ class WC_GZD_Compatibility_Wpml extends WC_GZD_Compatibility {
65
  public function unhook_terms_clause() {
66
  global $sitepress;
67
 
68
- remove_filter( 'terms_clauses', array( $sitepress, 'terms_clauses' ), 10, 4 );
69
  }
70
 
71
  public function rehook_terms_clause() {
@@ -175,7 +552,7 @@ class WC_GZD_Compatibility_Wpml extends WC_GZD_Compatibility {
175
  }
176
 
177
  public function filter_page_ids() {
178
-
179
  $woo_pages = array(
180
  'revocation_page_id',
181
  'data_security_page_id',
@@ -191,10 +568,9 @@ class WC_GZD_Compatibility_Wpml extends WC_GZD_Compatibility {
191
  }
192
 
193
  public function translate_page( $id ) {
194
-
195
  global $pagenow;
196
 
197
- if( is_admin() && $pagenow == 'options-permalink.php' )
198
  return $id;
199
 
200
  return apply_filters( 'translate_object_id', $id, 'page', true );
12
 
13
  protected $dynamic_unit_pricing = null;
14
 
15
+ protected $strings_to_translate = array(
16
+ 'woocommerce_gzd_small_enterprise_text' => '',
17
+ 'woocommerce_gzd_differential_taxation_notice_text' => '',
18
+ 'woocommerce_gzd_shipping_costs_text' => '',
19
+ 'woocommerce_gzd_order_submit_btn_text' => '',
20
+ 'woocommerce_gzd_complaints_procedure_text' => '',
21
+ 'woocommerce_gzd_delivery_time_text' => '',
22
+ 'woocommerce_gzd_unit_price_text' => '',
23
+ 'woocommerce_gzd_product_units_text' => '',
24
+ 'woocommerce_gzd_display_listings_link_details_text' => '',
25
+ 'woocommerce_gzd_display_digital_delivery_time_text' => '',
26
+ 'woocommerce_gzd_order_success_text' => '',
27
+ 'woocommerce_gzd_customer_account_text' => '',
28
+ 'woocommerce_gzd_email_order_confirmation_text' => '',
29
+ 'woocommerce_gzd_alternative_complaints_text_none' => '',
30
+ 'woocommerce_gzd_alternative_complaints_text_willing' => '',
31
+ 'woocommerce_gzd_alternative_complaints_text_obliged' => '',
32
+ 'woocommerce_gzd_legal_checkboxes_settings' => array(
33
+ 'label',
34
+ 'error_message',
35
+ 'confirmation'
36
+ ),
37
+ );
38
+
39
  public function __construct() {
40
  parent::__construct(
41
  'WPML',
72
  add_action( 'woocommerce_gzd_after_get_term', array( $this, 'rehook_terms_clause' ), 10 );
73
 
74
  add_action( 'woocommerce_gzd_after_revocation_form_fields', array( $this, 'set_language_field' ), 10 );
75
+
76
  $this->filter_page_ids();
77
+
78
+ if ( is_admin() ) {
79
+ add_action( 'woocommerce_gzd_admin_assets', array( $this, 'settings_script' ), 10, 3 );
80
+ add_action( 'woocommerce_gzd_admin_localized_scripts', array( $this, 'settings_script_localization' ), 10, 1 );
81
+
82
+ $this->admin_translate_options();
83
+ }
84
+ }
85
+
86
+ public function settings_script( $gzd_admin, $admin_script_path, $suffix ) {
87
+ wp_register_script( 'wc-gzd-settings-wpml', $admin_script_path . 'settings-wpml' . $suffix . '.js', array( 'jquery', 'woocommerce_settings' ), WC_GERMANIZED_VERSION, true );
88
+
89
+ if ( isset( $_GET['tab'] ) && ( 'germanized' === $_GET['tab'] || 'email' === $_GET['tab'] ) ) {
90
+ wp_enqueue_script( 'wc-gzd-settings-wpml' );
91
+ wp_add_inline_style( 'woocommerce-gzd-admin', '.wc-gzd-wpml-notice {display: block; font-size: 12px; margin-top: 8px; line-height: 1.5em; background: #faf8e5; padding: 5px;} .wc-gzd-wpml-notice code {font-size: 12px; display: block; background: transparent; padding-left: 0;}' );
92
+ }
93
+ }
94
+
95
+ public function settings_script_localization( $localized ) {
96
+ $options = array();
97
+ $translatable = $this->get_translatable_options();
98
+
99
+ foreach( $translatable as $option => $data ) {
100
+ if ( 'woocommerce_gzd_legal_checkboxes_settings' === $option ) {
101
+
102
+ $manager = WC_GZD_Legal_Checkbox_Manager::instance();
103
+ $manager->do_register_action();
104
+
105
+ foreach( $manager->get_checkboxes() as $id => $checkbox ) {
106
+ foreach( $data as $value ) {
107
+ $options[] = "#{$checkbox->get_form_field_id( $value )}";
108
+ }
109
+ }
110
+ } else {
111
+ $options[] = "#{$option}";
112
+ }
113
+ }
114
+
115
+ $localized['wc-gzd-settings-wpml'] = array(
116
+ 'options' => $options
117
+ );
118
+
119
+ return $localized;
120
+ }
121
+
122
+ public function get_translatable_options() {
123
+ return apply_filters( 'woocommerce_gzd_wpml_translatable_options', $this->strings_to_translate );
124
+ }
125
+
126
+ public function admin_translate_options() {
127
+ if ( ! $this->supports_string_translation() ) {
128
+ return;
129
+ }
130
+
131
+ foreach( $this->get_translatable_options() as $option => $args ) {
132
+ add_filter( 'option_' . $option, array( $this, 'translate_option_filter' ), 10, 2 );
133
+ add_filter( 'pre_update_option_' . $option, array( $this, 'pre_update_translation_filter' ), 10, 3 );
134
+
135
+ wc_gzd_remove_class_filter( 'option_' . $option, 'WPML_Admin_Texts', 'icl_st_translate_admin_string', 10 );
136
+ }
137
+
138
+ add_action( 'admin_init', array( $this, 'filter_settings' ), 50 );
139
+ }
140
+
141
+ public function filter_settings() {
142
+ if ( isset( $_GET['tab'] ) && ( 'germanized' === $_GET['tab'] || 'email' === $_GET['tab'] ) ) {
143
+ add_filter( 'woocommerce_gzd_get_settings_filter', array( $this, 'add_admin_notices' ), 10, 1 );
144
+ add_filter( 'woocommerce_gzd_legal_checkbox_fields', array( $this, 'add_admin_notices_checkboxes' ), 10, 2 );
145
+ add_filter( 'woocommerce_gzd_admin_email_order_confirmation_text_option', array( $this, 'add_admin_notices_email' ), 10, 1 );
146
+ }
147
+ }
148
+
149
+ public function supports_string_translation() {
150
+ $enabled = false;
151
+
152
+ if ( defined( 'WPML_ST_VERSION' ) && wc_gzd_get_dependencies()->compare_versions( WPML_ST_VERSION, '2.8.7', '>=' ) ) {
153
+ $enabled = true;
154
+ }
155
+
156
+ return apply_filters( 'woocommerce_gzd_enable_wpml_string_translation_settings', $enabled );
157
+ }
158
+
159
+ public function add_admin_notices_email( $setting ) {
160
+ if ( isset( $setting['id'] ) && array_key_exists( $setting['id'], $this->get_translatable_options() ) ) {
161
+ if ( $string_id = $this->get_string_id( $setting['id'] ) ) {
162
+ $string_language = $this->get_string_language( $string_id, $setting['id'] );
163
+
164
+ if ( $string_language !== $this->get_current_language() && 'all' !== $this->get_current_language() ) {
165
+ $setting = $this->set_admin_notice_attribute( $setting, $string_id, $string_language );
166
+ }
167
+ }
168
+ }
169
+
170
+ return $setting;
171
+ }
172
+
173
+ public function add_admin_notices_checkboxes( $settings, $checkbox ) {
174
+ $ids = array();
175
+ $options = $this->get_translatable_options();
176
+
177
+ foreach( $options['woocommerce_gzd_legal_checkboxes_settings'] as $option_key ) {
178
+ $ids[] = $checkbox->get_form_field_id( $option_key );
179
+ }
180
+
181
+ foreach( $settings as $key => $setting ) {
182
+ if ( isset( $setting['id'] ) && in_array( $setting['id'], $ids ) ) {
183
+ $option_key = str_replace( $checkbox->get_form_field_id_prefix(), '', $setting['id'] );
184
+ $option_name = "[woocommerce_gzd_legal_checkboxes_settings][{$checkbox->get_id()}]{$option_key}";
185
+
186
+ if ( $string_id = $this->get_string_id( $option_name, "admin_texts_woocommerce_gzd_legal_checkboxes_settings" ) ) {
187
+ $string_language = $this->get_string_language( $string_id, $option_name );
188
+
189
+ if ( $string_language !== $this->get_current_language() && 'all' !== $this->get_current_language() ) {
190
+ $settings[ $key ] = $this->set_admin_notice_attribute( $settings[ $key ], $string_id, $string_language );
191
+ }
192
+ }
193
+ }
194
+ }
195
+
196
+ return $settings;
197
+ }
198
+
199
+ public function add_admin_notices( $settings ) {
200
+ foreach( $settings as $key => $setting ) {
201
+ if ( isset( $setting['id'] ) && array_key_exists( $setting['id'], $this->get_translatable_options() ) ) {
202
+ if ( $string_id = $this->get_string_id( $setting['id'] ) ) {
203
+ $string_language = $this->get_string_language( $string_id, $setting['id'] );
204
+
205
+ if ( $string_language !== $this->get_current_language() && 'all' !== $this->get_current_language() ) {
206
+ $settings[ $key ] = $this->set_admin_notice_attribute( $settings[ $key ], $string_id, $string_language );
207
+ }
208
+ }
209
+ }
210
+ }
211
+
212
+ return $settings;
213
+ }
214
+
215
+ protected function set_admin_notice_attribute( $setting, $string_id, $string_language ) {
216
+ if ( ! isset( $setting['custom_attributes'] ) || ! is_array( $setting['custom_attributes'] ) ) {
217
+ $setting['custom_attributes'] = array();
218
+ }
219
+
220
+ $setting['custom_attributes']['data-wpml-notice'] = sprintf( __( 'This option may be translated via WPML. You may translate the original option (%s) %s to %s by adjusting the value above.', 'woocommerce-germanized' ), $this->get_language_name( $string_language ), '<code>' . $this->get_string_value( $string_id ) . '</code>', $this->get_language_name() );
221
+
222
+ return $setting;
223
+ }
224
+
225
+ public function get_language_name( $language = '' ) {
226
+ global $sitepress;
227
+
228
+ if ( empty( $language ) ) {
229
+ $language = $this->get_current_language();
230
+ }
231
+
232
+ return $sitepress->get_display_language_name( $language );
233
+ }
234
+
235
+ public function get_current_language() {
236
+ return ICL_LANGUAGE_CODE;
237
+ }
238
+
239
+ public function get_string_language( $string_id, $option = '' ) {
240
+ if ( $string = $this->get_string_by_id( $string_id ) ) {
241
+ return $string->language;
242
+ }
243
+
244
+ global $WPML_String_Translation;
245
+
246
+ return $WPML_String_Translation->get_current_string_language( $option );
247
+ }
248
+
249
+ public function get_string_by_id( $string_id ) {
250
+ global $wpdb;
251
+
252
+ $string = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}icl_strings WHERE id=%d LIMIT 1", $string_id ) );
253
+
254
+ if ( $string ) {
255
+ return $string[0];
256
+ }
257
+
258
+ return false;
259
+ }
260
+
261
+ public function get_string_id( $option, $context = '' ) {
262
+ $context = empty( $context ) ? 'admin_texts_' . $option : $context;
263
+
264
+ return icl_st_is_registered_string( $context, $option );
265
+ }
266
+
267
+ public function get_string_value( $string_id ) {
268
+ if ( $string = $this->get_string_by_id( $string_id ) ) {
269
+ return $string->value;
270
+ }
271
+
272
+ return false;
273
+ }
274
+
275
+ public function update_string_value( $string_id, $value ) {
276
+ global $wpdb;
277
+
278
+ $value = maybe_serialize( $value );
279
+
280
+ $wpdb->update( "{$wpdb->prefix}icl_strings", array( 'value' => $value ), array( 'id' => $string_id ) );
281
+ }
282
+
283
+ public function delete_string_translation( $string_id, $language ) {
284
+ global $wpdb;
285
+
286
+ $wpdb->query( $wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_string_translations WHERE string_id=%d AND language=%s", $string_id, $language ) );
287
+ }
288
+
289
+ public function update_string_translation( $option, $language, $value, $status = '' ) {
290
+ if ( empty( $status ) ) {
291
+ $status = ICL_TM_COMPLETE;
292
+ }
293
+
294
+ icl_update_string_translation( $option, $language, $value, $status );
295
+ }
296
+
297
+ public function get_string_translation( $string_id, $language, $status = '' ) {
298
+ $translations = icl_get_string_translations_by_id( $string_id );
299
+ $status = empty( $status ) ? ICL_TM_COMPLETE : $status;
300
+
301
+ if ( isset( $translations[ $language ] ) && $translations[ $language ]['status'] == $status ) {
302
+ return $translations[ $language ]['value'];
303
+ }
304
+
305
+ return false;
306
+ }
307
+
308
+ public function register_string( $option, $value, $context = '' ) {
309
+ $context = empty( $context ) ? 'admin_texts_' . $option : $context;
310
+
311
+ return icl_register_string( $context, $option, $value );
312
+ }
313
+
314
+ public function pre_update_translation_filter( $new_value, $old_value, $option ) {
315
+ $string_options = $this->get_translatable_options();
316
+
317
+ if ( is_array( $new_value ) || is_array( $string_options[ $option ] ) ) {
318
+
319
+ if ( ! is_array( $new_value ) ) {
320
+ $new_value = array();
321
+ }
322
+
323
+ $args = $string_options[ $option ];
324
+
325
+ foreach( $new_value as $id => $options ) {
326
+ foreach( $options as $key => $value ) {
327
+ if ( in_array( $key, $args ) ) {
328
+ $old_value_internal = isset( $old_value[ $id ][ $key ] ) ? $old_value[ $id ][ $key ] : '';
329
+ $new_value[ $id ][ $key ] = $this->pre_update_translation( $value, $old_value_internal, "[{$option}][{$id}]{$key}", "admin_texts_{$option}" );
330
+ }
331
+ }
332
+ }
333
+
334
+ return $new_value;
335
+ } else {
336
+ return $this->pre_update_translation( $new_value, $old_value, $option );
337
+ }
338
+ }
339
+
340
+ protected function pre_update_translation( $new_value, $old_value, $option, $context = '' ) {
341
+ $org_string_id = $this->get_string_id( $option, $context );
342
+ $strings_language = $this->get_string_language( $org_string_id, $option );
343
+
344
+ if ( $strings_language === $this->get_current_language() || 'all' === $this->get_current_language() ) {
345
+
346
+ $current_string_value = $this->get_string_value( $org_string_id );
347
+
348
+ // Update original string value
349
+ if ( $org_string_id && ( $new_value !== $old_value || $current_string_value !== $new_value ) ) {
350
+ $this->update_string_value( $org_string_id, $new_value );
351
+ }
352
+
353
+ return $new_value;
354
+ }
355
+
356
+ if ( $org_string_id ) {
357
+ $org_string = $this->get_string_value( $org_string_id );
358
+
359
+ // Remove translation if it equals original string
360
+ if ( $org_string === $new_value || empty( $new_value ) ) {
361
+ $this->delete_string_translation( $org_string_id, $this->get_current_language() );
362
+
363
+ return $old_value;
364
+ }
365
+ }
366
+
367
+ $this->update_string_translation( $option, $this->get_current_language(), $new_value );
368
+
369
+ return $old_value;
370
+ }
371
+
372
+ public function translate_option_filter( $org_value, $option ) {
373
+ $string_options = $this->get_translatable_options();
374
+
375
+ if ( is_array( $org_value ) || is_array( $string_options[ $option ] ) ) {
376
+
377
+ if ( ! is_array( $org_value ) ) {
378
+ $org_value = array();
379
+ }
380
+
381
+ $args = $string_options[ $option ];
382
+
383
+ foreach( $org_value as $id => $options ) {
384
+ foreach( $options as $key => $value ) {
385
+ if ( in_array( $key, $args ) ) {
386
+ $org_value[ $id ][ $key ] = $this->translate_option( $value, "[{$option}][{$id}]{$key}", "admin_texts_{$option}" );
387
+ }
388
+ }
389
+ }
390
+
391
+ return $org_value;
392
+ } else {
393
+ return $this->translate_option( $org_value, $option );
394
+ }
395
+ }
396
+
397
+ protected function translate_option( $org_value, $option, $context = '' ) {
398
+ $string_id = $this->get_string_id( $option, $context );
399
+ $language = $this->get_current_language();
400
+
401
+ if ( ! $string_id ) {
402
+ $string_id = $this->register_string( $option, $org_value, $context );
403
+ }
404
+
405
+ if ( $translation = $this->get_string_translation( $string_id, $language ) ) {
406
+ return $translation;
407
+ }
408
+
409
+ return $org_value;
410
+ }
411
+
412
+ public function translate_option_checkboxes( $org_value, $option ) {
413
+ if ( ! is_array( $org_value ) ) {
414
+ $org_value = array();
415
+ }
416
+
417
+ foreach( $org_value as $checkbox_id => $options ) {
418
+ foreach( $options as $option => $value ) {
419
+ if ( in_array( $option, $this->get_checkbox_translateable_options() ) ) {
420
+ $org_value[ $checkbox_id ][ $option ] = $this->translate_option( $value, "[woocommerce_gzd_legal_checkboxes_settings][{$checkbox_id}]{$option}", "admin_texts_woocommerce_gzd_legal_checkboxes_settings" );
421
+ }
422
+ }
423
+ }
424
+
425
+ return $org_value;
426
+ }
427
+
428
+ public function pre_update_translate_checkboxes( $new_value, $old_value, $option ) {
429
+ return $new_value;
430
  }
431
 
432
  public function before_show_product_unit_price( $product ) {
442
  public function unhook_terms_clause() {
443
  global $sitepress;
444
 
445
+ remove_filter( 'terms_clauses', array( $sitepress, 'terms_clauses' ), 10 );
446
  }
447
 
448
  public function rehook_terms_clause() {
552
  }
553
 
554
  public function filter_page_ids() {
555
+
556
  $woo_pages = array(
557
  'revocation_page_id',
558
  'data_security_page_id',
568
  }
569
 
570
  public function translate_page( $id ) {
 
571
  global $pagenow;
572
 
573
+ if( is_admin() && $pagenow === 'options-permalink.php' )
574
  return $id;
575
 
576
  return apply_filters( 'translate_object_id', $id, 'page', true );
includes/emails/class-wc-gzd-email-customer-on-hold-order.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly
5
+ }
6
+
7
+ if ( ! class_exists( 'WC_GZD_Email_Customer_On_Hold_Order' ) ) :
8
+
9
+ /**
10
+ * Customer Processing Order Email
11
+ *
12
+ * An email sent to the customer when a new order is received/paid for.
13
+ *
14
+ * @class WC_Email_Customer_Processing_Order
15
+ * @version 2.0.0
16
+ * @package WooCommerce/Classes/Emails
17
+ * @author WooThemes
18
+ * @extends WC_Email
19
+ */
20
+ class WC_GZD_Email_Customer_On_Hold_Order extends WC_Email_Customer_On_Hold_Order {
21
+
22
+ public function __construct() {
23
+ parent::__construct();
24
+
25
+ // Remove Triggers for parent email.
26
+ wc_gzd_remove_class_action( 'woocommerce_order_status_pending_to_on-hold_notification', 'WC_Email_Customer_On_Hold_Order', 'trigger', 10 );
27
+ wc_gzd_remove_class_action( 'woocommerce_order_status_failed_to_on-hold_notification', 'WC_Email_Customer_On_Hold_Order', 'trigger', 10 );
28
+
29
+ // Triggers for this email.
30
+ remove_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $this, 'trigger' ), 10 );
31
+ remove_action( 'woocommerce_order_status_failed_to_on-hold_notification', array( $this, 'trigger' ), 10 );
32
+ }
33
+
34
+ public function trigger( $order_id, $order = false ) {
35
+
36
+ if ( apply_filters( 'woocommerce_gzd_disable_on_hold_email', true ) ) {
37
+ return;
38
+ }
39
+
40
+ $requires_two_arguments = true;
41
+
42
+ try {
43
+ $method = new ReflectionMethod( get_parent_class( $this ), 'trigger' );
44
+ $num = $method->getNumberOfParameters();
45
+ $requires_two_arguments = ( $num == 2 );
46
+
47
+ } catch( Exception $e ) {
48
+
49
+ }
50
+
51
+ if ( $requires_two_arguments ) {
52
+ parent::trigger( $order_id, $order );
53
+ } else {
54
+ parent::trigger( $order_id );
55
+ }
56
+ }
57
+ }
58
+
59
+ endif;
60
+
61
+ return new WC_GZD_Email_Customer_On_Hold_Order();
includes/emails/class-wc-gzd-email-customer-processing-order.php CHANGED
@@ -22,6 +22,16 @@ if ( ! class_exists( 'WC_GZD_Email_Customer_Processing_Order' ) ) :
22
  public function __construct() {
23
  parent::__construct();
24
 
 
 
 
 
 
 
 
 
 
 
25
  $this->title = __( 'Order Confirmation', 'woocommerce-germanized' );
26
  }
27
 
22
  public function __construct() {
23
  parent::__construct();
24
 
25
+ // Remove Triggers for parent email.
26
+ wc_gzd_remove_class_action( 'woocommerce_order_status_on-hold_to_processing_notification', 'WC_Email_Customer_Processing_Order', 'trigger', 10 );
27
+ wc_gzd_remove_class_action( 'woocommerce_order_status_pending_to_processing_notification', 'WC_Email_Customer_Processing_Order', 'trigger', 10 );
28
+ wc_gzd_remove_class_action( 'woocommerce_order_status_failed_to_processing_notification', 'WC_Email_Customer_Processing_Order', 'trigger', 10 );
29
+
30
+ // Remove Triggers for this email.
31
+ remove_action( 'woocommerce_order_status_failed_to_processing_notification', array( $this, 'trigger' ), 10 );
32
+ remove_action( 'woocommerce_order_status_on-hold_to_processing_notification', array( $this, 'trigger' ), 10 );
33
+ remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $this, 'trigger' ), 10 );
34
+
35
  $this->title = __( 'Order Confirmation', 'woocommerce-germanized' );
36
  }
37
 
includes/wc-gzd-core-functions.php CHANGED
@@ -223,3 +223,109 @@ if ( ! function_exists( 'is_ajax' ) ) {
223
  return defined( 'DOING_AJAX' );
224
  }
225
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
  return defined( 'DOING_AJAX' );
224
  }
225
  }
226
+
227
+ /**
228
+ * Remove Class Filter Without Access to Class Object
229
+ *
230
+ * In order to use the core WordPress remove_filter() on a filter added with the callback
231
+ * to a class, you either have to have access to that class object, or it has to be a call
232
+ * to a static method. This method allows you to remove filters with a callback to a class
233
+ * you don't have access to.
234
+ *
235
+ * Works with WordPress 1.2+ (4.7+ support added 9-19-2016)
236
+ * Updated 2-27-2017 to use internal WordPress removal for 4.7+ (to prevent PHP warnings output)
237
+ *
238
+ * @param string $tag Filter to remove
239
+ * @param string $class_name Class name for the filter's callback
240
+ * @param string $method_name Method name for the filter's callback
241
+ * @param int $priority Priority of the filter (default 10)
242
+ *
243
+ * @return bool Whether the function is removed.
244
+ */
245
+ function wc_gzd_remove_class_filter( $tag, $class_name = '', $method_name = '', $priority = 10 ) {
246
+ global $wp_filter;
247
+
248
+ // Check that filter actually exists first
249
+ if ( ! isset( $wp_filter[ $tag ] ) ) return FALSE;
250
+
251
+ /**
252
+ * If filter config is an object, means we're using WordPress 4.7+ and the config is no longer
253
+ * a simple array, rather it is an object that implements the ArrayAccess interface.
254
+ *
255
+ * To be backwards compatible, we set $callbacks equal to the correct array as a reference (so $wp_filter is updated)
256
+ *
257
+ * @see https://make.wordpress.org/core/2016/09/08/wp_hook-next-generation-actions-and-filters/
258
+ */
259
+ if ( is_object( $wp_filter[ $tag ] ) && isset( $wp_filter[ $tag ]->callbacks ) ) {
260
+ // Create $fob object from filter tag, to use below
261
+ $fob = $wp_filter[ $tag ];
262
+ $callbacks = &$wp_filter[ $tag ]->callbacks;
263
+ } else {
264
+ $callbacks = &$wp_filter[ $tag ];
265
+ }
266
+
267
+ // Exit if there aren't any callbacks for specified priority
268
+ if ( ! isset( $callbacks[ $priority ] ) || empty( $callbacks[ $priority ] ) ) return FALSE;
269
+
270
+ // Loop through each filter for the specified priority, looking for our class & method
271
+ foreach( (array) $callbacks[ $priority ] as $filter_id => $filter ) {
272
+
273
+ // Filter should always be an array - array( $this, 'method' ), if not goto next
274
+ if ( ! isset( $filter[ 'function' ] ) || ! is_array( $filter[ 'function' ] ) ) continue;
275
+
276
+ // If first value in array is not an object, it can't be a class
277
+ if ( ! is_object( $filter[ 'function' ][ 0 ] ) ) continue;
278
+
279
+ // Method doesn't match the one we're looking for, goto next
280
+ if ( $filter[ 'function' ][ 1 ] !== $method_name ) continue;
281
+
282
+ // Method matched, now let's check the Class
283
+ if ( get_class( $filter[ 'function' ][ 0 ] ) === $class_name ) {
284
+
285
+ // WordPress 4.7+ use core remove_filter() since we found the class object
286
+ if( isset( $fob ) ){
287
+ // Handles removing filter, reseting callback priority keys mid-iteration, etc.
288
+ $fob->remove_filter( $tag, $filter['function'], $priority );
289
+
290
+ } else {
291
+ // Use legacy removal process (pre 4.7)
292
+ unset( $callbacks[ $priority ][ $filter_id ] );
293
+ // and if it was the only filter in that priority, unset that priority
294
+ if ( empty( $callbacks[ $priority ] ) ) {
295
+ unset( $callbacks[ $priority ] );
296
+ }
297
+ // and if the only filter for that tag, set the tag to an empty array
298
+ if ( empty( $callbacks ) ) {
299
+ $callbacks = array();
300
+ }
301
+ // Remove this filter from merged_filters, which specifies if filters have been sorted
302
+ unset( $GLOBALS['merged_filters'][ $tag ] );
303
+ }
304
+
305
+ return TRUE;
306
+ }
307
+ }
308
+
309
+ return FALSE;
310
+ }
311
+
312
+ /**
313
+ * Remove Class Action Without Access to Class Object
314
+ *
315
+ * In order to use the core WordPress remove_action() on an action added with the callback
316
+ * to a class, you either have to have access to that class object, or it has to be a call
317
+ * to a static method. This method allows you to remove actions with a callback to a class
318
+ * you don't have access to.
319
+ *
320
+ * Works with WordPress 1.2+ (4.7+ support added 9-19-2016)
321
+ *
322
+ * @param string $tag Action to remove
323
+ * @param string $class_name Class name for the action's callback
324
+ * @param string $method_name Method name for the action's callback
325
+ * @param int $priority Priority of the action (default 10)
326
+ *
327
+ * @return bool Whether the function is removed.
328
+ */
329
+ function wc_gzd_remove_class_action( $tag, $class_name = '', $method_name = '', $priority = 10 ) {
330
+ wc_gzd_remove_class_filter( $tag, $class_name, $method_name, $priority );
331
+ }
readme.txt CHANGED
@@ -5,7 +5,7 @@ Requires at least: 3.8
5
  Tested up to: 4.9
6
  WC requires at least: 2.4
7
  WC tested up to: 3.5
8
- Stable tag: 2.2.0
9
  Requires PHP: 5.3
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
@@ -184,6 +184,13 @@ Bug reports may be filed via our [GitHub repository](https://github.com/vendider
184
 
185
  == Changelog ==
186
 
 
 
 
 
 
 
 
187
  = 2.2.0 =
188
  * Feature: WooCommerce 3.5 compatibility
189
  * Feature: Support DHL for WooCommerce parcel delivery checkbox option
5
  Tested up to: 4.9
6
  WC requires at least: 2.4
7
  WC tested up to: 3.5
8
+ Stable tag: 2.2.1
9
  Requires PHP: 5.3
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
184
 
185
  == Changelog ==
186
 
187
+ = 2.2.1 =
188
+ * Fix: Make sure that order confirmation email is not being sent twice
189
+ * Improvement: Override on-hold-email to disallow triggering by third party plugins
190
+ * Improvement: Added WPML string translation (>= 2.8.7) option right from the plugin settings (by changing the active language)
191
+ * Improvement: Made notices more defensive. Added option to hide review notice forever
192
+ * Improvement: Added "woocommerce_gzd_add_force_pay_order_parameter" filter to disable the forced redirect
193
+
194
  = 2.2.0 =
195
  * Feature: WooCommerce 3.5 compatibility
196
  * Feature: Support DHL for WooCommerce parcel delivery checkbox option
woocommerce-germanized.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WooCommerce Germanized
4
  * Plugin URI: https://www.vendidero.de/woocommerce-germanized
5
  * Description: WooCommerce Germanized extends WooCommerce to become a legally compliant store in the german market.
6
- * Version: 2.2.0
7
  * Author: Vendidero
8
  * Author URI: https://vendidero.de
9
  * Requires at least: 3.8
@@ -31,7 +31,7 @@ final class WooCommerce_Germanized {
31
  *
32
  * @var string
33
  */
34
- public $version = '2.2.0';
35
 
36
  /**
37
  * Single instance of WooCommerce Germanized Main Class
@@ -793,7 +793,12 @@ final class WooCommerce_Germanized {
793
 
794
  // Make sure the Processing Order Email is named Order Confirmation for better understanding
795
  if ( isset( $mails['WC_Email_Customer_Processing_Order'] ) ) {
796
- $mails['WC_Email_Customer_Processing_Order'] = include 'includes/emails/class-wc-gzd-email-customer-processing-order.php';
 
 
 
 
 
797
  }
798
 
799
  return $mails;
3
  * Plugin Name: WooCommerce Germanized
4
  * Plugin URI: https://www.vendidero.de/woocommerce-germanized
5
  * Description: WooCommerce Germanized extends WooCommerce to become a legally compliant store in the german market.
6
+ * Version: 2.2.1
7
  * Author: Vendidero
8
  * Author URI: https://vendidero.de
9
  * Requires at least: 3.8
31
  *
32
  * @var string
33
  */
34
+ public $version = '2.2.1';
35
 
36
  /**
37
  * Single instance of WooCommerce Germanized Main Class
793
 
794
  // Make sure the Processing Order Email is named Order Confirmation for better understanding
795
  if ( isset( $mails['WC_Email_Customer_Processing_Order'] ) ) {
796
+ $mails['WC_Email_Customer_Processing_Order'] = include 'includes/emails/class-wc-gzd-email-customer-processing-order.php';
797
+ }
798
+
799
+ // Try to prevent the On Hold Email from being sent even though it is called directly via the trigger method
800
+ if ( isset( $mails['WC_Email_Customer_On_Hold_Order'] ) ) {
801
+ $mails['WC_Email_Customer_On_Hold_Order'] = include 'includes/emails/class-wc-gzd-email-customer-on-hold-order.php';
802
  }
803
 
804
  return $mails;
wpml-config.xml CHANGED
@@ -40,8 +40,6 @@
40
  <key name="company_identification_number" />
41
  <key name="checkbox_label" />
42
  </key>
43
- <key name="woocommerce_gzd_order_confirmation_legal_digital_notice" />
44
- <key name="woocommerce_gzd_order_confirmation_legal_service_notice" />
45
  <key name="woocommerce_gzd_legal_checkboxes_settings">
46
  <key name="*">
47
  <key name="admin_name" />
40
  <key name="company_identification_number" />
41
  <key name="checkbox_label" />
42
  </key>
 
 
43
  <key name="woocommerce_gzd_legal_checkboxes_settings">
44
  <key name="*">
45
  <key name="admin_name" />