WooCommerce Germanized - Version 1.3.2

Version Description

  • Feature - Better hook priority management
  • Fix - saving variation cart description
  • Fix - add to cart bug
  • Fix - better date diff calculation
Download this release

Release Info

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

Code changes from version 1.3.1 to 1.3.2

i18n/languages/woocommerce-germanized-de_DE.mo CHANGED
Binary file
i18n/languages/woocommerce-germanized-de_DE.po CHANGED
@@ -1,9 +1,9 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: WooCommerce Germanized v1.3.0\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: 2014-09-29 12:26+0100\n"
6
- "PO-Revision-Date: 2015-04-30 10:33:31+0000\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
@@ -85,7 +85,7 @@ msgstr "Über WooCommerce Germanized"
85
  msgid "Welcome to WooCommerce Germanized"
86
  msgstr "Willkommen bei WooCommerce Germanized"
87
 
88
- #: includes/admin/class-wc-gzd-admin-welcome.php:258
89
  #@ woocommerce-germanized
90
  msgid "Go to WooCommerce Germanized Settings"
91
  msgstr "zu den WooCommerce Germanized Einstellungen"
@@ -94,9 +94,14 @@ msgstr "zu den WooCommerce Germanized Einstellungen"
94
  #: includes/admin/class-wc-gzd-admin.php:37
95
  #: includes/class-wc-gzd-checkout.php:22
96
  #: includes/class-wc-gzd-checkout.php:31
 
 
 
 
97
  #: woocommerce-germanized.php:82
98
  #: woocommerce-germanized.php:91
99
  #@ woocommerce-germanized
 
100
  msgid "Cheatin’ huh?"
101
  msgstr "So geht das leider nicht.."
102
 
@@ -134,7 +139,7 @@ msgstr "Einheit"
134
  #: includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:85
135
  #: includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:113
136
  #: includes/admin/settings/class-wc-gzd-settings-germanized.php:81
137
- #: includes/class-wc-gzd-trusted-shops.php:440
138
  #@ woocommerce-germanized
139
  msgid "None"
140
  msgstr "Keine"
@@ -197,7 +202,7 @@ msgstr "Allgemein"
197
  msgid "Display Options"
198
  msgstr "Anzeige"
199
 
200
- #: includes/class-wc-gzd-trusted-shops.php:593
201
  #@ woocommerce-germanized
202
  msgctxt "trusted-shops"
203
  msgid "Trusted Shops Options"
@@ -1008,27 +1013,27 @@ msgctxt "trusted-shops"
1008
  msgid "Financing"
1009
  msgstr "Finanzierung"
1010
 
1011
- #: includes/class-wc-gzd-trusted-shops.php:230
1012
  #, php-format
1013
  #@ woocommerce-germanized
1014
  msgctxt "trusted-shops"
1015
  msgid "Rated %s out of %s"
1016
  msgstr "Bewertet mit %s von %s"
1017
 
1018
- #: includes/class-wc-gzd-trusted-shops.php:232
1019
  #, php-format
1020
  #@ woocommerce-germanized
1021
  msgctxt "trusted-shops"
1022
  msgid "out of %s"
1023
  msgstr "von %s"
1024
 
1025
- #: includes/class-wc-gzd-trusted-shops.php:444
1026
  #@ woocommerce-germanized
1027
  msgctxt "trusted-shops"
1028
  msgid "Trusted Shops Integration"
1029
  msgstr "Trusted Shops Integration"
1030
 
1031
- #: includes/class-wc-gzd-trusted-shops.php:541
1032
  #, php-format
1033
  #@ woocommerce-germanized
1034
  msgctxt "trusted-shops"
@@ -1103,7 +1108,7 @@ msgstr "Zahlungsgebühr"
1103
 
1104
  #: includes/abstracts/abstract-wc-gzd-product.php:127
1105
  #: includes/wc-gzd-cart-functions.php:159
1106
- #: woocommerce-germanized.php:831
1107
  #, php-format
1108
  #@ woocommerce-germanized
1109
  msgid "incl. %s%% VAT"
@@ -1285,7 +1290,7 @@ msgstr "Widerruf erklären"
1285
  msgid "VAT free based on §19 UStG"
1286
  msgstr "Kein Mehrwertsteuerausweis, da Kleinunternehmer nach §19 (1) UStG."
1287
 
1288
- #: woocommerce-germanized.php:580
1289
  #@ woocommerce
1290
  msgid "Settings"
1291
  msgstr "Einstellungen"
@@ -1333,106 +1338,106 @@ msgstr ""
1333
  msgid "Pay for order"
1334
  msgstr ""
1335
 
1336
- #: includes/class-wc-gzd-trusted-shops.php:229
1337
  #, php-format
1338
  #@ woocommerce-germanized
1339
  msgctxt "trusted-shops"
1340
  msgid "%s ratings"
1341
  msgstr "Bewertungen von %s"
1342
 
1343
- #: includes/class-wc-gzd-trusted-shops.php:251
1344
  #@ woocommerce-germanized
1345
  msgctxt "trusted-shops"
1346
  msgid "Show customer reviews"
1347
  msgstr "Kundenmeinungen ansehen"
1348
 
1349
- #: includes/class-wc-gzd-trusted-shops.php:298
1350
  #@ woocommerce-germanized
1351
  msgctxt "trusted-shops"
1352
  msgid "Trusted Shops Customer Reviews"
1353
  msgstr "Trusted Shops Kundenbewertungen"
1354
 
1355
- #: includes/class-wc-gzd-trusted-shops.php:447
1356
  #@ woocommerce-germanized
1357
  msgctxt "trusted-shops"
1358
  msgid "TS-ID"
1359
  msgstr "TS-ID"
1360
 
1361
- #: includes/class-wc-gzd-trusted-shops.php:448
1362
  #@ woocommerce-germanized
1363
  msgctxt "trusted-shops"
1364
  msgid "Insert your Trusted Shops ID here."
1365
  msgstr "Füge hier deine Trusted Shops ID ein."
1366
 
1367
- #: includes/class-wc-gzd-trusted-shops.php:457
1368
  #@ woocommerce-germanized
1369
  msgctxt "trusted-shops"
1370
  msgid "Configure the Trustbadge for your shop"
1371
  msgstr "Konfiguriere dein Trustbadge"
1372
 
1373
- #: includes/class-wc-gzd-trusted-shops.php:457
1374
  #, php-format
1375
  #@ woocommerce-germanized
1376
  msgctxt "trusted-shops"
1377
  msgid "You'll find a step-by-step instruction for your shopsoftware in our integration center. <a href=\"%s\" target=\"_blank\">Click here</a>"
1378
  msgstr "In unserem Integration Center findest du eine Schritt-für-Schritt Anleitung. Klicke <a href=\"%s\" target=\"_blank\">hier</a>."
1379
 
1380
- #: includes/class-wc-gzd-trusted-shops.php:460
1381
  #@ woocommerce-germanized
1382
  msgctxt "trusted-shops"
1383
  msgid "Trustbadge code"
1384
  msgstr "Trustbadge Code"
1385
 
1386
- #: includes/class-wc-gzd-trusted-shops.php:463
1387
  #@ woocommerce-germanized
1388
  msgctxt "trusted-shops"
1389
  msgid "Fill in your trustbadge code here"
1390
  msgstr "Trustbadge Code hier einfügen"
1391
 
1392
- #: includes/class-wc-gzd-trusted-shops.php:463
1393
  #@ woocommerce-germanized
1394
  msgctxt "trusted-shops"
1395
  msgid "If no further steps were required in the integration center, the Trustbadge is already displayed in your shop."
1396
  msgstr "Sofern keine weiteren Installationsschritte im Integration Center beschrieben wurden, wird das Trustbadge jetzt im Frontend deines Shops angezeigt."
1397
 
1398
- #: includes/class-wc-gzd-trusted-shops.php:470
1399
  #@ woocommerce-germanized
1400
  msgctxt "trusted-shops"
1401
  msgid "Configure Customer Reviews"
1402
  msgstr "Kundenbewertungen konfigurieren"
1403
 
1404
- #: includes/class-wc-gzd-trusted-shops.php:473
1405
  #@ woocommerce-germanized
1406
  msgctxt "trusted-shops"
1407
  msgid "Enable Review Widget"
1408
  msgstr "Kundenbewertungswidget aktiveren"
1409
 
1410
- #: includes/class-wc-gzd-trusted-shops.php:474
1411
  #, php-format
1412
  #@ woocommerce-germanized
1413
  msgctxt "trusted-shops"
1414
  msgid "This option will enable a Widget which shows your Trusted Shops Reviews as a graphic. You may configure your Widgets <a href=\"%s\">here</a>."
1415
  msgstr "Diese Option aktiviert ein Widget, mit dem du das Trusted Shops Review Widget in deinem Shop platzieren kannst. <a href=\"%s\">Hier</a> kannst du deine Widgets zuweisen."
1416
 
1417
- #: includes/class-wc-gzd-trusted-shops.php:482
1418
  #@ woocommerce-germanized
1419
  msgctxt "trusted-shops"
1420
  msgid "Enable Rich Snippets for Google"
1421
  msgstr "Rich Snippets Anzeige in Google aktivieren"
1422
 
1423
- #: includes/class-wc-gzd-trusted-shops.php:483
1424
  #@ woocommerce-germanized
1425
  msgctxt "trusted-shops"
1426
  msgid "This option will update your reviews received via Trusted Shops once per day and enables a Widget to show your reviews as Rich Snippets."
1427
  msgstr "Diese Option bewirkt, dass deine über Trusted Shops empfangenen Bewertungen als Rich Snippets im Shop als Widget verfügbar sind. "
1428
 
1429
- #: includes/class-wc-gzd-trusted-shops.php:511
1430
  #@ woocommerce-germanized
1431
  msgctxt "trusted-shops"
1432
  msgid "Assign payment methods"
1433
  msgstr "Zahlungsarten zuweisen"
1434
 
1435
- #: includes/class-wc-gzd-trusted-shops.php:560
1436
  #@ woocommerce-germanized
1437
  msgctxt "trusted-shops"
1438
  msgid "About Trusted Shops"
@@ -1456,7 +1461,7 @@ msgctxt "trusted-shops"
1456
  msgid "Trusted Shops Rich Snippets"
1457
  msgstr "Trusted Shops Rich Snippets"
1458
 
1459
- #: includes/class-wc-gzd-trusted-shops.php:237
1460
  #, php-format
1461
  #@ woocommerce-germanized
1462
  msgctxt "trusted-shops"
@@ -1480,6 +1485,7 @@ msgstr "Theme Inkompatibilität entdeckt"
1480
 
1481
  #: includes/admin/views/html-notice-theme-incompatibility.php:17
1482
  #: includes/admin/views/html-notice-theme-not-ready.php:17
 
1483
  #@ woocommerce-germanized
1484
  msgid "Get VendiPro now"
1485
  msgstr "VendiPro jetzt entdecken"
@@ -1487,6 +1493,7 @@ msgstr "VendiPro jetzt entdecken"
1487
  #: includes/admin/views/html-notice-review.php:23
1488
  #: includes/admin/views/html-notice-theme-incompatibility.php:20
