diff --git a/.vscode/ftp-kr.sync.cache.json b/.vscode/ftp-kr.sync.cache.json index 802a8af2..26c46ec5 100644 --- a/.vscode/ftp-kr.sync.cache.json +++ b/.vscode/ftp-kr.sync.cache.json @@ -1,8 +1,166 @@ { - "ftp://dedyk8.cyber-folks.pl@www@masimmo.pl": { + "ftp://www@masimmo.pl@dedyk8.cyber-folks.pl": { "public_html": { - "admin264x7t1sv": {}, + "admin264x7t1sv": { + "themes": { + "default": { + "scss": { + "admin-theme.scss": { + "type": "-", + "size": 3567, + "lmtime": 0, + "modified": false + }, + "controllers": {}, + "font.css": { + "type": "-", + "size": 1161, + "lmtime": 1733754360843.8423, + "modified": false + }, + "font.css.map": { + "type": "-", + "size": 392, + "lmtime": 1733754360843.8423, + "modified": false + }, + "font.scss": { + "type": "-", + "size": 1161, + "lmtime": 0, + "modified": false + }, + "index.php": { + "type": "-", + "size": 1369, + "lmtime": 0, + "modified": false + }, + "modules": {}, + "partials": {}, + "vendor": { + "font-awesome": { + "_animated.scss": { + "type": "-", + "size": 715, + "lmtime": 0, + "modified": false + }, + "_bordered-pulled.scss": { + "type": "-", + "size": 332, + "lmtime": 0, + "modified": false + }, + "_core.scss": { + "type": "-", + "size": 513, + "lmtime": 0, + "modified": false + }, + "_extras.scss": { + "type": "-", + "size": 1238, + "lmtime": 0, + "modified": false + }, + "_fixed-width.scss": { + "type": "-", + "size": 120, + "lmtime": 0, + "modified": false + }, + "font-awesome.css": { + "type": "-", + "size": 29213, + "lmtime": 1733754360844.3635, + "modified": false + }, + "font-awesome.css.map": { + "type": "-", + "size": 16766, + "lmtime": 1733754360844.3635, + "modified": false + }, + "font-awesome.scss": { + "type": "-", + "size": 405, + "lmtime": 0, + "modified": false + }, + "_icons.scss": { + "type": "-", + "size": 38476, + "lmtime": 0, + "modified": false + }, + "index.php": { + "type": "-", + "size": 1321, + "lmtime": 0, + "modified": false + }, + "_larger.scss": { + "type": "-", + "size": 375, + "lmtime": 0, + "modified": false + }, + "_list.scss": { + "type": "-", + "size": 378, + "lmtime": 0, + "modified": false + }, + "_mixins.scss": { + "type": "-", + "size": 1000, + "lmtime": 0, + "modified": false + }, + "_path.scss": { + "type": "-", + "size": 783, + "lmtime": 0, + "modified": false + }, + "_rotated-flipped.scss": { + "type": "-", + "size": 672, + "lmtime": 0, + "modified": false + }, + "_spinning.scss": { + "type": "-", + "size": 750, + "lmtime": 0, + "modified": false + }, + "_stacked.scss": { + "type": "-", + "size": 482, + "lmtime": 0, + "modified": false + }, + "_variables.scss": { + "type": "-", + "size": 16900, + "lmtime": 0, + "modified": false + } + } + } + } + } + } + }, "app": {}, + "archive.zip": { + "type": "-", + "size": 3061108936, + "lmtime": 0, + "modified": false + }, "autoload.php": { "type": "-", "size": 1316, @@ -35,6 +193,12 @@ "controllers": {}, "docs": {}, "download": {}, + ".DS_Store": { + "type": "-", + "size": 10244, + "lmtime": 0, + "modified": false + }, "error500.html": { "type": "-", "size": 2506, @@ -55,8 +219,8 @@ }, ".htaccess": { "type": "-", - "size": 3676, - "lmtime": 1732025220000, + "size": 3568, + "lmtime": 0, "modified": false }, "images.inc.php": { @@ -75,7 +239,7 @@ "index.php": { "type": "-", "size": 1169, - "lmtime": 1732014720000, + "lmtime": 0, "modified": false }, "init.php": { @@ -115,7 +279,591 @@ "lmtime": 0, "modified": false }, - "localization": {}, + "localization": { + "ae.xml": { + "type": "-", + "size": 576, + "lmtime": 0, + "modified": false + }, + "am.xml": { + "type": "-", + "size": 900, + "lmtime": 0, + "modified": false + }, + "ar.xml": { + "type": "-", + "size": 1250, + "lmtime": 0, + "modified": false + }, + "at.xml": { + "type": "-", + "size": 13055, + "lmtime": 0, + "modified": false + }, + "au.xml": { + "type": "-", + "size": 1477, + "lmtime": 0, + "modified": false + }, + "az.xml": { + "type": "-", + "size": 887, + "lmtime": 0, + "modified": false + }, + "ba.xml": { + "type": "-", + "size": 881, + "lmtime": 0, + "modified": false + }, + "bd.xml": { + "type": "-", + "size": 701, + "lmtime": 0, + "modified": false + }, + "be.xml": { + "type": "-", + "size": 12220, + "lmtime": 0, + "modified": false + }, + "bg.xml": { + "type": "-", + "size": 9217, + "lmtime": 0, + "modified": false + }, + "bo.xml": { + "type": "-", + "size": 702, + "lmtime": 0, + "modified": false + }, + "br.xml": { + "type": "-", + "size": 3109, + "lmtime": 0, + "modified": false + }, + "by.xml": { + "type": "-", + "size": 735, + "lmtime": 0, + "modified": false + }, + "ca.xml": { + "type": "-", + "size": 3032, + "lmtime": 0, + "modified": false + }, + "ch.xml": { + "type": "-", + "size": 3669, + "lmtime": 0, + "modified": false + }, + "ci.xml": { + "type": "-", + "size": 868, + "lmtime": 0, + "modified": false + }, + "CLDR": {}, + "cl.xml": { + "type": "-", + "size": 694, + "lmtime": 0, + "modified": false + }, + "cm.xml": { + "type": "-", + "size": 897, + "lmtime": 0, + "modified": false + }, + "cn.xml": { + "type": "-", + "size": 3937, + "lmtime": 0, + "modified": false + }, + "co.xml": { + "type": "-", + "size": 3583, + "lmtime": 0, + "modified": false + }, + "cr.xml": { + "type": "-", + "size": 1714, + "lmtime": 0, + "modified": false + }, + "cy.xml": { + "type": "-", + "size": 10721, + "lmtime": 0, + "modified": false + }, + "cz.xml": { + "type": "-", + "size": 7839, + "lmtime": 0, + "modified": false + }, + "default.xml": { + "type": "-", + "size": 626, + "lmtime": 0, + "modified": false + }, + "de.xml": { + "type": "-", + "size": 10638, + "lmtime": 0, + "modified": false + }, + "dk.xml": { + "type": "-", + "size": 6675, + "lmtime": 0, + "modified": false + }, + "do.xml": { + "type": "-", + "size": 875, + "lmtime": 0, + "modified": false + }, + "dz.xml": { + "type": "-", + "size": 1196, + "lmtime": 0, + "modified": false + }, + "ec.xml": { + "type": "-", + "size": 853, + "lmtime": 0, + "modified": false + }, + "ee.xml": { + "type": "-", + "size": 10636, + "lmtime": 0, + "modified": false + }, + "eg.xml": { + "type": "-", + "size": 1013, + "lmtime": 0, + "modified": false + }, + "es.xml": { + "type": "-", + "size": 15943, + "lmtime": 0, + "modified": false + }, + "fi.xml": { + "type": "-", + "size": 12165, + "lmtime": 0, + "modified": false + }, + "fj.xml": { + "type": "-", + "size": 699, + "lmtime": 0, + "modified": false + }, + "fr.xml": { + "type": "-", + "size": 11226, + "lmtime": 0, + "modified": false + }, + "gb.xml": { + "type": "-", + "size": 7705, + "lmtime": 0, + "modified": false + }, + "ge.xml": { + "type": "-", + "size": 704, + "lmtime": 0, + "modified": false + }, + "gr.xml": { + "type": "-", + "size": 13449, + "lmtime": 0, + "modified": false + }, + "gt.xml": { + "type": "-", + "size": 702, + "lmtime": 0, + "modified": false + }, + "gy.xml": { + "type": "-", + "size": 698, + "lmtime": 0, + "modified": false + }, + "hk.xml": { + "type": "-", + "size": 543, + "lmtime": 0, + "modified": false + }, + "hr.xml": { + "type": "-", + "size": 10789, + "lmtime": 0, + "modified": false + }, + ".htaccess": { + "type": "-", + "size": 170, + "lmtime": 0, + "modified": false + }, + "hu.xml": { + "type": "-", + "size": 12167, + "lmtime": 0, + "modified": false + }, + "id.xml": { + "type": "-", + "size": 3360, + "lmtime": 0, + "modified": false + }, + "ie.xml": { + "type": "-", + "size": 10749, + "lmtime": 0, + "modified": false + }, + "il.xml": { + "type": "-", + "size": 870, + "lmtime": 0, + "modified": false + }, + "index.php": { + "type": "-", + "size": 1369, + "lmtime": 0, + "modified": false + }, + "in.xml": { + "type": "-", + "size": 4404, + "lmtime": 0, + "modified": false + }, + "ir.xml": { + "type": "-", + "size": 3259, + "lmtime": 0, + "modified": false + }, + "it.xml": { + "type": "-", + "size": 19921, + "lmtime": 0, + "modified": false + }, + "je.xml": { + "type": "-", + "size": 723, + "lmtime": 0, + "modified": false + }, + "jp.xml": { + "type": "-", + "size": 4185, + "lmtime": 0, + "modified": false + }, + "ke.xml": { + "type": "-", + "size": 918, + "lmtime": 0, + "modified": false + }, + "kr.xml": { + "type": "-", + "size": 883, + "lmtime": 0, + "modified": false + }, + "li.xml": { + "type": "-", + "size": 1034, + "lmtime": 0, + "modified": false + }, + "lt.xml": { + "type": "-", + "size": 12160, + "lmtime": 0, + "modified": false + }, + "lu.xml": { + "type": "-", + "size": 13710, + "lmtime": 0, + "modified": false + }, + "lv.xml": { + "type": "-", + "size": 10727, + "lmtime": 0, + "modified": false + }, + "ma.xml": { + "type": "-", + "size": 1367, + "lmtime": 0, + "modified": false + }, + "md.xml": { + "type": "-", + "size": 698, + "lmtime": 0, + "modified": false + }, + "mg.xml": { + "type": "-", + "size": 731, + "lmtime": 0, + "modified": false + }, + "mt.xml": { + "type": "-", + "size": 10726, + "lmtime": 0, + "modified": false + }, + "mx.xml": { + "type": "-", + "size": 882, + "lmtime": 0, + "modified": false + }, + "my.xml": { + "type": "-", + "size": 2605, + "lmtime": 0, + "modified": false + }, + "ng.xml": { + "type": "-", + "size": 933, + "lmtime": 0, + "modified": false + }, + "nl.xml": { + "type": "-", + "size": 11759, + "lmtime": 0, + "modified": false + }, + "no.xml": { + "type": "-", + "size": 1376, + "lmtime": 0, + "modified": false + }, + "nz.xml": { + "type": "-", + "size": 1014, + "lmtime": 0, + "modified": false + }, + "pa.xml": { + "type": "-", + "size": 1241, + "lmtime": 0, + "modified": false + }, + "pe.xml": { + "type": "-", + "size": 883, + "lmtime": 0, + "modified": false + }, + "ph.xml": { + "type": "-", + "size": 1098, + "lmtime": 0, + "modified": false + }, + "pk.xml": { + "type": "-", + "size": 887, + "lmtime": 0, + "modified": false + }, + "pl.xml": { + "type": "-", + "size": 10633, + "lmtime": 1732543384578.8223, + "modified": false + }, + "pt.xml": { + "type": "-", + "size": 10735, + "lmtime": 0, + "modified": false + }, + "py.xml": { + "type": "-", + "size": 860, + "lmtime": 0, + "modified": false + }, + "ro.xml": { + "type": "-", + "size": 13636, + "lmtime": 0, + "modified": false + }, + "rs.xml": { + "type": "-", + "size": 994, + "lmtime": 0, + "modified": false + }, + "ru.xml": { + "type": "-", + "size": 1037, + "lmtime": 0, + "modified": false + }, + "sa.xml": { + "type": "-", + "size": 856, + "lmtime": 0, + "modified": false + }, + "se.xml": { + "type": "-", + "size": 10736, + "lmtime": 0, + "modified": false + }, + "sg.xml": { + "type": "-", + "size": 791, + "lmtime": 0, + "modified": false + }, + "si.xml": { + "type": "-", + "size": 10647, + "lmtime": 0, + "modified": false + }, + "sk.xml": { + "type": "-", + "size": 10642, + "lmtime": 0, + "modified": false + }, + "sn.xml": { + "type": "-", + "size": 1024, + "lmtime": 0, + "modified": false + }, + "sv.xml": { + "type": "-", + "size": 702, + "lmtime": 0, + "modified": false + }, + "th.xml": { + "type": "-", + "size": 7627, + "lmtime": 0, + "modified": false + }, + "tn.xml": { + "type": "-", + "size": 1254, + "lmtime": 0, + "modified": false + }, + "tr.xml": { + "type": "-", + "size": 1017, + "lmtime": 0, + "modified": false + }, + "tw.xml": { + "type": "-", + "size": 744, + "lmtime": 0, + "modified": false + }, + "tz.xml": { + "type": "-", + "size": 742, + "lmtime": 0, + "modified": false + }, + "ua.xml": { + "type": "-", + "size": 3784, + "lmtime": 0, + "modified": false + }, + "us.xml": { + "type": "-", + "size": 15158, + "lmtime": 0, + "modified": false + }, + "uy.xml": { + "type": "-", + "size": 858, + "lmtime": 0, + "modified": false + }, + "ve.xml": { + "type": "-", + "size": 1211, + "lmtime": 0, + "modified": false + }, + "vn.xml": { + "type": "-", + "size": 1176, + "lmtime": 0, + "modified": false + }, + "za.xml": { + "type": "-", + "size": 884, + "lmtime": 0, + "modified": false + } + }, "mails": {}, "Makefile": { "type": "-", @@ -129,7 +877,682 @@ "lmtime": 0, "modified": false }, - "modules": {}, + "modules": { + "blockreassurance": { + "_dev": { + "back": { + "additional_module.png": { + "type": "-", + "size": 5687, + "lmtime": 0, + "modified": false + }, + "back.css": { + "type": "-", + "size": 12462, + "lmtime": 1733754360843.8423, + "modified": false + }, + "back.css.map": { + "type": "-", + "size": 4881, + "lmtime": 1733754360843.8423, + "modified": false + }, + "back.scss": { + "type": "-", + "size": 13089, + "lmtime": 0, + "modified": false + }, + "index.js": { + "type": "-", + "size": 16274, + "lmtime": 0, + "modified": false + }, + "index.php": { + "type": "-", + "size": 1127, + "lmtime": 0, + "modified": false + }, + "vue-plugins.d.ts": { + "type": "-", + "size": 34, + "lmtime": 0, + "modified": false + } + }, + "front": { + "front.css": { + "type": "-", + "size": 1353, + "lmtime": 1733754360843.8423, + "modified": false + }, + "front.css.map": { + "type": "-", + "size": 579, + "lmtime": 1733754360843.8423, + "modified": false + }, + "front.scss": { + "type": "-", + "size": 1322, + "lmtime": 0, + "modified": false + }, + "index.js": { + "type": "-", + "size": 2755, + "lmtime": 0, + "modified": false + }, + "index.php": { + "type": "-", + "size": 1127, + "lmtime": 0, + "modified": false + } + } + } + }, + "blockwishlist": { + "_dev": { + "back": { + "scss": { + "backoffice.css": { + "type": "-", + "size": 1481, + "lmtime": 1733754360844.3635, + "modified": false + }, + "backoffice.css.map": { + "type": "-", + "size": 587, + "lmtime": 1733754360843.8423, + "modified": false + }, + "backoffice.scss": { + "type": "-", + "size": 18, + "lmtime": 0, + "modified": false + }, + "_stats.scss": { + "type": "-", + "size": 1286, + "lmtime": 0, + "modified": false + } + } + }, + "front": { + "scss": { + "common.css": { + "type": "-", + "size": 2621, + "lmtime": 1733754360844.3635, + "modified": false + }, + "common.css.map": { + "type": "-", + "size": 1186, + "lmtime": 1733754360843.8423, + "modified": false + }, + "common.scss": { + "type": "-", + "size": 101, + "lmtime": 0, + "modified": false + }, + "_footer-links.scss": { + "type": "-", + "size": 384, + "lmtime": 0, + "modified": false + }, + "_modal.scss": { + "type": "-", + "size": 1698, + "lmtime": 0, + "modified": false + }, + "_product.scss": { + "type": "-", + "size": 178, + "lmtime": 0, + "modified": false + }, + "_rtl.scss": { + "type": "-", + "size": 561, + "lmtime": 0, + "modified": false + }, + "_variables.scss": { + "type": "-", + "size": 16, + "lmtime": 0, + "modified": false + } + } + } + } + }, + "ps_facetedsearch": { + "_dev": { + "back": { + "blocklayered.css": { + "type": "-", + "size": 1577, + "lmtime": 1733754360843.8423, + "modified": false + }, + "blocklayered.css.map": { + "type": "-", + "size": 406, + "lmtime": 1733754360843.8423, + "modified": false + }, + "blocklayered.scss": { + "type": "-", + "size": 1810, + "lmtime": 0, + "modified": false + }, + "index.js": { + "type": "-", + "size": 8041, + "lmtime": 0, + "modified": false + } + }, + "front": { + "events.js": { + "type": "-", + "size": 1114, + "lmtime": 0, + "modified": false + }, + "facet.css": { + "type": "-", + "size": 1529, + "lmtime": 1733754360843.8423, + "modified": false + }, + "facet.css.map": { + "type": "-", + "size": 353, + "lmtime": 1733754360843.8423, + "modified": false + }, + "facet.scss": { + "type": "-", + "size": 1398, + "lmtime": 0, + "modified": false + }, + "index.js": { + "type": "-", + "size": 911, + "lmtime": 0, + "modified": false + }, + "overlay.css": { + "type": "-", + "size": 1560, + "lmtime": 1733754360843.8423, + "modified": false + }, + "overlay.css.map": { + "type": "-", + "size": 459, + "lmtime": 1733754360843.8423, + "modified": false + }, + "overlay.js": { + "type": "-", + "size": 1225, + "lmtime": 0, + "modified": false + }, + "overlay.scss": { + "type": "-", + "size": 1522, + "lmtime": 0, + "modified": false + }, + "slider.css": { + "type": "-", + "size": 1194, + "lmtime": 1733754360843.8423, + "modified": false + }, + "slider.css.map": { + "type": "-", + "size": 247, + "lmtime": 1733754360843.8423, + "modified": false + }, + "slider.js": { + "type": "-", + "size": 3816, + "lmtime": 0, + "modified": false + }, + "slider.scss": { + "type": "-", + "size": 1179, + "lmtime": 0, + "modified": false + }, + "urlparser.js": { + "type": "-", + "size": 1051, + "lmtime": 0, + "modified": false + } + } + } + }, + "creativeelements": { + "includes": { + "elements": { + "column.php": { + "type": "-", + "size": 33585, + "lmtime": 0, + "modified": false + }, + "index.php": { + "type": "-", + "size": 488, + "lmtime": 0, + "modified": false + }, + "repeater.php": { + "type": "-", + "size": 2935, + "lmtime": 0, + "modified": false + }, + "section.php": { + "type": "-", + "size": 76801, + "lmtime": 1732198432891.3164, + "modified": false + } + }, + "widgets": { + "accordion.php": { + "type": "-", + "size": 21240, + "lmtime": 0, + "modified": false + }, + "ajax-search.php": { + "type": "-", + "size": 49161, + "lmtime": 0, + "modified": false + }, + "alert.php": { + "type": "-", + "size": 10619, + "lmtime": 0, + "modified": false + }, + "animated-headline.php": { + "type": "-", + "size": 14653, + "lmtime": 0, + "modified": false + }, + "breadcrumb.php": { + "type": "-", + "size": 3364, + "lmtime": 0, + "modified": false + }, + "button.php": { + "type": "-", + "size": 16523, + "lmtime": 0, + "modified": false + }, + "call-to-action.php": { + "type": "-", + "size": 60879, + "lmtime": 0, + "modified": false + }, + "category-tiles.php": { + "type": "-", + "size": 7706, + "lmtime": 0, + "modified": false + }, + "category-tree.php": { + "type": "-", + "size": 1296, + "lmtime": 0, + "modified": false + }, + "common.php": { + "type": "-", + "size": 50109, + "lmtime": 0, + "modified": false + }, + "contact-form.php": { + "type": "-", + "size": 48918, + "lmtime": 0, + "modified": false + }, + "countdown.php": { + "type": "-", + "size": 20825, + "lmtime": 0, + "modified": false + }, + "counter.php": { + "type": "-", + "size": 10466, + "lmtime": 0, + "modified": false + }, + "currency-selector.php": { + "type": "-", + "size": 8610, + "lmtime": 0, + "modified": false + }, + "divider.php": { + "type": "-", + "size": 41107, + "lmtime": 0, + "modified": false + }, + "email-subscription.php": { + "type": "-", + "size": 34771, + "lmtime": 0, + "modified": false + }, + "facebook-button.php": { + "type": "-", + "size": 5095, + "lmtime": 0, + "modified": false + }, + "facebook-page.php": { + "type": "-", + "size": 5982, + "lmtime": 0, + "modified": false + }, + "flip-box.php": { + "type": "-", + "size": 63826, + "lmtime": 0, + "modified": false + }, + "google-maps.php": { + "type": "-", + "size": 6916, + "lmtime": 0, + "modified": false + }, + "heading.php": { + "type": "-", + "size": 10175, + "lmtime": 0, + "modified": false + }, + "html.php": { + "type": "-", + "size": 2559, + "lmtime": 0, + "modified": false + }, + "icon-box.php": { + "type": "-", + "size": 22567, + "lmtime": 0, + "modified": false + }, + "icon-list.php": { + "type": "-", + "size": 22409, + "lmtime": 0, + "modified": false + }, + "icon.php": { + "type": "-", + "size": 12640, + "lmtime": 0, + "modified": false + }, + "image-box.php": { + "type": "-", + "size": 20451, + "lmtime": 0, + "modified": false + }, + "image-carousel.php": { + "type": "-", + "size": 16446, + "lmtime": 0, + "modified": false + }, + "image-gallery.php": { + "type": "-", + "size": 18171, + "lmtime": 0, + "modified": false + }, + "image-hotspot.php": { + "type": "-", + "size": 26143, + "lmtime": 0, + "modified": false + }, + "image.php": { + "type": "-", + "size": 21702, + "lmtime": 0, + "modified": false + }, + "image-slider.php": { + "type": "-", + "size": 7246, + "lmtime": 0, + "modified": false + }, + "index.php": { + "type": "-", + "size": 488, + "lmtime": 0, + "modified": false + }, + "language-selector.php": { + "type": "-", + "size": 8437, + "lmtime": 0, + "modified": false + }, + "layer-slider.php": { + "type": "-", + "size": 9094, + "lmtime": 0, + "modified": false + }, + "menu-anchor.php": { + "type": "-", + "size": 3576, + "lmtime": 0, + "modified": false + }, + "module.php": { + "type": "-", + "size": 7364, + "lmtime": 0, + "modified": false + }, + "nav-menu.php": { + "type": "-", + "size": 21848, + "lmtime": 1732200592487.3313, + "modified": true + }, + "product-box.php": { + "type": "-", + "size": 8963, + "lmtime": 0, + "modified": false + }, + "product-carousel.php": { + "type": "-", + "size": 10956, + "lmtime": 0, + "modified": false + }, + "product-grid.php": { + "type": "-", + "size": 10939, + "lmtime": 0, + "modified": false + }, + "progress.php": { + "type": "-", + "size": 11906, + "lmtime": 0, + "modified": false + }, + "shopping-cart.php": { + "type": "-", + "size": 58248, + "lmtime": 1732518537125.0732, + "modified": false + }, + "shortcode.php": { + "type": "-", + "size": 2925, + "lmtime": 0, + "modified": false + }, + "sign-in.php": { + "type": "-", + "size": 14837, + "lmtime": 0, + "modified": false + }, + "simple-blog.php": { + "type": "-", + "size": 4799, + "lmtime": 0, + "modified": false + }, + "site-logo.php": { + "type": "-", + "size": 4131, + "lmtime": 0, + "modified": false + }, + "site-title.php": { + "type": "-", + "size": 1680, + "lmtime": 0, + "modified": false + }, + "social-icons.php": { + "type": "-", + "size": 18697, + "lmtime": 0, + "modified": false + }, + "spacer.php": { + "type": "-", + "size": 3846, + "lmtime": 0, + "modified": false + }, + "star-rating.php": { + "type": "-", + "size": 14422, + "lmtime": 0, + "modified": false + }, + "tabs.php": { + "type": "-", + "size": 14921, + "lmtime": 0, + "modified": false + }, + "testimonial-carousel.php": { + "type": "-", + "size": 19459, + "lmtime": 0, + "modified": false + }, + "testimonial.php": { + "type": "-", + "size": 19097, + "lmtime": 0, + "modified": false + }, + "text-editor.php": { + "type": "-", + "size": 13203, + "lmtime": 0, + "modified": false + }, + "text-path.php": { + "type": "-", + "size": 21470, + "lmtime": 0, + "modified": false + }, + "toggle.php": { + "type": "-", + "size": 21694, + "lmtime": 0, + "modified": false + }, + "trustedshops-reviews.php": { + "type": "-", + "size": 16451, + "lmtime": 0, + "modified": false + }, + "video.php": { + "type": "-", + "size": 31791, + "lmtime": 0, + "modified": false + } + } + } + }, + "ets_blog": { + "views": { + "templates": { + "hook": { + "form_comment_customer.tpl": { + "type": "-", + "size": 3787, + "lmtime": 1733750600866.4558, + "modified": false + } + } + } + } + } + }, "override": {}, "pdf": {}, "phpstan.neon.dist": { @@ -151,13 +1574,847 @@ "modified": false }, "src": {}, - "themes": {}, + "themes": { + "classic": { + "assets": { + "css": { + "00b1fb69fb78ff50fd555de80b2fb45e.ttf": { + "type": "-", + "size": 174048, + "lmtime": 0, + "modified": false + }, + "016d41b1da3f1f5aaa44a7e20baee117.woff": { + "type": "-", + "size": 32904, + "lmtime": 0, + "modified": false + }, + "04be689c12d686c595032705f6b3cf6c.svg": { + "type": "-", + "size": 848, + "lmtime": 0, + "modified": false + }, + "057cc3c927dc0b2e8dbb739a306bd3a3.otf": { + "type": "-", + "size": 73016, + "lmtime": 0, + "modified": false + }, + "0ba57b3ea460c3d7d0c46d6138f088a8.svg": { + "type": "-", + "size": 3780, + "lmtime": 0, + "modified": false + }, + "0f099f4e4d67aeb18ab6da291367a93f.woff": { + "type": "-", + "size": 32596, + "lmtime": 0, + "modified": false + }, + "12a47ed5fd5585f0f4227fa035a1a607.woff2": { + "type": "-", + "size": 60840, + "lmtime": 0, + "modified": false + }, + "1e81f33d197ccdb39d4edce581ff50ec.woff": { + "type": "-", + "size": 30148, + "lmtime": 0, + "modified": false + }, + "250c120c3f8b2b0bb58ea27ee36153fc.woff2": { + "type": "-", + "size": 29860, + "lmtime": 0, + "modified": false + }, + "29acb3c63123183305b02ebc9844b2ef.otf": { + "type": "-", + "size": 73124, + "lmtime": 0, + "modified": false + }, + "33e7446832ac7aa84b959a6ea8efb915.svg": { + "type": "-", + "size": 891, + "lmtime": 0, + "modified": false + }, + "38fa559ad8e8cbaee0c7a2178d308df5.woff2": { + "type": "-", + "size": 27760, + "lmtime": 0, + "modified": false + }, + "3a94078d659136527abfe39bc3432628.svg": { + "type": "-", + "size": 1013, + "lmtime": 0, + "modified": false + }, + "40ef5dc59db6eeef16942fc6a0baa8de.otf": { + "type": "-", + "size": 71000, + "lmtime": 0, + "modified": false + }, + "479700ea91d964d295d75c6b67bd0b28.eot": { + "type": "-", + "size": 69177, + "lmtime": 0, + "modified": false + }, + "47f13bcaf75af86613bca9721d6e858f.svg": { + "type": "-", + "size": 901, + "lmtime": 0, + "modified": false + }, + "4903fb37c04676f5a805be194ad59b2b.svg": { + "type": "-", + "size": 1560, + "lmtime": 0, + "modified": false + }, + "4db1ea0d15010c761ee577d7c0f5a0a0.otf": { + "type": "-", + "size": 70960, + "lmtime": 0, + "modified": false + }, + "52260854eea2d38939bf40e9e9687830.woff2": { + "type": "-", + "size": 29756, + "lmtime": 0, + "modified": false + }, + "56b65c6bec8f40445da4f7853f2553ec.otf": { + "type": "-", + "size": 70940, + "lmtime": 0, + "modified": false + }, + "57a1d494b0e76131f062c5c9c2d4960d.woff2": { + "type": "-", + "size": 30220, + "lmtime": 0, + "modified": false + }, + "64041bf784575b30a79fa31900c79cf6.otf": { + "type": "-", + "size": 70404, + "lmtime": 0, + "modified": false + }, + "726b87682d18d1e8307635d146fe58cc.svg": { + "type": "-", + "size": 3103, + "lmtime": 0, + "modified": false + }, + "740f1557cae714dc4b180b4d5de69375.svg": { + "type": "-", + "size": 5233, + "lmtime": 0, + "modified": false + }, + "7acb0ff3a9a16ba3806d7f16b745af38.svg": { + "type": "-", + "size": 1192, + "lmtime": 0, + "modified": false + }, + "83131b9daba3e9a7b2c7ae7e47d2d503.woff": { + "type": "-", + "size": 31392, + "lmtime": 0, + "modified": false + }, + "882e1291e47c7d9d5dd7633845caa204.svg": { + "type": "-", + "size": 891, + "lmtime": 0, + "modified": false + }, + "895e092292d88717adaa347e532822ab.woff2": { + "type": "-", + "size": 28776, + "lmtime": 0, + "modified": false + }, + "91fc2885f1aa34fb73f63e9ef538fe1c.svg": { + "type": "-", + "size": 1145, + "lmtime": 0, + "modified": false + }, + "a7360927bb3673ed7814d6f607d122cb.woff2": { + "type": "-", + "size": 29856, + "lmtime": 0, + "modified": false + }, + "a8af1233a958bd1e96edcad65791a0d3.woff": { + "type": "-", + "size": 32840, + "lmtime": 0, + "modified": false + }, + "b252849e892c264f4f220c7e7cb0207a.svg": { + "type": "-", + "size": 1198, + "lmtime": 0, + "modified": false + }, + "b2efa71e4ca1cd26b0f4df4e71e531a8.svg": { + "type": "-", + "size": 357, + "lmtime": 0, + "modified": false + }, + "c472ea2ef3e5b37438730a4ab00513b4.svg": { + "type": "-", + "size": 901, + "lmtime": 0, + "modified": false + }, + "c80d4fb11dcc2140b26007ce39cfa521.woff": { + "type": "-", + "size": 32508, + "lmtime": 0, + "modified": false + }, + "cbeba06698c00a61e82219b76357ce42.svg": { + "type": "-", + "size": 1020, + "lmtime": 0, + "modified": false + }, + "custom.css": { + "type": "-", + "size": 52387, + "lmtime": 1733754664880.5193, + "modified": false + }, + "custom.css.map": { + "type": "-", + "size": 15984, + "lmtime": 1733754664880.5193, + "modified": false + }, + "custom.scss": { + "type": "-", + "size": 42466, + "lmtime": 1733754664283.446, + "modified": false + }, + "dce0916af972e3040aa191f74b17dd46.woff2": { + "type": "-", + "size": 30428, + "lmtime": 0, + "modified": false + }, + "de69cd9e672c81725abcde04ecf022ee.woff": { + "type": "-", + "size": 33400, + "lmtime": 0, + "modified": false + }, + "error.css": { + "type": "-", + "size": 742, + "lmtime": 0, + "modified": false + }, + "f2a0933406f7830651524f477ba2f543.woff": { + "type": "-", + "size": 79612, + "lmtime": 0, + "modified": false + }, + "f56d95737d55e2bdba95baa528b2583b.svg": { + "type": "-", + "size": 3780, + "lmtime": 0, + "modified": false + }, + "fa3993a997a0b84e9900ee168b18b919.svg": { + "type": "-", + "size": 848, + "lmtime": 0, + "modified": false + }, + "fd2d932b381003546821288ecde6e370.otf": { + "type": "-", + "size": 71180, + "lmtime": 0, + "modified": false + }, + "theme.css": { + "type": "-", + "size": 229937, + "lmtime": 1733754360844.3635, + "modified": false + }, + "theme.css.map": { + "type": "-", + "size": 84095, + "lmtime": 1733754360843.8423, + "modified": false + }, + "theme.scss": { + "type": "-", + "size": 249411, + "lmtime": 1733750600876.3813, + "modified": false + } + } + }, + "templates": { + "catalog": { + "listing": { + "best-sales.tpl": { + "type": "-", + "size": 214, + "lmtime": 0, + "modified": false + }, + "category.tpl": { + "type": "-", + "size": 1269, + "lmtime": 0, + "modified": false + }, + "manufacturer.tpl": { + "type": "-", + "size": 1622, + "lmtime": 0, + "modified": false + }, + "new-products.tpl": { + "type": "-", + "size": 215, + "lmtime": 0, + "modified": false + }, + "prices-drop.tpl": { + "type": "-", + "size": 214, + "lmtime": 0, + "modified": false + }, + "product-list.tpl": { + "type": "-", + "size": 4068, + "lmtime": 1732192009828.2126, + "modified": false + }, + "search.tpl": { + "type": "-", + "size": 581, + "lmtime": 0, + "modified": false + }, + "supplier.tpl": { + "type": "-", + "size": 1493, + "lmtime": 0, + "modified": false + } + }, + "_partials": { + "active_filters.tpl": { + "type": "-", + "size": 1845, + "lmtime": 0, + "modified": false + }, + "category-header.tpl": { + "type": "-", + "size": 1964, + "lmtime": 0, + "modified": false + }, + "facets.tpl": { + "type": "-", + "size": 7134, + "lmtime": 0, + "modified": false + }, + "miniatures": { + "brand.tpl": { + "type": "-", + "size": 1575, + "lmtime": 0, + "modified": false + }, + "category.tpl": { + "type": "-", + "size": 1608, + "lmtime": 0, + "modified": false + }, + "pack-product.tpl": { + "type": "-", + "size": 2567, + "lmtime": 0, + "modified": false + }, + "product.tpl": { + "type": "-", + "size": 6512, + "lmtime": 1732186666181.0188, + "modified": false + } + }, + "product-activation.tpl": { + "type": "-", + "size": 1498, + "lmtime": 0, + "modified": false + }, + "product-additional-info.tpl": { + "type": "-", + "size": 1210, + "lmtime": 0, + "modified": false + }, + "product-add-to-cart.tpl": { + "type": "-", + "size": 3420, + "lmtime": 0, + "modified": false + }, + "product-cover-thumbnails.tpl": { + "type": "-", + "size": 3341, + "lmtime": 0, + "modified": false + }, + "product-customization.tpl": { + "type": "-", + "size": 3637, + "lmtime": 0, + "modified": false + }, + "product-details.tpl": { + "type": "-", + "size": 3288, + "lmtime": 0, + "modified": false + }, + "product-discounts.tpl": { + "type": "-", + "size": 2132, + "lmtime": 0, + "modified": false + }, + "product-flags.tpl": { + "type": "-", + "size": 1560, + "lmtime": 1732184826072.4075, + "modified": false + }, + "product-images-modal.tpl": { + "type": "-", + "size": 3881, + "lmtime": 0, + "modified": false + }, + "productlist.tpl": { + "type": "-", + "size": 1480, + "lmtime": 0, + "modified": false + }, + "product-prices.tpl": { + "type": "-", + "size": 4920, + "lmtime": 0, + "modified": false + }, + "products-bottom.tpl": { + "type": "-", + "size": 254, + "lmtime": 0, + "modified": false + }, + "products-top.tpl": { + "type": "-", + "size": 2353, + "lmtime": 0, + "modified": false + }, + "products.tpl": { + "type": "-", + "size": 1533, + "lmtime": 0, + "modified": false + }, + "product-variants.tpl": { + "type": "-", + "size": 3995, + "lmtime": 0, + "modified": false + }, + "quickview.tpl": { + "type": "-", + "size": 3709, + "lmtime": 0, + "modified": false + }, + "sort-orders.tpl": { + "type": "-", + "size": 2033, + "lmtime": 0, + "modified": false + }, + "subcategories.tpl": { + "type": "-", + "size": 2218, + "lmtime": 1732196642888.4944, + "modified": false + }, + "variant-links.tpl": { + "type": "-", + "size": 1521, + "lmtime": 0, + "modified": false + } + } + }, + "_partials": { + "breadcrumb.tpl": { + "type": "-", + "size": 1894, + "lmtime": 1732518537136.2673, + "modified": false + }, + "footer.tpl": { + "type": "-", + "size": 2029, + "lmtime": 0, + "modified": false + }, + "form-errors.tpl": { + "type": "-", + "size": 1332, + "lmtime": 0, + "modified": false + }, + "form-fields.tpl": { + "type": "-", + "size": 8419, + "lmtime": 1733750600877.6377, + "modified": false + }, + "header.tpl": { + "type": "-", + "size": 2996, + "lmtime": 0, + "modified": false + }, + "head.tpl": { + "type": "-", + "size": 3363, + "lmtime": 0, + "modified": false + }, + "helpers.tpl": { + "type": "-", + "size": 1340, + "lmtime": 0, + "modified": false + }, + "javascript.tpl": { + "type": "-", + "size": 1536, + "lmtime": 0, + "modified": false + }, + "microdata": {}, + "notifications.tpl": { + "type": "-", + "size": 2560, + "lmtime": 0, + "modified": false + }, + "pagination-seo.tpl": { + "type": "-", + "size": 1856, + "lmtime": 0, + "modified": false + }, + "pagination.tpl": { + "type": "-", + "size": 3153, + "lmtime": 1732189342176.8105, + "modified": true + }, + "stylesheets.tpl": { + "type": "-", + "size": 1336, + "lmtime": 0, + "modified": false + } + }, + "checkout": { + "cart-empty.tpl": { + "type": "-", + "size": 1734, + "lmtime": 0, + "modified": false + }, + "cart.tpl": { + "type": "-", + "size": 3995, + "lmtime": 0, + "modified": false + }, + "checkout-process.tpl": { + "type": "-", + "size": 1254, + "lmtime": 0, + "modified": false + }, + "checkout.tpl": { + "type": "-", + "size": 1802, + "lmtime": 0, + "modified": false + }, + "order-confirmation.tpl": { + "type": "-", + "size": 3878, + "lmtime": 1733750600881.519, + "modified": false + }, + "_partials": { + "address-form.tpl": { + "type": "-", + "size": 1815, + "lmtime": 0, + "modified": false + }, + "address-selector-block.tpl": { + "type": "-", + "size": 2803, + "lmtime": 0, + "modified": false + }, + "cart-detailed-actions.tpl": { + "type": "-", + "size": 1986, + "lmtime": 0, + "modified": false + }, + "cart-detailed-product-line.tpl": { + "type": "-", + "size": 10998, + "lmtime": 1732541374572.7522, + "modified": true + }, + "cart-detailed-totals.tpl": { + "type": "-", + "size": 2280, + "lmtime": 0, + "modified": true + }, + "cart-detailed.tpl": { + "type": "-", + "size": 2828, + "lmtime": 1732543151144.5903, + "modified": true + }, + "cart-summary-items-subtotal.tpl": { + "type": "-", + "size": 1361, + "lmtime": 0, + "modified": false + }, + "cart-summary-product-line.tpl": { + "type": "-", + "size": 2311, + "lmtime": 1733750600878.3284, + "modified": false + }, + "cart-summary-products.tpl": { + "type": "-", + "size": 1795, + "lmtime": 1732545211575.3572, + "modified": true + }, + "cart-summary-subtotals.tpl": { + "type": "-", + "size": 1648, + "lmtime": 0, + "modified": false + }, + "cart-summary-top.tpl": { + "type": "-", + "size": 1177, + "lmtime": 0, + "modified": false + }, + "cart-summary-totals.tpl": { + "type": "-", + "size": 2308, + "lmtime": 0, + "modified": false + }, + "cart-summary.tpl": { + "type": "-", + "size": 1953, + "lmtime": 1732543089878.9363, + "modified": true + }, + "cart-voucher.tpl": { + "type": "-", + "size": 4234, + "lmtime": 0, + "modified": true + }, + "customer-form.tpl": { + "type": "-", + "size": 1971, + "lmtime": 0, + "modified": false + }, + "footer.tpl": { + "type": "-", + "size": 1766, + "lmtime": 0, + "modified": false + }, + "header.tpl": { + "type": "-", + "size": 2635, + "lmtime": 0, + "modified": false + }, + "login-form.tpl": { + "type": "-", + "size": 1373, + "lmtime": 0, + "modified": false + }, + "order-confirmation-table.tpl": { + "type": "-", + "size": 6669, + "lmtime": 0, + "modified": false + }, + "order-final-summary-table.tpl": { + "type": "-", + "size": 1746, + "lmtime": 0, + "modified": false + }, + "order-final-summary.tpl": { + "type": "-", + "size": 3924, + "lmtime": 0, + "modified": false + }, + "steps": { + "addresses.tpl": { + "type": "-", + "size": 5880, + "lmtime": 0, + "modified": false + }, + "checkout-step.tpl": { + "type": "-", + "size": 1987, + "lmtime": 1733750600879.438, + "modified": false + }, + "payment.tpl": { + "type": "-", + "size": 6345, + "lmtime": 1733750600879.9585, + "modified": false + }, + "personal-information.tpl": { + "type": "-", + "size": 3027, + "lmtime": 0, + "modified": false + }, + "shipping.tpl": { + "type": "-", + "size": 6169, + "lmtime": 1733750600880.9988, + "modified": false + }, + "unreachable.tpl": { + "type": "-", + "size": 1302, + "lmtime": 0, + "modified": false + } + } + } + } + } + } + }, "tmp": {}, "tools": {}, "translations": {}, "upload": {}, "var": {}, - "vendor": {}, + "vendor": { + "csa": { + "guzzle-bundle": { + "assets-src": { + "sass": { + "legacy.css": { + "type": "-", + "size": 639, + "lmtime": 1733754360844.3635, + "modified": false + }, + "legacy.css.map": { + "type": "-", + "size": 398, + "lmtime": 1733754360844.3635, + "modified": false + }, + "legacy.sass": { + "type": "-", + "size": 641, + "lmtime": 0, + "modified": false + }, + "main.css": { + "type": "-", + "size": 2754, + "lmtime": 1733754360844.3635, + "modified": false + }, + "main.css.map": { + "type": "-", + "size": 1476, + "lmtime": 1733754360844.3635, + "modified": false + }, + "main.sass": { + "type": "-", + "size": 160, + "lmtime": 0, + "modified": false + }, + "modules": {} + } + } + } + } + }, "webservice": {}, "XMLFeed.cache": { "type": "-", diff --git a/modules/blockreassurance/views/templates/hook/displayBlockProduct.tpl b/modules/blockreassurance/views/templates/hook/displayBlockProduct.tpl index bc05113f..91ccde02 100644 --- a/modules/blockreassurance/views/templates/hook/displayBlockProduct.tpl +++ b/modules/blockreassurance/views/templates/hook/displayBlockProduct.tpl @@ -19,7 +19,7 @@
{foreach from=$blocks item=$block key=$key} - +
{if $block['icon'] != 'undefined'} {if $block['custom_icon']} @@ -33,7 +33,7 @@

{$block['title']}

{else} {$block['title']} -

{$block['description'] nofilter}

+

{$block['description'] nofilter}

{/if}
{/foreach} diff --git a/modules/raty/alior-kalkulator-guzik-old.gif b/modules/raty/alior-kalkulator-guzik-old.gif new file mode 100644 index 00000000..69380256 Binary files /dev/null and b/modules/raty/alior-kalkulator-guzik-old.gif differ diff --git a/modules/raty/alior-kalkulator-guzik.gif b/modules/raty/alior-kalkulator-guzik.gif new file mode 100644 index 00000000..46babbc0 Binary files /dev/null and b/modules/raty/alior-kalkulator-guzik.gif differ diff --git a/modules/raty/alior.gif b/modules/raty/alior.gif new file mode 100644 index 00000000..38468488 Binary files /dev/null and b/modules/raty/alior.gif differ diff --git a/modules/raty/config_pl.xml b/modules/raty/config_pl.xml new file mode 100644 index 00000000..030a82c3 --- /dev/null +++ b/modules/raty/config_pl.xml @@ -0,0 +1,13 @@ + + + raty + + + + + + + 1 + 1 + + \ No newline at end of file diff --git a/modules/raty/controllers/front/index.php b/modules/raty/controllers/front/index.php new file mode 100644 index 00000000..ea43c084 --- /dev/null +++ b/modules/raty/controllers/front/index.php @@ -0,0 +1,11 @@ +context->cart; + + if (!$this->module->checkAmount($cart->getOrderTotal())) { + Tools::redirect('index.php?controller=order'); + } + + //print_r($cart);die; + + $this->context->smarty->assign(array( + 'nbProducts' => $cart->nbProducts(), + 'cust_currency' => $cart->id_currency, + 'currencies' => $this->module->getCurrency((int)$cart->id_currency), + 'total' => $cart->getOrderTotal(true, Cart::BOTH), + 'this_path' => $this->module->getPathUri(), + 'this_path_bw' => $this->module->getPathUri(), + 'this_path_ssl' => Tools::getShopDomainSsl(true, true).__PS_BASE_URI__.'modules/'.$this->module->name.'/' + )); + + $this->setTemplate('payment_execution.tpl'); + } +} diff --git a/modules/raty/controllers/front/validation.php b/modules/raty/controllers/front/validation.php new file mode 100644 index 00000000..e895ee75 --- /dev/null +++ b/modules/raty/controllers/front/validation.php @@ -0,0 +1,44 @@ +context->cart; + + $customer = new Customer($cart->id_customer); + if ($cart->id_customer == 0 || $cart->id_address_delivery == 0 || $cart->id_address_invoice == 0 || !$this->module->active) { + Tools::redirect('index.php?controller=order&step=1'); + } + + // Check that this payment option is still available in case the customer changed his address just before the end of the checkout process + $authorized = false; + foreach (Module::getPaymentModules() as $module) { + if ($module['name'] == 'raty') { + $authorized = true; + break; + } + } + if (!$authorized) { + die($this->module->l('Metoda płatności jest niedostępna.', 'validation')); + } + + $customer = new Customer($cart->id_customer); + if (!Validate::isLoadedObject($customer)) { + Tools::redirect('index.php?controller=order&step=1'); + } + + $currency = $this->context->currency; + $total = (float) $cart->getOrderTotal(true, Cart::BOTH); + + + $mailVars = array(); + $this->module->validateOrder($cart->id, Configuration::get('PS_OS_RATY'), $total, $this->module->displayName, null, $mailVars, (int) $currency->id, false, $customer->secure_key); + + Tools::redirect('index.php?controller=order-confirmation&id_cart='.$cart->id.'&id_module='.$this->module->id.'&id_order='.$this->module->currentOrder.'&key='.$customer->secure_key); + } +} diff --git a/modules/raty/controllers/index.php b/modules/raty/controllers/index.php new file mode 100644 index 00000000..8e6e4410 --- /dev/null +++ b/modules/raty/controllers/index.php @@ -0,0 +1,11 @@ + Store's categories IDs eg. 'TKC_AGDD' => [1, 19, 33], + */ + +return [ + 'TKC_AGDD' => [], + 'TKC_AGDM' => [], + 'TKC_AKCAUTO' => [], + 'TKC_BIZUT' => [], + 'TKC_DZIECIE' => [], + 'TKC_EDU' => [], + 'TKC_FOTO' => [], + 'TKC_INSTRMUZ' => [], + 'TKC_KOMP' => [], + 'TKC_MATBUD' => [], + 'TKC_MEBLE' => [1,2,42,43,44,45,46,47,48,77,78,131,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,117,118,119,120,121,122,123,124,125,126,127,128,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,115,116], + 'TKC_MOTO' => [], + 'TKC_NARZ' => [], + 'TKC_ODZIEZ' => [], + 'TKC_OGRO' => [], + 'TKC_OGRZEW' => [], + 'TKC_OKDZW' => [], + 'TKC_OPAL' => [], + 'TKC_OPROGR' => [], + 'TKC_PAKIE' => [], + 'TKC_RTV' => [], + 'TKC_SPORTREH' => [], + 'TKC_SPRZKOM' => [], + 'TKC_SYSTEKO' => [], + 'TKC_SZTUK' => [], + 'TKC_TELE' => [], + 'TKC_UBEZ' => [], + 'TKC_USLUGI' => [], + 'default' => 'TKC_MEBLE' +]; diff --git a/modules/raty/payment.php b/modules/raty/payment.php new file mode 100644 index 00000000..d26fce5b --- /dev/null +++ b/modules/raty/payment.php @@ -0,0 +1,13 @@ +init(); + +Tools::redirect(Context::getContext()->link->getModuleLink('Raty', 'payment')); diff --git a/modules/raty/raty.css b/modules/raty/raty.css new file mode 100644 index 00000000..8ec1e6e5 --- /dev/null +++ b/modules/raty/raty.css @@ -0,0 +1,13 @@ +/* +To change this license header, choose License Headers in Project Properties. +To change this template file, choose Tools | Templates +and open the template in the editor. +*/ +/* + Created on : 2016-10-18, 11:12:27 + Author : Kamil +*/ + +#module-raty-payment ul.step li a,#module-raty-payment ul.step li span,#module-raty-payment ul.step li.step_current span,#module-raty-payment ul.step li.step_current_end span{ + font-size: 16px !important; +} \ No newline at end of file diff --git a/modules/raty/raty.php b/modules/raty/raty.php new file mode 100644 index 00000000..d6a5479b --- /dev/null +++ b/modules/raty/raty.php @@ -0,0 +1,793 @@ +name = 'raty'; + $this->tab = 'payments_gateways'; + $this->version = '1.5.12'; + $this->author = 'Alior Bank'; + + $this->bootstrap = true; + $this->is_eu_compatible = 1; + $this->controllers = array('payment', 'validation'); + $this->is_eu_compatible = 1; + $this->ps_versions_compliancy = array('min' => '1.7'); + + parent::__construct(); + + $this->displayName = $this->l('Raty'); + $this->description = $this->l('Moduł do obsługi rat Alior Banku.'); + $this->confirmUninstall = $this->l('Czy jesteś pewien aby odinstalować ten moduł?'); + $this->kalkulatorUrl = 'https://kalkulator.raty.aliorbank.pl/'; + $this->paymentUrl = 'https://raty.aliorbank.pl/directcreditsystem-frontend-consumerfinance-internet-standard/paymentprovider/'; + + if (!Configuration::get('RATY_NAME')) { + $this->warning = $this->l('No name provided'); + } + } + + private function createOrderState() + { + // create new order status STATUSNAME + $values_to_insert = [ + 'invoice' => 0, + 'send_email' => 0, + 'module_name' => $this->name, + 'color' => 'RoyalBlue', + 'unremovable' => 0, + 'hidden' => 0, + 'logable' => 0, + 'delivery' => 0, + 'shipped' => 0, + 'paid' => 0, + 'deleted' => 0 + ]; + + if (!Db::getInstance()->insert('order_state', $values_to_insert)) { + return false; + } + $id_order_state = (int) Db::getInstance()->Insert_ID(); + $languages = Language::getLanguages(false); + foreach ($languages as $language) { + Db::getInstance()->insert('order_state_lang', [ + 'id_order_state' => $id_order_state, + 'id_lang' => $language['id_lang'], + 'name' => 'Oczekiwanie na zatwierdzenie umowy ratalnej przez Alior Bank', + 'template' => '' + ]); + } + if (!@copy(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'alior.gif', _PS_ROOT_DIR_ . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR . 'os' . DIRECTORY_SEPARATOR . $id_order_state . '.gif')) { + return false; + } + Configuration::updateValue('PS_OS_RATY', $id_order_state); + unset($id_order_state); + + return true; + } + + public function install() + { + if (Shop::isFeatureActive()) { + Shop::setContext(Shop::CONTEXT_ALL); + } + + if ( + !parent::install() + || !$this->installSql() + || !$this->registerHook('displayHeader') + || !$this->registerHook('displayProductButtons') + || !$this->registerHook('displayShoppingCartFooter') + || !$this->registerHook('payment') + || !$this->registerHook('paymentOptions') + || !$this->registerHook('paymentReturn') + || !$this->registerHook('displayAdminProductsMainStepLeftColumnBottom') + || !$this->registerHook('displayBackOfficeCategory') + || !$this->registerHook('actionObjectProductUpdateBefore') + || !$this->registerHook('actionObjectCategoryAddBefore') + || !$this->registerHook('actionObjectCategoryUpdateBefore') + || !$this->createOrderState() + || !Configuration::updateValue('RATY_NAME', 'Raty') + || !Configuration::updateValue('RATY_PARTNERID', '1001') + || !Configuration::updateValue('RATY_SUBPARTNERID', '') + || !Configuration::updateValue('RATY_MCC', '') + || !Configuration::updateValue('RATY_STANDARD_PROMOTION', '') + || !Configuration::updateValue('RATY_CATEGORY_PROMOTION', '') + || !Configuration::updateValue('RATY_CATEGORY_PROMOTION_START', '') + || !Configuration::updateValue('RATY_CATEGORY_PROMOTION_END', '') + || !Configuration::updateValue('RATY_PRODUCT_PROMOTION', '') + || !Configuration::updateValue('RATY_PRODUCT_PROMOTION_START', '') + || !Configuration::updateValue('RATY_PRODUCT_PROMOTION_END', '') + || !Configuration::updateValue('RATY_MIN_VALUE', '0') + || !Configuration::updateValue('RATY_MAX_VALUE', '26920') + || !Configuration::updateValue('RATY_SALT', 'QWERSJR1234$$%') + || !Configuration::updateValue('RATY_TITLE', 'Raty - Alior Bank') + || !Configuration::updateValue('RATY_DESCRIPTION', '') + ) { + return false; + } + + return true; + } + + public function uninstall() + { + if ( + !parent::uninstall() + || !Configuration::deleteByName('RATY_NAME') + || !Configuration::deleteByName('RATY_PARTNERID') + || !Configuration::deleteByName('RATY_SUBPARTNERID') + || !Configuration::deleteByName('RATY_MCC') + || !Configuration::deleteByName('RATY_STANDARD_PROMOTION') + || !Configuration::deleteByName('RATY_CATEGORY_PROMOTION') + || !Configuration::deleteByName('RATY_CATEGORY_PROMOTION_START') + || !Configuration::deleteByName('RATY_CATEGORY_PROMOTION_END') + || !Configuration::deleteByName('RATY_PRODUCT_PROMOTION') + || !Configuration::deleteByName('RATY_PRODUCT_PROMOTION_START') + || !Configuration::deleteByName('RATY_PRODUCT_PROMOTION_END') + || !Configuration::deleteByName('RATY_MIN_VALUE') + || !Configuration::deleteByName('RATY_MAX_VALUE') + || !Configuration::deleteByName('RATY_SALT') + || !Configuration::deleteByName('RATY_TITLE') + || !Configuration::deleteByName('RATY_DESCRIPTION') + ) { + return false; + } + + return true; + } + + protected function installSql() { + $data = [ + 'product' => 'alior_product_promotion', + 'product_shop' => 'alior_product_promotion', + 'category' => 'alior_category_promotion', + 'category_shop' => 'alior_category_promotion', + ]; + + foreach($data as $table => $column) { + if(!$this->isColumnExists($table, $column)) { + $sql = 'ALTER TABLE ' . _DB_PREFIX_ . $table . ' ADD ' . $column . ' INT NULL'; + $result = Db::getInstance()->execute($sql); + + if(!$result) { + return false; + } + } + } + return true; + } + + private function isColumnExists($table, $column) { + $db = Db::getInstance(); + $db->executeS("SELECT count(" . $column . ') FROM ' . _DB_PREFIX_ . $table); + return $db->numRows() > 0; + } + + public function hookActionObjectProductUpdateBefore($params) { + $product = $params['object']; + if(!isset($_POST['alior_product_promotion'])) { + $product->alior_product_promotion = 0; + } + return; + } + + public function hookActionObjectCategoryUpdateBefore($params) { + $category = $params['object']; + $category->alior_category_promotion = 1; + if(!isset($_POST['alior_category_promotion'])) { + $category->alior_category_promotion = 0; + } + return; + } + + public function hookActionObjectCategoryAddBefore($params) { + $category = $params['object']; + $category->alior_category_promotion = 1; + if(!isset($_POST['alior_category_promotion'])) { + $category->alior_category_promotion = 0; + } + return; + } + + public function hookDisplayAdminProductsMainStepLeftColumnBottom($params) { + $product = new Product($params['id_product']); + $this->context->smarty->assign(array('alior_product_promotion' => $product->alior_product_promotion)); + return $this->display(__FILE__, 'views/templates/hook/updateproduct.tpl'); + } + + public function hookDisplayBackOfficeCategory($params) { + $id = (int)Tools::getValue('id_category'); + if(isset($params['request'])) { + $id = $params['request']->get('categoryId'); + } + $category = new Category($id); + $this->context->smarty->assign(array('alior_category_promotion' => $category->alior_category_promotion)); + return $this->display(__FILE__, 'views/templates/hook/updatecategory.tpl'); + } + + public function hookPaymentOptions($params) + { + if (!$this->active) { + return; + } + if (!$this->checkCurrency($params['cart']) || !$this->checkAmount($params['cart']->getOrderTotal()) || !$this->getPromotion($params['cart']->getProducts())) { + return; + } + + $this->context->smarty->assign(['raty_description' => Configuration::get('RATY_DESCRIPTION')]); + + $offlineOption = new PaymentOption(); + $offlineOption->setCallToActionText(Configuration::get('RATY_TITLE')) + ->setAction($this->context->link->getModuleLink($this->name, 'validation', array(), true)) + ->setAdditionalInformation($this->fetch('module:raty/views/templates/front/payment_infos.tpl')) + ->setLogo(Media::getMediaPath(_PS_MODULE_DIR_.$this->name.'/alior.gif')); + + return [ + $offlineOption, + ]; + } + + public function getContent() + { + $output = ''; + + if (Tools::isSubmit('submitRaty')) { + $error = false; + + if (!($raty_parentid = Tools::getValue('RATY_PARTNERID')) || empty($raty_parentid)) { + $output .= $this->displayError($this->l('Musisz wypełnić pole \'Parent ID\'.')); + $error = true; + } elseif (!$error) { + Configuration::updateValue('RATY_PARTNERID', $raty_parentid); + } + + Configuration::updateValue('RATY_SUBPARTNERID', Tools::getValue('RATY_SUBPARTNERID')); + + if (!($raty_salt = Tools::getValue('RATY_SALT')) || empty($raty_salt)) { + $output .= $this->displayError($this->l('Musisz wypełnić pole \'Salt\'.')); + $error = true; + } elseif (!$error) { + Configuration::updateValue('RATY_SALT', $raty_salt); + } + + Configuration::updateValue('RATY_MCC', Tools::getValue('RATY_MCC')); + Configuration::updateValue('RATY_STANDARD_PROMOTION', Tools::getValue('RATY_STANDARD_PROMOTION')); + Configuration::updateValue('RATY_CATEGORY_PROMOTION', Tools::getValue('RATY_CATEGORY_PROMOTION')); + Configuration::updateValue('RATY_CATEGORY_PROMOTION_START', Tools::getValue('RATY_CATEGORY_PROMOTION_START')); + Configuration::updateValue('RATY_CATEGORY_PROMOTION_END', Tools::getValue('RATY_CATEGORY_PROMOTION_END')); + Configuration::updateValue('RATY_PRODUCT_PROMOTION', Tools::getValue('RATY_PRODUCT_PROMOTION')); + Configuration::updateValue('RATY_PRODUCT_PROMOTION_START', Tools::getValue('RATY_PRODUCT_PROMOTION_START')); + Configuration::updateValue('RATY_PRODUCT_PROMOTION_END', Tools::getValue('RATY_PRODUCT_PROMOTION_END')); + Configuration::updateValue('RATY_MIN_VALUE', $this->changeNumberFormat(Tools::getValue('RATY_MIN_VALUE'))); + Configuration::updateValue('RATY_MAX_VALUE', $this->changeNumberFormat(Tools::getValue('RATY_MAX_VALUE'))); + Configuration::updateValue('RATY_DESCRIPTION', Tools::getValue('RATY_DESCRIPTION')); + Configuration::updateValue('RATY_TITLE', Tools::getValue('RATY_TITLE')); + + if (!$error) { + $output .= $this->displayConfirmation($this->l('Parametry uaktualnione.')); + } + } + + return $output . $this->renderForm(); + } + + public function hookDisplayProductButtons($params) + { + $product = $params['product']; + if (empty($product->price_amount)){ + return; + } + $price = $product->price_amount; + if (!$this->checkAmount($price)) { + return; + } + $promotion = $this->getPromotion([$product]); + if (!$promotion) { + return; + } + + if (!$this->isCached('productraty.tpl', $this->getCacheId($product->id))) { + $promotion = str_replace('${sep}', '%2C', $promotion); + + $this->smarty->assign(array( + 'this_path_raty' => $this->_path, + 'this_kalkulator' => $this->kalkulatorUrl . + 'init?supervisor=' . Configuration::get('RATY_PARTNERID') . + '&promotionList='.$promotion.'&amount=', + 'this_cena' => $this->changeNumberFormat(round($price, 2)) + )); + } + + return $this->display(__FILE__, 'productraty.tpl', $this->getCacheId($product->id)); + } + + public function hookDisplayProductAdditionalInfo($params) + { + $product = $params['product']; + if (empty($product->price_amount)){ + return; + } + $price = $product->price_amount; + + if (!$this->checkAmount($price)) { + return; + } + $promotion = $this->getPromotion([$product]); + if (!$promotion) { + return; + } + + if (!$this->isCached('productraty.tpl', $this->getCacheId($product->id))) { + $promotion = str_replace('${sep}', '%2C', $promotion); + + $this->smarty->assign(array( + 'this_path_raty' => $this->_path, + 'this_kalkulator' => $this->kalkulatorUrl . + 'init?supervisor=' . Configuration::get('RATY_PARTNERID') . + '&promotionList='.$promotion.'&amount=', + 'this_cena' => $this->changeNumberFormat(round($price, 2)) + )); + } + + return $this->display(__FILE__, 'productraty.tpl', $this->getCacheId($product->id)); + } + + public function hookDisplayShoppingCartFooter($params) + { + if (!$this->checkCurrency($params['cart']) || !$this->checkAmount($params['cart']->getOrderTotal())) { + return; + } + $promotion = $this->getPromotion($params['cart']->getProducts()); + if(!$promotion){ + return; + } + + $promotion = str_replace('${sep}', '%2C', $promotion); + $this->smarty->assign(array( + 'this_path_raty' => $this->_path, + 'this_kalkulator' => $this->kalkulatorUrl . + 'init?supervisor=' . Configuration::get('RATY_PARTNERID') . + '&promotionList='.$promotion.'&amount=', + 'this_cena' => $this->changeNumberFormat($params['cart']->getOrderTotal()), + )); + + return $this->display(__FILE__, 'raty_cart.tpl'); + } + + public function hookDisplayHeader($params) + { + $this->context->controller->addCSS($this->_path . 'raty.css', 'all'); + } + + public function hookPaymentReturn($params) + { + if (!$this->active) { + return; + } + + $order = $params['order']; + $state = $order->getCurrentState(); + + if (in_array($state, array(Configuration::get('PS_OS_RATY'), Configuration::get('PS_OS_OUTOFSTOCK'), Configuration::get('PS_OS_OUTOFSTOCK_UNPAID')))) { + $customer = new Customer($order->id_customer); + $firstName = $customer->firstname; + $lastName = $customer->lastname; + + $partnerId = Configuration::get('RATY_PARTNERID'); + $subpartnerId = Configuration::get('RATY_SUBPARTNERID'); + $mcc = Configuration::get('RATY_MCC'); + $promotion = $this->getPromotion($order->getProductsDetail()); + $salt = Configuration::get('RATY_SALT'); + $calculatedIncome = ''; + $limit = ''; + $transactionCode = $order->reference; + $total = $this->getRounded($order->total_paid); + + $date = date('Y-m-d'); + $time = date('H:i:s'); + $dateAndTime = $date . 'T' . $time; + + $verificationCode = hash('sha256', $salt . $this->changeNumberFormat($total) . + $transactionCode . $partnerId . $subpartnerId . $dateAndTime . $mcc . $firstName . $lastName . $limit . $calculatedIncome . $promotion); + + $values = [ + 'url' => $this->paymentUrl, + 'firstName' => $firstName, + 'lastName' => $lastName, + 'partnerId' => $partnerId, + 'subpartnerId' => $subpartnerId, + 'mcc' => $mcc, + 'limit' => $limit, + 'promotion' => $promotion, + 'calculatedIncome' => $calculatedIncome, + 'verificationCode' => $verificationCode, + 'transactionCode' => $transactionCode, + 'dateAndTime' => $dateAndTime, + 'amount' => $this->changeNumberFormat($total), + 'status' => 'ok', + 'articlesList' => base64_encode(json_encode($this->getAliorsArticlesListJson($order))) + ]; + + $this->context->smarty->assign($values); + } else { + $this->context->smarty->assign('status', 'failed'); + } + + return $this->context->smarty->fetch('module:raty/views/templates/hook/payment_return.tpl'); + } + + public function renderForm() + { + $fields_form = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Ustawienia'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'text', + 'label' => $this->l('PartnerID'), + 'name' => 'RATY_PARTNERID', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Kod partnera handlowego') + ), + array( + 'type' => 'text', + 'label' => $this->l('SubpartnerID'), + 'name' => 'RATY_SUBPARTNERID', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Dodatkowy kod partnera handlowego.') + ), + array( + 'type' => 'text', + 'label' => $this->l('MCC'), + 'name' => 'RATY_MCC', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Kod MCC.') + ), + array( + 'type' => 'text', + 'label' => $this->l('Oferta standardowa'), + 'name' => 'RATY_STANDARD_PROMOTION', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Kod oferty standardowej.') + ), + array( + 'type' => 'html', + 'label' => $this->l('Oferta specjalna dla Kategorii'), + 'name' => 'RATY_CATEGORY_PROMOTION', + 'desc' => $this->l('Kod oferty specjalnej dla Kategorii.'), + 'html_content' => + '
' + . '
' + . '
' + . '' + . '
' + . '
' + . 'Czas trwania:' + . '
' + . ' - ' + . '' + . '
' + . '
' + . '
' + ), + array( + 'type' => 'html', + 'label' => $this->l('Oferta specjalna dla Produktu'), + 'name' => 'RATY_PRODUCT_PROMOTION', + 'desc' => $this->l('Kod oferty specjalnej dla Produktu.'), + 'html_content' => + '
' + . '
' + . '
' + . '' + . '
' + . '
' + . 'Czas trwania:' + . '
' + . ' - ' + . '' + . '
' + . '
' + . '
' + ), + array( + 'type' => 'text', + 'label' => $this->l('Minimalna wartość'), + 'name' => 'RATY_MIN_VALUE', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Minimalna wartość od której dostępna jest sprzedaż ratalna.') + ), + array( + 'type' => 'text', + 'label' => $this->l('Maksymalna wartość'), + 'name' => 'RATY_MAX_VALUE', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Maksymalna wartość do której dostępna jest sprzedaż ratalna.') + ), + array( + 'type' => 'text', + 'label' => $this->l('Salt'), + 'name' => 'RATY_SALT', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Kod Salt odtrzymany od banku') + ), + array( + 'type' => 'text', + 'label' => $this->l('Nazwa płatności'), + 'name' => 'RATY_TITLE', + 'class' => 'fixed-width-xxl', + ), + array( + 'type' => 'textarea', + 'label' => $this->l('Dodatkowy opis'), + 'name' => 'RATY_DESCRIPTION', + 'class' => 'fixed-width-xxl', + ), + ), + 'submit' => array( + 'title' => $this->l('Save'), + ) + ), + ); + + $helper = new HelperForm(); + $helper->show_toolbar = false; + $helper->table = $this->table; + $lang = new Language((int) Configuration::get('PS_LANG_DEFAULT')); + $helper->default_form_language = $lang->id; + $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; + $helper->identifier = $this->identifier; + $helper->submit_action = 'submitRaty'; + $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false) . '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name; + $helper->token = Tools::getAdminTokenLite('AdminModules'); + $helper->tpl_vars = array( + 'fields_value' => $this->getConfigFieldsValues(), + 'languages' => $this->context->controller->getLanguages(), + 'id_language' => $this->context->language->id + ); + + return $helper->generateForm(array($fields_form)); + } + + public function checkCurrency($cart) + { + $currency_order = new Currency($cart->id_currency); + $currencies_module = $this->getCurrency($cart->id_currency); + if (is_array($currencies_module)) { + foreach ($currencies_module as $currency_module) { + if ($currency_order->id == $currency_module['id_currency']) { + return true; + } + } + } + return false; + } + + public function getConfigFieldsValues() + { + return array( + 'RATY_PARTNERID' => Tools::getValue('RATY_PARTNERID', Configuration::get('RATY_PARTNERID')), + 'RATY_SUBPARTNERID' => Tools::getValue('RATY_SUBPARTNERID', Configuration::get('RATY_SUBPARTNERID')), + 'RATY_MCC' => Tools::getValue('RATY_MCC', Configuration::get('RATY_MCC')), + 'RATY_STANDARD_PROMOTION' => Tools::getValue('RATY_STANDARD_PROMOTION', Configuration::get('RATY_STANDARD_PROMOTION')), + 'RATY_PRODUCT_PROMOTION' => Tools::getValue('RATY_PRODUCT_PROMOTION', Configuration::get('RATY_PRODUCT_PROMOTION')), + 'RATY_PRODUCT_PROMOTION_START' => Tools::getValue('RATY_PRODUCT_PROMOTION_START', Configuration::get('RATY_PRODUCT_PROMOTION_START')), + 'RATY_PRODUCT_PROMOTION_END' => Tools::getValue('RATY_PRODUCT_PROMOTION_END', Configuration::get('RATY_PRODUCT_PROMOTION_END')), + 'RATY_CATEGORY_PROMOTION' => Tools::getValue('RATY_CATEGORY_PROMOTION', Configuration::get('RATY_CATEGORY_PROMOTION')), + 'RATY_CATEGORY_PROMOTION_START' => Tools::getValue('RATY_CATEGORY_PROMOTION_START', Configuration::get('RATY_CATEGORY_PROMOTION_START')), + 'RATY_CATEGORY_PROMOTION_END' => Tools::getValue('RATY_CATEGORY_PROMOTION_END', Configuration::get('RATY_CATEGORY_PROMOTION_END')), + 'RATY_MIN_VALUE' => Tools::getValue('RATY_MIN_VALUE', $this->changeNumberFormat(Configuration::get('RATY_MIN_VALUE'))), + 'RATY_MAX_VALUE' => Tools::getValue('RATY_MAX_VALUE', $this->changeNumberFormat(Configuration::get('RATY_MAX_VALUE'))), + 'RATY_SALT' => Tools::getValue('RATY_SALT', Configuration::get('RATY_SALT')), + 'RATY_TITLE' => Tools::getValue('RATY_TITLE', Configuration::get('RATY_TITLE')), + 'RATY_DESCRIPTION' => Tools::getValue('RATY_DESCRIPTION', Configuration::get('RATY_DESCRIPTION')), + ); + } + + public function checkAmount($total) + { + $minValue = (float) $this->changeNumberFormat(Configuration::get('RATY_MIN_VALUE')); + $maxValue = (float) $this->changeNumberFormat(Configuration::get('RATY_MAX_VALUE')); + + if($minValue > 0 && $maxValue > 0) { + return $total >= $minValue && $total <= $maxValue; + } + + return false; + } + + private function changeNumberFormat($value) + { + return number_format($value, 2, '.', ''); + } + + private function getAliorsArticlesListJson($order) + { + $products = $order->getProductsDetail(); + $totalShippingCost = (float)$order->total_shipping; + $totalDiscounts = (float)$order->total_discounts; + $totalWrapping = (float)$order->total_wrapping; + // @see https://stackoverflow.com/questions/42981409/php7-1-json-encode-float-issue + // json_encode makes float values wrong. This is simple fix + if (version_compare(phpversion(), '7.1', '>=')) { + ini_set( 'serialize_precision', -1 ); + } + + $json = ['articlesList' => []]; + foreach ($products as $prod) { + if (!empty($prod['unit_price_tax_incl'])){ + $price = $prod['unit_price_tax_incl']; + } else { + $price = !empty($prod['product_price_wt']) ? $prod['product_price_wt'] : $prod['product_price']; + } + $json['articlesList'][] = [ + "category" => $this->getAliorsCategory($prod['id_category_default']), + "name" => $this->clearName($prod['product_name']), + "number" => (int)$prod['product_quantity'], + "price" => $this->getRounded($price), + ]; + } + if ($totalShippingCost){ + $json['articlesList'][] = [ + "category" => 'TKC_USLUGI', // from Alior's docs + "name" => 'Shipping costs', + "number" => 1, + "price" => $this->getRounded($totalShippingCost), + ]; + } + if ($totalDiscounts){ + $json['articlesList'][] = [ + "category" => 'TKC_RABAT', // from Alior's docs + "name" => 'Discount', + "number" => 1, + "price" => $this->getRounded($totalDiscounts) * -1, + ]; + } + if ($totalWrapping){ + $json['articlesList'][] = [ + "category" => 'TKC_USLUGI', // from Alior's docs + "name" => 'Inne', + "number" => 1, + "price" => $this->getRounded($totalWrapping), + ]; + } + + return $json; + } + + /** + * Returns Alior's ID of category based on mapping (see map.php) + * @return string + */ + private function getAliorsCategory($shopCategoryId) + { + $map = require(dirname(__FILE__) . '/map.php'); + if (empty($map)) { + return ''; + } + foreach ($map as $aliorId => $shopCats) { + if (in_array($shopCategoryId, $shopCats)) { + return $aliorId; + } + } + + return !empty($map['default']) ? $map['default'] : ''; + } + + /** + * @param $price + * @return |null + */ + private function getRounded($price) { + $precision = method_exists('Context', 'getComputingPrecision') + ? Context::getContext()->getComputingPrecision() + : _PS_PRICE_DISPLAY_PRECISION_; + if (is_array($this->context->currency)) { + return Tools::ps_round($price, (int)$this->context->currency['decimals'] * $precision); + } elseif (is_object($this->context->currency)) { + return Tools::ps_round($price, (int)$this->context->currency->decimals * $precision); + } + + return null; + } + + /** + * @param $name + * @return string + */ + private function clearName($name) { + $name = str_replace('|', '', $name); + return preg_replace('/[\x00-\x1F]/', '', $name); + } + + private function checkCategoryPromotion($product) { + + $categories = Product::getProductCategories($product->id); + + foreach($categories as $categoryId) + { + $category = new Category($categoryId); + if($category->alior_category_promotion) { + return true; + } + } + return false; + } + + public function formatDate($date, $expectedFormat = 'j-M-Y', $currentFormat = 'Y-m-d'){ + if(!$date){ + return 0; + } + $date = DateTime::createFromFormat($currentFormat, $date); + return $date->format($expectedFormat); + } + + private function getPromotion($products) { + $todayDate = date("Y/m/d"); + $promotionsType = []; + $isProductPromotionValid = true; + $isCategoryPromotionValid = true; + + if( + !Configuration::get('RATY_PRODUCT_PROMOTION_START') || + $this->formatDate(Configuration::get('RATY_PRODUCT_PROMOTION_START'), "Y/m/d", "Y-m-d") > $todayDate || + $this->formatDate(Configuration::get('RATY_PRODUCT_PROMOTION_END'), "Y/m/d", "Y-m-d") < $todayDate + ) { + $isProductPromotionValid = false; + } + + if( + !Configuration::get('RATY_CATEGORY_PROMOTION_START') || + $this->formatDate(Configuration::get('RATY_CATEGORY_PROMOTION_START'), "Y/m/d", "Y-m-d") > $todayDate || + $this->formatDate(Configuration::get('RATY_CATEGORY_PROMOTION_END'), "Y/m/d", "Y-m-d") < $todayDate + ) { + $isCategoryPromotionValid = false; + } + + foreach($products as $product) { + array_push($promotionsType, $this->getProductPromotion($product, $isProductPromotionValid, $isCategoryPromotionValid)); + } + + $promotion = explode('${sep}', Configuration::get('RATY_' . $promotionsType[0] .'_PROMOTION')); + if(count($promotionsType) > 1) { + for($i = 1; $i < count($promotionsType); $i++) { + $promotionType = explode('${sep}', Configuration::get('RATY_' . $promotionsType[$i] .'_PROMOTION')); + $promotion = array_intersect($promotion, $promotionType); + } + } + + return implode('${sep}', $promotion); + } + + private function getProductPromotion($product, $isProductPromotionValid, $isCategoryPromotionValid) { + if(is_array($product)){ + $product = new Product($product['id_product']); + } + if($isProductPromotionValid && $product->alior_product_promotion) { + return 'PRODUCT'; + } + if($isCategoryPromotionValid && $this->checkCategoryPromotion($product)) { + return 'CATEGORY'; + } + return 'STANDARD'; + } +} \ No newline at end of file diff --git a/modules/raty/raty.tpl b/modules/raty/raty.tpl new file mode 100644 index 00000000..6bc31da8 --- /dev/null +++ b/modules/raty/raty.tpl @@ -0,0 +1,9 @@ + +
+
+
+
+ + +
+
diff --git a/modules/raty/raty/alior-kalkulator-guzik.gif b/modules/raty/raty/alior-kalkulator-guzik.gif new file mode 100644 index 00000000..69380256 Binary files /dev/null and b/modules/raty/raty/alior-kalkulator-guzik.gif differ diff --git a/modules/raty/raty/alior.gif b/modules/raty/raty/alior.gif new file mode 100644 index 00000000..38468488 Binary files /dev/null and b/modules/raty/raty/alior.gif differ diff --git a/modules/raty/raty/config_pl.xml b/modules/raty/raty/config_pl.xml new file mode 100644 index 00000000..9e680ca9 --- /dev/null +++ b/modules/raty/raty/config_pl.xml @@ -0,0 +1,13 @@ + + + raty + + + + + + + 1 + 1 + + \ No newline at end of file diff --git a/modules/raty/raty/controllers/front/index.php b/modules/raty/raty/controllers/front/index.php new file mode 100644 index 00000000..ea43c084 --- /dev/null +++ b/modules/raty/raty/controllers/front/index.php @@ -0,0 +1,11 @@ +context->cart; + + if (!$this->module->checkAmount($cart->getOrderTotal())) { + Tools::redirect('index.php?controller=order'); + } + + //print_r($cart);die; + + $this->context->smarty->assign(array( + 'nbProducts' => $cart->nbProducts(), + 'cust_currency' => $cart->id_currency, + 'currencies' => $this->module->getCurrency((int)$cart->id_currency), + 'total' => $cart->getOrderTotal(true, Cart::BOTH), + 'this_path' => $this->module->getPathUri(), + 'this_path_bw' => $this->module->getPathUri(), + 'this_path_ssl' => Tools::getShopDomainSsl(true, true).__PS_BASE_URI__.'modules/'.$this->module->name.'/' + )); + + $this->setTemplate('payment_execution.tpl'); + } +} diff --git a/modules/raty/raty/controllers/front/validation.php b/modules/raty/raty/controllers/front/validation.php new file mode 100644 index 00000000..e895ee75 --- /dev/null +++ b/modules/raty/raty/controllers/front/validation.php @@ -0,0 +1,44 @@ +context->cart; + + $customer = new Customer($cart->id_customer); + if ($cart->id_customer == 0 || $cart->id_address_delivery == 0 || $cart->id_address_invoice == 0 || !$this->module->active) { + Tools::redirect('index.php?controller=order&step=1'); + } + + // Check that this payment option is still available in case the customer changed his address just before the end of the checkout process + $authorized = false; + foreach (Module::getPaymentModules() as $module) { + if ($module['name'] == 'raty') { + $authorized = true; + break; + } + } + if (!$authorized) { + die($this->module->l('Metoda płatności jest niedostępna.', 'validation')); + } + + $customer = new Customer($cart->id_customer); + if (!Validate::isLoadedObject($customer)) { + Tools::redirect('index.php?controller=order&step=1'); + } + + $currency = $this->context->currency; + $total = (float) $cart->getOrderTotal(true, Cart::BOTH); + + + $mailVars = array(); + $this->module->validateOrder($cart->id, Configuration::get('PS_OS_RATY'), $total, $this->module->displayName, null, $mailVars, (int) $currency->id, false, $customer->secure_key); + + Tools::redirect('index.php?controller=order-confirmation&id_cart='.$cart->id.'&id_module='.$this->module->id.'&id_order='.$this->module->currentOrder.'&key='.$customer->secure_key); + } +} diff --git a/modules/raty/raty/controllers/index.php b/modules/raty/raty/controllers/index.php new file mode 100644 index 00000000..8e6e4410 --- /dev/null +++ b/modules/raty/raty/controllers/index.php @@ -0,0 +1,11 @@ + Store's categories IDs eg. 'TKC_AGDD' => [1, 19, 33], + */ + +return [ + 'TKC_AGDD' => [], + 'TKC_AGDM' => [], + 'TKC_AKCAUTO' => [], + 'TKC_BIZUT' => [], + 'TKC_DZIECIE' => [], + 'TKC_EDU' => [], + 'TKC_FOTO' => [], + 'TKC_INSTRMUZ' => [], + 'TKC_KOMP' => [], + 'TKC_MATBUD' => [], + 'TKC_MEBLE' => [], + 'TKC_MOTO' => [], + 'TKC_NARZ' => [], + 'TKC_ODZIEZ' => [], + 'TKC_OGRO' => [], + 'TKC_OGRZEW' => [], + 'TKC_OKDZW' => [], + 'TKC_OPAL' => [], + 'TKC_OPROGR' => [], + 'TKC_PAKIE' => [], + 'TKC_RTV' => [], + 'TKC_SPORTREH' => [], + 'TKC_SPRZKOM' => [], + 'TKC_SYSTEKO' => [], + 'TKC_SZTUK' => [], + 'TKC_TELE' => [], + 'TKC_UBEZ' => [], + 'TKC_USLUGI' => [], + 'default' => 'TKC_AGDM' +]; diff --git a/modules/raty/raty/payment.php b/modules/raty/raty/payment.php new file mode 100644 index 00000000..3a51a063 --- /dev/null +++ b/modules/raty/raty/payment.php @@ -0,0 +1,13 @@ +init(); + +Tools::redirect(Context::getContext()->link->getModuleLink('raty', 'payment')); diff --git a/modules/raty/raty/raty.css b/modules/raty/raty/raty.css new file mode 100644 index 00000000..8ec1e6e5 --- /dev/null +++ b/modules/raty/raty/raty.css @@ -0,0 +1,13 @@ +/* +To change this license header, choose License Headers in Project Properties. +To change this template file, choose Tools | Templates +and open the template in the editor. +*/ +/* + Created on : 2016-10-18, 11:12:27 + Author : Kamil +*/ + +#module-raty-payment ul.step li a,#module-raty-payment ul.step li span,#module-raty-payment ul.step li.step_current span,#module-raty-payment ul.step li.step_current_end span{ + font-size: 16px !important; +} \ No newline at end of file diff --git a/modules/raty/raty/raty.php b/modules/raty/raty/raty.php new file mode 100644 index 00000000..ff76b86f --- /dev/null +++ b/modules/raty/raty/raty.php @@ -0,0 +1,521 @@ +name = 'raty'; + $this->tab = 'payments_gateways'; + $this->version = '1.4.4'; + $this->author = 'LogsHub.com'; + + $this->bootstrap = true; + $this->is_eu_compatible = 1; + $this->controllers = array('payment', 'validation'); + $this->is_eu_compatible = 1; + $this->ps_versions_compliancy = array('min' => '1.7', 'max' => '1.7.6.99'); + + parent::__construct(); + + $this->displayName = $this->l('Raty'); + $this->description = $this->l('Moduł do obsługi rat Alior Banku.'); + $this->confirmUninstall = $this->l('Czy jesteś pewien aby odinstalować ten moduł?'); + + if (!Configuration::get('RATY_NAME')) { + $this->warning = $this->l('No name provided'); + } + } + + private function createOrderState() + { + // create new order status STATUSNAME + $values_to_insert = [ + 'invoice' => 0, + 'send_email' => 0, + 'module_name' => $this->name, + 'color' => 'RoyalBlue', + 'unremovable' => 0, + 'hidden' => 0, + 'logable' => 0, + 'delivery' => 0, + 'shipped' => 0, + 'paid' => 0, + 'deleted' => 0 + ]; + + if (!Db::getInstance()->insert('order_state', $values_to_insert)) { + return false; + } + $id_order_state = (int) Db::getInstance()->Insert_ID(); + $languages = Language::getLanguages(false); + foreach ($languages as $language) { + Db::getInstance()->insert('order_state_lang', [ + 'id_order_state' => $id_order_state, + 'id_lang' => $language['id_lang'], + 'name' => 'Oczekiwanie na zatwierdzenie umowy ratalnej przez Alior Bank', + 'template' => '' + ]); + } + if (!@copy(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'alior.gif', _PS_ROOT_DIR_ . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR . 'os' . DIRECTORY_SEPARATOR . $id_order_state . '.gif')) { + return false; + } + Configuration::updateValue('PS_OS_RATY', $id_order_state); + unset($id_order_state); + + return true; + } + + public function install() + { + if (Shop::isFeatureActive()) { + Shop::setContext(Shop::CONTEXT_ALL); + } + + if (!parent::install() + || + !$this->registerHook('displayHeader') || + !$this->registerHook('displayProductButtons') || + !$this->registerHook('displayShoppingCartFooter') || + !$this->registerHook('payment') || + !$this->registerHook('paymentOptions') || + !$this->registerHook('paymentReturn') || + !$this->createOrderState() || + !Configuration::updateValue('RATY_NAME', 'Raty') || + !Configuration::updateValue('RATY_URL', 'https://aliorbank.pl') || + !Configuration::updateValue('RATY_PARTNERID', '1001') || + !Configuration::updateValue('RATY_SUBPARTNERID', '') || + !Configuration::updateValue('RATY_MCC', '') || + !Configuration::updateValue('RATY_PROMOTION', '') || + !Configuration::updateValue('RATY_WARTOSC', '') || + !Configuration::updateValue('RATY_KALKULATOR', '') || + !Configuration::updateValue('RATY_SALT', 'QWERSJR1234$$%') + ) { + return false; + } + + return true; + } + + public function uninstall() + { + if (!parent::uninstall()|| + !Configuration::deleteByName('RATY_NAME') || + !Configuration::deleteByName('RATY_URL') || + !Configuration::deleteByName('RATY_PARTNERID') || + !Configuration::deleteByName('RATY_SUBPARTNERID') || + !Configuration::updateValue('RATY_MCC', '') || + !Configuration::updateValue('RATY_PROMOTION', '') || + !Configuration::updateValue('RATY_WARTOSC', '') || + !Configuration::updateValue('RATY_KALKULATOR', '') || + !Configuration::deleteByName('RATY_SALT') + ) { + return false; + } + + return true; + } + + public function hookPaymentOptions($params) + { + if (!$this->active) { + return; + } + if (!$this->checkCurrency($params['cart']) || !$this->checkAmount($params['cart']->getOrderTotal())) { + return; + } + + $offlineOption = new PaymentOption(); + $offlineOption->setCallToActionText($this->l('Raty - Alior Bank')) + ->setAction($this->context->link->getModuleLink($this->name, 'validation', array(), true)) + // ->setAdditionalInformation($this->context->smarty->fetch('module:paymentexample/views/templates/front/payment_infos.tpl')) + ->setLogo(Media::getMediaPath(_PS_MODULE_DIR_.$this->name.'/alior.gif')); + + return [ + $offlineOption, + ]; + } + + public function getContent() + { + $output = ''; + + if (Tools::isSubmit('submitRaty')) { + $error = false; + if (!($raty_url = Tools::getValue('RATY_URL')) || empty($raty_url)) { + $output .= $this->displayError($this->l('Musisz wypełnić pole \'Adres URL\'.')); + $error = true; + } else { + Configuration::updateValue('RATY_URL', $raty_url); + } + + if (!($raty_parentid = Tools::getValue('RATY_PARTNERID')) || empty($raty_parentid)) { + $output .= $this->displayError($this->l('Musisz wypełnić pole \'Parent ID\'.')); + $error = true; + } elseif (!$error) { + Configuration::updateValue('RATY_PARTNERID', $raty_parentid); + } + + Configuration::updateValue('RATY_SUBPARTNERID', Tools::getValue('RATY_SUBPARTNERID')); + + if (!($raty_salt = Tools::getValue('RATY_SALT')) || empty($raty_salt)) { + $output .= $this->displayError($this->l('Musisz wypełnić pole \'Salt\'.')); + $error = true; + } elseif (!$error) { + Configuration::updateValue('RATY_SALT', $raty_salt); + } + + Configuration::updateValue('RATY_MCC', Tools::getValue('RATY_MCC')); + Configuration::updateValue('RATY_PROMOTION', Tools::getValue('RATY_PROMOTION')); + Configuration::updateValue('RATY_WARTOSC', $this->changeNumberFormat(Tools::getValue('RATY_WARTOSC'))); + Configuration::updateValue('RATY_KALKULATOR', Tools::getValue('RATY_KALKULATOR')); + + + if (!$error) { + $output .= $this->displayConfirmation($this->l('Parametry uaktualnione.')); + } + } + + return $output . $this->renderForm(); + } + + public function hookDisplayProductButtons($params) + { + if (empty($params['product']->price_amount)){ + return; + } + $price = $params['product']->price_amount; + if (!$this->checkAmount($price)) { + return; + } + + if (!$this->isCached('productraty.tpl', $this->getCacheId($params['product']->id))) { + $promotion = Tools::getValue('RATY_PROMOTION', Configuration::get('RATY_PROMOTION')); + $this->smarty->assign(array( + 'this_path' => $this->_path, + 'this_path_raty' => $this->_path, + 'this_path_ssl' => Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'modules/' . $this->name . '/', + 'this_kalkulator' => Tools::getValue('RATY_KALKULATOR', Configuration::get('RATY_KALKULATOR')) . + '?installmentNumber=21&offerCode='.$promotion.'&cartValue=', + 'this_cena' => $this->changeNumberFormat(round($price, 2)) + )); + } + + return $this->display(__FILE__, 'productraty.tpl', $this->getCacheId($params['product']->id)); + } + + public function hookDisplayShoppingCartFooter($params) + { + if (!$this->checkCurrency($params['cart']) || !$this->checkAmount($params['cart']->getOrderTotal())) { + return; + } + $promotion = Tools::getValue('RATY_PROMOTION', Configuration::get('RATY_PROMOTION')); + + $this->smarty->assign(array( + 'this_path' => $this->_path, + 'this_path_raty' => $this->_path, + 'this_path_ssl' => Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'modules/' . $this->name . '/', + 'this_kalkulator' => Tools::getValue('RATY_KALKULATOR', Configuration::get('RATY_KALKULATOR')) . + '?installmentNumber=21&offerCode='.$promotion.'&cartValue=', + 'this_cena' => $this->changeNumberFormat($params['cart']->getOrderTotal()), + )); + + return $this->display(__FILE__, 'raty_cart.tpl', $this->getCacheId()); + } + + public function hookDisplayHeader($params) + { + $this->context->controller->addCSS($this->_path . 'raty.css', 'all'); + } + + public function hookPayment($params) + { + if (!$this->active) { + return; + } + + if (!$this->changeNumberFormat($this->checkAmount($params['cart']->getOrderTotal()))) { + return; + } + $promotion = Tools::getValue('RATY_PROMOTION', Configuration::get('RATY_PROMOTION')); + + $this->smarty->assign(array( + 'this_path' => $this->_path, + 'this_path_raty' => $this->_path, + 'this_path_ssl' => Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'modules/' . $this->name . '/', + 'this_kalkulator' => Tools::getValue('RATY_KALKULATOR', Configuration::get('RATY_KALKULATOR')) . + '?installmentNumber=21&offerCode='.$promotion.'&cartValue=', + 'this_cena' => $this->changeNumberFormat($params['cart']->getOrderTotal()), + )); + return $this->display(__FILE__, 'payment.tpl'); + } + + public function hookPaymentReturn($params) + { + if (!$this->active) { + return; + } + + $state = $params['order']->getCurrentState(); + + if (in_array($state, array(Configuration::get('PS_OS_RATY'), Configuration::get('PS_OS_OUTOFSTOCK'), Configuration::get('PS_OS_OUTOFSTOCK_UNPAID')))) { + $customer = new Customer($params['order']->id_customer); + $firstName = $customer->firstname; + $lastName = $customer->lastname; + + $url = Tools::getValue('RATY_URL', Configuration::get('RATY_URL')); + $partnerId = Tools::getValue('RATY_PARTNERID', Configuration::get('RATY_PARTNERID')); + $subpartnerId = Tools::getValue('RATY_SUBPARTNERID', Configuration::get('RATY_SUBPARTNERID')); + $mcc = Tools::getValue('RATY_MCC', Configuration::get('RATY_MCC')); + $promotion = Tools::getValue('RATY_PROMOTION', Configuration::get('RATY_PROMOTION')); + $salt = Tools::getValue('RATY_SALT', Configuration::get('RATY_SALT')); + $calculatedIncome = ''; + $limit = ''; + $transactionCode = $params['order']->reference; + $total = $params['order']->total_paid; + + $date = date('Y-m-d'); + $time = date('H:i:s'); + $dateAndTime = $date . 'T' . $time; + + $verificationCode = hash('sha256', $salt . $this->changeNumberFormat($total) . + $transactionCode . $partnerId . $subpartnerId . $dateAndTime . $mcc . $firstName . $lastName . $limit . $calculatedIncome . $promotion); + + $values = [ + 'url' => $url, + 'firstName' => $firstName, + 'lastName' => $lastName, + 'amount' => $total, + 'partnerId' => $partnerId, + 'subpartnerId' => $subpartnerId, + 'mcc' => $mcc, + 'limit' => $limit, + 'promotion' => $promotion, + 'calculatedIncome' => $calculatedIncome, + 'verificationCode' => $verificationCode, + 'transactionCode' => $transactionCode, + 'dateAndTime' => $dateAndTime, + 'amount' => $this->changeNumberFormat($total), + 'status' => 'ok', + 'articlesList' => base64_encode(json_encode($this->getAliorsArticlesListJson( + $params['order']->getProducts(), + (float)$params['order']->total_shipping, + (float)$params['order']->total_discounts + ))), + ]; + + $this->context->smarty->assign($values); + } else { + $this->context->smarty->assign('status', 'failed'); + } + + return $this->context->smarty->fetch('module:raty/views/templates/hook/payment_return.tpl'); + } + + public function renderForm() + { + $fields_form = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Ustawienia'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'text', + 'label' => $this->l('Adres URL'), + 'name' => 'RATY_URL', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Adres URL banku.') + ), + array( + 'type' => 'text', + 'label' => $this->l('PartnerID'), + 'name' => 'RATY_PARTNERID', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Kod partnera handlowego') + ), + array( + 'type' => 'text', + 'label' => $this->l('SubpartnerID'), + 'name' => 'RATY_SUBPARTNERID', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Dodatkowy kod partnera handlowego.') + ), + array( + 'type' => 'text', + 'label' => $this->l('MCC'), + 'name' => 'RATY_MCC', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Kod MCC.') + ), + array( + 'type' => 'text', + 'label' => $this->l('Promocja'), + 'name' => 'RATY_PROMOTION', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Kod promocji.') + ), + array( + 'type' => 'text', + 'label' => $this->l('Wartość'), + 'name' => 'RATY_WARTOSC', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Minimalna wartość od której dostępna jest sprzedaż ratalna.') + ), + array( + 'type' => 'text', + 'label' => $this->l('URL kalkulatora'), + 'name' => 'RATY_KALKULATOR', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Link do obliczenia wysokości rat') + ), + array( + 'type' => 'text', + 'label' => $this->l('Salt'), + 'name' => 'RATY_SALT', + 'class' => 'fixed-width-xxl', + 'desc' => $this->l('Kod Salt odtrzymany od banku') + ), + ), + 'submit' => array( + 'title' => $this->l('Save'), + ) + ), + ); + + $helper = new HelperForm(); + $helper->show_toolbar = false; + $helper->table = $this->table; + $lang = new Language((int) Configuration::get('PS_LANG_DEFAULT')); + $helper->default_form_language = $lang->id; + $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; + $helper->identifier = $this->identifier; + $helper->submit_action = 'submitRaty'; + $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false) . '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name; + $helper->token = Tools::getAdminTokenLite('AdminModules'); + $helper->tpl_vars = array( + 'fields_value' => $this->getConfigFieldsValues(), + 'languages' => $this->context->controller->getLanguages(), + 'id_language' => $this->context->language->id + ); + + return $helper->generateForm(array($fields_form)); + } + + public function checkCurrency($cart) + { + $currency_order = new Currency($cart->id_currency); + $currencies_module = $this->getCurrency($cart->id_currency); + if (is_array($currencies_module)) { + foreach ($currencies_module as $currency_module) { + if ($currency_order->id == $currency_module['id_currency']) { + return true; + } + } + } + return false; + } + + public function getConfigFieldsValues() + { + return array( + 'RATY_URL' => Tools::getValue('RATY_URL', Configuration::get('RATY_URL')), + 'RATY_PARTNERID' => Tools::getValue('RATY_PARTNERID', Configuration::get('RATY_PARTNERID')), + 'RATY_SUBPARTNERID' => Tools::getValue('RATY_SUBPARTNERID', Configuration::get('RATY_SUBPARTNERID')), + 'RATY_MCC' => Tools::getValue('RATY_MCC', Configuration::get('RATY_MCC')), + 'RATY_PROMOTION' => Tools::getValue('RATY_PROMOTION', Configuration::get('RATY_PROMOTION')), + 'RATY_WARTOSC' => Tools::getValue('RATY_WARTOSC', $this->changeNumberFormat(Configuration::get('RATY_WARTOSC'))), + 'RATY_KALKULATOR' => Tools::getValue('RATY_KALKULATOR', Configuration::get('RATY_KALKULATOR')), + 'RATY_SALT' => Tools::getValue('RATY_SALT', Configuration::get('RATY_SALT')), + ); + } + + public function checkAmount($total) + { + $wartosc = (float) Tools::getValue('RATY_WARTOSC', $this->changeNumberFormat(Configuration::get('RATY_WARTOSC'))); + if ($wartosc > 0) { + return $wartosc <= $total; + } + return false; + } + + private function changeNumberFormat($value) + { + return number_format($value, 2, '.', ''); + } + + private function getAliorsArticlesListJson(array $products, $totalShippingCost, $totalDiscounts) + { + $totalShippingCost = (float)$totalShippingCost; + $totalDiscounts = (float)$totalDiscounts; + // @see https://stackoverflow.com/questions/42981409/php7-1-json-encode-float-issue + // json_encode makes float values wrong. This is simple fix + if (version_compare(phpversion(), '7.1', '>=')) { + ini_set( 'serialize_precision', -1 ); + } + + $json = ['articlesList' => []]; + foreach ($products as $prod) { + if (!empty($prod['unit_price_tax_incl'])){ + $price = $prod['unit_price_tax_incl']; + } else { + $price = !empty($prod['product_price_wt']) ? $prod['product_price_wt'] : $prod['product_price']; + } + $json['articlesList'][] = [ + "category" => $this->getAliorsCategory($prod['id_category_default']), + "name" => $prod['product_name'], + "number" => (int)$prod['product_quantity'], + "price" => (float)$price, + ]; + } + if ($totalShippingCost){ + $json['articlesList'][] = [ + "category" => 'TKC_USLUGI', // from Alior's docs + "name" => 'Shipping costs', + "number" => 1, + "price" => $totalShippingCost, + ]; + } + if ($totalDiscounts){ + $json['articlesList'][] = [ + "category" => 'TKC_RABAT', // from Alior's docs + "name" => 'Discount', + "number" => 1, + "price" => $totalDiscounts * -1, + ]; + } + + return $json; + } + + /** + * Returns Alior's ID of category based on mapping (see map.php) + * @return string + */ + private function getAliorsCategory($shopCategoryId) + { + $map = require(dirname(__FILE__) . '/map.php'); + if (empty($map)) { + return ''; + } + foreach ($map as $aliorId => $shopCats) { + if (in_array($shopCategoryId, $shopCats)) { + return $aliorId; + } + } + + return !empty($map['default']) ? $map['default'] : ''; + } +} diff --git a/modules/raty/raty/raty.tpl b/modules/raty/raty/raty.tpl new file mode 100644 index 00000000..6bc31da8 --- /dev/null +++ b/modules/raty/raty/raty.tpl @@ -0,0 +1,9 @@ + +
+
+
+
+ + +
+
diff --git a/modules/raty/raty/validation.php b/modules/raty/raty/validation.php new file mode 100644 index 00000000..f9710ed8 --- /dev/null +++ b/modules/raty/raty/validation.php @@ -0,0 +1,40 @@ +cart; +$raty = new Raty(); + +if ($cart->id_customer == 0 or $cart->id_address_delivery == 0 or $cart->id_address_invoice == 0 or !$raty->active) { + Tools::redirect('index.php?controller=order&step=1'); +} + +// Check that this payment option is still available in case the customer changed his address just before the end of the checkout process +$authorized = false; +foreach (Module::getPaymentModules() as $module) { + if ($module['name'] == 'raty') { + $authorized = true; + break; + } +} +if (!$authorized) { + die($raty->l('This payment method is not available.', 'validation')); +} + +$customer = new Customer($cart->id_customer); + +if (!Validate::isLoadedObject($customer)) { + Tools::redirect('index.php?controller=order&step=1'); +} + +$currency = $context->currency; +$total = (float)$cart->getOrderTotal(true, Cart::BOTH); + +$raty->validateOrder((int)$cart->id, $total, $raty->displayName, null, array(), (int)$currency->id, false, $customer->secure_key); + +Tools::redirect('index.php?controller=order-confirmation&id_cart='.(int)($cart->id).'&id_module='.(int)($raty->id).'&id_order='.$raty->currentOrder.'&key='.$customer->secure_key); diff --git a/modules/raty/raty/views/index.php b/modules/raty/raty/views/index.php new file mode 100644 index 00000000..ea43c084 --- /dev/null +++ b/modules/raty/raty/views/index.php @@ -0,0 +1,11 @@ +getPageLink('order', true, NULL, "step=3")|escape:'html':'UTF-8'}" title="{l s='Go back to the Checkout' mod='raty'}">{l s='Checkout' mod='raty'}{$navigationPipe}{l s='Raty Alior Bank' mod='raty'} +{/capture} + +{include file="$tpl_dir./breadcrumb.tpl"} + +

{l s='Podsumowanie zamówienia' mod='raty'}

+ +{assign var='current_step' value='payment'} +{include file="$tpl_dir./order-steps.tpl"} + +{if $nbProducts <= 0} +

{l s='Twój koszyk jest pusty.' mod='raty'}

+{else} + +

{l s='Raty Alior Bank' mod='raty'}

+
+

+ {l s='Raty Alior Bank' mod='raty'} + {l s='Wybrałeś płatność poprzez raty Alior Banku.' mod='raty'} +

+ {l s='To jest Twoje skrócona informacja o zamówieniu:' mod='raty'} +

+

+ - {l s='Całkowita kwota do zapłaty' mod='raty'} + {displayPrice price=$total} + {if $use_taxes == 1} + {l s='(zawiera VAT.)' mod='raty'} + {/if} +

+

+ {l s='Proszę potwierdź zamówienie klikając na "Potwierdzam zamówienie".' mod='raty'} +

+

+ + {l s='Inne metody płatności' mod='raty'} +

+
+{/if} diff --git a/modules/raty/raty/views/templates/hook/index.php b/modules/raty/raty/views/templates/hook/index.php new file mode 100644 index 00000000..f2df64bb --- /dev/null +++ b/modules/raty/raty/views/templates/hook/index.php @@ -0,0 +1,11 @@ + + + {l s='Zapłać poprzez raty Alior Bank' mod='raty'} + {l s='Zapłać poprzez raty Alior Bank' mod='raty'} {l s='' mod='raty'} + + {if !empty($this_kalkulator)} + {l s='Oblicz ratę' mod='raty'} + {/if} +

\ No newline at end of file diff --git a/modules/raty/raty/views/templates/hook/payment_return.tpl b/modules/raty/raty/views/templates/hook/payment_return.tpl new file mode 100644 index 00000000..a4c55851 --- /dev/null +++ b/modules/raty/raty/views/templates/hook/payment_return.tpl @@ -0,0 +1,26 @@ +{if $status == 'ok'} +
+ + + + + + + + + + + + + +
+ + +{else} +

+ {l s='We noticed a problem with your order. If you think this is an error, feel free to contact our' mod='bankwire'} + {l s='expert customer support team' mod='bankwire'}. +

+{/if} diff --git a/modules/raty/raty/views/templates/hook/productraty.tpl b/modules/raty/raty/views/templates/hook/productraty.tpl new file mode 100644 index 00000000..0443041b --- /dev/null +++ b/modules/raty/raty/views/templates/hook/productraty.tpl @@ -0,0 +1,6 @@ +{if !empty($this_kalkulator)} +
+ +
+
+{/if} \ No newline at end of file diff --git a/modules/raty/raty/views/templates/hook/raty_cart.tpl b/modules/raty/raty/views/templates/hook/raty_cart.tpl new file mode 100644 index 00000000..1c290864 --- /dev/null +++ b/modules/raty/raty/views/templates/hook/raty_cart.tpl @@ -0,0 +1,5 @@ +{if !empty($this_kalkulator)} +
+ +
+{/if} \ No newline at end of file diff --git a/modules/raty/raty/views/templates/index.php b/modules/raty/raty/views/templates/index.php new file mode 100644 index 00000000..8e6e4410 --- /dev/null +++ b/modules/raty/raty/views/templates/index.php @@ -0,0 +1,11 @@ +cart; +$raty = new Raty(); + +if ($cart->id_customer == 0 or $cart->id_address_delivery == 0 or $cart->id_address_invoice == 0 or !$raty->active) { + Tools::redirect('index.php?controller=order&step=1'); +} + +// Check that this payment option is still available in case the customer changed his address just before the end of the checkout process +$authorized = false; +foreach (Module::getPaymentModules() as $module) { + if ($module['name'] == 'raty') { + $authorized = true; + break; + } +} +if (!$authorized) { + die($raty->l('This payment method is not available.', 'validation')); +} + +$customer = new Customer($cart->id_customer); + +if (!Validate::isLoadedObject($customer)) { + Tools::redirect('index.php?controller=order&step=1'); +} + +$currency = $context->currency; +$total = (float)$cart->getOrderTotal(true, Cart::BOTH); + +$raty->validateOrder((int)$cart->id, $total, $raty->displayName, null, array(), (int)$currency->id, false, $customer->secure_key); + +Tools::redirect('index.php?controller=order-confirmation&id_cart='.(int)($cart->id).'&id_module='.(int)($raty->id).'&id_order='.$raty->currentOrder.'&key='.$customer->secure_key); diff --git a/modules/raty/views/index.php b/modules/raty/views/index.php new file mode 100644 index 00000000..ea43c084 --- /dev/null +++ b/modules/raty/views/index.php @@ -0,0 +1,11 @@ +getPageLink('order', true, NULL, "step=3")|escape:'html':'UTF-8'}" title="{l s='Go back to the Checkout' mod='raty'}">{l s='Checkout' mod='raty'}{$navigationPipe}{l s='Raty Alior Bank' mod='raty'} +{/capture} + +{include file="$tpl_dir./breadcrumb.tpl"} + +

{l s='Podsumowanie zamówienia' mod='raty'}

+ +{assign var='current_step' value='payment'} +{include file="$tpl_dir./order-steps.tpl"} + +{if $nbProducts <= 0} +

{l s='Twój koszyk jest pusty.' mod='raty'}

+{else} + +

{l s='Raty Alior Bank' mod='raty'}

+
+

+ {l s='Raty Alior Bank' mod='raty'} + {l s='Wybrałeś płatność poprzez raty Alior Banku.' mod='raty'} +

+ {l s='To jest Twoje skrócona informacja o zamówieniu:' mod='raty'} +

+

+ - {l s='Całkowita kwota do zapłaty' mod='raty'} + {displayPrice price=$total} + {if $use_taxes == 1} + {l s='(zawiera VAT.)' mod='raty'} + {/if} +

+

+ {l s='Proszę potwierdź zamówienie klikając na "Potwierdzam zamówienie".' mod='raty'} +

+

+ + {l s='Inne metody płatności' mod='raty'} +

+
+{/if} diff --git a/modules/raty/views/templates/front/payment_infos.tpl b/modules/raty/views/templates/front/payment_infos.tpl new file mode 100644 index 00000000..686ef6c2 --- /dev/null +++ b/modules/raty/views/templates/front/payment_infos.tpl @@ -0,0 +1 @@ +

{$raty_description}

\ No newline at end of file diff --git a/modules/raty/views/templates/hook/index.php b/modules/raty/views/templates/hook/index.php new file mode 100644 index 00000000..f2df64bb --- /dev/null +++ b/modules/raty/views/templates/hook/index.php @@ -0,0 +1,11 @@ + + + {l s='Zapłać poprzez raty Alior Bank' mod='raty'} + {l s='Zapłać poprzez raty Alior Bank' mod='raty'} {l s='' mod='raty'} + + {l s='Oblicz ratę' mod='raty'} +

\ No newline at end of file diff --git a/modules/raty/views/templates/hook/payment_return.tpl b/modules/raty/views/templates/hook/payment_return.tpl new file mode 100644 index 00000000..a4c55851 --- /dev/null +++ b/modules/raty/views/templates/hook/payment_return.tpl @@ -0,0 +1,26 @@ +{if $status == 'ok'} +
+ + + + + + + + + + + + + +
+ + +{else} +

+ {l s='We noticed a problem with your order. If you think this is an error, feel free to contact our' mod='bankwire'} + {l s='expert customer support team' mod='bankwire'}. +

+{/if} diff --git a/modules/raty/views/templates/hook/productraty.tpl b/modules/raty/views/templates/hook/productraty.tpl new file mode 100644 index 00000000..5c8e0cf3 --- /dev/null +++ b/modules/raty/views/templates/hook/productraty.tpl @@ -0,0 +1,17 @@ + +
+
+ + + +
+
\ No newline at end of file diff --git a/modules/raty/views/templates/hook/raty_cart.tpl b/modules/raty/views/templates/hook/raty_cart.tpl new file mode 100644 index 00000000..8edde331 --- /dev/null +++ b/modules/raty/views/templates/hook/raty_cart.tpl @@ -0,0 +1,16 @@ + + + diff --git a/modules/raty/views/templates/hook/updatecategory.tpl b/modules/raty/views/templates/hook/updatecategory.tpl new file mode 100644 index 00000000..2b38fee9 --- /dev/null +++ b/modules/raty/views/templates/hook/updatecategory.tpl @@ -0,0 +1,26 @@ + +
+ +
+ +
+
+ \ No newline at end of file diff --git a/modules/raty/views/templates/hook/updateproduct.tpl b/modules/raty/views/templates/hook/updateproduct.tpl new file mode 100644 index 00000000..0daf6edb --- /dev/null +++ b/modules/raty/views/templates/hook/updateproduct.tpl @@ -0,0 +1,27 @@ + +
+

Raty Alior

+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/modules/raty/views/templates/index.php b/modules/raty/views/templates/index.php new file mode 100644 index 00000000..8e6e4410 --- /dev/null +++ b/modules/raty/views/templates/index.php @@ -0,0 +1,11 @@ + main { overflow-x: hidden; } +html { + scroll-padding-top: 150px; +} + body { font-size: 15px; line-height: 1.5; @@ -270,6 +274,12 @@ a { fill: #e6cb6f; } +body#product { + overflow-x: hidden; +} +body#product > main { + overflow: initial; +} body#product #content ul.product-flags { display: flex; flex-direction: row; @@ -445,7 +455,6 @@ body#product .product-info-box .product-info-box-right .product-information .pro body#product .product-info-box .product-info-box-right .product-information .product-actions .product-variants { margin: 16px 0; border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; } body#product .product-info-box .product-info-box-right .product-information .product-actions .product-variants .product-variants-item { position: relative; @@ -682,8 +691,6 @@ body#product .product-info-box .product-info-box-right .product-information .pro } body#product .product-info-box .product-info-box-right .product-information .product-actions .product-additional-info { display: none; -} -body#product .product-info-box .product-info-box-right .product-information .product-actions .product-additional-info { margin: 30px 0; } body#product .product-info-box .product-info-box-right .product-information .blockreassurance_product { @@ -696,6 +703,7 @@ body#product .product-info-box .product-info-box-right .product-information .blo display: flex; flex-direction: row; align-items: center; + flex-wrap: wrap; color: #462d26; font-size: 14px; font-weight: 500; @@ -721,9 +729,44 @@ body#product .product-info-box .product-info-box-right .product-information .blo font-weight: 700; margin: 0; } +body#product .product-info-box .product-info-box-right .product-information .blockreassurance_product .item-1 .block-description { + text-decoration: underline; + cursor: pointer; +} +body#product .product-info-box .product-info-box-right .product-information .blockreassurance_product .block-raty { + width: 100%; + display: none; +} +body#product .product-info-box .product-info-box-right .product-information .blockreassurance_product .block-raty .block-raty--wrapper { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: 10px; + padding-top: 20px; +} +body#product .product-info-box .product-info-box-right .product-information #description-nav { + padding: 32px 24px; + margin: 0; + list-style: none; + display: flex; + flex-direction: row; +} +body#product .product-info-box .product-info-box-right .product-information #description-nav li:not(:last-child) { + padding-right: 24px; + margin-right: 24px; + border-right: 1px solid rgba(17, 14, 12, 0.1019607843); +} +body#product .product-info-box .product-info-box-right .product-information #description-nav li a { + color: #462d26; + font-size: 16px; + font-weight: 600; + font-family: "Inter", sans-serif; +} body#product .product-description-box { position: relative; margin-bottom: 100px; + padding-top: 60px; + padding-bottom: 60px; } body#product .product-description-box::before { content: ""; @@ -735,6 +778,83 @@ body#product .product-description-box::before { transform: translateX(-50%); background: #ffffff; } +body#product .product-description-box .c-row { + display: flex; + flex-direction: row; + -moz-column-gap: 60px; + column-gap: 60px; +} +body#product .product-description-box .c-row .c-col { + width: calc(50% - 30px); +} +@media (max-width: 767px) { + body#product .product-description-box .c-row .c-col { + width: 100%; + } +} +@media (max-width: 767px) { + body#product .product-description-box .c-row .c-col-2 { + display: none; + } +} +body#product .product-description-box .c-row .c-col-2 .product-description-box-img { + position: sticky; + top: 150px; +} +body#product .product-description-box .c-row .c-col-2 .product-description-box-img img { + width: 100%; + max-width: -moz-fit-content; + max-width: fit-content; +} +body#product .product-description-box ul.product-accordion-box { + padding: 0; + margin: 0; + list-style: none; +} +body#product .product-description-box ul.product-accordion-box li.accordion-item.active .accordion-item-header img { + transform: scale(-1); +} +body#product .product-description-box ul.product-accordion-box li.accordion-item .accordion-item-header { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + -moz-column-gap: 30px; + column-gap: 30px; + padding: 16px 0; + border-bottom: 1px solid rgba(17, 14, 12, 0.1019607843); + cursor: pointer; +} +body#product .product-description-box ul.product-accordion-box li.accordion-item .accordion-item-header h3 { + color: #462d26; + font-size: 24px; + font-weight: 600; + font-family: "Inter", sans-serif; + margin: 0; +} +body#product .product-description-box ul.product-accordion-box li.accordion-item .accordion-item-header img { + transition: all 0.3s ease-in-out; +} +body#product .product-description-box ul.product-accordion-box li.accordion-item .accordion-item-body .accordion-item-body--wrapper { + padding-top: 24px; + padding-bottom: 64px; +} +body#product .product-description-box ul.product-accordion-box li.accordion-item .accordion-item-body .accordion-item-body--wrapper * { + color: #000; + font-size: 14px; + font-weight: 400; + font-family: "Inter", sans-serif; + line-height: 1.4; +} +body#product .product-description-box ul.product-accordion-box li.accordion-item .accordion-item-body .accordion-item-body--wrapper * strong { + font-weight: 700; +} +body#product .product-description-box ul.product-accordion-box li.accordion-item .accordion-item-body .accordion-item-body--wrapper img { + max-width: -moz-fit-content; + max-width: fit-content; + width: 100%; + height: auto; +} body#product .tabs { border-radius: 10px; } @@ -1733,15 +1853,17 @@ body#category #content-wrapper section#main div { column-gap: 80px; position: relative; } -.footer-box-other-info > .elementor-container > .elementor-row::before { - content: ""; - position: absolute; - top: -60px; - bottom: -60px; - left: 50%; - width: 1px; - transform: translateX(-50%); - background: rgba(170, 138, 94, 0.25); +@media (min-width: 1025px) { + .footer-box-other-info > .elementor-container > .elementor-row::before { + content: ""; + position: absolute; + top: -60px; + bottom: -60px; + left: 50%; + width: 1px; + transform: translateX(-50%); + background: rgba(170, 138, 94, 0.25); + } } nav.pagination .page-list { @@ -2140,4 +2262,16 @@ body#authentication section#main #content .register-form form footer.form-footer align-items: center; justify-content: center; margin: 30px 0 0 0; +} + +@media (max-width: 767px) { + .newsletter-form form.elementor-email-subscription .elementor-field-type-subscribe { + display: flex; + flex-direction: row; + row-gap: 16px; + flex-wrap: wrap; + } + .newsletter-form form.elementor-email-subscription .elementor-field-type-subscribe button { + width: 100%; + } }/*# sourceMappingURL=custom.css.map */ \ No newline at end of file diff --git a/themes/classic/assets/css/custom.css.map b/themes/classic/assets/css/custom.css.map index fd6f66be..cb3d13b5 100644 --- a/themes/classic/assets/css/custom.css.map +++ b/themes/classic/assets/css/custom.css.map @@ -1 +1 @@ -{"version":3,"sources":["custom.scss","custom.css"],"names":[],"mappings":"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","file":"custom.css"} \ No newline at end of file +{"version":3,"sources":["custom.scss","custom.css"],"names":[],"mappings":"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","file":"custom.css"} \ No newline at end of file diff --git a/themes/classic/assets/css/custom.scss b/themes/classic/assets/css/custom.scss index bf329504..2c42557a 100644 --- a/themes/classic/assets/css/custom.scss +++ b/themes/classic/assets/css/custom.scss @@ -11,6 +11,10 @@ body > main { overflow-x: hidden; } +html { + scroll-padding-top: 150px; +} + body { font-size: 15px; line-height: 1.5; @@ -382,6 +386,12 @@ a { //* Single Product body#product { + overflow-x: hidden; + + > main { + overflow: initial; + } + #content { ul.product-flags { display: flex; @@ -601,7 +611,7 @@ body#product { .product-variants { margin: 16px 0; border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; + // border-bottom: 1px solid #ddd; .product-variants-item { position: relative; @@ -898,9 +908,6 @@ body#product { .product-additional-info { display: none; - } - - .product-additional-info { margin: 30px 0; } } @@ -915,6 +922,7 @@ body#product { display: flex; flex-direction: row; align-items: center; + flex-wrap: wrap; color: #462d26; font-size: 14px; @@ -946,6 +954,50 @@ body#product { margin: 0; } } + + .item-1 { + .block-description { + text-decoration: underline; + cursor: pointer; + } + } + + .block-raty { + width: 100%; + display: none; + + .block-raty--wrapper { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: 10px; + padding-top: 20px; + } + } + } + + #description-nav { + padding: 32px 24px; + margin: 0; + list-style: none; + + display: flex; + flex-direction: row; + + li { + &:not(:last-child) { + padding-right: 24px; + margin-right: 24px; + border-right: 1px solid #110e0c1a; + } + + a { + color: #462d26; + font-size: 16px; + font-weight: 600; + font-family: $fInter; + } + } } } } @@ -954,6 +1006,8 @@ body#product { .product-description-box { position: relative; margin-bottom: 100px; + padding-top: 60px; + padding-bottom: 60px; &::before { content: ''; @@ -965,6 +1019,98 @@ body#product { transform: translateX(-50%); background: #ffffff; } + + .c-row { + display: flex; + flex-direction: row; + column-gap: 60px; + + .c-col { + width: calc(50% - 30px); + + @media (max-width: 767px) { + width: 100%; + } + } + + .c-col-2 { + @media (max-width: 767px) { + display: none; + } + .product-description-box-img { + position: sticky; + top: 150px; + + img { + width: 100%; + max-width: fit-content; + } + } + } + } + + ul.product-accordion-box { + padding: 0; + margin: 0; + list-style: none; + + li.accordion-item { + &.active { + .accordion-item-header { + img { + transform: scale(-1); + } + } + } + + .accordion-item-header { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + column-gap: 30px; + padding: 16px 0; + border-bottom: 1px solid #110e0c1a; + cursor: pointer; + + h3 { + color: #462d26; + font-size: 24px; + font-weight: 600; + font-family: $fInter; + margin: 0; + } + img { + transition: all 0.3s ease-in-out; + } + } + + .accordion-item-body { + .accordion-item-body--wrapper { + padding-top: 24px; + padding-bottom: 64px; + + * { + color: #000; + font-size: 14px; + font-weight: 400; + font-family: $fInter; + line-height: 1.4; + + strong { + font-weight: 700; + } + } + + img { + max-width: fit-content; + width: 100%; + height: auto; + } + } + } + } + } } .tabs { @@ -2310,15 +2456,17 @@ body#category { column-gap: 80px; position: relative; - &::before { - content: ''; - position: absolute; - top: -60px; - bottom: -60px; - left: 50%; - width: 1px; - transform: translateX(-50%); - background: rgba(#aa8a5e, 0.25); + @media (min-width: 1025px) { + &::before { + content: ''; + position: absolute; + top: -60px; + bottom: -60px; + left: 50%; + width: 1px; + transform: translateX(-50%); + background: rgba(#aa8a5e, 0.25); + } } } } @@ -2822,3 +2970,20 @@ body#authentication { } } } + +.newsletter-form { + form.elementor-email-subscription { + .elementor-field-type-subscribe { + @media (max-width: 767px) { + display: flex; + flex-direction: row; + row-gap: 16px; + flex-wrap: wrap; + + button { + width: 100%; + } + } + } + } +} diff --git a/themes/classic/assets/js/custom.js b/themes/classic/assets/js/custom.js index deb082dc..4bc4c5e3 100644 --- a/themes/classic/assets/js/custom.js +++ b/themes/classic/assets/js/custom.js @@ -44,3 +44,73 @@ jQuery(document).ready(function ($) { $(this).parent().siblings('.form-control-select-custom').slideToggle(); }); }); + + +jQuery(document).ready(function ($) { + if ($("#product").length) { + const additionalInfo = $(".product-additional-info"); + + if (additionalInfo.length) { + const elementsToCopy = []; + + const selectors = [ + ".single_raty", + "#oblicz-rate", + "#caraty" + ]; + + selectors.forEach(selector => { + const element = additionalInfo.find(selector); + if (element.length) { + elementsToCopy.push(element.clone()); + } + }); + + if (elementsToCopy.length) { + const item1 = $(".blockreassurance_product .item-1"); + + if (item1.length) { + const blockRaty = $('
'); + const wrapper = blockRaty.find('.block-raty--wrapper'); + + elementsToCopy.forEach(element => { + wrapper.append(element); + }); + + item1.append(blockRaty); + } + } + } + + $(".blockreassurance_product .item-1 .block-description").on("click", function () { + const blockRaty = $(".blockreassurance_product .item-1 .block-raty"); + if (blockRaty.length) { + blockRaty.slideToggle(); + } + }); + } +}); + +jQuery(document).ready(function ($) { + if ($("#product").length) { + $(".accordion-item").addClass("active"); + $(".accordion-item-body").show(); + + $(".accordion-item-header").click(function(){ + $(".accordion-item-body").slideUp(); + $(".accordion-item").removeClass("active"); + + if ($(this).next(".accordion-item-body").is(":hidden")) { + $(this).next(".accordion-item-body").slideDown(); + $(this).parent().addClass("active"); + } + }); + + + $(".product-description-box .product-description-box-img").css( + "top", + $("#header-panel-box").height() + 64 + ) + + } +}) \ No newline at end of file diff --git a/themes/classic/templates/catalog/_partials/product-details.tpl b/themes/classic/templates/catalog/_partials/product-details.tpl index 1e6d3e85..1be310b5 100644 --- a/themes/classic/templates/catalog/_partials/product-details.tpl +++ b/themes/classic/templates/catalog/_partials/product-details.tpl @@ -1,8 +1,13 @@ -
+ > *} +
{block name='product_reference'} {if isset($product_manufacturer->id)}
diff --git a/themes/classic/templates/catalog/product.tpl b/themes/classic/templates/catalog/product.tpl index 7175594a..14f744f5 100644 --- a/themes/classic/templates/catalog/product.tpl +++ b/themes/classic/templates/catalog/product.tpl @@ -52,7 +52,7 @@
-
+
{block name='page_content_container'}
{block name='page_content'} @@ -137,14 +137,137 @@ {block name='product_refresh'}{/block} {/block} -
+
    + {if $product.description} + + {/if} + + {if $product.attachments} + + {/if} + {foreach from=$product.extraContent item=extra key=extraKey} + + {/foreach} +
+
+
+
+
+ {block name='product_description_accordion'} +
    + {if $product.description} +
  • +
    +

    {l s='Description' d='Shop.Theme.Catalog'}

    + +
    +
    +
    +
    {$product.description nofilter}
    +
    +
    +
  • + {/if} +
  • +
    +

    {l s='Product Details' d='Shop.Theme.Catalog'}

    + +
    +
    +
    + {include file='catalog/_partials/product-details.tpl'} +
    +
    +
  • + {if $product.attachments} +
  • +
    +

    {l s='Attachments' d='Shop.Theme.Catalog'}

    + +
    +
    +
    +
    +

    {l s='Download' d='Shop.Theme.Actions'}

    + {foreach from=$product.attachments item=attachment} + + {/foreach} +
    +
    +
    +
  • + {/if} + {foreach from=$product.extraContent item=extra key=extraKey} +
  • +
    +

    {$extra.title}

    + +
    +
    +
    + {$extra.content nofilter} +
    +
    +
  • + {/foreach} +
+ {/block} +
+
+
+ {if isset($product.images[1]) && $product.images[1].id_image} + {$product.images[1].legend} + {elseif isset($product.images[0]) && $product.images[0].id_image} + {$product.images[0].legend} + {/if} +
+
+
+
+
+ + {*
{block name='product_tabs'}
@@ -218,7 +341,7 @@
{/block}
-
+
*} {block name='product_accessories'} {if $accessories}