| @@ -0,0 +1,8 @@ | |||
| # Default ignored files | |||
| /shelf/ | |||
| /workspace.xml | |||
| # Datasource local storage ignored files | |||
| /dataSources/ | |||
| /dataSources.local.xml | |||
| # Editor-based HTTP Client requests | |||
| /httpRequests/ | |||
| @@ -0,0 +1,4 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="Encoding" addBOMForNewFiles="with NO BOM" /> | |||
| </project> | |||
| @@ -0,0 +1,8 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="ProjectModuleManager"> | |||
| <modules> | |||
| <module fileurl="file://$PROJECT_DIR$/.idea/zenitPlatformAtmosSet1.iml" filepath="$PROJECT_DIR$/.idea/zenitPlatformAtmosSet1.iml" /> | |||
| </modules> | |||
| </component> | |||
| </project> | |||
| @@ -0,0 +1,6 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="PhpProjectSharedConfiguration" php_language_level="7.1"> | |||
| <option name="suggestChangeDefaultLanguageLevel" value="false" /> | |||
| </component> | |||
| </project> | |||
| @@ -0,0 +1,12 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <module type="WEB_MODULE" version="4"> | |||
| <component name="NewModuleRootManager"> | |||
| <content url="file://$MODULE_DIR$"> | |||
| <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" /> | |||
| <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="zenit\PlatformAtmosSet1\" /> | |||
| <sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" /> | |||
| </content> | |||
| <orderEntry type="inheritedJdk" /> | |||
| <orderEntry type="sourceFolder" forTests="false" /> | |||
| </component> | |||
| </module> | |||
| @@ -0,0 +1,44 @@ | |||
| { | |||
| "name": "zenit/atmos-set-1", | |||
| "description": "Theme Atmos by Zenit Design", | |||
| "version": "2.4.1", | |||
| "type": "shopware-platform-plugin", | |||
| "license": "proprietary", | |||
| "authors": [ | |||
| { | |||
| "name": "Zenit Design", | |||
| "homepage": "https://zenit.design", | |||
| "role": "Manufacturer" | |||
| } | |||
| ], | |||
| "require": { | |||
| "shopware/core": "^6.3", | |||
| "shopware/storefront": "^6.3" | |||
| }, | |||
| "extra": { | |||
| "shopware-plugin-class": "zenit\\PlatformAtmosSet1\\zenitPlatformAtmosSet1", | |||
| "plugin-icon": "src/Resources/config/plugin.png", | |||
| "copyright": "(c) by Zenit Design", | |||
| "label": { | |||
| "de-DE": "Theme Atmos | Pro - Set 1 Diäko", | |||
| "en-GB": "Theme Atmos | Pro - Set 1 Diäko" | |||
| }, | |||
| "description": { | |||
| "de-DE": "Theme Atmos | Pro - Set 1 Diäko", | |||
| "en-GB": "Theme Atmos | Pro - Set 1 Diäko" | |||
| }, | |||
| "manufacturerLink": { | |||
| "de-DE": "https://store.shopware.com/zenit-design.html", | |||
| "en-GB": "https://store.shopware.com/en/zenit-design.html" | |||
| }, | |||
| "supportLink": { | |||
| "de-DE": "https://help.zenit.design", | |||
| "en-GB": "https://help.zenit.design" | |||
| } | |||
| }, | |||
| "autoload": { | |||
| "psr-4": { | |||
| "zenit\\PlatformAtmosSet1\\": "src/" | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,57 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> | |||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | |||
| <svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | |||
| width="205.523px" height="91px" viewBox="0 0 205.523 91" enable-background="new 0 0 205.523 91" xml:space="preserve"> | |||
| <g> | |||
| <path fill="#FFFFFF" d="M11.466,62.599c-1.753-0.841-3.144-2.068-4.173-3.681c-1.026-1.612-1.541-3.472-1.541-5.573 | |||
| c0-3.461,1.367-6.218,4.102-8.277c2.736-2.056,6.743-3.084,12.025-3.084h8.486v-0.562c0-3.084-0.762-5.305-2.28-6.661 | |||
| c-1.521-1.355-3.892-2.032-7.118-2.032c-1.776,0-3.354,0.138-4.732,0.42c-1.379,0.281-2.909,0.701-4.591,1.262 | |||
| c-0.376,0.093-0.68,0.14-0.913,0.14c-0.701,0-1.309-0.257-1.822-0.771c-0.516-0.513-0.77-1.145-0.77-1.892 | |||
| c0-1.264,0.604-2.15,1.82-2.665c3.974-1.684,8.019-2.525,12.131-2.525c3.227,0,5.949,0.656,8.17,1.963 | |||
| c2.221,1.309,3.856,3.005,4.908,5.084c1.052,2.081,1.578,4.337,1.578,6.767v19.844c0,0.888-0.315,1.637-0.947,2.244 | |||
| c-0.631,0.606-1.391,0.912-2.279,0.912c-0.89,0-1.638-0.305-2.243-0.912c-0.607-0.606-0.911-1.355-0.911-2.244v-1.824 | |||
| c-3.461,3.554-7.855,5.33-13.184,5.33C15.124,63.86,13.219,63.44,11.466,62.599z M25.526,56.744 | |||
| c1.916-1.005,3.529-2.254,4.838-3.751v-5.891h-7.645c-7.06,0-10.588,1.848-10.588,5.539c0,1.685,0.572,3.041,1.718,4.067 | |||
| c1.146,1.028,3.051,1.543,5.716,1.543C21.621,58.252,23.609,57.75,25.526,56.744z"/> | |||
| <path fill="#FFFFFF" d="M48.734,54.606v-21.74h-4.979c-0.374,0-0.688-0.126-0.944-0.384c-0.26-0.257-0.388-0.573-0.388-0.946 | |||
| c0-0.467,0.211-0.865,0.632-1.193l9.535-9.326c0.42-0.421,0.817-0.631,1.192-0.631c0.374,0,0.689,0.14,0.947,0.42 | |||
| c0.257,0.282,0.385,0.609,0.385,0.982v5.61h7.924c0.794,0,1.447,0.257,1.963,0.77c0.517,0.514,0.771,1.169,0.771,1.964 | |||
| c0,0.748-0.256,1.392-0.771,1.928c-0.516,0.538-1.169,0.805-1.963,0.805h-7.924v21.178c0,1.822,0.433,2.979,1.298,3.472 | |||
| c0.865,0.49,1.95,0.736,3.261,0.736c0.935,0,1.87-0.141,2.806-0.421c0.185-0.046,0.384-0.093,0.594-0.142 | |||
| c0.211-0.043,0.479-0.068,0.809-0.068c0.653,0,1.237,0.246,1.751,0.734c0.516,0.492,0.771,1.088,0.771,1.789 | |||
| c0,1.076-0.538,1.894-1.612,2.455c-1.824,0.84-3.763,1.262-5.818,1.262C52.148,63.86,48.734,60.774,48.734,54.606z"/> | |||
| <path fill="#FFFFFF" d="M74.328,62.599c-0.606-0.605-0.912-1.354-0.912-2.244V30.274c0-0.888,0.306-1.648,0.912-2.28 | |||
| c0.607-0.631,1.355-0.946,2.245-0.946c0.887,0,1.646,0.315,2.278,0.946c0.63,0.631,0.946,1.392,0.946,2.28v2.875 | |||
| c1.308-1.87,2.887-3.411,4.733-4.627c1.846-1.216,4.242-1.824,7.188-1.824c2.619,0,4.861,0.702,6.73,2.103 | |||
| c1.87,1.403,3.203,3.109,3.998,5.12c2.898-4.814,7.198-7.223,12.902-7.223c2.617,0,4.804,0.656,6.557,1.963 | |||
| c1.753,1.309,3.05,2.994,3.891,5.05c0.844,2.057,1.264,4.206,1.264,6.45v20.195c0,0.888-0.315,1.637-0.946,2.244 | |||
| c-0.63,0.606-1.392,0.912-2.277,0.912c-0.89,0-1.638-0.305-2.245-0.912c-0.607-0.606-0.91-1.355-0.91-2.244V41.422 | |||
| c0-3.038-0.538-5.27-1.614-6.696c-1.074-1.426-2.922-2.138-5.538-2.138c-2.385,0-4.36,0.62-5.927,1.859 | |||
| c-1.565,1.237-2.957,2.862-4.171,4.872v21.036c0,0.889-0.315,1.638-0.946,2.244c-0.631,0.607-1.393,0.912-2.278,0.912 | |||
| c-0.888,0-1.638-0.304-2.244-0.912c-0.608-0.605-0.913-1.354-0.913-2.244V41.422c0-3.038-0.538-5.27-1.611-6.696 | |||
| c-1.076-1.426-2.921-2.138-5.54-2.138c-2.384,0-4.359,0.62-5.925,1.859c-1.566,1.237-2.957,2.862-4.172,4.872v21.036 | |||
| c0,0.889-0.316,1.638-0.946,2.244c-0.631,0.607-1.392,0.912-2.278,0.912C75.684,63.511,74.936,63.207,74.328,62.599z"/> | |||
| <path fill="#FFFFFF" d="M144.094,61.547c-2.707-1.542-4.803-3.728-6.272-6.557c-1.473-2.826-2.206-6.065-2.206-9.712 | |||
| c0-3.645,0.733-6.881,2.206-9.711c1.471-2.827,3.565-5.014,6.272-6.557c2.712-1.542,5.866-2.313,9.473-2.313 | |||
| c3.55,0,6.681,0.771,9.396,2.313c2.709,1.543,4.813,3.729,6.31,6.557c1.496,2.83,2.246,6.066,2.246,9.711 | |||
| c0,3.647-0.75,6.886-2.246,9.712c-1.496,2.829-3.601,5.015-6.31,6.557c-2.715,1.543-5.846,2.313-9.396,2.313 | |||
| C149.961,63.86,146.806,63.09,144.094,61.547z M159.067,56.709c1.752-0.888,3.2-2.291,4.351-4.206 | |||
| c1.144-1.917,1.714-4.35,1.714-7.293c0-2.898-0.57-5.306-1.714-7.223c-1.149-1.917-2.599-3.307-4.351-4.172 | |||
| c-1.754-0.864-3.588-1.297-5.5-1.297c-1.968,0-3.826,0.434-5.576,1.297c-1.756,0.866-3.189,2.256-4.315,4.172 | |||
| c-1.119,1.917-1.682,4.324-1.682,7.223c0,2.943,0.563,5.376,1.682,7.293c1.126,1.916,2.561,3.318,4.315,4.206 | |||
| c1.75,0.888,3.608,1.332,5.576,1.332C155.479,58.041,157.313,57.599,159.067,56.709z"/> | |||
| <path fill="#FFFFFF" d="M179.224,60.706c-0.79-0.563-1.192-1.333-1.192-2.314c0-0.746,0.258-1.402,0.772-1.963 | |||
| c0.514-0.562,1.17-0.842,1.968-0.842c0.42,0,0.84,0.096,1.26,0.281c1.493,0.654,2.991,1.169,4.486,1.544 | |||
| c1.496,0.374,3.181,0.562,5.054,0.562c5.188,0,7.779-1.66,7.779-4.979c0-1.075-0.598-1.894-1.789-2.454 | |||
| c-1.188-0.563-3.142-1.191-5.854-1.893c-2.76-0.655-5.038-1.334-6.84-2.035c-1.799-0.701-3.342-1.764-4.626-3.19 | |||
| c-1.287-1.426-1.928-3.306-1.928-5.645c0-3.272,1.18-5.936,3.543-7.993c2.354-2.059,5.735-3.086,10.134-3.086 | |||
| c3.598,0,6.984,0.585,10.162,1.753c0.658,0.188,1.16,0.539,1.513,1.052c0.346,0.516,0.524,1.051,0.524,1.612 | |||
| c0,0.749-0.271,1.402-0.809,1.963c-0.539,0.562-1.205,0.842-1.994,0.842c-0.236,0-0.539-0.046-0.914-0.141 | |||
| c-2.711-0.841-5.377-1.262-7.993-1.262c-2.526,0-4.502,0.456-5.932,1.368c-1.421,0.91-2.137,2.092-2.137,3.54 | |||
| c0,1.404,0.656,2.431,1.963,3.086c1.311,0.656,3.346,1.286,6.104,1.893c2.758,0.702,5.002,1.392,6.729,2.068 | |||
| c1.734,0.678,3.215,1.741,4.457,3.19c1.237,1.45,1.858,3.39,1.858,5.819c0,2.994-1.184,5.471-3.54,7.435 | |||
| c-2.363,1.963-5.695,2.944-9.993,2.944C187.316,63.86,183.06,62.81,179.224,60.706z"/> | |||
| </g> | |||
| <rect x="73.738" y="87" fill="#D9AB98" width="53" height="4"/> | |||
| </svg> | |||
| @@ -0,0 +1,57 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> | |||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | |||
| <svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | |||
| width="205.523px" height="91px" viewBox="0 0 205.523 91" enable-background="new 0 0 205.523 91" xml:space="preserve"> | |||
| <g> | |||
| <path fill="#333333" d="M11.466,62.599c-1.753-0.841-3.144-2.068-4.173-3.681c-1.026-1.612-1.541-3.472-1.541-5.573 | |||
| c0-3.461,1.367-6.218,4.102-8.277c2.736-2.056,6.743-3.084,12.025-3.084h8.486v-0.562c0-3.084-0.762-5.305-2.28-6.661 | |||
| c-1.521-1.355-3.892-2.032-7.118-2.032c-1.776,0-3.354,0.138-4.732,0.42c-1.379,0.281-2.909,0.701-4.591,1.262 | |||
| c-0.376,0.093-0.68,0.14-0.913,0.14c-0.701,0-1.309-0.257-1.822-0.771c-0.516-0.513-0.77-1.145-0.77-1.892 | |||
| c0-1.264,0.604-2.15,1.82-2.665c3.974-1.684,8.019-2.525,12.131-2.525c3.227,0,5.949,0.656,8.17,1.963 | |||
| c2.221,1.309,3.856,3.005,4.908,5.084c1.052,2.081,1.578,4.337,1.578,6.767v19.844c0,0.888-0.315,1.637-0.947,2.244 | |||
| c-0.631,0.606-1.391,0.912-2.279,0.912c-0.89,0-1.638-0.305-2.243-0.912c-0.607-0.606-0.911-1.355-0.911-2.244v-1.824 | |||
| c-3.461,3.554-7.855,5.33-13.184,5.33C15.124,63.86,13.219,63.44,11.466,62.599z M25.526,56.744 | |||
| c1.916-1.005,3.529-2.254,4.838-3.751v-5.891h-7.645c-7.06,0-10.588,1.848-10.588,5.539c0,1.685,0.572,3.041,1.718,4.067 | |||
| c1.146,1.028,3.051,1.543,5.716,1.543C21.621,58.252,23.609,57.75,25.526,56.744z"/> | |||
| <path fill="#333333" d="M48.734,54.606v-21.74h-4.979c-0.374,0-0.688-0.126-0.944-0.384c-0.26-0.257-0.388-0.573-0.388-0.946 | |||
| c0-0.467,0.211-0.865,0.632-1.193l9.535-9.326c0.42-0.421,0.817-0.631,1.192-0.631c0.374,0,0.689,0.14,0.947,0.42 | |||
| c0.257,0.282,0.385,0.609,0.385,0.982v5.61h7.924c0.794,0,1.447,0.257,1.963,0.77c0.517,0.514,0.771,1.169,0.771,1.964 | |||
| c0,0.748-0.256,1.392-0.771,1.928c-0.516,0.538-1.169,0.805-1.963,0.805h-7.924v21.178c0,1.822,0.433,2.979,1.298,3.472 | |||
| c0.865,0.49,1.95,0.736,3.261,0.736c0.935,0,1.87-0.141,2.806-0.421c0.185-0.046,0.384-0.093,0.594-0.142 | |||
| c0.211-0.043,0.479-0.068,0.809-0.068c0.653,0,1.237,0.246,1.751,0.734c0.516,0.492,0.771,1.088,0.771,1.789 | |||
| c0,1.076-0.538,1.894-1.612,2.455c-1.824,0.84-3.763,1.262-5.818,1.262C52.148,63.86,48.734,60.774,48.734,54.606z"/> | |||
| <path fill="#333333" d="M74.328,62.599c-0.606-0.605-0.912-1.354-0.912-2.244V30.274c0-0.888,0.306-1.648,0.912-2.28 | |||
| c0.607-0.631,1.355-0.946,2.245-0.946c0.887,0,1.646,0.315,2.278,0.946c0.63,0.631,0.946,1.392,0.946,2.28v2.875 | |||
| c1.308-1.87,2.887-3.411,4.733-4.627c1.846-1.216,4.242-1.824,7.188-1.824c2.619,0,4.861,0.702,6.73,2.103 | |||
| c1.87,1.403,3.203,3.109,3.998,5.12c2.898-4.814,7.198-7.223,12.902-7.223c2.617,0,4.804,0.656,6.557,1.963 | |||
| c1.753,1.309,3.05,2.994,3.891,5.05c0.844,2.057,1.264,4.206,1.264,6.45v20.195c0,0.888-0.315,1.637-0.946,2.244 | |||
| c-0.63,0.606-1.392,0.912-2.277,0.912c-0.89,0-1.638-0.305-2.245-0.912c-0.607-0.606-0.91-1.355-0.91-2.244V41.422 | |||
| c0-3.038-0.538-5.27-1.614-6.696c-1.074-1.426-2.922-2.138-5.538-2.138c-2.385,0-4.36,0.62-5.927,1.859 | |||
| c-1.565,1.237-2.957,2.862-4.171,4.872v21.036c0,0.889-0.315,1.638-0.946,2.244c-0.631,0.607-1.393,0.912-2.278,0.912 | |||
| c-0.888,0-1.638-0.304-2.244-0.912c-0.608-0.605-0.913-1.354-0.913-2.244V41.422c0-3.038-0.538-5.27-1.611-6.696 | |||
| c-1.076-1.426-2.921-2.138-5.54-2.138c-2.384,0-4.359,0.62-5.925,1.859c-1.566,1.237-2.957,2.862-4.172,4.872v21.036 | |||
| c0,0.889-0.316,1.638-0.946,2.244c-0.631,0.607-1.392,0.912-2.278,0.912C75.684,63.511,74.936,63.207,74.328,62.599z"/> | |||
| <path fill="#333333" d="M144.094,61.547c-2.707-1.542-4.803-3.728-6.272-6.557c-1.473-2.826-2.206-6.065-2.206-9.712 | |||
| c0-3.645,0.733-6.881,2.206-9.711c1.471-2.827,3.565-5.014,6.272-6.557c2.712-1.542,5.866-2.313,9.473-2.313 | |||
| c3.55,0,6.681,0.771,9.396,2.313c2.709,1.543,4.813,3.729,6.31,6.557c1.496,2.83,2.246,6.066,2.246,9.711 | |||
| c0,3.647-0.75,6.886-2.246,9.712c-1.496,2.829-3.601,5.015-6.31,6.557c-2.715,1.543-5.846,2.313-9.396,2.313 | |||
| C149.961,63.86,146.806,63.09,144.094,61.547z M159.067,56.709c1.752-0.888,3.2-2.291,4.351-4.206 | |||
| c1.144-1.917,1.714-4.35,1.714-7.293c0-2.898-0.57-5.306-1.714-7.223c-1.149-1.917-2.599-3.307-4.351-4.172 | |||
| c-1.754-0.864-3.588-1.297-5.5-1.297c-1.968,0-3.826,0.434-5.576,1.297c-1.756,0.866-3.189,2.256-4.315,4.172 | |||
| c-1.119,1.917-1.682,4.324-1.682,7.223c0,2.943,0.563,5.376,1.682,7.293c1.126,1.916,2.561,3.318,4.315,4.206 | |||
| c1.75,0.888,3.608,1.332,5.576,1.332C155.479,58.041,157.313,57.599,159.067,56.709z"/> | |||
| <path fill="#333333" d="M179.224,60.706c-0.79-0.563-1.192-1.333-1.192-2.314c0-0.746,0.258-1.402,0.772-1.963 | |||
| c0.514-0.562,1.17-0.842,1.968-0.842c0.42,0,0.84,0.096,1.26,0.281c1.493,0.654,2.991,1.169,4.486,1.544 | |||
| c1.496,0.374,3.181,0.562,5.054,0.562c5.188,0,7.779-1.66,7.779-4.979c0-1.075-0.598-1.894-1.789-2.454 | |||
| c-1.188-0.563-3.142-1.191-5.854-1.893c-2.76-0.655-5.038-1.334-6.84-2.035c-1.799-0.701-3.342-1.764-4.626-3.19 | |||
| c-1.287-1.426-1.928-3.306-1.928-5.645c0-3.272,1.18-5.936,3.543-7.993c2.354-2.059,5.735-3.086,10.134-3.086 | |||
| c3.598,0,6.984,0.585,10.162,1.753c0.658,0.188,1.16,0.539,1.513,1.052c0.346,0.516,0.524,1.051,0.524,1.612 | |||
| c0,0.749-0.271,1.402-0.809,1.963c-0.539,0.562-1.205,0.842-1.994,0.842c-0.236,0-0.539-0.046-0.914-0.141 | |||
| c-2.711-0.841-5.377-1.262-7.993-1.262c-2.526,0-4.502,0.456-5.932,1.368c-1.421,0.91-2.137,2.092-2.137,3.54 | |||
| c0,1.404,0.656,2.431,1.963,3.086c1.311,0.656,3.346,1.286,6.104,1.893c2.758,0.702,5.002,1.392,6.729,2.068 | |||
| c1.734,0.678,3.215,1.741,4.457,3.19c1.237,1.45,1.858,3.39,1.858,5.819c0,2.994-1.184,5.471-3.54,7.435 | |||
| c-2.363,1.963-5.695,2.944-9.993,2.944C187.316,63.86,183.06,62.81,179.224,60.706z"/> | |||
| </g> | |||
| <rect x="73.738" y="87" fill="#D9AB98" width="53" height="4"/> | |||
| </svg> | |||
| @@ -0,0 +1,118 @@ | |||
| // spawntree | |||
| // overwriting date picker function | |||
| let spwnIncludedDays = [0,2,3,4,5,6]; | |||
| let spawnDateInputValue = ""; | |||
| let fp; | |||
| const inputSameDayDelivery = $("#shippingMethod67f8c7d3ecdb4ad7802bf8eb55c9b13b"); | |||
| const inputShopPickup = $("#shippingMethod0f44c72f7560450caf061922daeb1602"); | |||
| const inputDPD = $("#shippingMethod8c6d913e29c14c3cb3c6429724efaab8"); | |||
| $(document).ready(function() { | |||
| let dpInput = $(".confirm-delivery-date #dtgs-datepicker-inputfield"); | |||
| if (dpInput.length) { | |||
| fp = document.querySelector("#dtgs-datepicker-inputfield")._flatpickr; | |||
| dpInput.prop('disabled', true); | |||
| $("<div id='spwn-delivery'><p></p><div class='spwn-delivery--time'></div></div>").insertAfter(".confirm-delivery-date"); | |||
| fp.config.onChange.push(function() { | |||
| manipulateDateInputValue(); | |||
| }); | |||
| // If Austria and same day delivery is checked change to DPD | |||
| if ($(".confirm-address-shipping").data("iso") === "AT") { | |||
| inputDPD.attr('checked', true).trigger("click"); | |||
| // No same day delivery | |||
| inputSameDayDelivery.parents(".shipping-method").hide(); | |||
| // No shop | |||
| inputShopPickup.parents(".shipping-method").hide(); | |||
| } | |||
| // Call changeDelivery | |||
| $("[name='shippingMethodId']").on('change', () => { | |||
| changeDelivery(fp); | |||
| }); | |||
| changeDelivery(fp); | |||
| } | |||
| }); | |||
| function manipulateDateInputValue() { | |||
| spawnDateInputValue = $(".confirm-delivery-date #dtgs-datepicker-inputfield").val(); | |||
| if (inputSameDayDelivery.is(':checked')) { | |||
| // If same day delivery is checked, select time | |||
| $("#spwn-delivery .spwn-delivery--time span.active").trigger("click"); | |||
| } | |||
| } | |||
| function changeDelivery(fp) { | |||
| $("body").on("click", "#spwn-delivery .spwn-delivery--time span", function() { | |||
| $("#spwn-delivery .spwn-delivery--time span").removeClass("active"); | |||
| $(this).addClass("active"); | |||
| $(".confirm-delivery-date #dtgs-datepicker-inputfield").val(spawnDateInputValue + " " + $(this).text()); | |||
| }); | |||
| if ($(".confirm-address-shipping").data("iso") !== "AT") { | |||
| if (inputShopPickup.is(':checked')) { | |||
| // Abholung im Ladengeschäft | |||
| console.log("Abholung"); | |||
| $(".confirm-delivery-date #dtgs-datepicker-inputfield").val('Abholung im Ladengeschäft'); | |||
| $(".confirm-delivery-date").hide(); | |||
| $("#spwn-delivery p").text("Die bestellten Produkte stehen zur Abholung in unserem Ladengeschäft in Hamburg für Sie bereit."); | |||
| } else if (inputSameDayDelivery.is(':checked')) { | |||
| // Abendzustellung | |||
| console.log("Abendzustellung"); | |||
| $(".confirm-delivery-date #dtgs-datepicker-inputfield").val(''); | |||
| spwnIncludedDays = [1,2,3,4,5]; | |||
| setIncludedDays("evening", fp, 0); | |||
| $("#spwn-delivery p").text("Abendzustellung gewählt. Bitte wählen Sie nun eine Wunsch-Zeit:"); | |||
| $("#spwn-delivery .spwn-delivery--time").append("<span class='active'>18 - 21 Uhr</span><span>20 - 23 Uhr</span>"); | |||
| if (spawnDateInputValue === "" || spawnDateInputValue.indexOf("Uhr") === -1) { | |||
| manipulateDateInputValue(); | |||
| } | |||
| } else { | |||
| // DPD | |||
| console.log("DPD"); | |||
| spwnIncludedDays = [2,3,4,5,6]; | |||
| setIncludedDays("dpd", fp, 1); | |||
| $("#spwn-delivery p").text("DPD gewählt. Die Zustellung erfolgt zwischen 7 und 13 Uhr."); | |||
| } | |||
| } else { | |||
| console.log("DPD AT"); | |||
| spwnIncludedDays = [3,4]; | |||
| setIncludedDays("dpd", fp, 2); | |||
| $("#spwn-delivery p").text("DPD gewählt. Die Zustellung erfolgt zwischen 7 und 18 Uhr."); | |||
| } | |||
| } | |||
| function setIncludedDays(delivery, fp, addDays) { | |||
| let spwnDateTemp = new Date(); | |||
| spwnDateTemp.setDate(spwnDateTemp.getDate() + addDays); | |||
| let spwnTime = parseInt(spwnDateTemp.getHours() + "" + spwnDateTemp.getMinutes()); | |||
| if (delivery === "evening" && spwnTime > 1300) { | |||
| spwnDateTemp.setDate(spwnDateTemp.getDate() + 1); | |||
| } else if (delivery === "dpd" && spwnTime > 1400) { | |||
| spwnDateTemp.setDate(spwnDateTemp.getDate() + 1); | |||
| } | |||
| let spwnDate = fp.formatDate(spwnDateTemp, "d.m.Y"); | |||
| fp.set("minDate", spwnDate); | |||
| fp.set("enable", [ | |||
| function(date) { | |||
| let day = date.getDate(); | |||
| let month = date.getMonth(); | |||
| month = month + 1; | |||
| if((String(day)).length===1) | |||
| day='0'+day; | |||
| if((String(month)).length===1) | |||
| month='0'+month; | |||
| let formattedDate = day + '.' + month + '.' + date.getFullYear(); | |||
| //Excluded Dates | |||
| if($.inArray(formattedDate, dtgsDeliveryDateExcludedDates) > -1) { | |||
| return false; | |||
| } | |||
| // Datum auf Bereich Montag = 0, Sonntag = 7 bringen | |||
| return spwnIncludedDays.indexOf(((date.getDay() + 6) % 7) + 1) !== -1; | |||
| } | |||
| ]); | |||
| } | |||
| @@ -0,0 +1,7 @@ | |||
| @import 'layout/header'; | |||
| @import 'component/card'; | |||
| @import 'component/cms-block'; | |||
| @import 'component/cms-element'; | |||
| @import 'component/product-box'; | |||
| @import 'page/checkout/cart'; | |||
| @import 'page/product-detail/product-detail'; | |||
| @@ -0,0 +1,195 @@ | |||
| .card-title:not(.cart-table-header) { | |||
| font-size: 22px; | |||
| line-height: 24px; | |||
| color: #222; | |||
| font-weight: 500; | |||
| border: none; | |||
| } | |||
| .cart-table-header { | |||
| color: #222; | |||
| } | |||
| .card-actions { | |||
| .btn { | |||
| font-size: 16px; | |||
| line-height: 18px; | |||
| color: $sw-color-brand-primary; | |||
| border: 2px solid $sw-color-brand-primary; | |||
| text-transform: uppercase; | |||
| letter-spacing: 1px; | |||
| padding: 14px 30px; | |||
| &:hover { | |||
| background-color: $sw-color-brand-primary; | |||
| color: #fff; | |||
| } | |||
| } | |||
| } | |||
| .cart-item-img { | |||
| border: none; | |||
| padding: 0; | |||
| object-fit: cover; | |||
| } | |||
| .cart-item-remove { | |||
| .btn { | |||
| background-color: transparent; | |||
| border: none; | |||
| transform: translateY(-8px); | |||
| .icon { | |||
| width: 21px; | |||
| height: 21px; | |||
| svg { | |||
| color: $sw-color-brand-primary; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .cart-offcanvas { | |||
| .offcanvas-close { | |||
| min-height: 54px; | |||
| background: #E9F4FC; | |||
| border-color: #E9F4FC; | |||
| color: $sw-color-brand-primary; | |||
| font-size: 16px; | |||
| font-weight: 600; | |||
| letter-spacing: 1.6px; | |||
| line-height: 18px; | |||
| text-transform: uppercase; | |||
| .icon { | |||
| color: $sw-color-brand-primary; | |||
| } | |||
| } | |||
| .offcanvas-cart-header { | |||
| font-size: 44px; | |||
| font-weight: bold; | |||
| letter-spacing: 0; | |||
| line-height: 44px; | |||
| font-weight: normal; | |||
| .offcanvas-cart-header-count { | |||
| color: #222222; | |||
| font-family: $sw-font-family-base; | |||
| font-size: 15px; | |||
| letter-spacing: 0; | |||
| line-height: 20px; | |||
| font-weight: normal; | |||
| } | |||
| } | |||
| .offcanvas-cart-items { | |||
| .spwn-customized-products { | |||
| margin-bottom: 20px; | |||
| display: flex; | |||
| grid-gap: 15px; | |||
| padding: 14px 18px 1px; | |||
| border-radius: 3px; | |||
| background: rgba(#86B04B, 0.15); | |||
| color: #86B04B; | |||
| .icon { | |||
| min-width: 22px; | |||
| align-self: auto; | |||
| color: #86B04B; | |||
| } | |||
| } | |||
| .cart-item { | |||
| &.is-discountable-item { | |||
| border-radius: 3px; | |||
| background-color: #E9F4FC; | |||
| } | |||
| .cart-item-img { | |||
| border: none; | |||
| } | |||
| .cart-item-remove { | |||
| .btn-light { | |||
| border: none; | |||
| background: transparent; | |||
| transform: translateY(6px); | |||
| .icon { | |||
| width: 24px; | |||
| height: 24px; | |||
| color: $sw-color-brand-primary; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .spwn-add-customized-products { | |||
| .spwn-add-customized-products-detail { | |||
| position: relative; | |||
| margin: 55px 20px 0; | |||
| padding: 16px 21px; | |||
| border: 2px solid $sw-color-brand-primary; | |||
| border-radius: 3px; | |||
| font-size: 16px; | |||
| font-weight: 500; | |||
| letter-spacing: 1.6px; | |||
| line-height: 18px; | |||
| text-align: center; | |||
| text-transform: uppercase; | |||
| color: $sw-color-brand-primary; | |||
| display: block; | |||
| &:hover { | |||
| text-decoration: none; | |||
| background-color: $sw-color-brand-primary; | |||
| color: #fff; | |||
| } | |||
| &:before { | |||
| position: absolute; | |||
| top: -55px; | |||
| left: 50%; | |||
| transform: translateX(-50%); | |||
| content: ''; | |||
| display: inline-block; | |||
| width: 50px; | |||
| height: 50px; | |||
| background: linear-gradient($sw-color-brand-primary 0 0), linear-gradient($sw-color-brand-primary 0 0); | |||
| background-position: center; | |||
| background-size: 50% 2px, 2px 50%; | |||
| background-repeat: no-repeat; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .offcanvas-cart-actions { | |||
| .js-offcanvas-cart-promotion { | |||
| .form-control { | |||
| padding-left: 0; | |||
| border-bottom: 2px solid $sw-color-brand-primary; | |||
| } | |||
| .btn { | |||
| background: transparent; | |||
| border: none; | |||
| border-bottom: 2px solid $sw-color-brand-primary; | |||
| padding-right: 0; | |||
| .icon { | |||
| color: $sw-color-brand-primary; | |||
| } | |||
| } | |||
| } | |||
| .btn-primary { | |||
| margin-top: 36px; | |||
| background: transparent; | |||
| color: $sw-color-brand-primary; | |||
| font-size: 16px; | |||
| font-weight: 600; | |||
| letter-spacing: 1px; | |||
| line-height: 18px; | |||
| text-align: center; | |||
| text-transform: uppercase; | |||
| border: 2px solid $sw-color-brand-primary; | |||
| padding: 12px 12px; | |||
| &:hover { | |||
| background: $sw-color-brand-primary; | |||
| color: #fff; | |||
| } | |||
| } | |||
| .btn-link { | |||
| margin-top: 20px; | |||
| font-size: 16px; | |||
| font-weight: 600; | |||
| letter-spacing: 1.6px; | |||
| line-height: 18px; | |||
| text-transform: uppercase; | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,44 @@ | |||
| .aku-cms-factory-element { | |||
| height: 100%; | |||
| .hero-icons { | |||
| display: flex; | |||
| justify-content: center; | |||
| grid-gap: 50px; | |||
| .dicon { | |||
| width: 100%; | |||
| max-width: 120px; | |||
| text-align: center; | |||
| .icon-title { | |||
| position: relative; | |||
| display: inline-block; | |||
| border: 2px solid #222; | |||
| padding: 10px 12px; | |||
| text-align: center; | |||
| &:before { | |||
| content: ''; | |||
| position: absolute; | |||
| width: 0; | |||
| height: 0; | |||
| border-left: 10px solid transparent; | |||
| border-right: 10px solid transparent; | |||
| border-top: 10px solid #222; | |||
| border-bottom: 10px solid transparent; | |||
| right: 11%; | |||
| bottom: -21px; | |||
| } | |||
| &:after { | |||
| content: ""; | |||
| width: 0px; | |||
| height: 0px; | |||
| position: absolute; | |||
| border-left: 10px solid transparent; | |||
| border-right: 10px solid transparent; | |||
| border-top: 10px solid #fff; | |||
| border-bottom: 10px solid transparent; | |||
| right: 11%; | |||
| bottom: -18px; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,25 @@ | |||
| .cms-element-product-listing-actions { | |||
| .custom-select { | |||
| border-bottom-color: $sw-color-brand-primary; | |||
| border-bottom-width: 2px; | |||
| font-size: 18px; | |||
| } | |||
| } | |||
| .cms-element-product-listing { | |||
| .textbox { | |||
| background-color: #E9F4FC; | |||
| border-radius: 3px; | |||
| padding-top: 40px; | |||
| padding-left: 40px; | |||
| padding-right: 15%; | |||
| padding-bottom: 40px; | |||
| height: 100%; | |||
| h2 { | |||
| margin-bottom: 24px; | |||
| } | |||
| a.btn { | |||
| margin: 20px 0; | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,34 @@ | |||
| .product-box { | |||
| &.highlight { | |||
| background-color: #E9F4FC; | |||
| } | |||
| .product-name { | |||
| font-size: 18px; | |||
| line-height: 20px; | |||
| height: auto; | |||
| } | |||
| .product-info { | |||
| min-height: 110px; | |||
| } | |||
| .product-price-info { | |||
| position: absolute; | |||
| width: 100%; | |||
| bottom: 16px; | |||
| margin: 0; | |||
| line-height: 16px; | |||
| .product-price-wrapper { | |||
| font-size: 15px; | |||
| .product-price { | |||
| color: $sw-color-brand-primary; | |||
| font-size: 18px; | |||
| } | |||
| } | |||
| } | |||
| .product-description { | |||
| height: auto; | |||
| } | |||
| .product-price-unit, | |||
| .product-cheapest-price { | |||
| display: none; | |||
| } | |||
| } | |||
| @@ -0,0 +1,54 @@ | |||
| .header-main { | |||
| .header-cart-btn { | |||
| .header-cart-total { | |||
| margin-right: 0; | |||
| } | |||
| } | |||
| } | |||
| .header-actions-col { | |||
| @media (min-width: 992px) { | |||
| position: absolute; | |||
| top: 0; | |||
| right: 0; | |||
| } | |||
| } | |||
| .header-nav-col { | |||
| max-width: 950px; | |||
| margin-top: 45px; | |||
| margin-left: auto; | |||
| } | |||
| .header-single-line { | |||
| .navigation-flyout { | |||
| top: 36px; | |||
| &.is-open { | |||
| @media (min-width: 992px) { | |||
| padding-top: 0; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .nav-header > .container { | |||
| padding-left: 0; | |||
| padding-right: 0; | |||
| } | |||
| .main-navigation-menu { | |||
| justify-content: space-between; | |||
| } | |||
| .main-navigation-divider { | |||
| display: none; | |||
| } | |||
| .main-navigation-link { | |||
| font-size: 16px; | |||
| font-weight: 500; | |||
| letter-spacing: 1.6px; | |||
| line-height: 18px; | |||
| text-transform: uppercase; | |||
| padding: 0; | |||
| } | |||
| @@ -0,0 +1,77 @@ | |||
| /* | |||
| Override variable defaults | |||
| ================================================== | |||
| This file is used to override default SCSS variables from the Shopware Storefront or Bootstrap. | |||
| Because of the !default flags, theme variable overrides have to be declared beforehand. | |||
| https://getbootstrap.com/docs/4.0/getting-started/theming/#variable-defaults | |||
| */ | |||
| body { | |||
| background: #fff; | |||
| } | |||
| h1 { | |||
| line-height: 54px !important; | |||
| } | |||
| .cms-block { | |||
| .category { | |||
| font-size: 16px; | |||
| font-weight: 500; | |||
| letter-spacing: 1.6px; | |||
| line-height: 18px; | |||
| text-transform: uppercase; | |||
| ; | |||
| } | |||
| } | |||
| .sv-vbadge-vb3fx { | |||
| z-index: 999 !important; | |||
| } | |||
| .product-image.is-standard { | |||
| object-fit: cover !important; | |||
| font-family: "object-fit: cover;" !important; | |||
| } | |||
| .btn-outline-primary { | |||
| border: 2px solid #33548C !important; | |||
| border-radius: 3px; | |||
| font-size: 16px; | |||
| font-weight: 600; | |||
| letter-spacing: 1px; | |||
| text-transform: uppercase; | |||
| padding: 5px 32px !important; | |||
| } | |||
| input.custom-number[type=number] { | |||
| border-bottom: 2px solid $sw-color-brand-primary; | |||
| } | |||
| .product-wishlist .icon-wishlist svg { | |||
| color: $sw-color-brand-primary; | |||
| } | |||
| @media (min-width: 992px) { | |||
| .is-act-confirmpage { | |||
| .checkout { | |||
| .checkout-main { | |||
| margin-left: 0 !important; | |||
| flex: 0 0 100% !important; | |||
| max-width: 100% !important; | |||
| } | |||
| .checkout-additional { | |||
| margin-left: 0 !important; | |||
| flex: 0 0 66.6666666667% !important; | |||
| max-width: 66.6666666667% !important; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @media (min-width: 576px) { | |||
| .modal-dialog { | |||
| max-width: 800px !important; | |||
| } | |||
| } | |||
| @@ -0,0 +1,105 @@ | |||
| .is-act-cartpage { | |||
| .checkout { | |||
| .spwn-add-customized-products { | |||
| width: 100%; | |||
| .spwn-add-customized-products-detail { | |||
| position: relative; | |||
| margin: 55px 20px 0; | |||
| padding: 26px 21px; | |||
| border: 2px solid $sw-color-brand-primary; | |||
| border-radius: 3px; | |||
| font-size: 16px; | |||
| font-weight: 500; | |||
| letter-spacing: 1.6px; | |||
| line-height: 18px; | |||
| text-align: center; | |||
| text-transform: uppercase; | |||
| color: $sw-color-brand-primary; | |||
| display: block; | |||
| span { | |||
| display: block; | |||
| max-width: 415px; | |||
| margin: 0 auto; | |||
| } | |||
| &:hover { | |||
| text-decoration: none; | |||
| background-color: $sw-color-brand-primary; | |||
| color: #fff; | |||
| } | |||
| &:before { | |||
| position: absolute; | |||
| top: -55px; | |||
| left: 50%; | |||
| transform: translateX(-50%); | |||
| content: ''; | |||
| display: inline-block; | |||
| width: 50px; | |||
| height: 50px; | |||
| background: linear-gradient($sw-color-brand-primary 0 0), linear-gradient($sw-color-brand-primary 0 0); | |||
| background-position: center; | |||
| background-size: 50% 2px, 2px 50%; | |||
| background-repeat: no-repeat; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .checkout-aside-container { | |||
| background-color: #E9F4FC; | |||
| padding-top: 1rem; | |||
| padding-bottom: 2rem; | |||
| a[data-toggle="modal"] { | |||
| color: #222; | |||
| text-decoration: underline; | |||
| &:hover { | |||
| text-decoration: none; | |||
| } | |||
| } | |||
| .checkout-aside-summary-total { | |||
| border-top: 1px solid #B1C3D9; | |||
| } | |||
| dd.checkout-aside-summary-total { | |||
| color: $sw-color-brand-primary; | |||
| } | |||
| .checkout-aside-action { | |||
| padding-left: 1rem; | |||
| padding-right: 1rem; | |||
| .cart-add-promotion { | |||
| padding-left: 0; | |||
| border-bottom: 2px solid $sw-color-brand-primary; | |||
| .form-control { | |||
| font-size: 18px; | |||
| padding-left: 0; | |||
| &::-webkit-input-placeholder { | |||
| color: #222; | |||
| } | |||
| } | |||
| } | |||
| .btn { | |||
| background: transparent; | |||
| border: none; | |||
| padding-right: 0; | |||
| .icon { | |||
| color: $sw-color-brand-primary; | |||
| } | |||
| } | |||
| .btn-primary { | |||
| margin-top: 36px; | |||
| background: transparent; | |||
| color: $sw-color-brand-primary; | |||
| font-size: 16px; | |||
| font-weight: 600; | |||
| letter-spacing: 1px; | |||
| line-height: 18px; | |||
| text-align: center; | |||
| text-transform: uppercase; | |||
| border: 2px solid $sw-color-brand-primary; | |||
| padding: 12px 12px; | |||
| &:hover { | |||
| background: $sw-color-brand-primary; | |||
| color: #fff; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,99 @@ | |||
| .is-ctl-product { | |||
| .product-detail-media { | |||
| padding-right: 40px; | |||
| .gallery-slider-image { | |||
| width: 100%; | |||
| } | |||
| .aku-cms-factory-element { | |||
| display: flex; | |||
| .thumbnail-container { | |||
| max-width: 75px; | |||
| margin-right: 25px; | |||
| figure { | |||
| margin: 10px 0; | |||
| img { | |||
| max-width: 55px; | |||
| margin-bottom: 10px; | |||
| } | |||
| figcaption { | |||
| font-family: $sw-font-family-base; | |||
| font-size: 15px; | |||
| line-height: 20px; | |||
| color: #222; | |||
| text-align: center; | |||
| } | |||
| } | |||
| } | |||
| .product-info { | |||
| width: 100%; | |||
| figure { | |||
| position: relative; | |||
| margin-top: 50px; | |||
| img { | |||
| width: 100%; | |||
| } | |||
| figcaption { | |||
| position: absolute; | |||
| left: 10px; | |||
| bottom: 10px; | |||
| background-color: #fff; | |||
| font-family: $sw-font-family-headline; | |||
| font-size: 60px; | |||
| line-height: 54px; | |||
| color: $sw-color-brand-primary; | |||
| padding: 15px 20px; | |||
| } | |||
| &:first-child { | |||
| margin-top: 0; | |||
| } | |||
| } | |||
| p { | |||
| margin-bottom: 0.5rem; | |||
| } | |||
| a[data-toggle="modal"] { | |||
| text-decoration: underline; | |||
| cursor: pointer; | |||
| &:hover { | |||
| text-decoration: none; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .product-detail-buy { | |||
| border-radius: 3px; | |||
| background-color: #E9F4FC; | |||
| padding-top: 40px; | |||
| .product-detail-name { | |||
| font-size: 60px; | |||
| line-height: 54px; | |||
| color: $sw-color-brand-primary; | |||
| } | |||
| .product-detail-price { | |||
| color: $sw-color-brand-primary; | |||
| } | |||
| .product-detail-tax-link { | |||
| color: #222; | |||
| text-decoration: underline; | |||
| &:hover { | |||
| text-decoration: none; | |||
| } | |||
| } | |||
| .btn-primary { | |||
| background: transparent; | |||
| color: $sw-color-brand-primary; | |||
| font-size: 16px; | |||
| font-weight: 600; | |||
| letter-spacing: 1px; | |||
| line-height: 18px; | |||
| text-align: center; | |||
| text-transform: uppercase; | |||
| border: 2px solid $sw-color-brand-primary; | |||
| padding: 12px 12px; | |||
| &:hover { | |||
| background: $sw-color-brand-primary; | |||
| color: #fff; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,45 @@ | |||
| <?xml version="1.0" encoding="utf-8" ?> | |||
| <cms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/shopware/platform/trunk/src/Core/Framework/App/Cms/Schema/cms-1.0.xsd"> | |||
| <blocks> | |||
| <block> | |||
| <!-- A unique technical name for your block. We recommend to use a shorthand prefix for your company, e.g. "Swag" for shopware AG. --> | |||
| <name>swag-gallery-buybox-abnehmplan</name> | |||
| <!-- The category your block is associated with. See the XSD for available categories. --> | |||
| <category>commerce</category> | |||
| <!-- Your block's label which will be shown in the CMS module in the Administration. --> | |||
| <label>Gallery and buybox for weight loss plan products</label> | |||
| <label lang="de-DE">Galerie und Buybox für Abnehmplan-Produkte</label> | |||
| <!-- The slots that your block holds which again hold CMS elements. --> | |||
| <slots> | |||
| <!-- A slot requires a unique name and a type which refers to the CMS element it shows. Right now you can only use the CMS elements provided by Shopware but at a later point you will be able to add custom elements too. --> | |||
| <slot name="left" type="text"> | |||
| <!-- The slot requires some basic configuration. The following config-value elements highly depend on which element the slot holds. --> | |||
| <config> | |||
| <!-- The following config-value will be interpreted as 'verticalAlign: { source: "static", value: "top"}' in the JavaScript. --> | |||
| <config-value name="vertical-align" source="static" value="top"/> | |||
| </config> | |||
| </slot> | |||
| <slot name="right" type="image"> | |||
| <config> | |||
| <config-value name="display-mode" source="static" value="auto"/> | |||
| <config-value name="vertical-align" source="static" value="top"/> | |||
| </config> | |||
| </slot> | |||
| </slots> | |||
| <!-- Each block comes with a default configuration which is pre-filled and customizable when adding a block to a section in the CMS module in the Administration. --> | |||
| <default-config> | |||
| <margin-top>20px</margin-top> | |||
| <margin-right>20px</margin-right> | |||
| <margin-bottom>20px</margin-bottom> | |||
| <margin-left>20px</margin-left> | |||
| <!-- The sizing mode of your block. Allowed values are "boxed" or "full_width". --> | |||
| <sizing-mode>boxed</sizing-mode> | |||
| </default-config> | |||
| </block> | |||
| </blocks> | |||
| </cms> | |||
| @@ -0,0 +1,9 @@ | |||
| <div class="sw-cms-preview-swag-image-text-reversed"> | |||
| <div> | |||
| <h2>Lorem ipsum dolor</h2> | |||
| <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr.</p> | |||
| </div> | |||
| <!-- Alternatively you might e.g. also use a base64 encoded preview image instead of an external resource. --> | |||
| <img src="https://example.com/preview.jpg" alt="Preview image"> | |||
| </div> | |||
| @@ -0,0 +1,35 @@ | |||
| /* | |||
| * Styling of your block preview in the CMS sidebar | |||
| */ | |||
| .sw-cms-preview-swag-image-text-reversed { | |||
| display: grid; | |||
| grid-template-columns: 1fr 1fr; | |||
| grid-column-gap: 20px; | |||
| padding: 15px; | |||
| } | |||
| /* | |||
| * Styling of your block in the CMS editor | |||
| * Pattern: sw-cms-block-${block.name}-component | |||
| */ | |||
| .sw-cms-block-swag-image-text-reversed-component { | |||
| display: grid; | |||
| grid-template-columns: repeat(auto-fit, minmax(195px, 1fr)); | |||
| grid-gap: 40px; | |||
| } | |||
| /* | |||
| * Each slot will have an additional class | |||
| * Pattern: sw-cms-slot-${slot.name} | |||
| */ | |||
| .sw-cms-block-swag-image-text-reversed-component .sw-cms-slot-left { | |||
| } | |||
| /* | |||
| * Each slot will have an additional class | |||
| * Pattern: sw-cms-slot-${slot.name} | |||
| */ | |||
| .sw-cms-block-swag-image-text-reversed-component .sw-cms-slot-right { | |||
| } | |||
| @@ -0,0 +1,40 @@ | |||
| {% block block_gallery_buybox %} | |||
| {% block block_gallery_buybox_column_left %} | |||
| {% set element = block.slots.getSlot('left') %} | |||
| {% set config = element.fieldConfig.elements %} | |||
| <div class="col-lg-7 product-detail-media" data-cms-element-id="{{ element.id }}"> | |||
| {% block block_gallery_buybox_column_left_inner %} | |||
| {% sw_include "@Storefront/storefront/element/cms-element-" ~ element.type ~ ".html.twig" ignore missing | |||
| with { | |||
| 'isProduct': config.sliderItems.value == 'product.media' and config.sliderItems.source == 'mapped' | |||
| } %} | |||
| {% endblock %} | |||
| </div> | |||
| {% endblock %} | |||
| {% block block_gallery_buybox_column_right %} | |||
| {% set element = block.slots.getSlot('right') %} | |||
| <div class="col-lg-5 product-detail-buy js-sticky" data-sticky-buybox="true"> | |||
| {# ... add headline here #} | |||
| {% block page_product_detail_headline %} | |||
| <div class="row product-detail-headline"> | |||
| {% sw_include '@Storefront/storefront/page/product-detail/headline.html.twig' %} | |||
| </div> | |||
| {% endblock %} | |||
| {# ... add short description #} | |||
| {% block zen_page_product_detail_short_description %} | |||
| {% if page.product.translated.metaDescription and theme_config('zen-product-details-short-description') %} | |||
| <div class="product-detail-short-description"> | |||
| {{ page.product.translated.metaDescription|raw }} | |||
| </div> | |||
| {% endif %} | |||
| {% endblock %} | |||
| {% block block_gallery_buybox_column_right_inner %} | |||
| {% sw_include "@Storefront/storefront/element/cms-element-" ~ element.type ~ ".html.twig" ignore missing %} | |||
| {% endblock %} | |||
| </div> | |||
| {% endblock %} | |||
| {% endblock %} | |||
| @@ -0,0 +1,21 @@ | |||
| {% sw_extends '@Storefront/storefront/component/buy-widget/buy-widget.html.twig' %} | |||
| {% block buy_widget_price %} | |||
| <div class="product-detail-price-container"> | |||
| {% if page.product.translated.customFields.deposittype %} | |||
| <div class="product-detail-deposittype"> | |||
| {{ page.product.translated.customFields.deposittype }} | |||
| </div> | |||
| {% endif %} | |||
| {{ parent() }} | |||
| {% if page.product.translated.customFields.deposit %} | |||
| {% set deposit = page.product.translated.customFields.deposit|currency %} | |||
| <div class="product-detail-deposit"> | |||
| {{ "FlowsiteDepositSystemBasic.plusDeposit"|trans({ | |||
| '%deposit%': deposit | |||
| })|sw_sanitize }} | |||
| </div> | |||
| {% endif %} | |||
| </div> | |||
| {% endblock %} | |||
| @@ -0,0 +1,74 @@ | |||
| {% sw_extends '@Storefront/storefront/component/checkout/offcanvas-cart.html.twig' %} | |||
| {# Start added by spawntree #} | |||
| {% block component_offcanvas_cart_items %} | |||
| {% set customizedProductsCount = 0 %} | |||
| {% set customizedProductsCountTemp = 0 %} | |||
| {% set addCustomizedProducts = 0 %} | |||
| {# copy from SpnoSortBasket #} | |||
| {% set sortBasketConfig = context.extensions.SpnoSortBasket %} | |||
| {% for lineItem in page.cart.lineItems %} | |||
| {% if lineItem.payload is defined and lineItem.payload.customFields is defined and | |||
| lineItem.payload.customFields.spwn_discountable_box is defined %} | |||
| {% set customizedProductsCount = customizedProductsCount + lineItem.quantity %} | |||
| {% endif %} | |||
| {% endfor %} | |||
| <div class="offcanvas-cart-items"> | |||
| {# spawntree start #} | |||
| {% if customizedProductsCount == 1 || customizedProductsCount == 2 %} | |||
| <div class="spwn-customized-products"> | |||
| {% sw_icon 'checkmark-circle' %} | |||
| <div class="spwn-customized-products--text"> | |||
| {% if customizedProductsCount == 1 %} | |||
| <p>Ihr Abnehmplan wurde erfolgreich zum Warenkorb hinzugefügt – ein guter Start!</p> | |||
| <p>Wählen Sie bis zu 2 weitere Pläne für Ihr optimales Abnehmprogramm und sparen Sie ab 150 € Bestellsumme die Versandkosten.</p> | |||
| {% elseif customizedProductsCount == 2 %} | |||
| <p>Ihr zweiter Abnehmplan wurde zum Warenkorb hinzugefügt - Sie sparen die Versandkosten!</p> | |||
| <p>Wählen Sie einen weiteren Plan für Ihr optimales, mehrwöchiges Abnehmprogramm.</p> | |||
| {% endif %} | |||
| </div> | |||
| </div> | |||
| {% endif %} | |||
| {# spawntree end #} | |||
| {% for lineItem in page.cart.lineItems %} | |||
| {# spawntree start #} | |||
| {% if lineItem.payload.customFields.spwn_discountable_box %} | |||
| {% if lineItem.payload is defined and lineItem.payload.customFields is defined and | |||
| lineItem.payload.customFields.spwn_discountable_box is defined and customizedProductsCount < 3 %} | |||
| {% set customizedProductsCountTemp = customizedProductsCountTemp + lineItem.quantity %} | |||
| {% if customizedProductsCountTemp == customizedProductsCount %} | |||
| {% set addCustomizedProducts = customizedProductsCount %} | |||
| {% endif %} | |||
| {% endif %} | |||
| {% block component_offcanvas_cart_item %} | |||
| {% sw_include '@Storefront/storefront/component/checkout/offcanvas-item.html.twig' with { | |||
| data: { | |||
| addCustomizedProducts: addCustomizedProducts | |||
| } | |||
| } %} | |||
| {% endblock %} | |||
| {% endif %} | |||
| {# spawntree end #} | |||
| {% endfor %} | |||
| {% set addCustomizedProducts = 0 %} | |||
| {% for lineItem in page.cart.lineItems %} | |||
| {% if not lineItem.payload.customFields.spwn_discountable_box %} | |||
| {{ block ('component_offcanvas_cart_item') }} | |||
| {% endif %} | |||
| {% endfor %} | |||
| </div> | |||
| {% endblock %} | |||
| {% block component_offcanvas_cart_actions_promotion_submit %} | |||
| <div class="input-group-append"> | |||
| <button class="btn btn-secondary" | |||
| type="submit" | |||
| id="addPromotionOffcanvasCart"> | |||
| {% sw_icon 'arrow-head-right' %} | |||
| </button> | |||
| </div> | |||
| {% endblock %} | |||
| {# End added by spawntree #} | |||
| @@ -0,0 +1,69 @@ | |||
| {% sw_extends '@Storefront/storefront/component/checkout/offcanvas-item.html.twig' %} | |||
| {# Start added by spawntree #} | |||
| {% block component_offcanvas_cart_item_container %} | |||
| {% if isCustomizedProduct %} | |||
| {% set isNested = false %} | |||
| {% for child in lineItem.children %} | |||
| {% if child.type == 'product' %} | |||
| {% set label = child.label %} | |||
| {% set referencedId = child.referencedId %} | |||
| {% set productNumber = lineItem.payload|merge({ 'productNumber': child.payload.productNumber }) %} | |||
| {% if child.cover.url %} | |||
| {% set cover = child.cover %} | |||
| {% endif %} | |||
| {% do lineItem.setLabel(label) %} | |||
| {% do lineItem.setCover(cover) %} | |||
| {% do lineItem.setReferencedId(referencedId) %} | |||
| {% do lineItem.setPayload(productNumber) %} | |||
| {% endif %} | |||
| {% endfor %} | |||
| {% endif %} | |||
| {% set isDiscountableItem = false %} | |||
| {% if lineItem.payload is defined and lineItem.payload.customFields is defined and | |||
| lineItem.payload.customFields.spwn_discountable_box is defined %} | |||
| {% set isDiscountableItem = true %} | |||
| {% endif %} | |||
| <div class="cart-item cart-item-{{ type }}{% if isDiscount %} is-discount{% endif %}{{ cartItemClasses }} js-cart-item{% if isDiscountableItem %} is-discountable-item{% endif %}"> | |||
| <div class="row cart-item-row"> | |||
| {{ block('component_offcanvas_product_image') }} | |||
| {{ block('component_offcanvas_product_details') }} | |||
| {{ block('component_offcanvas_product_remove') }} | |||
| {{ block('component_offcanvas_children') }} | |||
| </div> | |||
| </div> | |||
| {% endblock %} | |||
| {% block component_offcanvas_children %} | |||
| {% if isNested %} | |||
| {# @deprecated tag:v6.5.0 - block will be removed, use `component_offcanvas_item_children` in `@Storefront/storefront/component/checkout/offcanvas-item-children.html.twig` instead #} | |||
| {% block component_offcanvas_cart_item_children %} | |||
| {% sw_include childrenTemplate %} | |||
| {% endblock %} | |||
| {% endif %} | |||
| {% set addCustomizedProducts = addCustomizedProducts | default(0) %} | |||
| {% if lineItem.payload is defined and lineItem.payload.customFields is defined and | |||
| lineItem.payload.customFields.spwn_discountable_box is defined and addCustomizedProducts !== 0 %} | |||
| <div class="spwn-add-customized-products"> | |||
| <a href="/Abnehmprogramme/6-Tage-Abnehmprogramme/" class="spwn-add-customized-products-detail">Fügen Sie einen weiteren Plan hinzu für ihr optimales Abnehmprogramm</a> | |||
| {% if addCustomizedProducts == 1 %} | |||
| <a href="/Abnehmprogramme/6-Tage-Abnehmprogramme/" class="spwn-add-customized-products-detail">Fügen Sie einen weiteren Plan hinzu für ihr optimales Abnehmprogramm</a> | |||
| {% endif %} | |||
| </div> | |||
| {% endif %} | |||
| {% endblock %} | |||
| {# coming from AtlProductConfigurator #} | |||
| {% block cart_item_variant_characteristics %} | |||
| <div class="cart-item-characteristics"> | |||
| {% for input in lineItem.payload.atlProductConfigurator %} | |||
| <div> | |||
| <span class="cart-item-characteristics-option">{{ input.value }}</span> | |||
| </div> | |||
| {% endfor %} | |||
| </div> | |||
| {% endblock %} | |||
| {# End added by spawntree #} | |||
| @@ -0,0 +1,162 @@ | |||
| {% sw_extends '@Storefront/storefront/component/product/card/box-standard.html.twig' %} | |||
| {% block component_product_box %} | |||
| {% if product %} | |||
| {% set name = product.translated.name %} | |||
| {% set id = product.id %} | |||
| {% set cover = product.cover.media %} | |||
| {% set variation = product.variation %} | |||
| <div class="card product-box box-{{ layout }}{% if product.markAsTopseller %} highlight{% endif %}"> | |||
| {% block component_product_box_content %} | |||
| <div class="card-body"> | |||
| {% block component_product_box_badges %} | |||
| {% sw_include '@Storefront/storefront/component/product/card/badges.html.twig' %} | |||
| {% endblock %} | |||
| {% block component_product_box_rich_snippets %} | |||
| {% sw_include '@Storefront/storefront/component/product/card/meta.html.twig' %} | |||
| {% endblock %} | |||
| {% block component_product_box_image %} | |||
| {# fallback if display mode is not set #} | |||
| {% set displayMode = displayMode ?: 'standard' %} | |||
| {# set display mode 'cover' for box-image with default display mode #} | |||
| {% if layout == 'image' and displayMode == 'standard' %} | |||
| {% set displayMode = 'cover' %} | |||
| {% endif %} | |||
| <div class="product-image-wrapper is-{{ displayMode }}"> | |||
| <a href="{{ seoUrl('frontend.detail.page', {'productId': id}) }}" | |||
| title="{{ name }}" | |||
| class="product-image-link is-{{ displayMode }}"> | |||
| {% if cover.url %} | |||
| {% set attributes = { | |||
| 'class': 'product-image is-'~displayMode, | |||
| 'alt': (cover.translated.alt ?: name), | |||
| 'title': (cover.translated.title ?: name) | |||
| } %} | |||
| {% if displayMode == 'cover' or displayMode == 'contain' %} | |||
| {% set attributes = attributes|merge({ 'data-object-fit': displayMode }) %} | |||
| {% endif %} | |||
| {# ... enables lazy loading for images #} | |||
| {% if config('zenitPlatformAtmos.config.lazyloading') %} | |||
| {% set attributes = attributes|merge({ 'loading': 'lazy' }) %} | |||
| {% endif %} | |||
| {% sw_thumbnails 'product-image-thumbnails' with { | |||
| media: cover, | |||
| sizes: { | |||
| 'xs': '701px', | |||
| 'sm': '515px', | |||
| 'md': '627px', | |||
| 'lg': '533px', | |||
| 'xl': '484px' | |||
| } | |||
| } %} | |||
| {% else %} | |||
| <div class="product-image-placeholder"> | |||
| {% sw_icon 'placeholder' style { | |||
| 'size': 'fluid' | |||
| } %} | |||
| </div> | |||
| {% endif %} | |||
| {% block zen_component_product_box_image_switch %} | |||
| {% sw_include '@Storefront/storefront/component/product/card/zen-cover-switch.html.twig' %} | |||
| {% endblock %} | |||
| </a> | |||
| {% if config('core.cart.wishlistEnabled') %} | |||
| {% if theme_config('zen-product-listing-card-rating-position') is not same as ('overlay-top-right') or (theme_config('zen-product-listing-card-rating-position') is same as ('overlay-top-right') and theme_config('zen-product-listing-card-actions') is not same as ('overlay')) %} | |||
| {% block component_product_box_wishlist_action %} | |||
| {% sw_include '@Storefront/storefront/component/product/card/wishlist.html.twig' with { | |||
| appearance: 'circle', | |||
| productId: id | |||
| } %} | |||
| {% endblock %} | |||
| {% endif %} | |||
| {% endif %} | |||
| {% block zen_component_product_box_action_overlay_rating %} | |||
| {% if config('core.listing.showReview') and theme_config('zen-product-listing-card-rating-position') is not same as ('default') %} | |||
| <div class="product-rating"> | |||
| {% if product.ratingAverage %} | |||
| {% sw_include '@Storefront/storefront/component/review/rating.html.twig' with { | |||
| points: product.ratingAverage, | |||
| style: 'text-primary' | |||
| } %} | |||
| {% endif %} | |||
| </div> | |||
| {% endif %} | |||
| {% endblock %} | |||
| {% block zen_component_product_box_action_overlay %} | |||
| {% if theme_config('zen-product-listing-card-actions') is same as ('overlay') %} | |||
| {% sw_include '@Storefront/storefront/component/product/card/action.html.twig' %} | |||
| {% endif %} | |||
| {% endblock %} | |||
| </div> | |||
| {% endblock %} | |||
| {% block component_product_box_info %} | |||
| <div class="product-info"> | |||
| {% block component_product_box_rating %} | |||
| {% if theme_config('zen-product-listing-card-rating-position') is same as ('default') %} | |||
| {{ parent() }} | |||
| {% endif %} | |||
| {% endblock %} | |||
| {% block component_product_box_name %} | |||
| <a href="{{ seoUrl('frontend.detail.page', {'productId': id}) }}" | |||
| class="product-name" | |||
| title="{{ name }}"> | |||
| {{ name }} | |||
| </a> | |||
| {% endblock %} | |||
| {% block component_product_box_variant_characteristics %} | |||
| {% if theme_config('zen-product-listing-card-variant-characteristics') %} | |||
| {{ parent() }} | |||
| {% endif %} | |||
| {% endblock %} | |||
| {% block component_product_box_description %} | |||
| <div class="product-description"> | |||
| {{ product.customFields.custom_productteaser_category|striptags|raw }} | |||
| </div> | |||
| {% endblock %} | |||
| {% block component_product_box_price %} | |||
| {% sw_include '@Storefront/storefront/component/product/card/price-unit.html.twig' %} | |||
| {% endblock %} | |||
| {% block component_product_box_action %} | |||
| {% if theme_config('zen-product-listing-card-actions') is not same as ('overlay') %} | |||
| {{ parent() }} | |||
| {% endif %} | |||
| {% if config('core.cart.wishlistEnabled') %} | |||
| {% if theme_config('zen-product-listing-card-rating-position') is same as ('overlay-top-right') and theme_config('zen-product-listing-card-actions') is same as ('overlay') %} | |||
| {% block zen_component_product_box_wishlist_action %} | |||
| {% sw_include '@Storefront/storefront/component/product/card/wishlist.html.twig' with { | |||
| appearance: 'circle', | |||
| productId: id | |||
| } %} | |||
| {% endblock %} | |||
| {% endif %} | |||
| {% endif %} | |||
| {% endblock %} | |||
| </div> | |||
| {% endblock %} | |||
| </div> | |||
| {% endblock %} | |||
| </div> | |||
| {% endif %} | |||
| {% endblock %} | |||
| @@ -0,0 +1,55 @@ | |||
| {% sw_extends '@Storefront/storefront/component/product/card/price-unit.html.twig' %} | |||
| {% block component_product_box_price %} | |||
| <div class="product-price-wrapper"> | |||
| {% set price = real %} | |||
| <div class="product-cheapest-price"> | |||
| {% if cheapest.unitPrice != real.unitPrice %} | |||
| <div>{{ "listing.cheapestPriceLabel"|trans|sw_sanitize }}<span class="product-cheapest-price-price"> {{ cheapest.unitPrice|currency }}{{ "general.star"|trans|sw_sanitize }}</span></div> | |||
| {% endif %} | |||
| </div> | |||
| {% if displayFrom %} | |||
| {{ "listing.listingTextFrom"|trans|sw_sanitize }} | |||
| {% endif %} | |||
| {% set isListPrice = price.listPrice.percentage > 0 %} | |||
| <span class="product-price{% if isListPrice and not displayFrom %} with-list-price{% endif %}"> | |||
| {{ price.unitPrice|currency }}{{ "general.star"|trans|sw_sanitize }} | |||
| {% if isListPrice and not displayFrom %} | |||
| {% set afterListPriceSnippetExists = "listing.afterListPrice"|trans|length > 0 %} | |||
| {% set beforeListPriceSnippetExists = "listing.beforeListPrice"|trans|length > 0 %} | |||
| {% set hideStrikeTrough = beforeListPriceSnippetExists or afterListPriceSnippetExists %} | |||
| <span class="list-price{% if hideStrikeTrough %} list-price-no-line-through{% endif %}"> | |||
| {% if beforeListPriceSnippetExists %}{{ "listing.beforeListPrice"|trans|trim|sw_sanitize }}{% endif %} | |||
| <span class="list-price-price">{{ price.listPrice.price|currency }}{{ "general.star"|trans|sw_sanitize }}</span> | |||
| {% if afterListPriceSnippetExists %}{{ "listing.afterListPrice"|trans|trim|sw_sanitize }}{% endif %} | |||
| <span class="list-price-percentage">{{ "detail.listPricePercentage"|trans({'%price%': price.listPrice.percentage })|sw_sanitize }}</span> | |||
| </span> | |||
| {% endif %} | |||
| </span> | |||
| <span>{{ product.customFields.custom_productteaser_price|trans }} € pro Tag</span> | |||
| </div> | |||
| {% if product.translated.customFields.deposittype %} | |||
| <div class="product-deposittype"> | |||
| {{ product.translated.customFields.deposittype }} | |||
| </div> | |||
| {% endif %} | |||
| {% if product.translated.customFields.deposit %} | |||
| {% set deposit = product.translated.customFields.deposit|currency %} | |||
| <div class="product-deposit"> | |||
| <small> | |||
| {{ "FlowsiteDepositSystemBasic.plusDeposit"|trans({ | |||
| '%deposit%': deposit | |||
| })|sw_sanitize }} | |||
| </small> | |||
| </div> | |||
| {% endif %} | |||
| {% endblock %} | |||
| @@ -0,0 +1,41 @@ | |||
| {% sw_extends '@Storefront/storefront/component/product/listing.html.twig' %} | |||
| {% block element_product_listing_row %} | |||
| <div class="row cms-listing-row js-listing-wrapper"> | |||
| {% if page.footer.navigation.active.customFields.custom_listing_textbox_text is defined %} | |||
| <div class="cms-listing-col col-xl-6 col-lg-8 col-12"> | |||
| <div class="card textbox d-flex justify-content-center"> | |||
| <div class="inner"> | |||
| {{ page.footer.navigation.active.customFields.custom_listing_textbox_text|trans|sw_sanitize }} | |||
| </div> | |||
| </div> | |||
| </div> | |||
| {% endif %} | |||
| {% if searchResult.total > 0 %} | |||
| {% block element_product_listing_col %} | |||
| {% for product in searchResult %} | |||
| <div class="cms-listing-col {{ listingColumns }}"> | |||
| {% block element_product_listing_box %} | |||
| {% sw_include '@Storefront/storefront/component/product/card/box.html.twig' with { | |||
| 'layout': boxLayout, | |||
| 'displayMode': displayMode | |||
| } %} | |||
| {% endblock %} | |||
| </div> | |||
| {% endfor %} | |||
| {% endblock %} | |||
| {% else %} | |||
| {% block element_product_listing_col_empty %} | |||
| <div class="cms-listing-col col-12"> | |||
| {% block element_product_listing_col_empty_alert %} | |||
| {% sw_include '@Storefront/storefront/utilities/alert.html.twig' with { | |||
| type: 'info', | |||
| content: 'listing.emptyResultMessage'|trans|sw_sanitize | |||
| } %} | |||
| {% endblock %} | |||
| </div> | |||
| {% endblock %} | |||
| {% endif %} | |||
| </div> | |||
| {% endblock %} | |||
| @@ -0,0 +1,7 @@ | |||
| {% sw_extends '@Storefront/storefront/layout/footer/footer.html.twig' %} | |||
| {% block layout_footer_copyright %} | |||
| <div class="footer-copyright"> | |||
| {{ "footer.copyrightInfo"|trans|sw_sanitize }} | |||
| </div> | |||
| {% endblock %} | |||
| @@ -0,0 +1,63 @@ | |||
| {% sw_extends '@Storefront/storefront/page/checkout/cart/index.html.twig' %} | |||
| {% block page_checkout_cart_add_promotion_submit %} | |||
| <div class="input-group-append"> | |||
| <button class="btn btn-secondary" | |||
| type="submit" | |||
| id="addPromotion"> | |||
| {% sw_icon 'arrow-head-right' %} | |||
| </button> | |||
| </div> | |||
| {% endblock %} | |||
| {% block page_checkout_cart_product_table %} | |||
| {% set customizedProductsCount = 0 %} | |||
| {% set customizedProductsCountTemp = 0 %} | |||
| {% set addCustomizedProducts = 0 %} | |||
| {% for lineItem in page.cart.lineItems %} | |||
| {% if lineItem.payload is defined and lineItem.payload.customFields is defined and | |||
| lineItem.payload.customFields.spwn_discountable_box is defined %} | |||
| {% set customizedProductsCount = customizedProductsCount + lineItem.quantity %} | |||
| {% endif %} | |||
| {% endfor %} | |||
| <div class="card checkout-product-table"> | |||
| <div class="card-body"> | |||
| {% block page_checkout_cart_table_header %} | |||
| {% sw_include '@Storefront/storefront/page/checkout/cart/cart-product-header.html.twig' %} | |||
| {% endblock %} | |||
| {% block page_checkout_cart_table_items %} | |||
| {% for lineItem in page.cart.lineItems %} | |||
| {% if lineItem.payload.customFields.spwn_discountable_box %} | |||
| {% if lineItem.payload is defined and lineItem.payload.customFields is defined and | |||
| lineItem.payload.customFields.spwn_discountable_box is defined and customizedProductsCount < 3 %} | |||
| {% set customizedProductsCountTemp = customizedProductsCountTemp + lineItem.quantity %} | |||
| {% if customizedProductsCountTemp == customizedProductsCount %} | |||
| {% set addCustomizedProducts = customizedProductsCount %} | |||
| {% endif %} | |||
| {% endif %} | |||
| {% block page_checkout_cart_table_item %} | |||
| {% block page_checkout_item %} | |||
| {% sw_include '@Storefront/storefront/page/checkout/checkout-item.html.twig' with { | |||
| data: { | |||
| addCustomizedProducts: addCustomizedProducts | |||
| } | |||
| } %} | |||
| {% endblock %} | |||
| {% endblock %} | |||
| {% endif %} | |||
| {% endfor %} | |||
| {% set addCustomizedProducts = 0 %} | |||
| {% for lineItem in page.cart.lineItems %} | |||
| {% if not lineItem.payload.customFields.spwn_discountable_box %} | |||
| {{ block ('page_checkout_item') }} | |||
| {% endif %} | |||
| {% endfor %} | |||
| {% endblock %} | |||
| </div> | |||
| </div> | |||
| {% endblock %} | |||
| @@ -0,0 +1,50 @@ | |||
| {% sw_extends '@Storefront/storefront/page/checkout/checkout-item.html.twig' %} | |||
| {% block page_checkout_item_info_variant_characteristics %} | |||
| <div class="cart-item-details-characteristics"> | |||
| {% for input in lineItem.payload.atlProductConfigurator %} | |||
| <div> | |||
| <span class="cart-item-details-characteristics-option">{{ input.value }}</span> | |||
| </div> | |||
| {% endfor %} | |||
| </div> | |||
| {% endblock %} | |||
| {% block page_checkout_item_info_label %} | |||
| {% if lineItem.type == PRODUCT_LINE_ITEM_TYPE %} | |||
| <a href="{{ seoUrl('frontend.detail.page', {'productId': lineItem.referencedId}) }}" | |||
| class="cart-item-label" | |||
| title="{{ label }}" | |||
| {% if controllerAction is same as('confirmPage') %} | |||
| data-toggle="modal" | |||
| data-modal-class="quickview-modal" | |||
| data-url="{{ path('widgets.quickview.minimal',{ 'productId': lineItem.referencedId }) }}" | |||
| {% endif %} | |||
| > | |||
| {{ label|u.truncate(60, '...', false) }} | |||
| </a> | |||
| {% else %} | |||
| <div class="cart-item-label"> | |||
| {{ label|u.truncate(60, '...', false) }} | |||
| </div> | |||
| {% endif %} | |||
| {% endblock %} | |||
| {% block page_checkout_item_children_template %} | |||
| {% if isNested %} | |||
| {# @deprecated tag:v6.5.0 - block will be moved to `@Storefront/storefront/page/checkout/checkout-item-children.html.twig` #} | |||
| {% block page_checkout_item_children %} | |||
| {% sw_include childrenTemplate %} | |||
| {% endblock %} | |||
| {% endif %} | |||
| {% set addCustomizedProducts = addCustomizedProducts | default(0) %} | |||
| {% if lineItem.payload is defined and lineItem.payload.customFields is defined and | |||
| lineItem.payload.customFields.spwn_discountable_box is defined and addCustomizedProducts !== 0 %} | |||
| <div class="spwn-add-customized-products"> | |||
| <a href="/Abnehmprogramme/6-Tage-Abnehmprogramme/" class="spwn-add-customized-products-detail"><span>Fügen Sie einen weiteren Plan hinzu für ihr optimales Abnehmprogramm</span></a> | |||
| {% if addCustomizedProducts == 1 %} | |||
| <a href="/Abnehmprogramme/6-Tage-Abnehmprogramme/" class="spwn-add-customized-products-detail"><span>Fügen Sie einen weiteren Plan hinzu für ihr optimales Abnehmprogramm</span></a> | |||
| {% endif %} | |||
| </div> | |||
| {% endif %} | |||
| {% endblock %} | |||
| @@ -0,0 +1,17 @@ | |||
| {% sw_extends '@Storefront/storefront/page/checkout/confirm/confirm-address.html.twig' %} | |||
| {% block page_checkout_confirm_address_shipping_data %} | |||
| <div class="confirm-address-shipping" data-iso="{{ shippingAddress.country.iso }}"> | |||
| {% if billingAddress.id is same as(shippingAddress.id) %} | |||
| {% block page_checkout_confirm_address_shipping_data_equal %} | |||
| <p> | |||
| {{ "checkout.addressEqualText"|trans|sw_sanitize }} | |||
| </p> | |||
| {% endblock %} | |||
| {% else %} | |||
| {% sw_include '@Storefront/storefront/component/address/address.html.twig' with { | |||
| 'address': shippingAddress | |||
| } %} | |||
| {% endif %} | |||
| </div> | |||
| {% endblock %} | |||
| @@ -0,0 +1,112 @@ | |||
| {% sw_extends '@Storefront/storefront/page/checkout/confirm/index.html.twig' %} | |||
| {% block page_checkout_confirm_tos %} | |||
| {% endblock %} | |||
| {% block page_checkout_confirm_product_table %} | |||
| {% endblock %} | |||
| {% block page_checkout_additional %} | |||
| {% if config('core.cart.showCustomerComment') %} | |||
| <div class="checkout-additional"> | |||
| <div class="confirm-product"> | |||
| {% block page_checkout_confirm_table_container %} | |||
| <div class="card"> | |||
| <div class="card-body"> | |||
| {% block page_checkout_confirm_table_header %} | |||
| {% sw_include '@Storefront/storefront/page/checkout/confirm/confirm-product-header.html.twig' %} | |||
| {% endblock %} | |||
| {% block page_checkout_confirm_table_items %} | |||
| {% for lineItem in page.cart.lineItems %} | |||
| {% block page_checkout_confirm_table_item %} | |||
| {% sw_include '@Storefront/storefront/page/checkout/confirm/confirm-item.html.twig' %} | |||
| {% endblock %} | |||
| {% endfor %} | |||
| {% endblock %} | |||
| </div> | |||
| </div> | |||
| {% endblock %} | |||
| </div> | |||
| {% block page_checkout_finish_customer_comment %} | |||
| <div class="card checkout-card"> | |||
| <div class="card-body"> | |||
| {% block page_checkout_confirm_customer_comment_header %} | |||
| <div class="card-title"> | |||
| {{ "checkout.customerCommentHeader"|trans|sw_sanitize }} | |||
| </div> | |||
| {% endblock %} | |||
| {% block page_checkout_confirm_customer_comment_control %} | |||
| <div class="checkout-customer-comment-control"> | |||
| {% block page_checkout_confirm_customer_comment_control_textfield_label %} | |||
| <label class="form-label" for="{{ constant('Shopware\\Core\\Checkout\\Order\\SalesChannel\\OrderService::CUSTOMER_COMMENT_KEY') }}"> | |||
| {{ "checkout.customerCommentLabel"|trans|sw_sanitize }} | |||
| </label> | |||
| {% endblock %} | |||
| {% block page_checkout_confirm_customer_comment_control_textfield %} | |||
| <textarea class="form-control" | |||
| placeholder="{{ "checkout.customerCommentPlaceholder"|trans|sw_sanitize }}" | |||
| id="{{ constant('Shopware\\Core\\Checkout\\Order\\SalesChannel\\OrderService::CUSTOMER_COMMENT_KEY') }}" | |||
| form="confirmOrderForm" | |||
| name="{{ constant('Shopware\\Core\\Checkout\\Order\\SalesChannel\\OrderService::CUSTOMER_COMMENT_KEY') }}"></textarea> | |||
| {% endblock %} | |||
| </div> | |||
| {% endblock %} | |||
| </div> | |||
| </div> | |||
| {% endblock %} | |||
| </div> | |||
| {% endif %} | |||
| {% endblock %} | |||
| {% block page_checkout_aside_actions %} | |||
| <div class="checkout-aside-action"> | |||
| {% block page_checkout_confirm_tos_control %} | |||
| <div class="custom-control custom-checkbox"> | |||
| {% block page_checkout_confirm_tos_control_checkbox %} | |||
| <input type="checkbox" | |||
| class="checkout-confirm-tos-checkbox custom-control-input{% if formViolations.getViolations('/tos') is not empty %} is-invalid{% endif %}" | |||
| required="required" | |||
| id="tos" | |||
| form="confirmOrderForm" | |||
| name="tos"/> | |||
| {% endblock %} | |||
| {% block page_checkout_confirm_tos_control_label %} | |||
| <label for="tos" | |||
| class="checkout-confirm-tos-label custom-control-label"> | |||
| {{ "checkout.confirmTerms"|trans({ | |||
| '%url%': path('frontend.cms.page',{ id: config('core.basicInformation.tosPage') }) | |||
| })|raw }} | |||
| </label> | |||
| {% endblock %} | |||
| </div> | |||
| {% endblock %} | |||
| <form id="confirmOrderForm" | |||
| action="{{ path('frontend.checkout.finish.order') }}" | |||
| data-form-csrf-handler="true" | |||
| data-form-preserver="true" | |||
| data-form-submit-loader="true" | |||
| method="post"> | |||
| {% block page_checkout_aside_actions_csrf %} | |||
| {{ sw_csrf('frontend.checkout.finish.order') }} | |||
| {% endblock %} | |||
| {% block page_checkout_confirm_form_submit %} | |||
| <button id="confirmFormSubmit" | |||
| class="btn btn-primary btn-block btn-lg" | |||
| form="confirmOrderForm" | |||
| {% if page.cart.errors.blockOrder %} | |||
| disabled | |||
| {% endif %} | |||
| type="submit"> | |||
| {{ "checkout.confirmSubmit"|trans|sw_sanitize }} | |||
| </button> | |||
| {% endblock %} | |||
| </form> | |||
| </div> | |||
| {% endblock %} | |||
| @@ -0,0 +1,25 @@ | |||
| {% sw_extends '@Storefront/storefront/page/checkout/summary/summary-shipping.html.twig' %} | |||
| {% block page_checkout_summary_shippings %} | |||
| {% for delivery in summary.deliveries %} | |||
| {% block page_checkout_summary_shipping %} | |||
| {% block page_checkout_summary_shipping_label %} | |||
| <dt class="col-7 checkout-aside-summary-label"> | |||
| <a class="product-detail-tax-link" | |||
| href="{{ path('frontend.cms.page',{ id: config('core.basicInformation.shippingPaymentInfoPage') }) }}" | |||
| title="{{ "checkout.summaryShipping"|trans|sw_sanitize }}" | |||
| data-toggle="modal" | |||
| data-url="{{ path('frontend.cms.page',{ id: config('core.basicInformation.shippingPaymentInfoPage') }) }}"> | |||
| {{ "checkout.summaryShipping"|trans|sw_sanitize }} | |||
| </a> | |||
| </dt> | |||
| {% endblock %} | |||
| {% block page_checkout_summary_shipping_value %} | |||
| <dd class="col-5 checkout-aside-summary-value"> | |||
| {{ delivery.shippingCosts.totalPrice|currency }}{{ "general.star"|trans|sw_sanitize }} | |||
| </dd> | |||
| {% endblock %} | |||
| {% endblock %} | |||
| {% endfor %} | |||
| {% endblock %} | |||
| @@ -0,0 +1,16 @@ | |||
| {% sw_extends '@Storefront/storefront/page/product-detail/description.html.twig' %} | |||
| {% block page_product_detail_description_content_text %} | |||
| {{ parent() }} | |||
| {% if product.customFields.custom_weightlossplan_day1_image is defined %} | |||
| {{ product.customFields.custom_weightlossplan_day1_image }} | |||
| {% endif %} | |||
| {% if product.customFields.custom_weightlossplan_day1_notice is defined %} | |||
| {{ product.customFields.custom_weightlossplan_day1_notice|trans }} | |||
| {% endif %} | |||
| {% if product.customFields.custom_weightlossplan_day1_shake is defined %} | |||
| {{ product.customFields.custom_weightlossplan_day1_shake|trans }} | |||
| {% endif %} | |||
| {% endblock %} | |||
| @@ -0,0 +1,18 @@ | |||
| {% sw_extends '@Storefront/storefront/page/product-detail/index.html.twig' %} | |||
| {% block page_product_detail_content %} | |||
| {{ parent() }} | |||
| {% if page.product.customFields.custom_weightlossplan_day1_image is defined %} | |||
| {% set day1ImageId = page.product.customFields.custom_weightlossplan_day1_image %} | |||
| {% set mediaCollection = searchMedia([day1ImageId], context.context) %} | |||
| {% set day1Image = mediaCollection.get(day1ImageId) %} | |||
| <div class="day1Image"> | |||
| <img src="{{ day1Image.url }}"> | |||
| </div> | |||
| {% endif %} | |||
| {% if page.product.customFields.custom_weightlossplan_day1_shake is defined %} | |||
| Shake: {{ page.product.customFields.custom_weightlossplan_day1_shake|trans }} | |||
| {% endif %} | |||
| {% endblock %} | |||
| @@ -0,0 +1,70 @@ | |||
| <?php declare(strict_types=1); | |||
| namespace zenit\PlatformAtmosSet1; | |||
| use Shopware\Core\Framework\Context; | |||
| use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository; | |||
| use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria; | |||
| use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter; | |||
| use Shopware\Core\Framework\Plugin\Context\UpdateContext; | |||
| use Shopware\Storefront\Framework\ThemeInterface; | |||
| use Shopware\Core\Framework\Plugin; | |||
| class zenitPlatformAtmosSet1 extends Plugin implements ThemeInterface | |||
| { | |||
| /** | |||
| * @var Context | |||
| */ | |||
| private $context; | |||
| public function getThemeConfigPath(): string | |||
| { | |||
| return 'theme.json'; | |||
| } | |||
| public function postUpdate(UpdateContext $updateContext): void | |||
| { | |||
| parent::postUpdate($updateContext); | |||
| $this->updateThemeDuplicates(); | |||
| } | |||
| private function updateThemeDuplicates(): void | |||
| { | |||
| $this->context = Context::createDefaultContext(); | |||
| $criteriaTheme = new Criteria(); | |||
| $criteriaTheme->addFilter(new EqualsFilter('technicalName', 'zenitPlatformAtmosSet1')); | |||
| /** @var EntityRepository $themeRepo */ | |||
| $themeRepo = $this->container->get('theme.repository'); | |||
| $parentTheme = $themeRepo->search($criteriaTheme, $this->context)->first(); | |||
| if (!$parentTheme) { | |||
| return; | |||
| } | |||
| $criteriaThemeDuplicates = new Criteria(); | |||
| $criteriaThemeDuplicates->addFilter(new EqualsFilter('parentThemeId', $parentTheme->get('id'))); | |||
| $resultThemeDuplicates = $themeRepo->search($criteriaThemeDuplicates, $this->context)->getElements(); | |||
| if (!$resultThemeDuplicates) { | |||
| return; | |||
| } | |||
| foreach ($resultThemeDuplicates as $themeDuplicate) { | |||
| $data = [ | |||
| 'id' => $themeDuplicate->get('id'), | |||
| 'baseConfig' => $parentTheme->get('baseConfig') | |||
| ]; | |||
| if (!$themeDuplicate->get('previewMediaId')) { | |||
| $data['previewMediaId'] = $parentTheme->get('previewMediaId'); | |||
| } | |||
| $themeRepo->update([$data], $this->context); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,44 @@ | |||
| { | |||
| "name": "zenit/atmos-set-2", | |||
| "description": "Theme Atmos by Zenit Design", | |||
| "version": "2.4.1", | |||
| "type": "shopware-platform-plugin", | |||
| "license": "proprietary", | |||
| "authors": [ | |||
| { | |||
| "name": "Zenit Design", | |||
| "homepage": "https://zenit.design", | |||
| "role": "Manufacturer" | |||
| } | |||
| ], | |||
| "require": { | |||
| "shopware/core": "^6.3", | |||
| "shopware/storefront": "^6.3" | |||
| }, | |||
| "extra": { | |||
| "shopware-plugin-class": "zenit\\PlatformAtmosSet2\\zenitPlatformAtmosSet2", | |||
| "plugin-icon": "src/Resources/config/plugin.png", | |||
| "copyright": "(c) by Zenit Design", | |||
| "label": { | |||
| "de-DE": "Theme Atmos | Pro - Set 2", | |||
| "en-GB": "Theme Atmos | Pro - Set 2" | |||
| }, | |||
| "description": { | |||
| "de-DE": "Theme Atmos | Pro - Set 2", | |||
| "en-GB": "Theme Atmos | Pro - Set 2" | |||
| }, | |||
| "manufacturerLink": { | |||
| "de-DE": "https://store.shopware.com/zenit-design.html", | |||
| "en-GB": "https://store.shopware.com/en/zenit-design.html" | |||
| }, | |||
| "supportLink": { | |||
| "de-DE": "https://help.zenit.design", | |||
| "en-GB": "https://help.zenit.design" | |||
| } | |||
| }, | |||
| "autoload": { | |||
| "psr-4": { | |||
| "zenit\\PlatformAtmosSet2\\": "src/" | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,57 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> | |||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | |||
| <svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | |||
| width="205.523px" height="91px" viewBox="0 0 205.523 91" enable-background="new 0 0 205.523 91" xml:space="preserve"> | |||
| <g> | |||
| <path fill="#FFFFFF" d="M11.466,62.6c-1.753-0.842-3.144-2.068-4.173-3.682c-1.024-1.611-1.541-3.473-1.541-5.572 | |||
| c0-3.461,1.367-6.219,4.104-8.278c2.734-2.056,6.743-3.084,12.023-3.084h8.486v-0.562c0-3.084-0.762-5.305-2.28-6.661 | |||
| c-1.521-1.355-3.892-2.032-7.118-2.032c-1.774,0-3.354,0.138-4.73,0.42c-1.379,0.281-2.909,0.701-4.591,1.262 | |||
| c-0.376,0.093-0.682,0.14-0.913,0.14c-0.701,0-1.311-0.257-1.822-0.771c-0.516-0.513-0.77-1.145-0.77-1.892 | |||
| c0-1.264,0.604-2.15,1.818-2.665c3.976-1.684,8.021-2.525,12.131-2.525c3.229,0,5.949,0.656,8.17,1.963 | |||
| c2.223,1.309,3.856,3.005,4.908,5.084c1.054,2.081,1.578,4.337,1.578,6.767v19.843c0,0.889-0.313,1.638-0.947,2.244 | |||
| c-0.631,0.605-1.391,0.912-2.277,0.912c-0.892,0-1.64-0.306-2.243-0.912c-0.607-0.605-0.911-1.354-0.911-2.244v-1.824 | |||
| c-3.461,3.555-7.854,5.33-13.184,5.33C15.124,63.859,13.219,63.439,11.466,62.6z M25.526,56.744 | |||
| c1.916-1.006,3.529-2.254,4.838-3.751v-5.892h-7.645c-7.062,0-10.59,1.849-10.59,5.539c0,1.686,0.572,3.041,1.72,4.066 | |||
| c1.146,1.027,3.051,1.543,5.716,1.543C21.621,58.252,23.609,57.75,25.526,56.744z"/> | |||
| <path fill="#FFFFFF" d="M48.734,54.605V32.865h-4.979c-0.374,0-0.688-0.126-0.942-0.384c-0.262-0.257-0.39-0.573-0.39-0.946 | |||
| c0-0.467,0.211-0.865,0.634-1.193l9.533-9.326c0.42-0.421,0.817-0.631,1.192-0.631c0.374,0,0.689,0.14,0.947,0.42 | |||
| c0.257,0.282,0.385,0.609,0.385,0.982v5.61h7.924c0.794,0,1.447,0.257,1.963,0.77c0.519,0.514,0.771,1.169,0.771,1.964 | |||
| c0,0.748-0.256,1.392-0.771,1.928c-0.516,0.538-1.169,0.805-1.963,0.805h-7.924v21.178c0,1.821,0.433,2.979,1.298,3.474 | |||
| c0.865,0.488,1.95,0.734,3.261,0.734c0.937,0,1.87-0.143,2.808-0.421c0.185-0.046,0.384-0.095,0.594-0.144 | |||
| c0.211-0.043,0.479-0.066,0.809-0.066c0.653,0,1.237,0.244,1.751,0.732c0.518,0.492,0.771,1.088,0.771,1.789 | |||
| c0,1.076-0.538,1.896-1.612,2.455c-1.823,0.84-3.763,1.262-5.816,1.262C52.148,63.859,48.734,60.773,48.734,54.605z"/> | |||
| <path fill="#FFFFFF" d="M74.328,62.6c-0.604-0.604-0.912-1.354-0.912-2.244V30.274c0-0.888,0.308-1.648,0.912-2.28 | |||
| c0.607-0.631,1.355-0.946,2.245-0.946c0.887,0,1.646,0.315,2.278,0.946c0.63,0.631,0.944,1.392,0.944,2.28v2.875 | |||
| c1.31-1.87,2.889-3.411,4.733-4.627s4.242-1.824,7.188-1.824c2.619,0,4.861,0.702,6.73,2.104c1.87,1.403,3.203,3.109,3.998,5.12 | |||
| c2.898-4.814,7.198-7.223,12.902-7.223c2.615,0,4.804,0.656,6.557,1.963c1.753,1.309,3.05,2.994,3.891,5.05 | |||
| c0.846,2.057,1.266,4.206,1.266,6.45v20.193c0,0.89-0.315,1.639-0.946,2.244c-0.63,0.606-1.392,0.912-2.277,0.912 | |||
| c-0.89,0-1.638-0.305-2.245-0.912c-0.605-0.604-0.908-1.354-0.908-2.244V41.422c0-3.038-0.538-5.27-1.614-6.696 | |||
| c-1.074-1.426-2.922-2.138-5.538-2.138c-2.385,0-4.36,0.62-5.927,1.859c-1.565,1.237-2.957,2.862-4.171,4.872v21.037 | |||
| c0,0.89-0.315,1.639-0.946,2.244c-0.631,0.606-1.394,0.912-2.278,0.912c-0.888,0-1.638-0.305-2.244-0.912 | |||
| c-0.606-0.604-0.912-1.354-0.912-2.244V41.422c0-3.038-0.537-5.27-1.61-6.696c-1.076-1.426-2.921-2.138-5.54-2.138 | |||
| c-2.384,0-4.359,0.62-5.925,1.859c-1.566,1.237-2.957,2.862-4.172,4.872v21.037c0,0.89-0.316,1.639-0.946,2.244 | |||
| c-0.631,0.606-1.394,0.912-2.278,0.912C75.684,63.512,74.936,63.207,74.328,62.6z"/> | |||
| <path fill="#FFFFFF" d="M144.094,61.547c-2.707-1.542-4.805-3.729-6.272-6.557c-1.473-2.826-2.206-6.065-2.206-9.712 | |||
| c0-3.645,0.733-6.881,2.206-9.711c1.471-2.827,3.565-5.014,6.272-6.557c2.712-1.542,5.864-2.313,9.473-2.313 | |||
| c3.55,0,6.681,0.771,9.396,2.313c2.709,1.543,4.813,3.729,6.312,6.557c1.496,2.83,2.246,6.066,2.246,9.711 | |||
| c0,3.647-0.75,6.886-2.246,9.712c-1.496,2.828-3.603,5.015-6.312,6.557c-2.715,1.543-5.846,2.313-9.396,2.313 | |||
| C149.961,63.859,146.806,63.09,144.094,61.547z M159.067,56.709c1.752-0.889,3.2-2.291,4.351-4.206 | |||
| c1.146-1.917,1.714-4.351,1.714-7.293c0-2.898-0.568-5.306-1.714-7.223c-1.147-1.917-2.599-3.307-4.351-4.172 | |||
| c-1.754-0.864-3.588-1.297-5.5-1.297c-1.968,0-3.826,0.434-5.576,1.297c-1.756,0.866-3.188,2.256-4.315,4.172 | |||
| c-1.117,1.917-1.682,4.324-1.682,7.223c0,2.942,0.563,5.376,1.682,7.293c1.128,1.916,2.563,3.317,4.315,4.206 | |||
| c1.75,0.889,3.608,1.332,5.576,1.332C155.479,58.041,157.313,57.6,159.067,56.709z"/> | |||
| <path fill="#FFFFFF" d="M179.224,60.706c-0.79-0.563-1.192-1.333-1.192-2.313c0-0.746,0.258-1.401,0.772-1.963 | |||
| c0.514-0.563,1.17-0.843,1.968-0.843c0.42,0,0.84,0.097,1.26,0.281c1.493,0.653,2.991,1.169,4.486,1.544 | |||
| c1.496,0.374,3.181,0.563,5.054,0.563c5.188,0,7.779-1.66,7.779-4.979c0-1.075-0.6-1.895-1.789-2.454 | |||
| c-1.188-0.563-3.144-1.19-5.854-1.894c-2.76-0.654-5.038-1.334-6.84-2.035c-1.799-0.7-3.342-1.763-4.626-3.189 | |||
| c-1.287-1.426-1.928-3.306-1.928-5.645c0-3.272,1.18-5.936,3.543-7.993c2.354-2.059,5.733-3.086,10.134-3.086 | |||
| c3.598,0,6.984,0.585,10.162,1.753c0.658,0.188,1.16,0.539,1.513,1.052c0.348,0.516,0.524,1.051,0.524,1.612 | |||
| c0,0.749-0.271,1.402-0.811,1.963c-0.539,0.562-1.205,0.842-1.992,0.842c-0.236,0-0.539-0.046-0.914-0.141 | |||
| c-2.711-0.841-5.377-1.262-7.993-1.262c-2.526,0-4.502,0.456-5.934,1.368c-1.421,0.91-2.137,2.092-2.137,3.54 | |||
| c0,1.404,0.656,2.431,1.963,3.086c1.313,0.656,3.348,1.286,6.104,1.893c2.758,0.702,5.002,1.392,6.729,2.068 | |||
| c1.734,0.678,3.215,1.741,4.457,3.19c1.237,1.449,1.858,3.391,1.858,5.818c0,2.994-1.186,5.472-3.54,7.436 | |||
| c-2.363,1.963-5.695,2.943-9.993,2.943C187.316,63.859,183.06,62.811,179.224,60.706z"/> | |||
| </g> | |||
| <rect x="73.738" y="87" fill="#E87D00" width="53" height="4"/> | |||
| </svg> | |||
| @@ -0,0 +1,57 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> | |||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | |||
| <svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | |||
| width="205.523px" height="91px" viewBox="0 0 205.523 91" enable-background="new 0 0 205.523 91" xml:space="preserve"> | |||
| <g> | |||
| <path fill="#333333" d="M11.466,62.599c-1.753-0.841-3.144-2.068-4.173-3.681c-1.026-1.612-1.541-3.472-1.541-5.573 | |||
| c0-3.461,1.367-6.218,4.102-8.277c2.736-2.056,6.743-3.084,12.025-3.084h8.486v-0.562c0-3.084-0.762-5.305-2.28-6.661 | |||
| c-1.521-1.355-3.892-2.032-7.118-2.032c-1.776,0-3.354,0.138-4.732,0.42c-1.379,0.281-2.909,0.701-4.591,1.262 | |||
| c-0.376,0.093-0.68,0.14-0.913,0.14c-0.701,0-1.309-0.257-1.822-0.771c-0.516-0.513-0.77-1.145-0.77-1.892 | |||
| c0-1.264,0.604-2.15,1.82-2.665c3.974-1.684,8.019-2.525,12.131-2.525c3.227,0,5.949,0.656,8.17,1.963 | |||
| c2.221,1.309,3.856,3.005,4.908,5.084c1.052,2.081,1.578,4.337,1.578,6.767v19.844c0,0.888-0.315,1.637-0.947,2.244 | |||
| c-0.631,0.606-1.391,0.912-2.279,0.912c-0.89,0-1.638-0.305-2.243-0.912c-0.607-0.606-0.911-1.355-0.911-2.244v-1.824 | |||
| c-3.461,3.554-7.855,5.33-13.184,5.33C15.124,63.86,13.219,63.44,11.466,62.599z M25.526,56.744 | |||
| c1.916-1.005,3.529-2.254,4.838-3.751v-5.891h-7.645c-7.06,0-10.588,1.848-10.588,5.539c0,1.685,0.572,3.041,1.718,4.067 | |||
| c1.146,1.028,3.051,1.543,5.716,1.543C21.621,58.252,23.609,57.75,25.526,56.744z"/> | |||
| <path fill="#333333" d="M48.734,54.606v-21.74h-4.979c-0.374,0-0.688-0.126-0.944-0.384c-0.26-0.257-0.388-0.573-0.388-0.946 | |||
| c0-0.467,0.211-0.865,0.632-1.193l9.535-9.326c0.42-0.421,0.817-0.631,1.192-0.631c0.374,0,0.689,0.14,0.947,0.42 | |||
| c0.257,0.282,0.385,0.609,0.385,0.982v5.61h7.924c0.794,0,1.447,0.257,1.963,0.77c0.517,0.514,0.771,1.169,0.771,1.964 | |||
| c0,0.748-0.256,1.392-0.771,1.928c-0.516,0.538-1.169,0.805-1.963,0.805h-7.924v21.178c0,1.822,0.433,2.979,1.298,3.472 | |||
| c0.865,0.49,1.95,0.736,3.261,0.736c0.935,0,1.87-0.141,2.806-0.421c0.185-0.046,0.384-0.093,0.594-0.142 | |||
| c0.211-0.043,0.479-0.068,0.809-0.068c0.653,0,1.237,0.246,1.751,0.734c0.516,0.492,0.771,1.088,0.771,1.789 | |||
| c0,1.076-0.538,1.894-1.612,2.455c-1.824,0.84-3.763,1.262-5.818,1.262C52.148,63.86,48.734,60.774,48.734,54.606z"/> | |||
| <path fill="#333333" d="M74.328,62.599c-0.606-0.605-0.912-1.354-0.912-2.244V30.274c0-0.888,0.306-1.648,0.912-2.28 | |||
| c0.607-0.631,1.355-0.946,2.245-0.946c0.887,0,1.646,0.315,2.278,0.946c0.63,0.631,0.946,1.392,0.946,2.28v2.875 | |||
| c1.308-1.87,2.887-3.411,4.733-4.627c1.846-1.216,4.242-1.824,7.188-1.824c2.619,0,4.861,0.702,6.73,2.103 | |||
| c1.87,1.403,3.203,3.109,3.998,5.12c2.898-4.814,7.198-7.223,12.902-7.223c2.617,0,4.804,0.656,6.557,1.963 | |||
| c1.753,1.309,3.05,2.994,3.891,5.05c0.844,2.057,1.264,4.206,1.264,6.45v20.195c0,0.888-0.315,1.637-0.946,2.244 | |||
| c-0.63,0.606-1.392,0.912-2.277,0.912c-0.89,0-1.638-0.305-2.245-0.912c-0.607-0.606-0.91-1.355-0.91-2.244V41.422 | |||
| c0-3.038-0.538-5.27-1.614-6.696c-1.074-1.426-2.922-2.138-5.538-2.138c-2.385,0-4.36,0.62-5.927,1.859 | |||
| c-1.565,1.237-2.957,2.862-4.171,4.872v21.036c0,0.889-0.315,1.638-0.946,2.244c-0.631,0.607-1.393,0.912-2.278,0.912 | |||
| c-0.888,0-1.638-0.304-2.244-0.912c-0.608-0.605-0.913-1.354-0.913-2.244V41.422c0-3.038-0.538-5.27-1.611-6.696 | |||
| c-1.076-1.426-2.921-2.138-5.54-2.138c-2.384,0-4.359,0.62-5.925,1.859c-1.566,1.237-2.957,2.862-4.172,4.872v21.036 | |||
| c0,0.889-0.316,1.638-0.946,2.244c-0.631,0.607-1.392,0.912-2.278,0.912C75.684,63.511,74.936,63.207,74.328,62.599z"/> | |||
| <path fill="#333333" d="M144.094,61.547c-2.707-1.542-4.803-3.728-6.272-6.557c-1.473-2.826-2.206-6.065-2.206-9.712 | |||
| c0-3.645,0.733-6.881,2.206-9.711c1.471-2.827,3.565-5.014,6.272-6.557c2.712-1.542,5.866-2.313,9.473-2.313 | |||
| c3.55,0,6.681,0.771,9.396,2.313c2.709,1.543,4.813,3.729,6.31,6.557c1.496,2.83,2.246,6.066,2.246,9.711 | |||
| c0,3.647-0.75,6.886-2.246,9.712c-1.496,2.829-3.601,5.015-6.31,6.557c-2.715,1.543-5.846,2.313-9.396,2.313 | |||
| C149.961,63.86,146.806,63.09,144.094,61.547z M159.067,56.709c1.752-0.888,3.2-2.291,4.351-4.206 | |||
| c1.144-1.917,1.714-4.35,1.714-7.293c0-2.898-0.57-5.306-1.714-7.223c-1.149-1.917-2.599-3.307-4.351-4.172 | |||
| c-1.754-0.864-3.588-1.297-5.5-1.297c-1.968,0-3.826,0.434-5.576,1.297c-1.756,0.866-3.189,2.256-4.315,4.172 | |||
| c-1.119,1.917-1.682,4.324-1.682,7.223c0,2.943,0.563,5.376,1.682,7.293c1.126,1.916,2.561,3.318,4.315,4.206 | |||
| c1.75,0.888,3.608,1.332,5.576,1.332C155.479,58.041,157.313,57.599,159.067,56.709z"/> | |||
| <path fill="#333333" d="M179.224,60.706c-0.79-0.563-1.192-1.333-1.192-2.314c0-0.746,0.258-1.402,0.772-1.963 | |||
| c0.514-0.562,1.17-0.842,1.968-0.842c0.42,0,0.84,0.096,1.26,0.281c1.493,0.654,2.991,1.169,4.486,1.544 | |||
| c1.496,0.374,3.181,0.562,5.054,0.562c5.188,0,7.779-1.66,7.779-4.979c0-1.075-0.598-1.894-1.789-2.454 | |||
| c-1.188-0.563-3.142-1.191-5.854-1.893c-2.76-0.655-5.038-1.334-6.84-2.035c-1.799-0.701-3.342-1.764-4.626-3.19 | |||
| c-1.287-1.426-1.928-3.306-1.928-5.645c0-3.272,1.18-5.936,3.543-7.993c2.354-2.059,5.735-3.086,10.134-3.086 | |||
| c3.598,0,6.984,0.585,10.162,1.753c0.658,0.188,1.16,0.539,1.513,1.052c0.346,0.516,0.524,1.051,0.524,1.612 | |||
| c0,0.749-0.271,1.402-0.809,1.963c-0.539,0.562-1.205,0.842-1.994,0.842c-0.236,0-0.539-0.046-0.914-0.141 | |||
| c-2.711-0.841-5.377-1.262-7.993-1.262c-2.526,0-4.502,0.456-5.932,1.368c-1.421,0.91-2.137,2.092-2.137,3.54 | |||
| c0,1.404,0.656,2.431,1.963,3.086c1.311,0.656,3.346,1.286,6.104,1.893c2.758,0.702,5.002,1.392,6.729,2.068 | |||
| c1.734,0.678,3.215,1.741,4.457,3.19c1.237,1.45,1.858,3.39,1.858,5.819c0,2.994-1.184,5.471-3.54,7.435 | |||
| c-2.363,1.963-5.695,2.944-9.993,2.944C187.316,63.86,183.06,62.81,179.224,60.706z"/> | |||
| </g> | |||
| <rect x="73.738" y="87" fill="#E87D00" width="53" height="4"/> | |||
| </svg> | |||
| @@ -0,0 +1,8 @@ | |||
| /* | |||
| Override variable defaults | |||
| ================================================== | |||
| This file is used to override default SCSS variables from the Shopware Storefront or Bootstrap. | |||
| Because of the !default flags, theme variable overrides have to be declared beforehand. | |||
| https://getbootstrap.com/docs/4.0/getting-started/theming/#variable-defaults | |||
| */ | |||
| @@ -0,0 +1,70 @@ | |||
| <?php declare(strict_types=1); | |||
| namespace zenit\PlatformAtmosSet2; | |||
| use Shopware\Core\Framework\Context; | |||
| use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository; | |||
| use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria; | |||
| use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter; | |||
| use Shopware\Core\Framework\Plugin\Context\UpdateContext; | |||
| use Shopware\Storefront\Framework\ThemeInterface; | |||
| use Shopware\Core\Framework\Plugin; | |||
| class zenitPlatformAtmosSet2 extends Plugin implements ThemeInterface | |||
| { | |||
| /** | |||
| * @var Context | |||
| */ | |||
| private $context; | |||
| public function getThemeConfigPath(): string | |||
| { | |||
| return 'theme.json'; | |||
| } | |||
| public function postUpdate(UpdateContext $updateContext): void | |||
| { | |||
| parent::postUpdate($updateContext); | |||
| $this->updateThemeDuplicates(); | |||
| } | |||
| private function updateThemeDuplicates(): void | |||
| { | |||
| $this->context = Context::createDefaultContext(); | |||
| $criteriaTheme = new Criteria(); | |||
| $criteriaTheme->addFilter(new EqualsFilter('technicalName', 'zenitPlatformAtmosSet2')); | |||
| /** @var EntityRepository $themeRepo */ | |||
| $themeRepo = $this->container->get('theme.repository'); | |||
| $parentTheme = $themeRepo->search($criteriaTheme, $this->context)->first(); | |||
| if (!$parentTheme) { | |||
| return; | |||
| } | |||
| $criteriaThemeDuplicates = new Criteria(); | |||
| $criteriaThemeDuplicates->addFilter(new EqualsFilter('parentThemeId', $parentTheme->get('id'))); | |||
| $resultThemeDuplicates = $themeRepo->search($criteriaThemeDuplicates, $this->context)->getElements(); | |||
| if (!$resultThemeDuplicates) { | |||
| return; | |||
| } | |||
| foreach ($resultThemeDuplicates as $themeDuplicate) { | |||
| $data = [ | |||
| 'id' => $themeDuplicate->get('id'), | |||
| 'baseConfig' => $parentTheme->get('baseConfig') | |||
| ]; | |||
| if (!$themeDuplicate->get('previewMediaId')) { | |||
| $data['previewMediaId'] = $parentTheme->get('previewMediaId'); | |||
| } | |||
| $themeRepo->update([$data], $this->context); | |||
| } | |||
| } | |||
| } | |||