1489
  #: includes/admin/views/html-notice-theme-not-ready.php:20
 
1490
  #@ woocommerce-germanized
1491
  msgid "Hide this notice"
1492
  msgstr "Diese Nachricht ausblenden"
@@ -1547,25 +1554,25 @@ msgstr "Details"
1547
  msgid "If you have chosen to link to product details page instead of add to cart URL you may want to change the button text."
1548
  msgstr "Wenn du dich dazu entschlossen hast, lieber auf die Produktseite zu verlinken anstatt den zum Warenkorb Button einzublenden, kannst du hier einen Button-Text vergeben."
1549
 
1550
- #: includes/class-wc-gzd-trusted-shops.php:491
1551
  #@ woocommerce-germanized
1552
  msgctxt "trusted-shops"
1553
  msgid "Enable Review Reminder"
1554
  msgstr "Bewertungserinnerung aktivieren"
1555
 
1556
- #: includes/class-wc-gzd-trusted-shops.php:492
1557
  #@ woocommerce-germanized
1558
  msgctxt "trusted-shops"
1559
  msgid "This option will enable a one-time email review reminder being sent to your customer."
1560
  msgstr "Diese Option sendet eine einmalige E-Mail Erinnerung bzgl. der Abgabe einer Bewertung über Trusted Shops an den Kunden."
1561
 
1562
- #: includes/class-wc-gzd-trusted-shops.php:500
1563
  #@ woocommerce-germanized
1564
  msgctxt "trusted-shops"
1565
  msgid "Days until reminder"
1566
  msgstr "Tage bis zur Erinnerung"
1567
 
1568
- #: includes/class-wc-gzd-trusted-shops.php:501
1569
  #@ woocommerce-germanized
1570
  msgctxt "trusted-shops"
1571
  msgid "Decide how many days after an order the email review reminder will be sent."
@@ -1653,7 +1660,7 @@ msgstr "Versandkosten-Hinweis auch für virtuelle Produkte aktivieren?"
1653
 
1654
  #: includes/abstracts/abstract-wc-gzd-product.php:126
1655
  #: includes/wc-gzd-cart-functions.php:159
1656
- #: woocommerce-germanized.php:831
1657
  #@ woocommerce-germanized
1658
  msgid "incl. VAT"
1659
  msgstr "inkl. MwSt."
@@ -1987,12 +1994,12 @@ msgstr "Wenn Sie bei %s kein Benutzerkonto eröffnet haben, ignorieren Sie diese
1987
  msgid "If you cannot follow the link above please copy this url and paste it to your browser bar: %s"
1988
  msgstr "Falls Sie dem Link nicht folgen können, kopieren Sie bitte folgende URL in die Adresszeile Ihres Browsers: %s"
1989
 
1990
- #: woocommerce-germanized.php:741
1991
  #@ woocommerce-germanized
1992
  msgid "Thank you. You have successfully activated your account."
1993
  msgstr "Vielen Dank. Ihr Benutzerkonto wurde erfolgreich aktiviert."
1994
 
1995
- #: woocommerce-germanized.php:745
1996
  #@ woocommerce-germanized
1997
  msgid "Sorry, but this activation code cannot be found."
1998
  msgstr "Sorry, dieser Aktivierungscode ist uns leider nicht bekannt."
@@ -2041,43 +2048,43 @@ msgstr "Dieser Modus unterdrückt das Überschreiben des review-order.php Templa
2041
  msgid "If you are facing problems within your checkout e.g. legally relevant data is not showing (terms, delivery time, unit price etc.) your theme seems to be incompatible (not using default WooCommerce hooks and filters). As a workaround you may use this fallback which ensures default review-order.php is used."
2042
  msgstr "Falls du Probleme mit dem Checkout hast - es fehlen z.B. rechtlich relevante Dinge wie der AGB/Widerrufsbelehrung Hinweis, Lieferzeit, Einheitspreis etc. - dann scheint dein Theme inkompatibel zu sein (Aktiviere ein Default-WP-Theme um das zu testen). Als Workaround kannst du diesen Fallback-Modus nutzen, der dafür sorgt, dass die Datei review-order.php auf keinen Fall vom Theme überschrieben wird."
2043
 
2044
- #: includes/class-wc-gzd-trusted-shops.php:411
2045
  #@ woocommerce-germanized
2046
  msgctxt "trusted-shops"
2047
  msgid "Review Collector"
2048
  msgstr "Review Collector"
2049
 
2050
- #: includes/class-wc-gzd-trusted-shops.php:416
2051
  #@ woocommerce-germanized
2052
  msgctxt "trusted-shops"
2053
  msgid "Export customer data"
2054
  msgstr "Bestellungen exportieren"
2055
 
2056
- #: includes/class-wc-gzd-trusted-shops.php:420
2057
  #@ woocommerce-germanized
2058
  msgctxt "trusted-shops"
2059
  msgid "30 days"
2060
  msgstr "30 Tage"
2061
 
2062
- #: includes/class-wc-gzd-trusted-shops.php:421
2063
  #@ woocommerce-germanized
2064
  msgctxt "trusted-shops"
2065
  msgid "60 days"
2066
  msgstr "60 Tage"
2067
 
2068
- #: includes/class-wc-gzd-trusted-shops.php:422
2069
  #@ woocommerce-germanized
2070
  msgctxt "trusted-shops"
2071
  msgid "90 days"
2072
  msgstr "90 Tage"
2073
 
2074
- #: includes/class-wc-gzd-trusted-shops.php:424
2075
  #@ woocommerce-germanized
2076
  msgctxt "trusted-shops"
2077
  msgid "Start export"
2078
  msgstr "Export starten"
2079
 
2080
- #: includes/class-wc-gzd-trusted-shops.php:425
2081
  #, php-format
2082
  #@ woocommerce-germanized
2083
  msgctxt "trusted-shops"
@@ -2164,12 +2171,6 @@ msgstr "Name der neuen Einheit"
2164
  msgid "Subtotal"
2165
  msgstr ""
2166
 
2167
- #. translators: plugin header field 'Version'
2168
- #: woocommerce-germanized.php:0
2169
- #@ woocommerce-germanized
2170
- msgid "1.3.0"
2171
- msgstr "1.3.0"
2172
-
2173
  #: templates/global/small-business-info.php:15
2174
  #@ woocommerce-germanized
2175
  msgid "Because of the small business owner state according to &#167;19 UstG the seller does not levy nor state the German value added tax."
@@ -2225,3 +2226,32 @@ msgstr "Rechnungen"
2225
  msgid "VAT"
2226
  msgstr "Umsatzsteuer"
2227
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: WooCommerce Germanized v1.3.1\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: 2014-09-29 12:26+0100\n"
6
+ "PO-Revision-Date: 2015-05-15 10:19:47+0000\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
85
  msgid "Welcome to WooCommerce Germanized"
86
  msgstr "Willkommen bei WooCommerce Germanized"
87
 
88
+ #: includes/admin/class-wc-gzd-admin-welcome.php:254
89
  #@ woocommerce-germanized
90
  msgid "Go to WooCommerce Germanized Settings"
91
  msgstr "zu den WooCommerce Germanized Einstellungen"
94
  #: includes/admin/class-wc-gzd-admin.php:37
95
  #: includes/class-wc-gzd-checkout.php:22
96
  #: includes/class-wc-gzd-checkout.php:31
97
+ #: includes/class-wc-gzd-dependencies.php:32
98
+ #: includes/class-wc-gzd-dependencies.php:41
99
+ #: includes/class-wc-gzd-hook-priorities.php:33
100
+ #: includes/class-wc-gzd-hook-priorities.php:42
101
  #: woocommerce-germanized.php:82
102
  #: woocommerce-germanized.php:91
103
  #@ woocommerce-germanized
104
+ #@ woocommerce-germanized-pro
105
  msgid "Cheatin&#8217; huh?"
106
  msgstr "So geht das leider nicht.."
107
 
139
  #: includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:85
140
  #: includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:113
141
  #: includes/admin/settings/class-wc-gzd-settings-germanized.php:81
142
+ #: includes/class-wc-gzd-trusted-shops.php:441
143
  #@ woocommerce-germanized
144
  msgid "None"
145
  msgstr "Keine"
202
  msgid "Display Options"
203
  msgstr "Anzeige"
204
 
205
+ #: includes/class-wc-gzd-trusted-shops.php:594
206
  #@ woocommerce-germanized
207
  msgctxt "trusted-shops"
208
  msgid "Trusted Shops Options"
1013
  msgid "Financing"
1014
  msgstr "Finanzierung"
1015
 
1016
+ #: includes/class-wc-gzd-trusted-shops.php:231
1017
  #, php-format
1018
  #@ woocommerce-germanized
1019
  msgctxt "trusted-shops"
1020
  msgid "Rated %s out of %s"
1021
  msgstr "Bewertet mit %s von %s"
1022
 
1023
+ #: includes/class-wc-gzd-trusted-shops.php:233
1024
  #, php-format
1025
  #@ woocommerce-germanized
1026
  msgctxt "trusted-shops"
1027
  msgid "out of %s"
1028
  msgstr "von %s"
1029
 
1030
+ #: includes/class-wc-gzd-trusted-shops.php:445
1031
  #@ woocommerce-germanized
1032
  msgctxt "trusted-shops"
1033
  msgid "Trusted Shops Integration"
1034
  msgstr "Trusted Shops Integration"
1035
 
1036
+ #: includes/class-wc-gzd-trusted-shops.php:542
1037
  #, php-format
1038
  #@ woocommerce-germanized
1039
  msgctxt "trusted-shops"
1108
 
1109
  #: includes/abstracts/abstract-wc-gzd-product.php:127
1110
  #: includes/wc-gzd-cart-functions.php:159
1111
+ #: woocommerce-germanized.php:809
1112
  #, php-format
1113
  #@ woocommerce-germanized
1114
  msgid "incl. %s%% VAT"
1290
  msgid "VAT free based on &#167;19 UStG"
1291
  msgstr "Kein Mehrwertsteuerausweis, da Kleinunternehmer nach §19 (1) UStG."
1292
 
1293
+ #: woocommerce-germanized.php:561
1294
  #@ woocommerce
1295
  msgid "Settings"
1296
  msgstr "Einstellungen"
1338
  msgid "Pay for order"
1339
  msgstr ""
1340
 
1341
+ #: includes/class-wc-gzd-trusted-shops.php:230
1342
  #, php-format
1343
  #@ woocommerce-germanized
1344
  msgctxt "trusted-shops"
1345
  msgid "%s ratings"
1346
  msgstr "Bewertungen von %s"
1347
 
1348
+ #: includes/class-wc-gzd-trusted-shops.php:252
1349
  #@ woocommerce-germanized
1350
  msgctxt "trusted-shops"
1351
  msgid "Show customer reviews"
1352
  msgstr "Kundenmeinungen ansehen"
1353
 
1354
+ #: includes/class-wc-gzd-trusted-shops.php:299
1355
  #@ woocommerce-germanized
1356
  msgctxt "trusted-shops"
1357
  msgid "Trusted Shops Customer Reviews"
1358
  msgstr "Trusted Shops Kundenbewertungen"
