<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\MacroNamespace;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Sandbox\SecurityNotAllowedTestError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* page/product/details.html.twig */
class __TwigTemplate_b1249f25bf47e6baff97d58f15aa1487 extends Template
{
private Source $source;
/**
* @var array<string, MacroNamespace>
*/
private array $macros = [];
private \Twig\Runtime\EscaperRuntime $escaper;
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->escaper = $env->getRuntime('Twig\Runtime\EscaperRuntime');
$this->blocks = [
'page_title' => [$this, 'block_page_title'],
'head_custom_stylesheets' => [$this, 'block_head_custom_stylesheets'],
'content' => [$this, 'block_content'],
'body_javascript' => [$this, 'block_body_javascript'],
];
}
protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
{
// line 1
return $this->parent ??= $this->load("base.html.twig", 1);
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "page/product/details.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "page/product/details.html.twig"));
$this->parent = $this->load("base.html.twig", 1);
yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 3
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_page_title(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "page_title"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "page_title"));
// line 4
yield " ";
yield (string) $this->escaper->escape(Twig\Extension\CoreExtension::striptags($this->env->getRuntime('App\Twig\TextResolverRuntime')->resolve("storefront.title")), "html", null, true);
yield " | ";
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 4, $this->source); })()), "name", [], "any", false, false, false, 4), "html", null, true);
yield "
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
return; yield;
}
// line 7
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_head_custom_stylesheets(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "head_custom_stylesheets"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "head_custom_stylesheets"));
// line 8
yield " ";
yield (string) $this->extensions['Symfony\WebpackEncoreBundle\Twig\EntryFilesTwigExtension']->renderWebpackLinkTags("product-card");
yield "
";
// line 9
yield (string) $this->extensions['Symfony\WebpackEncoreBundle\Twig\EntryFilesTwigExtension']->renderWebpackLinkTags("products");
yield "
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
return; yield;
}
// line 12
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_content(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
// line 13
yield " ";
$context["productConfig"] = $this->extensions['App\Twig\AppExtension']->jsonDecode(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 13, $this->source); })()), "config", [], "any", false, false, false, 13));
// line 14
yield " <div class=\"container-3xl my-5\">
<div class=\"row\">
<div class=\"col-12 d-lg-none\">
<h1 class=\"ornament mb-4\">";
// line 17
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 17, $this->source); })()), "name", [], "any", false, false, false, 17), "html", null, true);
yield "</h1>
</div>
<div class=\"col-12 col-lg-8 col-xl-6 order-2 order-lg-1\">
<h1 class=\"ornament mb-4 d-none d-lg-block\">";
// line 20
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 20, $this->source); })()), "name", [], "any", false, false, false, 20), "html", null, true);
yield "</h1>
<p>";
// line 21
yield (string) CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 21, $this->source); })()), "description", [], "any", false, false, false, 21);
yield "</p>
<ul id=\"product-config\" class=\"my-4\">
";
// line 23
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 23, $this->source); })()), "kim_addresses_included", [], "any", false, false, false, 23)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 24
yield " <li>
";
// line 25
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 25, $this->source); })()), "kim_addresses", [], "any", false, false, false, 25), "quantity", [], "any", false, false, false, 25), "html", null, true);
yield "x KIM Adressen
</li>
";
}
// line 28
yield " ";
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 28, $this->source); })()), "hardware_included", [], "any", false, false, false, 28)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 29
yield " ";
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 29, $this->source); })()), "hardware", [], "any", false, false, false, 29));
foreach ($context['_seq'] as $context["_key"] => $context["hardware"]) {
// line 30
yield " ";
if ((CoreExtension::getAttribute($this->env, $this->source, $context["hardware"], "quantity", [], "any", false, false, false, 30) > 0)) {
// line 31
yield " <li>
";
// line 32
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["hardware"], "quantity", [], "any", false, false, false, 32), "html", null, true);
yield "x ";
yield (string) $this->env->getRuntime('App\Twig\TextResolverRuntime')->resolve(CoreExtension::getAttribute($this->env, $this->source, $context["hardware"], "hardware", [], "any", false, false, false, 32));
yield "
</li>
";
}
// line 35
yield " ";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['hardware'], $context['_parent']);
$context = array_intersect_key($context, $_parent);
$context += $_parent;
// line 36
yield " ";
}
// line 37
yield " </ul>
<form name=\"product-form\">
<div class=\"row\">
";
// line 40
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 40, $this->source); })()), "kim_addresses_included", [], "any", false, false, false, 40)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 41
yield " ";
$context["quantity"] = CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 41, $this->source); })()), "kim_addresses", [], "any", false, false, false, 41), "quantity", [], "any", false, false, false, 41);
// line 42
yield " <div class=\"col-12\">
<div class=\"bg-lightgrey p-3 p-xl-5\">
<h3>KIM Mail</h3>
<p>Reserviere deine KIM-Adresse";
// line 45
yield (string) ((((isset($context["quantity"]) || array_key_exists("quantity", $context) ? $context["quantity"] : (function () { throw new RuntimeError('Variable "quantity" does not exist.', 45, $this->source); })()) > 1)) ? ("n") : (""));
yield ".</p>
<div id=\"kimAddresses\">
";
// line 47
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(range(1, (isset($context["quantity"]) || array_key_exists("quantity", $context) ? $context["quantity"] : (function () { throw new RuntimeError('Variable "quantity" does not exist.', 47, $this->source); })())));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["i"]) {
// line 48
yield " <div id=\"kim_address_result_";
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index0", [], "any", false, false, false, 48), "html", null, true);
yield "\" class=\"d-none w-100 mb-3\"></div>
<div class=\"row\">
<div class=\"input-group mb-4 mb-md-3\">
<input
id=\"kim_address_";
// line 52
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index0", [], "any", false, false, false, 52), "html", null, true);
yield "\"
name=\"kim_address[";
// line 53
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index0", [], "any", false, false, false, 53), "html", null, true);
yield "]\"
type=\"text\"
class=\"col-12 col-md-5 form-control border-0\"
placeholder=\"Kim Muster\"
aria-label=\"Kim Adresse\"
aria-describedby=\"kim_address_";
// line 58
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index0", [], "any", false, false, false, 58), "html", null, true);
yield "\"
data-domain=\"";
// line 59
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 59, $this->source); })()), "kim_addresses", [], "any", false, false, false, 59), "domain", [], "any", false, false, false, 59), "html", null, true);
yield "\"
data-type=\"kim\"
data-included=\"true\"
data-reserved=\"false\"
>
<span class=\"col-12 col-md-5 input-group-text border-0 bg-accent-grey\" id=\"kim_address_";
// line 64
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index0", [], "any", false, false, false, 64), "html", null, true);
yield "\">";
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 64, $this->source); })()), "kim_addresses", [], "any", false, false, false, 64), "domain", [], "any", false, false, false, 64), "html", null, true);
yield "</span>
<button
class=\"col-12 col-md-2 button accent\"
type=\"button\"
data-type=\"check\"
data-target=\"kim_address_";
// line 69
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index0", [], "any", false, false, false, 69), "html", null, true);
yield "\"
data-result=\"kim_address_result_";
// line 70
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index0", [], "any", false, false, false, 70), "html", null, true);
yield "\"
>
Prüfen
</button>
<button
class=\"col-12 col-md-2 button accent d-none\"
type=\"button\"
data-type=\"reserve\"
data-target=\"kim_address_";
// line 79
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index0", [], "any", false, false, false, 79), "html", null, true);
yield "\"
data-result=\"kim_address_result_";
// line 80
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index0", [], "any", false, false, false, 80), "html", null, true);
yield "\"
disabled=\"disabled\"
>
Reservieren
</button>
</div>
</div>
";
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['i'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent);
$context += $_parent;
// line 88
yield " </div>
";
// line 89
if ((($tmp = $this->env->getRuntime('App\Twig\ProductRuntime')->hasKimPrices(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 89, $this->source); })()), "id", [], "any", false, false, false, 89))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 90
yield " <template id=\"kimAddressTemplate\">
<div id=\"kim_address_result_\" class=\"d-none w-100 mb-3\"></div>
<div class=\"row\">
<div class=\"input-group mb-3 mb-md-3\">
<button class=\"col-6 col-md-1 order-3 order-md-1 d-flex justify-content-center align-items-center d-md-block btn btn-outline-secondary\" type=\"button\" data-type=\"remove\">
<i class=\"fas fa-trash\"></i>
<span class=\"d-block ms-2 ms-md-0 d-md-none\">löschen</span>
</button>
<input
id=\"kim_address_\"
name=\"kim_address[]\"
type=\"text\"
class=\"col-12 col-md-5 order-1 order-md-2 form-control border-0\"
placeholder=\"Kim Muster\"
aria-label=\"Kim Adresse\"
data-domain=\"";
// line 105
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 105, $this->source); })()), "kim_addresses", [], "any", false, false, false, 105), "domain", [], "any", false, false, false, 105), "html", null, true);
yield "\"
data-type=\"kim\"
data-included=\"false\"
data-price=\"";
// line 108
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 108, $this->source); })()), "kim_addresses", [], "any", false, false, false, 108), "price", [], "any", false, false, false, 108), "html", null, true);
yield "\"
data-reserved=\"false\"
>
<span class=\"col-12 col-md-5 order-2 order-md-3 input-group-text bg-accent-grey\" id=\"kim_address_\">";
// line 111
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 111, $this->source); })()), "kim_addresses", [], "any", false, false, false, 111), "domain", [], "any", false, false, false, 111), "html", null, true);
yield "</span>
<button
class=\"col-6 col-md-2 order-4 button accent button-border-right d-block\"
type=\"button\"
data-type=\"check\"
>
Prüfen
</button>
<button
class=\"col-12 col-md-2 order-4 button accent d-none\"
type=\"button\"
data-type=\"reserve\"
disabled=\"disabled\"
>
Reservieren
</button>
</div>
</div>
</template>
<button id=\"addAdditionalKimAddress\" class=\"button outlined darkblue w-100\" type=\"button\"><i class=\"fas fa-plus me-2\"></i> weitere hinzufügen</button>
";
}
// line 133
yield " </div>
</div>
";
}
// line 136
yield " </div>
";
// line 138
if ((($tmp = $this->env->getRuntime('App\Twig\ProductRuntime')->hasHardwarePrices(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 138, $this->source); })()), "id", [], "any", false, false, false, 138))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 139
yield " <div class=\"product-addons mt-5\">
<div class=\"row\">
<div class=\"col-12\">
<h1 class=\"ornament-with-child\">";
// line 142
yield (string) $this->env->getRuntime('App\Twig\TextResolverRuntime')->resolve("product.details.addon.headline");
yield "</h1>
<p>";
// line 143
yield (string) $this->env->getRuntime('App\Twig\TextResolverRuntime')->resolve("product.details.addon.subline");
yield "</p>
</div>
</div>
<div data-match-height-group=\"product-addons-group\" class=\"row g-3 match-height-product-addon\">
";
// line 147
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 147, $this->source); })()), "hardware_included", [], "any", false, false, false, 147)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 148
yield " ";
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env, $this->source, (isset($context["productConfig"]) || array_key_exists("productConfig", $context) ? $context["productConfig"] : (function () { throw new RuntimeError('Variable "productConfig" does not exist.', 148, $this->source); })()), "hardware", [], "any", false, false, false, 148));
foreach ($context['_seq'] as $context["_key"] => $context["hardware"]) {
// line 149
yield " ";
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["hardware"], "has_own_price", [], "any", false, false, false, 149)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 150
yield " <div class=\"col-12 col-sm-6 col-xl-4\">
<div
class=\"addon d-flex flex-column justify-content-between bg-accent p-4\"
";
// line 153
yield (string) $this->extensions['Symfony\UX\StimulusBundle\Twig\StimulusTwigExtension']->renderStimulusController("product");
yield "
data-product-max-value=\"99\"
data-product-min-value=\"0\"
>
<div class=\"card-body p-0\">
<h5 class=\"card-title\">";
// line 158
yield (string) $this->env->getRuntime('App\Twig\TextResolverRuntime')->resolve(CoreExtension::getAttribute($this->env, $this->source, $context["hardware"], "hardware", [], "any", false, false, false, 158));
yield "</h5>
";
// line 159
if ((CoreExtension::getAttribute($this->env, $this->source, $context["hardware"], "price", [], "any", false, false, false, 159) > 0)) {
// line 160
yield " <p>";
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["hardware"], "price", [], "any", false, false, false, 160), "html", null, true);
yield " €</p>
";
}
// line 162
yield " <img class=\"d-block mx-auto pb-5\" width=\"100\" src=\"";
yield (string) $this->escaper->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("build/images/icons/icon_tiproduct.svg"), "html", null, true);
yield "\" alt=\"\">
</div>
<div class=\"card-footer p-0\">
<div class=\"input-group\">
<button
type=\"button\"
class=\"btn btn-dark btn-number\"
";
// line 169
yield (string) $this->extensions['Symfony\UX\StimulusBundle\Twig\StimulusTwigExtension']->renderStimulusAction("product", "decreaseValue");
yield "
>
<i class=\"fas fa-minus\"></i>
</button>
<input
type=\"number\"
name=\"hardware[";
// line 176
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["hardware"], "hardware", [], "any", false, false, false, 176), "html", null, true);
yield "]\"
class=\"form-control fw-bold\"
data-type=\"addon\"
data-item-number=\"";
// line 179
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["hardware"], "hardware", [], "any", false, false, false, 179), "html", null, true);
yield "\"
data-price=\"";
// line 180
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["hardware"], "price", [], "any", false, false, false, 180), "html", null, true);
yield "\"
placeholder=\"Anzahl\"
aria-label=\"Anzahl\"
aria-describedby=\"hardware_";
// line 183
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["hardware"], "hardware", [], "any", false, false, false, 183), "html", null, true);
yield "\"
value=\"0\"
min=\"0\"
";
// line 186
yield (string) $this->extensions['Symfony\UX\StimulusBundle\Twig\StimulusTwigExtension']->renderStimulusTarget("product", "quantity");
yield "
>
<button
type=\"button\"
class=\"btn btn-dark btn-number\"
";
// line 192
yield (string) $this->extensions['Symfony\UX\StimulusBundle\Twig\StimulusTwigExtension']->renderStimulusAction("product", "increaseValue");
yield "
>
<i class=\"fas fa-plus\"></i>
</button>
</div>
</div>
</div>
</div>
";
}
// line 201
yield " ";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['hardware'], $context['_parent']);
$context = array_intersect_key($context, $_parent);
$context += $_parent;
// line 202
yield " ";
}
// line 203
yield " </div>
</div>
";
}
// line 206
yield "
<div class=\"row mb-5 mt-2\">
<div class=\"col-12 text-center\">
<hr>
<h1>";
// line 210
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 210, $this->source); })()), "name", [], "any", false, false, false, 210), "html", null, true);
yield "</h1>
";
// line 211
if ((CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 211, $this->source); })()), "price", [], "any", false, false, false, 211) > 0)) {
// line 212
yield " <h1>";
yield (string) $this->escaper->escape($this->extensions['Twig\Extra\Intl\IntlExtension']->formatCurrency(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 212, $this->source); })()), "price", [], "any", false, false, false, 212), "EUR", [], "de"), "html", null, true);
yield " *</h1>
";
}
// line 214
yield " ";
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 214, $this->source); })()), "recurringPrice", [], "any", false, false, false, 214)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 215
yield " <h2>";
yield (string) $this->escaper->escape($this->extensions['Twig\Extra\Intl\IntlExtension']->formatCurrency(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 215, $this->source); })()), "recurringPrice", [], "any", false, false, false, 215), "EUR", [], "de"), "html", null, true);
yield " / mtl.</h2>
";
}
// line 217
yield " <p>";
yield (string) $this->env->getRuntime('App\Twig\TextResolverRuntime')->resolve("product.details.page.button.star");
yield "</p>
</div>
<div class=\"col-12\">
<div class=\"mx-5\">
<button
";
// line 222
yield (string) $this->extensions['Symfony\UX\StimulusBundle\Twig\StimulusTwigExtension']->renderStimulusController("shopping-cart");
yield "
";
// line 223
yield (string) $this->extensions['Symfony\UX\StimulusBundle\Twig\StimulusTwigExtension']->renderStimulusAction("shopping-cart", "addProductToCart");
yield "
data-shopping-cart-product-id-value=\"";
// line 224
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 224, $this->source); })()), "id", [], "any", false, false, false, 224), "html", null, true);
yield "\"
class=\"button accent w-100\">
";
// line 226
yield (string) $this->env->getRuntime('App\Twig\TextResolverRuntime')->resolve("product.details.page.button.buy");
yield "
</button>
</div>
<hr>
</div>
</div>
</form>
</div>
<div class=\"col-12 col-md-6 col-lg-4 col-xl-6 order-1 order-lg-1 mb-5 mb-lg-0\">
<div class=\"product-slider\">
<div style=\"--swiper-navigation-color: var(--ti-accent); --swiper-pagination-color: var(--ti-accent)\" class=\"swiper product-slider-main-view\">
<div class=\"swiper-wrapper\">
";
// line 238
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 238, $this->source); })()), "images", [], "any", false, false, false, 238));
foreach ($context['_seq'] as $context["_key"] => $context["image"]) {
// line 239
yield " <div class=\"swiper-slide\">
<img src=\"/images/";
// line 240
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["image"], "image", [], "any", false, false, false, 240), "html", null, true);
yield "\">
</div>
";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['image'], $context['_parent']);
$context = array_intersect_key($context, $_parent);
$context += $_parent;
// line 243
yield " </div>
";
// line 245
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 245, $this->source); })()), "images", [], "any", false, false, false, 245)) > 1)) {
// line 246
yield " <div class=\"swiper-button-next\"></div>
<div class=\"swiper-button-prev\"></div>
";
}
// line 249
yield " </div>
";
// line 250
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 250, $this->source); })()), "images", [], "any", false, false, false, 250)) > 1)) {
// line 251
yield " <div thumbsSlider=\"\" class=\"swiper product-slider-thumbnails-view\">
<div class=\"swiper-wrapper\">
";
// line 253
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 253, $this->source); })()), "images", [], "any", false, false, false, 253));
foreach ($context['_seq'] as $context["_key"] => $context["image"]) {
// line 254
yield " <div class=\"swiper-slide\">
<img src=\"/images/";
// line 255
yield (string) $this->escaper->escape(CoreExtension::getAttribute($this->env, $this->source, $context["image"], "image", [], "any", false, false, false, 255), "html", null, true);
yield "\">
</div>
";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['image'], $context['_parent']);
$context = array_intersect_key($context, $_parent);
$context += $_parent;
// line 258
yield " </div>
</div>
";
}
// line 261
yield " </div>
</div>
</div>
</div>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
return; yield;
}
// line 267
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_body_javascript(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "body_javascript"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "body_javascript"));
// line 268
yield " ";
yield (string) $this->extensions['Symfony\WebpackEncoreBundle\Twig\EntryFilesTwigExtension']->renderWebpackScriptTags("product");
yield "
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
return; yield;
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "page/product/details.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDefaultEscapeStrategy(): string|false
{
return "html";
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 683 => 268, 670 => 267, 655 => 261, 650 => 258, 640 => 255, 637 => 254, 633 => 253, 629 => 251, 627 => 250, 624 => 249, 619 => 246, 617 => 245, 613 => 243, 603 => 240, 600 => 239, 596 => 238, 581 => 226, 576 => 224, 572 => 223, 568 => 222, 559 => 217, 553 => 215, 550 => 214, 544 => 212, 542 => 211, 538 => 210, 532 => 206, 527 => 203, 524 => 202, 517 => 201, 505 => 192, 496 => 186, 490 => 183, 484 => 180, 480 => 179, 474 => 176, 464 => 169, 453 => 162, 447 => 160, 445 => 159, 441 => 158, 433 => 153, 428 => 150, 425 => 149, 420 => 148, 418 => 147, 411 => 143, 407 => 142, 402 => 139, 400 => 138, 396 => 136, 391 => 133, 366 => 111, 360 => 108, 354 => 105, 337 => 90, 335 => 89, 332 => 88, 309 => 80, 305 => 79, 293 => 70, 289 => 69, 279 => 64, 271 => 59, 267 => 58, 259 => 53, 255 => 52, 247 => 48, 230 => 47, 225 => 45, 220 => 42, 217 => 41, 215 => 40, 210 => 37, 207 => 36, 200 => 35, 192 => 32, 189 => 31, 186 => 30, 181 => 29, 178 => 28, 172 => 25, 169 => 24, 167 => 23, 162 => 21, 158 => 20, 152 => 17, 147 => 14, 144 => 13, 131 => 12, 118 => 9, 113 => 8, 100 => 7, 84 => 4, 71 => 3, 48 => 1,);
}
public function getSourceContext(): Source
{
return new Source("{% extends \x27base.html.twig\x27 %}
{% block page_title %}
{{ \x27storefront.title\x27|resolve|striptags }} | {{ product.name }}
{% endblock %}
{% block head_custom_stylesheets %}
{{ encore_entry_link_tags(\x27product-card\x27) }}
{{ encore_entry_link_tags(\x27products\x27) }}
{% endblock head_custom_stylesheets %}
{% block content %}
{% set productConfig = product.config|json_decode %}
<div class=\"container-3xl my-5\">
<div class=\"row\">
<div class=\"col-12 d-lg-none\">
<h1 class=\"ornament mb-4\">{{ product.name }}</h1>
</div>
<div class=\"col-12 col-lg-8 col-xl-6 order-2 order-lg-1\">
<h1 class=\"ornament mb-4 d-none d-lg-block\">{{ product.name }}</h1>
<p>{{ product.description|raw }}</p>
<ul id=\"product-config\" class=\"my-4\">
{% if productConfig.kim_addresses_included %}
<li>
{{ productConfig.kim_addresses.quantity }}x KIM Adressen
</li>
{% endif %}
{% if productConfig.hardware_included %}
{% for hardware in productConfig.hardware %}
{% if hardware.quantity > 0 %}
<li>
{{ hardware.quantity }}x {{ hardware.hardware|resolve }}
</li>
{% endif %}
{% endfor %}
{% endif %}
</ul>
<form name=\"product-form\">
<div class=\"row\">
{% if productConfig.kim_addresses_included %}
{% set quantity = productConfig.kim_addresses.quantity %}
<div class=\"col-12\">
<div class=\"bg-lightgrey p-3 p-xl-5\">
<h3>KIM Mail</h3>
<p>Reserviere deine KIM-Adresse{{ (quantity > 1) ? \x27n\x27 : \x27\x27 }}.</p>
<div id=\"kimAddresses\">
{% for i in range(1, quantity) %}
<div id=\"kim_address_result_{{ loop.index0 }}\" class=\"d-none w-100 mb-3\"></div>
<div class=\"row\">
<div class=\"input-group mb-4 mb-md-3\">
<input
id=\"kim_address_{{ loop.index0 }}\"
name=\"kim_address[{{ loop.index0 }}]\"
type=\"text\"
class=\"col-12 col-md-5 form-control border-0\"
placeholder=\"Kim Muster\"
aria-label=\"Kim Adresse\"
aria-describedby=\"kim_address_{{ loop.index0 }}\"
data-domain=\"{{ productConfig.kim_addresses.domain }}\"
data-type=\"kim\"
data-included=\"true\"
data-reserved=\"false\"
>
<span class=\"col-12 col-md-5 input-group-text border-0 bg-accent-grey\" id=\"kim_address_{{ loop.index0 }}\">{{ productConfig.kim_addresses.domain }}</span>
<button
class=\"col-12 col-md-2 button accent\"
type=\"button\"
data-type=\"check\"
data-target=\"kim_address_{{ loop.index0 }}\"
data-result=\"kim_address_result_{{ loop.index0 }}\"
>
Prüfen
</button>
<button
class=\"col-12 col-md-2 button accent d-none\"
type=\"button\"
data-type=\"reserve\"
data-target=\"kim_address_{{ loop.index0 }}\"
data-result=\"kim_address_result_{{ loop.index0 }}\"
disabled=\"disabled\"
>
Reservieren
</button>
</div>
</div>
{% endfor %}
</div>
{% if has_kim_prices(product.id) %}
<template id=\"kimAddressTemplate\">
<div id=\"kim_address_result_\" class=\"d-none w-100 mb-3\"></div>
<div class=\"row\">
<div class=\"input-group mb-3 mb-md-3\">
<button class=\"col-6 col-md-1 order-3 order-md-1 d-flex justify-content-center align-items-center d-md-block btn btn-outline-secondary\" type=\"button\" data-type=\"remove\">
<i class=\"fas fa-trash\"></i>
<span class=\"d-block ms-2 ms-md-0 d-md-none\">löschen</span>
</button>
<input
id=\"kim_address_\"
name=\"kim_address[]\"
type=\"text\"
class=\"col-12 col-md-5 order-1 order-md-2 form-control border-0\"
placeholder=\"Kim Muster\"
aria-label=\"Kim Adresse\"
data-domain=\"{{ productConfig.kim_addresses.domain }}\"
data-type=\"kim\"
data-included=\"false\"
data-price=\"{{ productConfig.kim_addresses.price }}\"
data-reserved=\"false\"
>
<span class=\"col-12 col-md-5 order-2 order-md-3 input-group-text bg-accent-grey\" id=\"kim_address_\">{{ productConfig.kim_addresses.domain }}</span>
<button
class=\"col-6 col-md-2 order-4 button accent button-border-right d-block\"
type=\"button\"
data-type=\"check\"
>
Prüfen
</button>
<button
class=\"col-12 col-md-2 order-4 button accent d-none\"
type=\"button\"
data-type=\"reserve\"
disabled=\"disabled\"
>
Reservieren
</button>
</div>
</div>
</template>
<button id=\"addAdditionalKimAddress\" class=\"button outlined darkblue w-100\" type=\"button\"><i class=\"fas fa-plus me-2\"></i> weitere hinzufügen</button>
{% endif %}
</div>
</div>
{% endif %}
</div>
{% if has_hardware_prices(product.id) %}
<div class=\"product-addons mt-5\">
<div class=\"row\">
<div class=\"col-12\">
<h1 class=\"ornament-with-child\">{{ \x27product.details.addon.headline\x27|resolve }}</h1>
<p>{{ \x27product.details.addon.subline\x27|resolve }}</p>
</div>
</div>
<div data-match-height-group=\"product-addons-group\" class=\"row g-3 match-height-product-addon\">
{% if productConfig.hardware_included %}
{% for hardware in productConfig.hardware %}
{% if hardware.has_own_price %}
<div class=\"col-12 col-sm-6 col-xl-4\">
<div
class=\"addon d-flex flex-column justify-content-between bg-accent p-4\"
{{ stimulus_controller(\x27product\x27) }}
data-product-max-value=\"99\"
data-product-min-value=\"0\"
>
<div class=\"card-body p-0\">
<h5 class=\"card-title\">{{ hardware.hardware|resolve }}</h5>
{% if hardware.price > 0 %}
<p>{{ hardware.price }} €</p>
{% endif %}
<img class=\"d-block mx-auto pb-5\" width=\"100\" src=\"{{ asset(\x27build/images/icons/icon_tiproduct.svg\x27) }}\" alt=\"\">
</div>
<div class=\"card-footer p-0\">
<div class=\"input-group\">
<button
type=\"button\"
class=\"btn btn-dark btn-number\"
{{ stimulus_action(\x27product\x27, \x27decreaseValue\x27) }}
>
<i class=\"fas fa-minus\"></i>
</button>
<input
type=\"number\"
name=\"hardware[{{ hardware.hardware }}]\"
class=\"form-control fw-bold\"
data-type=\"addon\"
data-item-number=\"{{ hardware.hardware }}\"
data-price=\"{{ hardware.price }}\"
placeholder=\"Anzahl\"
aria-label=\"Anzahl\"
aria-describedby=\"hardware_{{ hardware.hardware }}\"
value=\"0\"
min=\"0\"
{{ stimulus_target(\x27product\x27, \x27quantity\x27) }}
>
<button
type=\"button\"
class=\"btn btn-dark btn-number\"
{{ stimulus_action(\x27product\x27, \x27increaseValue\x27) }}
>
<i class=\"fas fa-plus\"></i>
</button>
</div>
</div>
</div>
</div>
{% endif %}
{% endfor %}
{% endif %}
</div>
</div>
{% endif %}
<div class=\"row mb-5 mt-2\">
<div class=\"col-12 text-center\">
<hr>
<h1>{{ product.name }}</h1>
{% if (product.price > 0) %}
<h1>{{ product.price|format_currency(\x27EUR\x27, locale=\x27de\x27) }} *</h1>
{% endif %}
{% if (product.recurringPrice) %}
<h2>{{ product.recurringPrice|format_currency(\x27EUR\x27, locale=\x27de\x27) }} / mtl.</h2>
{% endif %}
<p>{{ \x27product.details.page.button.star\x27|resolve }}</p>
</div>
<div class=\"col-12\">
<div class=\"mx-5\">
<button
{{ stimulus_controller(\x27shopping-cart\x27) }}
{{ stimulus_action(\x27shopping-cart\x27, \x27addProductToCart\x27) }}
data-shopping-cart-product-id-value=\"{{ product.id }}\"
class=\"button accent w-100\">
{{ \x27product.details.page.button.buy\x27|resolve }}
</button>
</div>
<hr>
</div>
</div>
</form>
</div>
<div class=\"col-12 col-md-6 col-lg-4 col-xl-6 order-1 order-lg-1 mb-5 mb-lg-0\">
<div class=\"product-slider\">
<div style=\"--swiper-navigation-color: var(--ti-accent); --swiper-pagination-color: var(--ti-accent)\" class=\"swiper product-slider-main-view\">
<div class=\"swiper-wrapper\">
{% for image in product.images %}
<div class=\"swiper-slide\">
<img src=\"/images/{{ image.image }}\">
</div>
{% endfor %}
</div>
{% if (product.images|length > 1) %}
<div class=\"swiper-button-next\"></div>
<div class=\"swiper-button-prev\"></div>
{% endif %}
</div>
{% if (product.images|length > 1) %}
<div thumbsSlider=\"\" class=\"swiper product-slider-thumbnails-view\">
<div class=\"swiper-wrapper\">
{% for image in product.images %}
<div class=\"swiper-slide\">
<img src=\"/images/{{ image.image }}\">
</div>
{% endfor %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
</div>
{% endblock %}
{% block body_javascript %}
{{ encore_entry_script_tags(\x27product\x27) }}
{% endblock body_javascript %}
", "page/product/details.html.twig", "/srv/storefront/templates/page/product/details.html.twig");
}
}