1359
 
1360
+ #: includes/class-wc-gzd-trusted-shops.php:448
1361
  #@ woocommerce-germanized
1362
  msgctxt "trusted-shops"
1363
  msgid "TS-ID"
1364
  msgstr "TS-ID"
1365
 
1366
+ #: includes/class-wc-gzd-trusted-shops.php:449
1367
  #@ woocommerce-germanized
1368
  msgctxt "trusted-shops"
1369
  msgid "Insert your Trusted Shops ID here."
1370
  msgstr "Füge hier deine Trusted Shops ID ein."
1371
 
1372
+ #: includes/class-wc-gzd-trusted-shops.php:458
1373
  #@ woocommerce-germanized
1374
  msgctxt "trusted-shops"
1375
  msgid "Configure the Trustbadge for your shop"
1376
  msgstr "Konfiguriere dein Trustbadge"
1377
 
1378
+ #: includes/class-wc-gzd-trusted-shops.php:458
1379
  #, php-format
1380
  #@ woocommerce-germanized
1381
  msgctxt "trusted-shops"
1382
  msgid "You'll find a step-by-step instruction for your shopsoftware in our integration center. <a href=\"%s\" target=\"_blank\">Click here</a>"
1383
  msgstr "In unserem Integration Center findest du eine Schritt-für-Schritt Anleitung. Klicke <a href=\"%s\" target=\"_blank\">hier</a>."
1384
 
1385
+ #: includes/class-wc-gzd-trusted-shops.php:461
1386
  #@ woocommerce-germanized
1387
  msgctxt "trusted-shops"
1388
  msgid "Trustbadge code"
1389
  msgstr "Trustbadge Code"
1390
 
1391
+ #: includes/class-wc-gzd-trusted-shops.php:464
1392
  #@ woocommerce-germanized
1393
  msgctxt "trusted-shops"
1394
  msgid "Fill in your trustbadge code here"
1395
  msgstr "Trustbadge Code hier einfügen"
1396
 
1397
+ #: includes/class-wc-gzd-trusted-shops.php:464
1398
  #@ woocommerce-germanized
1399
  msgctxt "trusted-shops"
1400
  msgid "If no further steps were required in the integration center, the Trustbadge is already displayed in your shop."
1401
  msgstr "Sofern keine weiteren Installationsschritte im Integration Center beschrieben wurden, wird das Trustbadge jetzt im Frontend deines Shops angezeigt."
1402
 
1403
+ #: includes/class-wc-gzd-trusted-shops.php:471
1404
  #@ woocommerce-germanized
1405
  msgctxt "trusted-shops"
1406
  msgid "Configure Customer Reviews"
1407
  msgstr "Kundenbewertungen konfigurieren"
1408
 
1409
+ #: includes/class-wc-gzd-trusted-shops.php:474
1410
  #@ woocommerce-germanized
1411
  msgctxt "trusted-shops"
1412
  msgid "Enable Review Widget"
1413
  msgstr "Kundenbewertungswidget aktiveren"
1414
 
1415
+ #: includes/class-wc-gzd-trusted-shops.php:475
1416
  #, php-format
1417
  #@ woocommerce-germanized
1418
  msgctxt "trusted-shops"
1419
  msgid "This option will enable a Widget which shows your Trusted Shops Reviews as a graphic. You may configure your Widgets <a href=\"%s\">here</a>."
1420
  msgstr "Diese Option aktiviert ein Widget, mit dem du das Trusted Shops Review Widget in deinem Shop platzieren kannst. <a href=\"%s\">Hier</a> kannst du deine Widgets zuweisen."
1421
 
1422
+ #: includes/class-wc-gzd-trusted-shops.php:483
1423
  #@ woocommerce-germanized
1424
  msgctxt "trusted-shops"
1425
  msgid "Enable Rich Snippets for Google"
1426
  msgstr "Rich Snippets Anzeige in Google aktivieren"
1427
 
1428
+ #: includes/class-wc-gzd-trusted-shops.php:484
1429
  #@ woocommerce-germanized
1430
  msgctxt "trusted-shops"
1431
  msgid "This option will update your reviews received via Trusted Shops once per day and enables a Widget to show your reviews as Rich Snippets."
1432
  msgstr "Diese Option bewirkt, dass deine über Trusted Shops empfangenen Bewertungen als Rich Snippets im Shop als Widget verfügbar sind. "
1433
 
1434
+ #: includes/class-wc-gzd-trusted-shops.php:512
1435
  #@ woocommerce-germanized
1436
  msgctxt "trusted-shops"
1437
  msgid "Assign payment methods"
1438
  msgstr "Zahlungsarten zuweisen"
1439
 
1440
+ #: includes/class-wc-gzd-trusted-shops.php:561
1441
  #@ woocommerce-germanized
1442
  msgctxt "trusted-shops"
1443
  msgid "About Trusted Shops"
1461
  msgid "Trusted Shops Rich Snippets"
1462
  msgstr "Trusted Shops Rich Snippets"
1463
 
1464
+ #: includes/class-wc-gzd-trusted-shops.php:238
1465
  #, php-format
1466
  #@ woocommerce-germanized
1467
  msgctxt "trusted-shops"
1485
 
1486
  #: includes/admin/views/html-notice-theme-incompatibility.php:17
1487
  #: includes/admin/views/html-notice-theme-not-ready.php:17
1488
+ #: includes/admin/views/html-notice-theme-supported.php:19
1489
  #@ woocommerce-germanized
1490
  msgid "Get VendiPro now"
1491
  msgstr "VendiPro jetzt entdecken"
1493
  #: includes/admin/views/html-notice-review.php:23
1494
  #: includes/admin/views/html-notice-theme-incompatibility.php:20
1495
  #: includes/admin/views/html-notice-theme-not-ready.php:20
1496
+ #: includes/admin/views/html-notice-theme-supported.php:22
1497
  #@ woocommerce-germanized
1498
  msgid "Hide this notice"
1499
  msgstr "Diese Nachricht ausblenden"
1554
  msgid "If you have chosen to link to product details page instead of add to cart URL you may want to change the button text."
1555
  msgstr "Wenn du dich dazu entschlossen hast, lieber auf die Produktseite zu verlinken anstatt den zum Warenkorb Button einzublenden, kannst du hier einen Button-Text vergeben."
1556
 
1557
+ #: includes/class-wc-gzd-trusted-shops.php:492
1558
  #@ woocommerce-germanized
1559
  msgctxt "trusted-shops"
1560
  msgid "Enable Review Reminder"
1561
  msgstr "Bewertungserinnerung aktivieren"
1562
 
1563
+ #: includes/class-wc-gzd-trusted-shops.php:493
1564
  #@ woocommerce-germanized
1565
  msgctxt "trusted-shops"
1566
  msgid "This option will enable a one-time email review reminder being sent to your customer."
1567
  msgstr "Diese Option sendet eine einmalige E-Mail Erinnerung bzgl. der Abgabe einer Bewertung über Trusted Shops an den Kunden."
1568
 
1569
+ #: includes/class-wc-gzd-trusted-shops.php:501
1570
  #@ woocommerce-germanized
1571
  msgctxt "trusted-shops"
1572
  msgid "Days until reminder"
1573
  msgstr "Tage bis zur Erinnerung"
1574
 
1575
+ #: includes/class-wc-gzd-trusted-shops.php:502
1576
  #@ woocommerce-germanized
1577
  msgctxt "trusted-shops"
1578
  msgid "Decide how many days after an order the email review reminder will be sent."
1660
 
1661
  #: includes/abstracts/abstract-wc-gzd-product.php:126
1662
  #: includes/wc-gzd-cart-functions.php:159
1663
+ #: woocommerce-germanized.php:809
1664
  #@ woocommerce-germanized
1665
  msgid "incl. VAT"
1666
  msgstr "inkl. MwSt."
1994
  msgid "If you cannot follow the link above please copy this url and paste it to your browser bar: %s"
1995
  msgstr "Falls Sie dem Link nicht folgen können, kopieren Sie bitte folgende URL in die Adresszeile Ihres Browsers: %s"
1996
 
1997
+ #: woocommerce-germanized.php:719
1998
  #@ woocommerce-germanized
1999
  msgid "Thank you. You have successfully activated your account."
2000
  msgstr "Vielen Dank. Ihr Benutzerkonto wurde erfolgreich aktiviert."
2001
 
2002
+ #: woocommerce-germanized.php:723
2003
  #@ woocommerce-germanized
2004
  msgid "Sorry, but this activation code cannot be found."
2005
  msgstr "Sorry, dieser Aktivierungscode ist uns leider nicht bekannt."
2048
  msgid "If you are facing problems within your checkout e.g. legally relevant data is not showing (terms, delivery time, unit price etc.) your theme seems to be incompatible (not using default WooCommerce hooks and filters). As a workaround you may use this fallback which ensures default review-order.php is used."
2049
  msgstr "Falls du Probleme mit dem Checkout hast - es fehlen z.B. rechtlich relevante Dinge wie der AGB/Widerrufsbelehrung Hinweis, Lieferzeit, Einheitspreis etc. - dann scheint dein Theme inkompatibel zu sein (Aktiviere ein Default-WP-Theme um das zu testen). Als Workaround kannst du diesen Fallback-Modus nutzen, der dafür sorgt, dass die Datei review-order.php auf keinen Fall vom Theme überschrieben wird."
2050
 
2051
+ #: includes/class-wc-gzd-trusted-shops.php:412
2052
  #@ woocommerce-germanized
2053
  msgctxt "trusted-shops"
2054
  msgid "Review Collector"
2055
  msgstr "Review Collector"
2056
 
2057
+ #: includes/class-wc-gzd-trusted-shops.php:417
2058
  #@ woocommerce-germanized
2059
  msgctxt "trusted-shops"
2060
  msgid "Export customer data"
2061
  msgstr "Bestellungen exportieren"
2062
 
2063
+ #: includes/class-wc-gzd-trusted-shops.php:421
2064
  #@ woocommerce-germanized
2065
  msgctxt "trusted-shops"
2066
  msgid "30 days"
2067
  msgstr "30 Tage"
2068
 
2069
+ #: includes/class-wc-gzd-trusted-shops.php:422
2070
  #@ woocommerce-germanized
2071
  msgctxt "trusted-shops"
2072
  msgid "60 days"
2073
  msgstr "60 Tage"
2074
 
2075
+ #: includes/class-wc-gzd-trusted-shops.php:423
2076
  #@ woocommerce-germanized
2077
  msgctxt "trusted-shops"
2078
  msgid "90 days"
2079
  msgstr "90 Tage"
2080
 
2081
+ #: includes/class-wc-gzd-trusted-shops.php:425
2082
  #@ woocommerce-germanized
2083
  msgctxt "trusted-shops"
2084
  msgid "Start export"
2085
  msgstr "Export starten"
2086
 
2087
+ #: includes/class-wc-gzd-trusted-shops.php:426
2088
  #, php-format
2089
  #@ woocommerce-germanized
2090
  msgctxt "trusted-shops"
2171
  msgid "Subtotal"
2172
  msgstr ""
2173
 
 
 
 
 
 
 
2174
  #: templates/global/small-business-info.php:15
2175
  #@ woocommerce-germanized
2176
  msgid "Because of the small business owner state according to &#167;19 UstG the seller does not levy nor state the German value added tax."
2226
  msgid "VAT"
2227
  msgstr "Umsatzsteuer"
2228
 
2229
+ #: includes/admin/views/html-notice-theme-supported.php:14
2230
+ #, php-format
2231
+ #@ woocommerce-germanized
2232
+ msgid "Enable full %s support"
2233
+ msgstr "Anpassungen für %s freischalten"
2234
+
2235
+ #: includes/admin/views/html-notice-theme-supported.php:15
2236
+ #, php-format
2237
+ #@ woocommerce-germanized
2238
+ msgid "Your current theme %s needs some adaptions to seamlessly integrate with WooCommerce Germanized. Our Pro Version will <strong>enable support for %s</strong> and makes sure WooCommerce Germanized settings are shown and styled within frontend for a better user experience. A better user experience will help you selling more products."
2239
+ msgstr "Dein aktuelles Theme %s benötigt einige Anpassungen um die Darstellung der Optionen von WooCommerce Germanized (Lieferzeiten, Einheitspreise etc.) zu optimieren. Unsere Pro Version bietet die <strong>Unterstützung deines aktuellen Themes %s</strong> und sorgt für eine bessere Bedienbarkeit und Benutzererfahrung in deinem Shop. Alternativ möchten wir dir natürlich auch gerne unser Theme VendiPro empfehlen welches WooCommerce Germanized zu 100%% unterstützt."
2240
+
2241
+ #: includes/admin/views/html-notice-theme-supported.php:18
2242
+ #@ woocommerce-germanized
2243
+ msgid "or"
2244
+ msgstr "oder"
2245
+
2246
+ #. translators: plugin header field 'Version'
2247
+ #: woocommerce-germanized.php:0
2248
+ #@ woocommerce-germanized
2249
+ msgid "1.3.1"
2250
+ msgstr "1.3.1"
2251
+
2252
+ #: includes/admin/views/html-notice-theme-supported.php:17
2253
+ #, php-format
2254
+ #@ woocommerce-germanized
2255
+ msgid "Enable support for %s"
2256
+ msgstr "Anpassungen für %s freischalten"
2257
+
includes/admin/class-wc-gzd-admin-notices.php CHANGED
@@ -47,20 +47,30 @@ class WC_GZD_Admin_Notices {
47
  * Add notices + styles if needed.
48
  */
49
  public function add_notices() {
 
50
  if ( get_option( '_wc_gzd_needs_update' ) == 1 || get_option( '_wc_gzd_needs_pages' ) == 1 ) {
51
  wp_enqueue_style( 'woocommerce-activation', plugins_url( '/assets/css/activation.css', WC_PLUGIN_FILE ) );
52
  wp_enqueue_style( 'woocommerce-gzd-activation', plugins_url( '/assets/css/woocommerce-gzd-activation.css', WC_GERMANIZED_PLUGIN_FILE ) );
53
  add_action( 'admin_notices', array( $this, 'install_notice' ) );
54
  }
55
- if ( ! $this->is_theme_compatible() && ! get_option( '_wc_gzd_hide_theme_notice' ) )
56
- add_action( 'admin_notices', array( $this, 'theme_incompatibility_notice' ) );
57
- else if ( ! $this->is_theme_ready() && ! get_option( '_wc_gzd_hide_theme_notice' ) )
58
- add_action( 'admin_notices', array( $this, 'theme_not_ready_notice' ) );
 
 
 
 
 
 
 
59
  if ( ! get_option( '_wc_gzd_hide_review_notice' ) )
60
  add_action( 'admin_notices', array( $this, 'add_review_notice' ) );
 
61
  if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'wc-gzd-about' || get_option( '_wc_gzd_needs_pages' ) ) {
62
  remove_action( 'admin_notices', array( $this, 'theme_incompatibility_notice' ) );
63
  remove_action( 'admin_notices', array( $this, 'theme_not_ready_notice' ) );
 
64
  }
65
  }
66
 
@@ -99,17 +109,39 @@ class WC_GZD_Admin_Notices {
99
  }
100
 
101
  public function theme_not_ready_notice() {
 
102
  include( 'views/html-notice-theme-not-ready.php' );
103
  }
104
 
 
 
 
 
 
105
  public function is_theme_ready() {
106
  $stylesheet = get_stylesheet_directory() . '/style.css';
107
  $data = get_file_data( $stylesheet, array( 'wc_gzd_compatible' => 'wc_gzd_compatible' ) );
108
- if ( ! $data[ 'wc_gzd_compatible' ] )
109
  return false;
110
  return true;
111
  }
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  public function add_review_notice() {
114
  if ( get_option( 'woocommerce_gzd_activation_date' ) ) {
115
  $activation_date = ( get_option( 'woocommerce_gzd_activation_date' ) ? get_option( 'woocommerce_gzd_activation_date' ) : date( 'Y-m-d' ) );
47
  * Add notices + styles if needed.
48
  */
49
  public function add_notices() {
50
+
51
  if ( get_option( '_wc_gzd_needs_update' ) == 1 || get_option( '_wc_gzd_needs_pages' ) == 1 ) {
52
  wp_enqueue_style( 'woocommerce-activation', plugins_url( '/assets/css/activation.css', WC_PLUGIN_FILE ) );
53
  wp_enqueue_style( 'woocommerce-gzd-activation', plugins_url( '/assets/css/woocommerce-gzd-activation.css', WC_GERMANIZED_PLUGIN_FILE ) );
54
  add_action( 'admin_notices', array( $this, 'install_notice' ) );
55
  }
56
+
57
+ if ( ! get_option( '_wc_gzd_hide_theme_notice' ) ) {
58
+
59
+ if ( ! $this->is_theme_compatible() )
60
+ add_action( 'admin_notices', array( $this, 'theme_incompatibility_notice' ) );
61
+ else if ( $this->is_theme_supported_by_pro() && ! WC_germanized()->is_pro() )
62
+ add_action( 'admin_notices', array( $this, 'theme_supported_notice' ) );
63
+ else if ( ! $this->is_theme_ready() )
64
+ add_action( 'admin_notices', array( $this, 'theme_not_ready_notice' ) );
65
+ }
66
+
67
  if ( ! get_option( '_wc_gzd_hide_review_notice' ) )
68
  add_action( 'admin_notices', array( $this, 'add_review_notice' ) );
69
+
70
  if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'wc-gzd-about' || get_option( '_wc_gzd_needs_pages' ) ) {
71
  remove_action( 'admin_notices', array( $this, 'theme_incompatibility_notice' ) );
72
  remove_action( 'admin_notices', array( $this, 'theme_not_ready_notice' ) );
73
+ remove_action( 'admin_notices', array( $this, 'theme_supported_notice' ) );
74
  }
75
  }
76
 
109
  }
110
 
111
  public function theme_not_ready_notice() {
112
+ $current_theme = wp_get_theme();
113
  include( 'views/html-notice-theme-not-ready.php' );
114
  }
115
 
116
+ public function theme_supported_notice() {
117
+ $current_theme = wp_get_theme();
118
+ include( 'views/html-notice-theme-supported.php' );
119
+ }
120
+
121
  public function is_theme_ready() {
122
  $stylesheet = get_stylesheet_directory() . '/style.css';
123
  $data = get_file_data( $stylesheet, array( 'wc_gzd_compatible' => 'wc_gzd_compatible' ) );
124
+ if ( ! $data[ 'wc_gzd_compatible' ] && ! current_theme_supports( 'woocommerce-germanized' ) )
125
  return false;
126
  return true;
127
  }
128
 
129
+ public function is_theme_supported_by_pro() {
130
+
131
+ $supporting = array(
132
+ 'enfold',
133
+ 'flatsome',
134
+ 'storefront',
135
+ 'virtue',
136
+ );
137
+
138
+ $current = wp_get_theme();
139
+ if ( in_array( $current->get_template(), $supporting ) )
140
+ return true;
141
+
142
+ return false;
143
+ }
144
+
145
  public function add_review_notice() {
146
  if ( get_option( 'woocommerce_gzd_activation_date' ) ) {
147
  $activation_date = ( get_option( 'woocommerce_gzd_activation_date' ) ? get_option( 'woocommerce_gzd_activation_date' ) : date( 'Y-m-d' ) );
includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php CHANGED
@@ -64,7 +64,7 @@ class WC_Germanized_Meta_Box_Product_Data_Variable {
64
  <div class="variable_cart_mini_desc">
65
  <p class="form-row form-row-full">
66
  <label for="variable_product_mini_desc"><?php echo __( 'Optional Mini Description', 'woocommerce-germanized' ); ?>:</label>
67
- <?php wp_editor( htmlspecialchars_decode( ( isset( $_product->mini_desc ) ? $_product->mini_desc : '' ) ), 'wc_gzd_product_mini_desc_' . $loop, array( 'textarea_name' => 'variable_product_mini_desc[' . $loop . ']', 'textarea_rows' => 5, 'media_buttons' => false, 'teeny' => true ) ); ?>
68
  </p>
69
  </div>
70
  <?php
64
  <div class="variable_cart_mini_desc">
65
  <p class="form-row form-row-full">
66
  <label for="variable_product_mini_desc"><?php echo __( 'Optional Mini Description', 'woocommerce-germanized' ); ?>:</label>
67
+ <?php wp_editor( htmlspecialchars_decode( $_product->mini_desc ), 'wc_gzd_product_mini_desc_' . $loop, array( 'textarea_name' => 'variable_product_mini_desc[' . $loop . ']', 'textarea_rows' => 5, 'media_buttons' => false, 'teeny' => true ) ); ?>
68
  </p>
69
  </div>
70
  <?php
includes/admin/views/html-notice-theme-not-ready.php CHANGED
@@ -12,7 +12,7 @@ $dismiss_url = add_query_arg( 'notice', 'wc-gzd-hide-theme-notice', add_query_ar
12
 
13
  <div class="error fade">
14
  <h3><?php _e( 'Theme not yet ready', 'woocommerce-germanized' ); ?></h3>
15
- <p><?php printf( __( 'It seems like your theme is not yet ready for WooCommerce Germanized. Please check your theme\'s styles. Some things might look weird - WooCommerce Germanized can only offer basic styles. See <a href="%s" target="_blank">making your theme compatible</a> or check out our Theme <a href="%s" target="_blank">VendiPro</a> for 100&#37; compatibility.', 'woocommerce-germanized' ), 'https://vendidero.de/dokument/woocommerce-germanized-theme-kompatibilitaet', 'https://vendidero.de/vendipro' ); ?></p>
16
  <p class="alignleft wc-gzd-button-wrapper">
17
  <a class="button button-primary" href="http://vendidero.de/vendipro" target="_blank"><?php _e( 'Get VendiPro now', 'woocommerce-germanized' ); ?></a>
18
  </p>
12
 
13
  <div class="error fade">
14
  <h3><?php _e( 'Theme not yet ready', 'woocommerce-germanized' ); ?></h3>
15
+ <p><?php printf( __( 'It seems like your theme is not yet ready for WooCommerce Germanized. Please check your theme\'s styles. Some things might look weird - WooCommerce Germanized can only offer basic styles. See <a href="%s" target="_blank">making your theme compatible</a> or check out our Theme <a href="%s" target="_blank">VendiPro</a> for 100&#37; compatibility.', 'woocommerce-germanized' ), 'https://vendidero.de/dokument/woocommerce-germanized-theme-kompatibilitaet?theme=' . esc_attr( $current_theme->get( 'Name' ) ), 'https://vendidero.de/vendipro' ); ?></p>
16
  <p class="alignleft wc-gzd-button-wrapper">
17
  <a class="button button-primary" href="http://vendidero.de/vendipro" target="_blank"><?php _e( 'Get VendiPro now', 'woocommerce-germanized' ); ?></a>
18
  </p>
includes/admin/views/html-notice-theme-supported.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Admin View: Notice - Theme supported
4
+ */
5
+
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit; // Exit if accessed directly
8
+ }
9
+
10
+ $dismiss_url = add_query_arg( 'notice', 'wc-gzd-hide-theme-notice', add_query_arg( 'nonce', wp_create_nonce( 'wc-gzd-hide-theme-notice' ) ) );
11
+ ?>
12
+
13
+ <div class="error fade">
14
+ <h3><?php printf( __( 'Enable full %s support', 'woocommerce-germanized' ), $current_theme->get( 'Name' ) ); ?></h3>
15
+ <p><?php printf( __( 'Your current theme %s needs some adaptions to seamlessly integrate with WooCommerce Germanized. Our Pro Version will <strong>enable support for %s</strong> and makes sure WooCommerce Germanized settings are shown and styled within frontend for a better user experience. A better user experience will help you selling more products.', 'woocommerce-germanized' ), $current_theme->get( 'Name' ), $current_theme->get( 'Name' ) ); ?></p>
16
+ <p class="alignleft wc-gzd-button-wrapper">
17
+ <a class="button button-primary" href="https://vendidero.de/woocommerce-germanized#theme-support" target="_blank"><?php printf( __( 'Enable support for %s', 'woocommerce-germanized' ), $current_theme->get( 'Name' ) ); ?></a>
18
+ <span style="margin-right: 1em"><?php _e( 'or', 'woocommerce-germanized' );?></span>
19
+ <a class="button button-secondary" href="https://vendidero.de/vendipro" target="_blank"><?php _e( 'Get VendiPro now', 'woocommerce-germanized' ); ?></a>
20
+ </p>
21
+ <p class="alignright">
22
+ <a href="<?php echo esc_url( $dismiss_url );?>"><?php _e( 'Hide this notice', 'woocommerce-germanized' ); ?></a>
23
+ </p>
24
+ <div class="clear"></div>
25
+ </div>
includes/class-wc-gzd-emails.php CHANGED
@@ -51,12 +51,12 @@ class WC_GZD_Emails {
51
  }
52
 
53
  public function set_order_email_filters( $product ) {
54
- if ( is_wc_endpoint_url( 'order-received' ) )
55
  return $product;
56
  // Add order item name actions
57
- add_action( 'woocommerce_order_item_name', 'wc_gzd_cart_product_delivery_time', 0, 2 );
58
- add_action( 'woocommerce_order_item_name', 'wc_gzd_cart_product_item_desc', 0, 2 );
59
- add_filter( 'woocommerce_order_formatted_line_subtotal', 'wc_gzd_cart_product_unit_price', 0, 2 );
60
  return $product;
61
  }
62
 
51
  }
52
 
53
  public function set_order_email_filters( $product ) {
54
+ if ( is_wc_endpoint_url() )
55
  return $product;
56
  // Add order item name actions
57
+ add_action( 'woocommerce_order_item_name', 'wc_gzd_cart_product_delivery_time', wc_gzd_get_hook_priority( 'email_product_delivery_time' ), 2 );
58
+ add_action( 'woocommerce_order_item_name', 'wc_gzd_cart_product_item_desc', wc_gzd_get_hook_priority( 'email_product_item_desc' ), 2 );
59
+ add_filter( 'woocommerce_order_formatted_line_subtotal', 'wc_gzd_cart_product_unit_price', wc_gzd_get_hook_priority( 'email_product_unit_price' ), 2 );
60
  return $product;
61
  }
62
 
includes/class-wc-gzd-hook-priorities.php ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) )
4
+ exit;
5
+
6
+ class WC_GZD_Hook_Priorities {
7
+
8
+ /**
9
+ * Single instance of WC_GZD_Hook_Priorities
10
+ *
11
+ * @var object
12
+ */
13
+ protected static $_instance = null;
14
+
15
+ public $priorities = array();
16
+ public $default_priorities = array();
17
+ public $hooks = array();
18
+ public $queue = array();
19
+
20
+ public static function instance() {
21
+ if ( is_null( self::$_instance ) ) {
22
+ self::$_instance = new self();
23
+ }
24
+ return self::$_instance;
25
+ }
26
+
27
+ /**
28
+ * Cloning is forbidden.
29
+ *
30
+ * @since 1.0
31
+ */
32
+ public function __clone() {
33
+ _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'woocommerce-germanized-pro' ), '1.0' );
34
+ }
35
+
36
+ /**
37
+ * Unserializing instances of this class is forbidden.
38
+ *
39
+ * @since 1.0
40
+ */
41
+ public function __wakeup() {
42
+ _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'woocommerce-germanized-pro' ), '1.0' );
43
+ }
44
+
45
+ public function __construct() {
46
+
47
+ $this->init();
48
+
49
+ add_action( 'after_setup_theme', array( $this, 'renew_cache' ), 1 );
50
+ add_action( 'after_setup_theme', array( $this, 'change_priority_queue' ), 2 );
51
+ }
52
+
53
+ public function init() {
54
+ // Default priorities used within WooCommerce (not customized by themes)
55
+ $this->default_priorities = array(
56
+ 'woocommerce_single_product_summary' => array(
57
+ 'woocommerce_template_single_price' => 10,
58
+ ),
59
+ 'woocommerce_checkout_order_review' => array(
60
+ 'woocommerce_order_review' => 10,
61
+ 'woocommerce_checkout_payment' => 20,
62
+ ),
63
+ 'woocommerce_thankyou' => array(
64
+ 'woocommerce_order_details_table' => 10,
65
+ ),
66
+ );
67
+
68
+ $this->priorities = $this->default_priorities;
69
+
70
+ // Load custom theme priorities
71
+ if ( get_option( 'woocommerce_gzd_hook_priorities' ) )
72
+ $this->priorities = (array) get_option( 'woocommerce_gzd_hook_priorities' );
73
+
74
+ $this->hooks = array(
75
+ 'single_price_unit' => $this->get_priority( 'woocommerce_single_product_summary', 'woocommerce_template_single_price' ) + 1,
76
+ 'single_legal_info' => $this->get_priority( 'woocommerce_single_product_summary', 'woocommerce_template_single_price' ) + 2,
77
+ 'single_delivery_time_info' => 27,
78
+ 'loop_price_unit' => 10,
79
+ 'loop_tax_info' => 6,
80
+ 'loop_shipping_costs_info' => 7,
81
+ 'loop_delivery_time_info' => 8,
82
+ 'cart_subtotal_unit_price' => 0,
83
+ 'cart_product_unit_price' => 0,
84
+ 'cart_product_delivery_time' => 11,
85
+ 'cart_product_item_desc' => 12,
86
+ 'cart_small_business_info' => 0,
87
+ 'checkout_small_business_info' => 25,
88
+ 'checkout_product_delivery_time' => 0,
89
+ 'checkout_product_item_desc' => 0,
90
+ 'checkout_edit_data_notice' => 0,
91
+ 'checkout_payment' => 10,
92
+ 'checkout_order_review' => 20,
93
+ 'checkout_order_submit' => 21,
94
+ 'checkout_legal' => 2,
95
+ 'checkout_set_terms' => 3,
96
+ 'checkout_digital_checkbox' => 4,
97
+ 'order_product_delivery_time' => 0,
98
+ 'order_product_item_desc' => 0,
99
+ 'order_product_unit_price' => 0,
100
+ 'email_product_unit_price' => 0,
101
+ 'email_product_delivery_time' => 1,
102
+ 'email_product_item_desc' => 2,
103
+ 'gzd_footer_vat_info' => 0,
104
+ 'footer_vat_info' => 5,
105
+ 'gzd_footer_sale_info' => 0,
106
+ 'footer_sale_info' => 5,
107
+ );
108
+
109
+ }
110
+
111
+ /**
112
+ * Returns the priority for critical hooks (see $this->priorities) which may be customized by a theme
113
+ */
114
+ public function get_priority( $hook, $function ) {
115
+ if ( isset( $this->priorities[ $hook ][ $function ] ) )
116
+ return $this->priorities[ $hook ][ $function ];
117
+ return false;
118
+ }
119
+
120
+ /**
121
+ * Returns the priority for a custom wc germanized frontend hook
122
+ */
123
+ public function get_hook_priority( $hook, $suppress_filters = false ) {
124
+ if ( isset( $this->hooks[ $hook ] ) )
125
+ return ( ! $suppress_filters ? apply_filters( 'wc_gzd_frontend_hook_priority', $this->hooks[ $hook ], $hook, $this ) : $this->hooks[ $hook ] );
126
+ return false;
127
+ }
128
+
129
+ public function get_hook_priorities() {
130
+ return $this->hooks;
131
+ }
132
+
133
+ /**
134
+ * This changes the hook priority by overriding customizations made by the theme
135
+ */
136
+ public function change_priority( $hook, $function, $new_prio ) {
137
+ if ( ! $this->get_priority( $hook, $function ) )
138
+ return false;
139
+ $this->queue[] = array( 'hook' => $hook, 'function' => $function, 'new_prio' => $new_prio );
140
+ }
141
+
142
+ /**
143
+ * Hooked by after_setup_theme. Not to be called directly
144
+ */
145
+ public function change_priority_queue() {
146
+ if ( empty( $this->queue ) )
147
+ return false;
148
+ foreach ( $this->queue as $queue ) {
149
+ remove_action( $queue[ 'hook' ], $queue[ 'function' ], $this->get_priority( $queue[ 'hook' ], $queue[ 'function' ] ) );
150
+ add_action( $queue[ 'hook' ], $queue[ 'function' ], $queue[ 'new_prio' ] );
151
+ }
152
+ }
153
+
154
+ /**
155
+ * Regenerates the hook priority cache (checks for theme customizations)
156
+ */
157
+ public function renew_cache() {
158
+ $this->priorities = $this->default_priorities;
159
+
160
+ if ( ! empty( $this->priorities ) ) {
161
+
162
+ foreach ( $this->priorities as $hook => $functions ) {
163
+
164
+ foreach ( $functions as $function => $old_prio ) {
165
+
166
+ $prio = has_action( $hook, $function );
167
+
168
+ if ( ! $prio )
169
+ $prio = has_filter( $hook, $function );
170
+
171
+ if ( $prio )
172
+ $this->priorities[ $hook ][ $function ] = $prio;
173
+ }
174
+ }
175
+ }
176
+
177
+ if ( ! empty( $this->priorities ) )
178
+ update_option( 'woocommerce_gzd_hook_priorities', $this->priorities );
179
+ else
180
+ delete_option( 'woocommerce_gzd_hook_priorities' );
181
+
182
+ }
183
+
184
+ }
185
+
186
+ WC_GZD_Hook_Priorities::instance();
includes/class-wc-gzd-shortcodes.php CHANGED
@@ -25,6 +25,8 @@ class WC_GZD_Shortcodes {
25
  'ekomi_badge' => __CLASS__ . '::ekomi_badge',
26
  'ekomi_widget' => __CLASS__ . '::ekomi_widget',
27
  'gzd_feature' => __CLASS__ . '::gzd_feature',
 
 
28
  );
29
 
30
  foreach ( $shortcodes as $shortcode => $function ) {
@@ -144,4 +146,34 @@ class WC_GZD_Shortcodes {
144
 
145
  }
146
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  }
25
  'ekomi_badge' => __CLASS__ . '::ekomi_badge',
26
  'ekomi_widget' => __CLASS__ . '::ekomi_widget',
27
  'gzd_feature' => __CLASS__ . '::gzd_feature',
28
+ 'gzd_vat_info' => __CLASS__ . '::gzd_vat_info',
29
+ 'gzd_sale_info' => __CLASS__ . '::gzd_sale_info',
30
  );
31
 
32
  foreach ( $shortcodes as $shortcode => $function ) {
146
 
147
  }
148
 
149
+ /**
150
+ * Returns VAT info
151
+ *
152
+ * @param array $atts
153
+ * @param string $content
154
+ * @return string
155
+ */
156
+ public static function gzd_vat_info( $atts, $content = '' ) {
157
+
158
+ ob_start();
159
+ wc_get_template( 'footer/vat-info.php' );
160
+ return ob_get_clean();
161
+
162
+ }
163
+
164
+ /**
165
+ * Returns Sale info
166
+ *
167
+ * @param array $atts
168
+ * @param string $content
169
+ * @return string
170
+ */
171
+ public static function gzd_sale_info( $atts, $content = '' ) {
172
+
173
+ ob_start();
174
+ wc_get_template( 'footer/sale-info.php' );
175
+ return ob_get_clean();
176
+
177
+ }
178
+
179
  }
includes/class-wc-gzd-trusted-shops.php CHANGED
@@ -71,6 +71,7 @@ class WC_GZD_Trusted_Shops {
71
  }
72
  if ( $this->is_review_reminder_enabled() )
73
  add_action( 'woocommerce_gzd_trusted_shops_reviews', array( $this, 'send_mails' ) );
 
74
  // Add Badge to Footer
75
  if ( $this->is_enabled() && $this->get_badge_js() )
76
  add_action( 'wp_footer', array( $this, 'add_badge' ), 5 );
71
  }
72
  if ( $this->is_review_reminder_enabled() )
73
  add_action( 'woocommerce_gzd_trusted_shops_reviews', array( $this, 'send_mails' ) );
74
+
75
  // Add Badge to Footer
76
  if ( $this->is_enabled() && $this->get_badge_js() )
77
  add_action( 'wp_footer', array( $this, 'add_badge' ), 5 );
includes/wc-gzd-cart-functions.php CHANGED
@@ -54,7 +54,7 @@ function wc_gzd_cart_product_delivery_time( $title, $cart_item, $cart_item_key =
54
  } else if ( isset( $cart_item[ 'delivery_time' ] ) )
55
  $delivery_time = $cart_item[ 'delivery_time' ];
56
  if ( ! empty( $delivery_time ) )
57
- $title .= '<p class="price-shipping-costs-info">' . $delivery_time . '</p>';
58
  return $title;
59
  }
60
 
54
  } else if ( isset( $cart_item[ 'delivery_time' ] ) )
55
  $delivery_time = $cart_item[ 'delivery_time' ];
56
  if ( ! empty( $delivery_time ) )
57
+ $title .= '<p class="delivery-time-info">' . $delivery_time . '</p>';
58
  return $title;
59
  }
60
 
includes/wc-gzd-core-functions.php CHANGED
@@ -25,13 +25,6 @@ function wc_gzd_is_customer_activated( $user_id ) {
25
  return ( get_user_meta( $user_id, '_woocommerce_activation' ) ? false : true );
26
  }
27
 
28
- function wc_gzd_get_hook_priority( $hook, $function ) {
29
- global $wp_filter;
30
- if ( isset( $wp_filter[ $hook ] ) ) {
31
- foreach ( $wp_filter[ $hook ] as $prio => $func_array ) {
32
- if ( isset( $func_array[ $function ] ) )
33
- return $prio;
34
- }
35
- }
36
- return false;
37
  }
25
  return ( get_user_meta( $user_id, '_woocommerce_activation' ) ? false : true );
26
  }
27
 
28
+ function wc_gzd_get_hook_priority( $hook ) {
29
+ return WC_GZD_Hook_Priorities::instance()->get_hook_priority( $hook );
 
 
 
 
 
 
 
30
  }
includes/wc-gzd-template-functions.php CHANGED
@@ -91,7 +91,7 @@ if ( ! function_exists( 'woocommerce_gzd_template_footer_vat_info' ) ) {
91
  * footer vat info
92
  */
93
  function woocommerce_gzd_template_footer_vat_info() {
94
- wc_get_template( 'footer/vat-info.php' );
95
  }
96
  }
97
 
@@ -101,7 +101,7 @@ if ( ! function_exists( 'woocommerce_gzd_template_footer_sale_info' ) ) {
101
  * footer sale info
102
  */
103
  function woocommerce_gzd_template_footer_sale_info() {
104
- wc_get_template( 'footer/sale-info.php' );
105
  }
106
  }
107
 
@@ -284,8 +284,8 @@ if ( ! function_exists( 'woocommerce_gzd_template_checkout_remove_cart_name_filt
284
  * Removes the cart item name filter (using checkout quantity html) if within checkout
285
  */
286
  function woocommerce_gzd_template_checkout_remove_cart_name_filter() {
287
- remove_filter( 'woocommerce_cart_item_name', 'wc_gzd_cart_product_delivery_time', 0, 2 );
288
- remove_filter( 'woocommerce_cart_item_name', 'wc_gzd_cart_product_item_desc', 0, 2 );
289
  }
290
 
291
  }
91
  * footer vat info
92
  */
93
  function woocommerce_gzd_template_footer_vat_info() {
94
+ echo do_shortcode( '[gzd_vat_info]' );
95
  }
96
  }
97
 
101
  * footer sale info
102
  */
103
  function woocommerce_gzd_template_footer_sale_info() {
104
+ echo do_shortcode( '[gzd_sale_info]' );
105
  }
106
  }
107
 
284
  * Removes the cart item name filter (using checkout quantity html) if within checkout
285
  */
286
  function woocommerce_gzd_template_checkout_remove_cart_name_filter() {
287
+ remove_filter( 'woocommerce_cart_item_name', 'wc_gzd_cart_product_delivery_time', wc_gzd_get_hook_priority( 'cart_product_delivery_time' ), 2 );
288
+ remove_filter( 'woocommerce_cart_item_name', 'wc_gzd_cart_product_item_desc', wc_gzd_get_hook_priority( 'cart_product_item_desc' ), 2 );
289
  }
290
 
291
  }
includes/wc-gzd-template-hooks.php CHANGED
@@ -8,34 +8,31 @@
8
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
9
 
10
  /**
11
- * Product Summary Box
12
- * Lazyload actions to retrieve custom priorities by themes
13
  */
14
- add_action( 'woocommerce_before_main_content', 'woocommerce_gzd_single_product_hooks' );
15
- function woocommerce_gzd_single_product_hooks() {
16
- $price_prio = ( ( $prio = wc_gzd_get_hook_priority( 'woocommerce_single_product_summary', 'woocommerce_template_single_price' ) ) ? $prio : 10 );
17
- if ( get_option( 'woocommerce_gzd_display_product_detail_unit_price' ) == 'yes' )
18
- add_action( 'woocommerce_single_product_summary', 'woocommerce_gzd_template_single_price_unit', $price_prio );
19
- if ( get_option( 'woocommerce_gzd_display_product_detail_tax_info' ) == 'yes' || get_option( 'woocommerce_gzd_display_product_detail_shipping_costs' ) == 'yes' )
20
- add_action( 'woocommerce_single_product_summary', 'woocommerce_gzd_template_single_legal_info', $price_prio + 1 );
21
- if ( get_option( 'woocommerce_gzd_display_product_detail_delivery_time' ) == 'yes' )
22
- add_action( 'woocommerce_single_product_summary', 'woocommerce_gzd_template_single_delivery_time_info', 27 );
23
- add_filter( 'woocommerce_available_variation', 'woocommerce_gzd_add_variation_options', 0, 3 );
24
- }
25
 
26
  /**
27
  * Product Loop Items
28
  */
29
  if ( get_option( 'woocommerce_gzd_display_listings_unit_price' ) == 'yes' )
30
- add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_gzd_template_single_price_unit', 10 );
31
  if ( get_option( 'woocommerce_gzd_display_listings_shipping_costs' ) == 'yes' )
32
- add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_gzd_template_single_shipping_costs_info', 8 );
33
  if ( get_option( 'woocommerce_gzd_display_listings_delivery_time' ) == 'yes' )
34
- add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_gzd_template_single_delivery_time_info', 7 );
35
  if ( get_option( 'woocommerce_gzd_display_listings_tax_info' ) == 'yes' )
36
- add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_gzd_template_single_tax_info', 6 );
37
  if ( get_option( 'woocommerce_gzd_display_listings_add_to_cart' ) == 'no' )
38
  remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
 
39
  if ( get_option( 'woocommerce_gzd_display_listings_link_details' ) == 'yes' )
40
  add_filter( 'woocommerce_loop_add_to_cart_link', 'woocommerce_gzd_template_loop_add_to_cart', 99, 2 );
41
 
@@ -43,17 +40,17 @@ if ( get_option( 'woocommerce_gzd_display_listings_link_details' ) == 'yes' )
43
  * Cart
44
  */
45
  add_action( 'woocommerce_cart_totals_after_order_total', 'woocommerce_gzd_template_cart_total_tax', 1 );
46
- add_filter( 'woocommerce_cart_item_price', 'wc_gzd_cart_product_unit_price', 0, 3 );
47
- add_filter( 'woocommerce_cart_item_subtotal', 'wc_gzd_cart_product_unit_price', 0, 3 );
48
  // Remove cart item name filter within checkout
49
  add_action( 'woocommerce_review_order_before_cart_contents', 'woocommerce_gzd_template_checkout_remove_cart_name_filter' );
50
  // Add item name filter within cart
51
- add_filter( 'woocommerce_cart_item_name', 'wc_gzd_cart_product_delivery_time', 0, 3 );
52
- add_filter( 'woocommerce_cart_item_name', 'wc_gzd_cart_product_item_desc', 0, 3 );
53
  // Small enterprises
54
  if ( get_option( 'woocommerce_gzd_small_enterprise' ) == 'yes' ) {
55
- add_action( 'woocommerce_after_cart_totals', 'woocommerce_gzd_template_small_business_info' );
56
- add_action( 'woocommerce_review_order_after_order_total', 'woocommerce_gzd_template_checkout_small_business_info', 25 );
57
  }
58
 
59
  /**
@@ -62,27 +59,27 @@ if ( get_option( 'woocommerce_gzd_small_enterprise' ) == 'yes' ) {
62
  add_action( 'woocommerce_review_order_after_order_total', 'woocommerce_gzd_template_cart_total_tax', 1 );
63
  add_action( 'woocommerce_review_order_before_cart_contents', 'woocommerce_gzd_template_checkout_table_content_replacement' );
64
  add_action( 'woocommerce_review_order_after_cart_contents', 'woocommerce_gzd_template_checkout_table_product_hide_filter_removal' );
65
- add_filter( 'woocommerce_checkout_cart_item_quantity', 'wc_gzd_cart_product_delivery_time', 0, 2 );
66
- add_filter( 'woocommerce_checkout_cart_item_quantity', 'wc_gzd_cart_product_item_desc', 0, 2 );
67
  if ( get_option( 'woocommerce_gzd_display_checkout_edit_data_notice' ) == 'yes' )
68
- add_action( 'woocommerce_before_order_notes', 'woocommerce_gzd_template_checkout_edit_data_notice', 0, 1 );
69
 
70
  // Do only hook if is no ajax request - fallback if theme misses no-ajax-check before applying hooks & filters
71
- if ( ! is_ajax() && version_compare( WC()->version, '2.3', '>=' ) ) {
72
-
73
- remove_action( 'woocommerce_checkout_order_review', 'woocommerce_order_review', 10 );
74
- remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 );
75
- add_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 10 );
76
- add_action( 'woocommerce_checkout_order_review', 'woocommerce_order_review', 20 );
77
- add_action( 'woocommerce_checkout_order_review', 'woocommerce_gzd_template_order_submit', 21 );
78
- add_action( 'woocommerce_review_order_after_payment', 'woocommerce_gzd_template_checkout_legal', 2 );
79
- add_action( 'woocommerce_review_order_after_payment', 'woocommerce_gzd_template_checkout_set_terms_manually', 3 );
80
  // Temporarily remove order button from payment.php - then add again to show after product table
81
  add_action( 'woocommerce_review_order_before_submit', 'woocommerce_gzd_template_set_order_button_remove_filter', PHP_INT_MAX );
82
  add_action( 'woocommerce_review_order_after_submit', 'woocommerce_gzd_template_set_order_button_show_filter', PHP_INT_MAX );
83
  add_action( 'woocommerce_gzd_review_order_before_submit', 'woocommerce_gzd_template_set_order_button_show_filter', PHP_INT_MAX );
84
  if ( get_option( 'woocommerce_gzd_checkout_legal_digital_checkbox' ) == 'yes' )
85
- add_action( 'woocommerce_review_order_after_payment', 'woocommerce_gzd_digital_checkbox', 4 );
86
 
87
  // Add payment title heading
88
  add_action( 'woocommerce_review_order_before_payment', 'woocommerce_gzd_template_checkout_payment_title' );
@@ -92,7 +89,7 @@ if ( ! is_ajax() && version_compare( WC()->version, '2.3', '>=' ) ) {
92
  }
93
 
94
  // Before 2.3
95
- if ( version_compare( WC()->version, '2.3', '<' ) ) {
96
 
97
  add_action( 'woocommerce_gzd_before_shop_table', 'woocommerce_gzd_template_checkout_legal', 2 );
98
  add_action( 'woocommerce_gzd_before_shop_table', 'woocommerce_gzd_template_checkout_set_terms_manually' );
@@ -121,14 +118,13 @@ add_action( 'woocommerce_after_checkout_validation', 'woocommerce_gzd_checkout_v
121
  /**
122
  * Order details & Thankyou
123
  */
124
- // Remove order again button (legally incompliant)
125
  remove_action( 'woocommerce_order_details_after_order_table', 'woocommerce_order_again_button' );
126
  add_action( 'woocommerce_thankyou_order_received_text', 'woocommerce_gzd_template_order_success_text', 0, 1 );
127
- add_action( 'woocommerce_order_item_quantity_html', 'wc_gzd_cart_product_delivery_time', 0, 3 );
128
- add_action( 'woocommerce_order_item_quantity_html', 'wc_gzd_cart_product_item_desc', 0, 3 );
129
- add_filter( 'woocommerce_order_formatted_line_subtotal', 'wc_gzd_cart_product_unit_price', 0, 3 );
130
  if ( get_option( 'woocommerce_gzd_hide_order_success_details' ) == 'yes' )
131
- remove_action( 'woocommerce_thankyou', 'woocommerce_order_details_table', 10 );
132
  if ( get_option( 'woocommerce_gzd_trusted_shops_id' ) )
133
  add_action( 'woocommerce_thankyou', 'woocommerce_gzd_template_checkout_thankyou_trusted_shops', 10, 1 );
134
 
@@ -136,11 +132,11 @@ if ( get_option( 'woocommerce_gzd_trusted_shops_id' ) )
136
  * Footer
137
  */
138
  if ( get_option( 'woocommerce_gzd_display_footer_vat_notice' ) == 'yes' ) {
139
- add_action ( 'woocommerce_gzd_footer_msg', 'woocommerce_gzd_template_footer_vat_info', 0 );
140
- add_action ( 'wp_footer', 'woocommerce_gzd_template_footer_vat_info', 5 );
141
  }
142
  if ( get_option( 'woocommerce_gzd_display_footer_sale_price_notice' ) == 'yes' ) {
143
- add_action ( 'woocommerce_gzd_footer_msg', 'woocommerce_gzd_template_footer_sale_info', 0 );
144
- add_action ( 'wp_footer', 'woocommerce_gzd_template_footer_sale_info', 5 );
145
  }
146
  ?>
8
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
9
 
10
  /**
11
+ * Single Product
 
12
  */
13
+ if ( get_option( 'woocommerce_gzd_display_product_detail_unit_price' ) == 'yes' )
14
+ add_action( 'woocommerce_single_product_summary', 'woocommerce_gzd_template_single_price_unit', wc_gzd_get_hook_priority( 'single_price_unit' ) );
15
+ if ( get_option( 'woocommerce_gzd_display_product_detail_tax_info' ) == 'yes' || get_option( 'woocommerce_gzd_display_product_detail_shipping_costs' ) == 'yes' )
16
+ add_action( 'woocommerce_single_product_summary', 'woocommerce_gzd_template_single_legal_info', wc_gzd_get_hook_priority( 'single_legal_info' ) );
17
+ if ( get_option( 'woocommerce_gzd_display_product_detail_delivery_time' ) == 'yes' )
18
+ add_action( 'woocommerce_single_product_summary', 'woocommerce_gzd_template_single_delivery_time_info', wc_gzd_get_hook_priority( 'single_delivery_time_info' ) );
19
+
20
+ add_filter( 'woocommerce_available_variation', 'woocommerce_gzd_add_variation_options', 0, 3 );
 
 
 
21
 
22
  /**
23
  * Product Loop Items
24
  */
25
  if ( get_option( 'woocommerce_gzd_display_listings_unit_price' ) == 'yes' )
26
+ add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_gzd_template_single_price_unit', wc_gzd_get_hook_priority( 'loop_price_unit' ) );
27
  if ( get_option( 'woocommerce_gzd_display_listings_shipping_costs' ) == 'yes' )
28
+ add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_gzd_template_single_shipping_costs_info', wc_gzd_get_hook_priority( 'loop_shipping_costs_info' ) );
29
  if ( get_option( 'woocommerce_gzd_display_listings_delivery_time' ) == 'yes' )
30
+ add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_gzd_template_single_delivery_time_info', wc_gzd_get_hook_priority( 'loop_delivery_time_info' ) );
31
  if ( get_option( 'woocommerce_gzd_display_listings_tax_info' ) == 'yes' )
32
+ add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_gzd_template_single_tax_info', wc_gzd_get_hook_priority( 'loop_tax_info' ) );
33
  if ( get_option( 'woocommerce_gzd_display_listings_add_to_cart' ) == 'no' )
34
  remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
35
+
36
  if ( get_option( 'woocommerce_gzd_display_listings_link_details' ) == 'yes' )
37
  add_filter( 'woocommerce_loop_add_to_cart_link', 'woocommerce_gzd_template_loop_add_to_cart', 99, 2 );
38
 
40
  * Cart
41
  */
42
  add_action( 'woocommerce_cart_totals_after_order_total', 'woocommerce_gzd_template_cart_total_tax', 1 );
43
+ add_filter( 'woocommerce_cart_item_price', 'wc_gzd_cart_product_unit_price', wc_gzd_get_hook_priority( 'cart_product_unit_price' ), 3 );
44
+ add_filter( 'woocommerce_cart_item_subtotal', 'wc_gzd_cart_product_unit_price', wc_gzd_get_hook_priority( 'cart_subtotal_unit_price' ), 3 );
45
  // Remove cart item name filter within checkout
46
  add_action( 'woocommerce_review_order_before_cart_contents', 'woocommerce_gzd_template_checkout_remove_cart_name_filter' );
47
  // Add item name filter within cart
48
+ add_filter( 'woocommerce_cart_item_name', 'wc_gzd_cart_product_delivery_time', wc_gzd_get_hook_priority( 'cart_product_delivery_time' ), 3 );
49
+ add_filter( 'woocommerce_cart_item_name', 'wc_gzd_cart_product_item_desc', wc_gzd_get_hook_priority( 'cart_product_item_desc' ), 3 );
50
  // Small enterprises
51
  if ( get_option( 'woocommerce_gzd_small_enterprise' ) == 'yes' ) {
52
+ add_action( 'woocommerce_after_cart_totals', 'woocommerce_gzd_template_small_business_info', wc_gzd_get_hook_priority( 'cart_small_business_info' ) );
53
+ add_action( 'woocommerce_review_order_after_order_total', 'woocommerce_gzd_template_checkout_small_business_info', wc_gzd_get_hook_priority( 'checkout_small_business_info' ) );
54
  }
55
 
56
  /**
59
  add_action( 'woocommerce_review_order_after_order_total', 'woocommerce_gzd_template_cart_total_tax', 1 );
60
  add_action( 'woocommerce_review_order_before_cart_contents', 'woocommerce_gzd_template_checkout_table_content_replacement' );
61
  add_action( 'woocommerce_review_order_after_cart_contents', 'woocommerce_gzd_template_checkout_table_product_hide_filter_removal' );
62
+ add_filter( 'woocommerce_checkout_cart_item_quantity', 'wc_gzd_cart_product_delivery_time', wc_gzd_get_hook_priority( 'checkout_product_delivery_time' ), 2 );
63
+ add_filter( 'woocommerce_checkout_cart_item_quantity', 'wc_gzd_cart_product_item_desc', wc_gzd_get_hook_priority( 'checkout_product_item_desc' ), 2 );
64
  if ( get_option( 'woocommerce_gzd_display_checkout_edit_data_notice' ) == 'yes' )
65
+ add_action( 'woocommerce_before_order_notes', 'woocommerce_gzd_template_checkout_edit_data_notice', wc_gzd_get_hook_priority( 'checkout_edit_data_notice' ), 1 );
66
 
67
  // Do only hook if is no ajax request - fallback if theme misses no-ajax-check before applying hooks & filters
68
+ if ( ! is_ajax() && version_compare( WC_VERSION, '2.3', '>=' ) ) {
69
+
70
+ // Make sure payment form goes before order review
71
+ WC_GZD_Hook_Priorities::instance()->change_priority( 'woocommerce_checkout_order_review', 'woocommerce_order_review', wc_gzd_get_hook_priority( 'checkout_order_review' ) );
72
+ WC_GZD_Hook_Priorities::instance()->change_priority( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', wc_gzd_get_hook_priority( 'checkout_payment' ) );
73
+
74
+ add_action( 'woocommerce_checkout_order_review', 'woocommerce_gzd_template_order_submit', wc_gzd_get_hook_priority( 'checkout_order_submit' ) );
75
+ add_action( 'woocommerce_review_order_after_payment', 'woocommerce_gzd_template_checkout_legal', wc_gzd_get_hook_priority( 'checkout_legal' ) );
76
+ add_action( 'woocommerce_review_order_after_payment', 'woocommerce_gzd_template_checkout_set_terms_manually', wc_gzd_get_hook_priority( 'checkout_set_terms' ) );
77
  // Temporarily remove order button from payment.php - then add again to show after product table
78
  add_action( 'woocommerce_review_order_before_submit', 'woocommerce_gzd_template_set_order_button_remove_filter', PHP_INT_MAX );
79
  add_action( 'woocommerce_review_order_after_submit', 'woocommerce_gzd_template_set_order_button_show_filter', PHP_INT_MAX );
80
  add_action( 'woocommerce_gzd_review_order_before_submit', 'woocommerce_gzd_template_set_order_button_show_filter', PHP_INT_MAX );
81
  if ( get_option( 'woocommerce_gzd_checkout_legal_digital_checkbox' ) == 'yes' )
82
+ add_action( 'woocommerce_review_order_after_payment', 'woocommerce_gzd_digital_checkbox', wc_gzd_get_hook_priority( 'checkout_digital_checkbox' ) );
83
 
84
  // Add payment title heading
85
  add_action( 'woocommerce_review_order_before_payment', 'woocommerce_gzd_template_checkout_payment_title' );
89
  }
90
 
91
  // Before 2.3
92
+ if ( version_compare( WC_VERSION, '2.3', '<' ) ) {
93
 
94
  add_action( 'woocommerce_gzd_before_shop_table', 'woocommerce_gzd_template_checkout_legal', 2 );
95
  add_action( 'woocommerce_gzd_before_shop_table', 'woocommerce_gzd_template_checkout_set_terms_manually' );
118
  /**
119
  * Order details & Thankyou
120
  */
 
121
  remove_action( 'woocommerce_order_details_after_order_table', 'woocommerce_order_again_button' );
122
  add_action( 'woocommerce_thankyou_order_received_text', 'woocommerce_gzd_template_order_success_text', 0, 1 );
123
+ add_action( 'woocommerce_order_item_quantity_html', 'wc_gzd_cart_product_delivery_time', wc_gzd_get_hook_priority( 'order_product_delivery_time' ), 3 );
124
+ add_action( 'woocommerce_order_item_quantity_html', 'wc_gzd_cart_product_item_desc', wc_gzd_get_hook_priority( 'order_product_item_desc' ), 3 );
125
+ add_filter( 'woocommerce_order_formatted_line_subtotal', 'wc_gzd_cart_product_unit_price', wc_gzd_get_hook_priority( 'order_product_unit_price' ), 3 );
126
  if ( get_option( 'woocommerce_gzd_hide_order_success_details' ) == 'yes' )
127
+ remove_action( 'woocommerce_thankyou', 'woocommerce_order_details_table', WC_GZD_Hook_Priorities::instance()->get_priority( 'woocommerce_thankyou', 'woocommerce_order_details_table' ) );
128
  if ( get_option( 'woocommerce_gzd_trusted_shops_id' ) )
129
  add_action( 'woocommerce_thankyou', 'woocommerce_gzd_template_checkout_thankyou_trusted_shops', 10, 1 );
130
 
132
  * Footer
133
  */
134
  if ( get_option( 'woocommerce_gzd_display_footer_vat_notice' ) == 'yes' ) {
135
+ add_action ( 'woocommerce_gzd_footer_msg', 'woocommerce_gzd_template_footer_vat_info', wc_gzd_get_hook_priority( 'gzd_footer_vat_info' ) );
136
+ add_action ( 'wp_footer', 'woocommerce_gzd_template_footer_vat_info', wc_gzd_get_hook_priority( 'footer_vat_info' ) );
137
  }
138
  if ( get_option( 'woocommerce_gzd_display_footer_sale_price_notice' ) == 'yes' ) {
139
+ add_action ( 'woocommerce_gzd_footer_msg', 'woocommerce_gzd_template_footer_sale_info', wc_gzd_get_hook_priority( 'gzd_footer_sale_info' ) );
140
+ add_action ( 'wp_footer', 'woocommerce_gzd_template_footer_sale_info', wc_gzd_get_hook_priority( 'footer_sale_info' ) );
141
  }
142
  ?>
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: woocommerce, german market, german, germany, deutsch, deutschland, de, de_
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=info@vendidero.de&item_name=Donation+for+WooCommerce+Germanized
5
  Requires at least: 3.8
6
  Tested up to: 4.2
7
- Stable tag: 1.3.1
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -154,6 +154,12 @@ Bugs sowie Hilfe bei der Arbeit an WooCommerce Germanized werden gerne über uns
154
 
155
  == Changelog ==
156
 
 
 
 
 
 
 
157
  = 1.3.1 =
158
  * Fix - Variation shipping time
159
 
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=info@vendidero.de&item_name=Donation+for+WooCommerce+Germanized
5
  Requires at least: 3.8
6
  Tested up to: 4.2
7
+ Stable tag: 1.3.2
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
154
 
155
  == Changelog ==
156
 
157
+ = 1.3.2 =
158
+ * Feature - Better hook priority management
159
+ * Fix - saving variation cart description
160
+ * Fix - add to cart bug
161
+ * Fix - better date diff calculation
162
+
163
  = 1.3.1 =
164
  * Fix - Variation shipping time
165
 
woocommerce-germanized.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WooCommerce Germanized
4
  * Plugin URI: https://www.vendidero.de/woocommerce-germanized
5
  * Description: Extends WooCommerce to become a legally compliant store for the german market.
6
- * Version: 1.3.1
7
  * Author: Vendidero
8
  * Author URI: https://vendidero.de
9
  * Requires at least: 3.8
@@ -26,7 +26,7 @@ final class WooCommerce_Germanized {
26
  *
27
  * @var string
28
  */
29
- public $version = '1.3.1';
30
 
31
  /**
32
  * Single instance of WooCommerce Germanized Main Class
@@ -327,13 +327,15 @@ final class WooCommerce_Germanized {
327
  if ( defined( 'DOING_AJAX' ) )
328
  $this->ajax_includes();
329
 
330
- if ( ! is_admin() || defined( 'DOING_AJAX' ) )
331
- add_action( 'init', array( $this, 'frontend_includes' ), 5 );
332
 
333
  // Post types
334
  include_once ( 'includes/class-wc-gzd-post-types.php' );
335
  // Gateway manipulation
336
  include_once ( 'includes/class-wc-gzd-payment-gateways.php' );
 
 
337
 
338
  // Abstracts
339
  include_once ( 'includes/abstracts/abstract-wc-gzd-product.php' );
@@ -394,7 +396,7 @@ final class WooCommerce_Germanized {
394
 
395
  // Load Default
396
  if ( ! $theme_template && file_exists( apply_filters( 'woocommerce_gzd_default_plugin_template', $this->plugin_path() . '/templates/' . $template_name, $template_name ) ) )
397
- return apply_filters( 'woocommerce_gzd_default_plugin_template', $this->plugin_path() . '/templates/' . $template_name, $template_name );
398
  else if ( $theme_template )
399
  $template = $theme_template;
400
 
@@ -648,18 +650,15 @@ final class WooCommerce_Germanized {
648
  }
649
 
650
  /**
651
- * PHP 5.3 backwards compatibility for getting date diff
652
  *
653
  * @param string $from date from
654
  * @param string $to date to
655
- * @return array array containing year, month, date diff
656
  */
657
  public function get_date_diff( $from, $to ) {
658
  $diff = abs( strtotime( $to ) - strtotime( $from ) );
659
- $years = floor( $diff / (365*60*60*24) );
660
- $months = floor( ( $diff - $years * 365*60*60*24 ) / ( 30*60*60*24 ) );
661
- $days = floor( ( $diff - $years * 365*60*60*24 - $months*30*60*60*24 ) / ( 60*60*24 ) );
662
- return array( 'y' => $years, 'm' => $months, 'd' => $days );
663
  }
664
 
665
  /**
3
  * Plugin Name: WooCommerce Germanized
4
  * Plugin URI: https://www.vendidero.de/woocommerce-germanized
5
  * Description: Extends WooCommerce to become a legally compliant store for the german market.
6
+ * Version: 1.3.2
7
  * Author: Vendidero
8
  * Author URI: https://vendidero.de
9
  * Requires at least: 3.8
26
  *
27
  * @var string
28
  */
29
+ public $version = '1.3.2';
30
 
31
  /**
32
  * Single instance of WooCommerce Germanized Main Class
327
  if ( defined( 'DOING_AJAX' ) )
328
  $this->ajax_includes();
329
 
330
+ if ( ( ! is_admin() || defined( 'DOING_AJAX' ) ) && ! defined( 'DOING_CRON' ) )
331
+ add_action( 'woocommerce_loaded', array( $this, 'frontend_includes' ), 5 );
332
 
333
  // Post types
334
  include_once ( 'includes/class-wc-gzd-post-types.php' );
335
  // Gateway manipulation
336
  include_once ( 'includes/class-wc-gzd-payment-gateways.php' );
337
+ // Template priority
338
+ include_once ( 'includes/class-wc-gzd-hook-priorities.php' );
339
 
340
  // Abstracts
341
  include_once ( 'includes/abstracts/abstract-wc-gzd-product.php' );
396
 
397
  // Load Default
398
  if ( ! $theme_template && file_exists( apply_filters( 'woocommerce_gzd_default_plugin_template', $this->plugin_path() . '/templates/' . $template_name, $template_name ) ) )
399
+ $template = apply_filters( 'woocommerce_gzd_default_plugin_template', $this->plugin_path() . '/templates/' . $template_name, $template_name );
400
  else if ( $theme_template )
401
  $template = $theme_template;
402
 
650
  }
651
 
652
  /**
653
+ * PHP 5.3 backwards compatibility for getting date diff in days
654
  *
655
  * @param string $from date from
656
  * @param string $to date to
657
+ * @return array
658
  */
659
  public function get_date_diff( $from, $to ) {
660
  $diff = abs( strtotime( $to ) - strtotime( $from ) );
661
+ return array( 'd' => floor( $diff / ( 60*60*24 ) ) );
 
 
 
662
  }
663
 
664
  /**