<?phpuse Twig\Environment;use Twig\Error\LoaderError;use Twig\Error\RuntimeError;use Twig\Extension\CoreExtension;use Twig\Extension\SandboxExtension;use Twig\Markup;use Twig\Sandbox\SecurityError;use Twig\Sandbox\SecurityNotAllowedTagError;use Twig\Sandbox\SecurityNotAllowedFilterError;use Twig\Sandbox\SecurityNotAllowedFunctionError;use Twig\Source;use Twig\Template;use Twig\TemplateWrapper;/* application/whileresume/website/components/footer.html.twig */class __TwigTemplate_5ff04064cf35ccc3c1eb2a55968b72e6 extends Template{ private Source $source; /** * @var array<string, Template> */ private array $macros = []; public function __construct(Environment $env) { parent::__construct($env); $this->source = $this->getSourceContext(); $this->parent = false; $this->blocks = [ ]; } 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", "application/whileresume/website/components/footer.html.twig")); $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"]; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "application/whileresume/website/components/footer.html.twig")); // line 1 $context["_locale"] = CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 1, $this->source); })()), "request", [], "any", false, false, false, 1), "locale", [], "any", false, false, false, 1); // line 2 $context["_isFr"] = ((isset($context["_locale"]) || array_key_exists("_locale", $context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.', 2, $this->source); })()) == "fr"); // line 3 yield ""; // line 5 $context["footerArticles"] = $this->extensions['App\Twig\CoreExtension']->getFooterArticles((isset($context["_locale"]) || array_key_exists("_locale", $context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.', 5, $this->source); })()), 5); // line 6 $context["footerLandingJobs"] = $this->extensions['App\Twig\CoreExtension']->getFooterFeaturedLandingJobs((isset($context["_locale"]) || array_key_exists("_locale", $context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.', 6, $this->source); })()), 5); // line 7 $context["footerJobsCities"] = $this->extensions['App\Twig\CoreExtension']->getFooterJobsCities((isset($context["_locale"]) || array_key_exists("_locale", $context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.', 7, $this->source); })()), 6); // line 8 $context["footerEnterprisesCities"] = $this->extensions['App\Twig\CoreExtension']->getFooterEnterprisesCities((isset($context["_locale"]) || array_key_exists("_locale", $context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.', 8, $this->source); })()), 6); // line 9 yield ""; // line 11 $context["_storeData"] = $this->extensions['App\Twig\CvsExtension']->getAppStoreCountries(); // line 12 $context["_storePrimary"] = ((CoreExtension::getAttribute($this->env, $this->source, ($context["_storeData"] ?? null), "primary", [], "any", true, true, false, 12)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["_storeData"]) || array_key_exists("_storeData", $context) ? $context["_storeData"] : (function () { throw new RuntimeError('Variable "_storeData" does not exist.', 12, $this->source); })()), "primary", [], "any", false, false, false, 12), [])) : ([])); // line 13 $context["_storeOthers"] = ((CoreExtension::getAttribute($this->env, $this->source, ($context["_storeData"] ?? null), "others", [], "any", true, true, false, 13)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["_storeData"]) || array_key_exists("_storeData", $context) ? $context["_storeData"] : (function () { throw new RuntimeError('Variable "_storeData" does not exist.', 13, $this->source); })()), "others", [], "any", false, false, false, 13), [])) : ([])); // line 14 yield "<style> /* ---------- Footer WhileResume ---------- */ .whr-footer { margin-top: 32px; padding: 36px 24px 24px; background: #F9FAFD; border-radius: 16px; color: #2c2c46; width: auto; max-width: none; margin-left: 16px; margin-right: 16px; } .theme-dark .whr-footer { background: #2a2a3c; color: #e9e9ef; } .middle-sidebar-left .whr-footer { width: 100%; margin-left: 0; margin-right: 0; } /* Stores en haut de la col 1 */ .whr-footer .whr-stores { display: flex; flex-direction: column; gap: 8px; margin-bottom: 18px; position: relative; /* pour le dropdown */ } .whr-footer .whr-store-link { display: inline-flex; align-items: center; gap: 10px; padding: 8px 14px; background: #111; color: #fff !important; border-radius: 10px; font-size: 12px; font-weight: 600; text-decoration: none !important; line-height: 1.2; transition: transform .15s ease, background .2s ease; max-width: 200px; cursor: pointer; border: none; font-family: inherit; text-align: left; } .whr-footer .whr-store-link:hover { background: #2c2c46; transform: translateY(-1px); } .whr-footer .whr-store-link small { display: block; font-weight: 400; font-size: 10px; opacity: .7; } .whr-footer .whr-store-link strong { font-size: 13px; display: block; } /* Wrapper du bouton + dropdown (version EN) */ .whr-store-wrap { position: relative; display: inline-block; } .whr-store-wrap .whr-store-link { width: 100%; max-width: 200px; } /* === Dropdown élargi (2 colonnes + search + featured pinné) === */ .whr-store-dropdown { position: absolute; bottom: calc(100% + 6px); left: 0; width: 380px; max-width: calc(100vw - 32px); background: #fff; border-radius: 12px; box-shadow: 0 -8px 24px rgba(0,0,0,.15), 0 -2px 6px rgba(0,0,0,.08); z-index: 1000; display: none; overflow: hidden; } .theme-dark .whr-store-dropdown { background: #34344a; box-shadow: 0 -8px 24px rgba(0,0,0,.4), 0 -2px 6px rgba(0,0,0,.2); } .whr-store-wrap.is-open .whr-store-dropdown { display: flex; flex-direction: column; animation: whrFadeInUp .15s ease; } @keyframes whrFadeInUp { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } } /* Chevron */ .whr-store-link .whr-store-chevron { margin-left: auto; font-size: 10px; opacity: .7; transition: transform .2s ease; } .whr-store-wrap.is-open .whr-store-link .whr-store-chevron { transform: rotate(180deg); } /* Zone search en haut */ .whr-store-search-wrap { padding: 10px 10px 6px; border-bottom: 1px solid rgba(0,0,0,.06); flex-shrink: 0; } .theme-dark .whr-store-search-wrap { border-bottom-color: rgba(255,255,255,.08); } .whr-store-search { width: 100%; height: 34px; padding: 0 12px 0 32px; border: 1px solid rgba(0,0,0,.1); border-radius: 8px; background: #f5f5f8 url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><line x1='21' y1='21' x2='16.65' y2='16.65'/></svg>\") no-repeat 10px center; font-size: 13px; color: #2c2c46; outline: none; transition: border-color .15s ease, background-color .15s ease; font-family: inherit; } .whr-store-search:focus { border-color: var(--theme-color, #6C3AED); background-color: #fff; } .theme-dark .whr-store-search { background-color: #2a2a3c; border-color: rgba(255,255,255,.1); color: #e9e9ef; } .theme-dark .whr-store-search:focus { background-color: #3c3c52; } .whr-store-search::placeholder { color: #999; } /* Featured pinné (toujours visible, hors scroll) */ .whr-store-featured { padding: 8px 8px 4px; flex-shrink: 0; border-bottom: 1px solid rgba(0,0,0,.06); } .theme-dark .whr-store-featured { border-bottom-color: rgba(255,255,255,.08); } /* Zone scrollable des \"other regions\" */ .whr-store-others { padding: 8px; max-height: 280px; overflow-y: auto; flex: 1; } .whr-store-others::-webkit-scrollbar { width: 6px; } .whr-store-others::-webkit-scrollbar-thumb { background: rgba(0,0,0,.15); border-radius: 3px; } .theme-dark .whr-store-others::-webkit-scrollbar-thumb { background: rgba(255,255,255,.15); } /* Header de section */ .whr-store-dropdown-header { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; opacity: .55; padding: 4px 8px 6px; color: #2c2c46; } .theme-dark .whr-store-dropdown-header { color: #e9e9ef; } /* Grille 2 colonnes pour les pays */ .whr-store-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; } /* Item pays */ .whr-store-country { display: flex; align-items: center; gap: 8px; padding: 7px 9px; border-radius: 6px; text-decoration: none !important; color: #2c2c46 !important; font-size: 12.5px; transition: background .15s ease; min-width: 0; } .theme-dark .whr-store-country { color: #e9e9ef !important; } .whr-store-country:hover { background: rgba(108, 58, 237, .08); color: var(--theme-color, #6C3AED) !important; } .theme-dark .whr-store-country:hover { background: rgba(108, 58, 237, .2); } .whr-store-country .whr-flag { font-size: 16px; line-height: 1; width: 18px; text-align: center; flex-shrink: 0; } .whr-store-country .whr-country-name { flex: 1; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; } /* Featured = pleine largeur, plus mis en avant */ .whr-store-featured .whr-store-country { background: linear-gradient(135deg, rgba(108, 58, 237, .08), rgba(108, 58, 237, .03)); font-weight: 600; padding: 9px 10px; } .theme-dark .whr-store-featured .whr-store-country { background: linear-gradient(135deg, rgba(108, 58, 237, .25), rgba(108, 58, 237, .1)); } /* Message \"aucun résultat\" */ .whr-store-empty { text-align: center; padding: 20px 12px; font-size: 12px; color: #999; font-style: italic; } .theme-dark .whr-store-empty { color: #aaa; } /* Item caché par la recherche */ .whr-store-country.is-hidden { display: none; } /* Responsive : sur mobile, 1 colonne et largeur ajustée */ @media (max-width: 575.98px) { .whr-store-dropdown { width: calc(100vw - 32px); max-width: 360px; } .whr-store-grid { grid-template-columns: 1fr; } } /* Colonnes */ .whr-footer .whr-foot-col h4 { font-size: 13px; font-weight: 700; margin: 0 0 14px 0; color: inherit; text-transform: uppercase; letter-spacing: .3px; } .whr-footer .whr-foot-col ul { list-style: none; padding: 0; margin: 0; font-size: 13px; } .whr-footer .whr-foot-col ul li { margin-bottom: 10px; } .whr-footer .whr-foot-col a { color: inherit; opacity: .75; text-decoration: none; transition: opacity .2s ease, color .2s ease; } .whr-footer .whr-foot-col a:hover { opacity: 1; color: var(--theme-color, #6C3AED); } .whr-footer .whr-foot-empty { font-size: 12px; opacity: .5; font-style: italic; } .whr-footer .whr-foot-action-links a { display: inline-flex; align-items: center; gap: 8px; } .whr-footer .whr-foot-action-links a i { font-size: 14px; opacity: .7; width: 16px; text-align: center; } .whr-footer .whr-foot-col .whr-city-link { display: inline-flex; align-items: center; gap: 6px; } .whr-footer .whr-foot-col .whr-city-link .whr-city-icon { font-size: 14px; line-height: 1; display: inline-block; width: 18px; text-align: center; opacity: .85; } .whr-footer .whr-foot-grid { display: grid; gap: 28px; grid-template-columns: 1fr; } @media (min-width: 576px) { .whr-footer .whr-foot-grid { grid-template-columns: 1fr 1fr; } } @media (min-width: 992px) { .whr-footer .whr-foot-grid { grid-template-columns: repeat(5, 1fr); gap: 32px; } } .whr-footer .whr-foot-bottom { margin-top: 32px; padding-top: 20px; border-top: 1px solid rgba(0,0,0,.08); display: flex; flex-direction: column; gap: 14px; align-items: center; text-align: center; } .theme-dark .whr-footer .whr-foot-bottom { border-top-color: rgba(255,255,255,.1); } @media (min-width: 768px) { .whr-footer .whr-foot-bottom { flex-direction: row; justify-content: space-between; text-align: left; } } .whr-footer .whr-foot-copy { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; opacity: .7; margin: 0; } .whr-footer .whr-foot-copy img.whr-favicon { width: 18px; height: 18px; border-radius: 4px; flex-shrink: 0; } .whr-footer .whr-foot-legal { display: flex; flex-wrap: wrap; gap: 6px 16px; justify-content: center; font-size: 12px; } .whr-footer .whr-foot-legal a { color: inherit; opacity: .75; text-decoration: none; } .whr-footer .whr-foot-legal a:hover { opacity: 1; } .whr-footer .whr-foot-legal .whr-admin-link { color: #e74c3c !important; opacity: 1; } .whr-footer .whr-foot-social { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; padding: 0; margin: 0; } .whr-footer .whr-foot-social a { width: 32px; height: 32px; border-radius: 8px; background: #fff; display: inline-flex; align-items: center; justify-content: center; color: #2c2c46; text-decoration: none !important; transition: background .2s ease, color .2s ease, transform .15s ease; box-shadow: 0 1px 2px rgba(0,0,0,.04); } .whr-footer .whr-foot-social a:hover { background: var(--theme-color, #6C3AED); color: #fff; transform: translateY(-1px); } .theme-dark .whr-footer .whr-foot-social a { background: #34344a; color: #fff; box-shadow: none; } .whr-footer .whr-foot-social i { font-size: 14px; } @media (max-width: 575.98px) { .whr-footer { padding: 24px 18px 20px; margin-left: 8px; margin-right: 8px; } .whr-store-dropdown { min-width: 220px; max-width: 90vw; } }</style><footer class=\"whr-footer\" role=\"contentinfo\"> "; // line 436 yield " <div class=\"whr-foot-grid\"> "; // line 439 yield " <div class=\"whr-foot-col whr-foot-col-action\"> "; // line 440 if ((($tmp = (isset($context["connectUser"]) || array_key_exists("connectUser", $context) ? $context["connectUser"] : (function () { throw new RuntimeError('Variable "connectUser" does not exist.', 440, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 441 yield " <h4>"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.my_account", [], "whr-public"), "Mon compte"), "html", null, true); yield "</h4> "; } else { // line 443 yield " <h4>"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.start_here", [], "whr-public"), "Commencer ici"), "html", null, true); yield "</h4> "; } // line 445 yield " <div class=\"whr-stores\"> "; // line 448 yield " "; // line 450 yield " "; $context["_hasIos"] = false; // line 451 yield " "; $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storePrimary"]) || array_key_exists("_storePrimary", $context) ? $context["_storePrimary"] : (function () { throw new RuntimeError('Variable "_storePrimary" does not exist.', 451, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["c"]) { if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["c"], "ios", [], "any", false, false, false, 451)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { $context["_hasIos"] = true; } } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 452 yield " "; $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storeOthers"]) || array_key_exists("_storeOthers", $context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.', 452, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["c"]) { if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["c"], "ios", [], "any", false, false, false, 452)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { $context["_hasIos"] = true; } } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 453 yield " "; // line 454 if ((($tmp = (isset($context["_hasIos"]) || array_key_exists("_hasIos", $context) ? $context["_hasIos"] : (function () { throw new RuntimeError('Variable "_hasIos" does not exist.', 454, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 455 yield " <div class=\"whr-store-wrap\" data-whr-store=\"ios\"> <button type=\"button\" class=\"whr-store-link\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-label=\"App Store - Choose your country\"> <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"#fff\" aria-hidden=\"true\"> <path d=\"M18.71 19.5C17.88 20.74 17 21.95 15.66 21.97C14.32 22 13.89 21.18 12.37 21.18C10.84 21.18 10.37 21.95 9.09997 22C7.78997 22.05 6.79997 20.68 5.95997 19.47C4.24997 17 2.93997 12.45 4.69997 9.39C5.56997 7.87 7.12997 6.91 8.81997 6.88C10.1 6.86 11.32 7.75 12.11 7.75C12.89 7.75 14.37 6.68 15.92 6.84C16.57 6.87 18.39 7.1 19.56 8.82C19.47 8.88 17.39 10.1 17.41 12.63C17.44 15.65 20.06 16.66 20.09 16.67C20.06 16.74 19.67 18.11 18.71 19.5ZM13 3.5C13.73 2.67 14.94 2.04 15.94 2C16.07 3.17 15.6 4.35 14.9 5.19C14.21 6.04 13.07 6.7 11.95 6.61C11.8 5.46 12.36 4.26 13 3.5Z\"/> </svg> <span> <small>"; // line 461 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.download_on", [], "whr-public"), "Download on"), "html", null, true); yield "</small> <strong>App Store</strong> </span> <span class=\"whr-store-chevron\" aria-hidden=\"true\">▲</span> </button> <div class=\"whr-store-dropdown\" role=\"menu\"> "; // line 469 yield " "; $context["_iosOthersCount"] = 0; // line 470 yield " "; $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storeOthers"]) || array_key_exists("_storeOthers", $context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.', 470, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["c"]) { if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["c"], "ios", [], "any", false, false, false, 470)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { $context["_iosOthersCount"] = ((isset($context["_iosOthersCount"]) || array_key_exists("_iosOthersCount", $context) ? $context["_iosOthersCount"] : (function () { throw new RuntimeError('Variable "_iosOthersCount" does not exist.', 470, $this->source); })()) + 1); } } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 471 yield " "; if (((isset($context["_iosOthersCount"]) || array_key_exists("_iosOthersCount", $context) ? $context["_iosOthersCount"] : (function () { throw new RuntimeError('Variable "_iosOthersCount" does not exist.', 471, $this->source); })()) > 20)) { // line 472 yield " <div class=\"whr-store-search-wrap\"> <input type=\"text\" class=\"whr-store-search\" placeholder=\""; // line 475 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.search_country", [], "whr-public"), "Search country..."), "html", null, true); yield "\" aria-label=\"Search country\" autocomplete=\"off\"> </div> "; } // line 480 yield " "; // line 482 yield " "; $context["_iosPrimaryCount"] = 0; // line 483 yield " "; $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storePrimary"]) || array_key_exists("_storePrimary", $context) ? $context["_storePrimary"] : (function () { throw new RuntimeError('Variable "_storePrimary" does not exist.', 483, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["c"]) { if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["c"], "ios", [], "any", false, false, false, 483)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { $context["_iosPrimaryCount"] = ((isset($context["_iosPrimaryCount"]) || array_key_exists("_iosPrimaryCount", $context) ? $context["_iosPrimaryCount"] : (function () { throw new RuntimeError('Variable "_iosPrimaryCount" does not exist.', 483, $this->source); })()) + 1); } } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 484 yield " "; if (((isset($context["_iosPrimaryCount"]) || array_key_exists("_iosPrimaryCount", $context) ? $context["_iosPrimaryCount"] : (function () { throw new RuntimeError('Variable "_iosPrimaryCount" does not exist.', 484, $this->source); })()) > 0)) { // line 485 yield " <div class=\"whr-store-featured\"> <div class=\"whr-store-dropdown-header\"> "; // line 487 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.featured", [], "whr-public"), "Featured"), "html", null, true); yield " </div> "; // line 489 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storePrimary"]) || array_key_exists("_storePrimary", $context) ? $context["_storePrimary"] : (function () { throw new RuntimeError('Variable "_storePrimary" does not exist.', 489, $this->source); })())); foreach ($context['_seq'] as $context["code"] => $context["country"]) { // line 490 yield " "; if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["country"], "ios", [], "any", false, false, false, 490)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 491 yield " <a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["country"], "ios", [], "any", false, false, false, 491), "html", null, true); yield "\" class=\"whr-store-country\" data-search=\""; // line 493 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["country"], "label", [], "any", false, false, false, 493)), "html", null, true); yield " "; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), $context["code"]), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" role=\"menuitem\"> "; // line 495 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["country"], "flag", [], "any", false, false, false, 495)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<span class=\"whr-flag\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["country"], "flag", [], "any", false, false, false, 495), "html", null, true); yield "</span>"; } // line 496 yield " <span class=\"whr-country-name\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["country"], "label", [], "any", false, false, false, 496), "html", null, true); yield "</span> </a> "; } // line 499 yield " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['code'], $context['country'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 500 yield " </div> "; } // line 502 yield " "; // line 504 yield " "; if ((($tmp = !Twig\Extension\CoreExtension::testEmpty((isset($context["_storeOthers"]) || array_key_exists("_storeOthers", $context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.', 504, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 505 yield " <div class=\"whr-store-others\"> <div class=\"whr-store-dropdown-header\"> "; // line 507 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.other_regions", [], "whr-public"), "Other regions"), "html", null, true); yield " </div> <div class=\"whr-store-grid\"> "; // line 510 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storeOthers"]) || array_key_exists("_storeOthers", $context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.', 510, $this->source); })())); foreach ($context['_seq'] as $context["code"] => $context["country"]) { // line 511 yield " "; if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["country"], "ios", [], "any", false, false, false, 511)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 512 yield " <a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["country"], "ios", [], "any", false, false, false, 512), "html", null, true); yield "\" class=\"whr-store-country\" data-search=\""; // line 514 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["country"], "label", [], "any", false, false, false, 514)), "html", null, true); yield " "; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), $context["code"]), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" role=\"menuitem\"> "; // line 516 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["country"], "flag", [], "any", false, false, false, 516)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<span class=\"whr-flag\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["country"], "flag", [], "any", false, false, false, 516), "html", null, true); yield "</span>"; } // line 517 yield " <span class=\"whr-country-name\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["country"], "label", [], "any", false, false, false, 517), "html", null, true); yield "</span> </a> "; } // line 520 yield " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['code'], $context['country'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 521 yield " </div> <div class=\"whr-store-empty\" style=\"display: none;\"> "; // line 523 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.no_country_found", [], "whr-public"), "No country found"), "html", null, true); yield " </div> </div> "; } // line 527 yield " </div> </div> "; } // line 530 yield " "; // line 532 yield " "; $context["_hasAndroid"] = false; // line 533 yield " "; $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storePrimary"]) || array_key_exists("_storePrimary", $context) ? $context["_storePrimary"] : (function () { throw new RuntimeError('Variable "_storePrimary" does not exist.', 533, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["c"]) { if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["c"], "android", [], "any", false, false, false, 533)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { $context["_hasAndroid"] = true; } } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 534 yield " "; $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storeOthers"]) || array_key_exists("_storeOthers", $context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.', 534, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["c"]) { if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["c"], "android", [], "any", false, false, false, 534)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { $context["_hasAndroid"] = true; } } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 535 yield " "; // line 536 if ((($tmp = (isset($context["_hasAndroid"]) || array_key_exists("_hasAndroid", $context) ? $context["_hasAndroid"] : (function () { throw new RuntimeError('Variable "_hasAndroid" does not exist.', 536, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 537 yield " <div class=\"whr-store-wrap\" data-whr-store=\"android\"> <button type=\"button\" class=\"whr-store-link\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-label=\"Google Play - Choose your country\"> <svg width=\"18\" height=\"18\" viewBox=\"0 0 512 512\" aria-hidden=\"true\"> <path style=\"fill:#3A9BC8;\" d=\"M225.656,256.052L14.016,485.451l-6.442,7.052c-4.005-5.919-6.704-12.972-7.313-20.806C0.087,470.305,0,468.91,0,467.518V44.499c0-9.488,2.873-18.02,7.574-24.987L225.656,256.052z\"/> <path style=\"fill:#9BCD83;\" d=\"M320.811,152.8l-95.155,103.253L7.574,19.512C19.936,1.405,45.183-6.342,66.6,6.02L320.811,152.8z\"/> <path style=\"fill:#EEB84C;\" d=\"M455.056,257.27c-0.348,14.453-7.748,28.904-22.113,37.174l-112.132,64.771l-95.155-103.163L320.811,152.8l70.518,40.745l41.614,24.026C448.178,226.366,455.579,241.861,455.056,257.27z\"/> <path style=\"fill:#B43F70;\" d=\"M7.591,492.492c12.368,18.116,37.599,25.838,58.976,13.496L320.775,359.22l-95.156-103.209L7.591,492.492z\"/> </svg> <span> <small>"; // line 546 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.available_on", [], "whr-public"), "Available on"), "html", null, true); yield "</small> <strong>Google Play</strong> </span> <span class=\"whr-store-chevron\" aria-hidden=\"true\">▲</span> </button> <div class=\"whr-store-dropdown\" role=\"menu\"> "; // line 554 yield " "; $context["_androidOthersCount"] = 0; // line 555 yield " "; $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storeOthers"]) || array_key_exists("_storeOthers", $context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.', 555, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["c"]) { if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["c"], "android", [], "any", false, false, false, 555)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { $context["_androidOthersCount"] = ((isset($context["_androidOthersCount"]) || array_key_exists("_androidOthersCount", $context) ? $context["_androidOthersCount"] : (function () { throw new RuntimeError('Variable "_androidOthersCount" does not exist.', 555, $this->source); })()) + 1); } } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 556 yield " "; if (((isset($context["_androidOthersCount"]) || array_key_exists("_androidOthersCount", $context) ? $context["_androidOthersCount"] : (function () { throw new RuntimeError('Variable "_androidOthersCount" does not exist.', 556, $this->source); })()) > 20)) { // line 557 yield " <div class=\"whr-store-search-wrap\"> <input type=\"text\" class=\"whr-store-search\" placeholder=\""; // line 560 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.search_country", [], "whr-public"), "Search country..."), "html", null, true); yield "\" aria-label=\"Search country\" autocomplete=\"off\"> </div> "; } // line 565 yield " "; // line 567 yield " "; $context["_androidPrimaryCount"] = 0; // line 568 yield " "; $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storePrimary"]) || array_key_exists("_storePrimary", $context) ? $context["_storePrimary"] : (function () { throw new RuntimeError('Variable "_storePrimary" does not exist.', 568, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["c"]) { if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["c"], "android", [], "any", false, false, false, 568)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { $context["_androidPrimaryCount"] = ((isset($context["_androidPrimaryCount"]) || array_key_exists("_androidPrimaryCount", $context) ? $context["_androidPrimaryCount"] : (function () { throw new RuntimeError('Variable "_androidPrimaryCount" does not exist.', 568, $this->source); })()) + 1); } } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 569 yield " "; if (((isset($context["_androidPrimaryCount"]) || array_key_exists("_androidPrimaryCount", $context) ? $context["_androidPrimaryCount"] : (function () { throw new RuntimeError('Variable "_androidPrimaryCount" does not exist.', 569, $this->source); })()) > 0)) { // line 570 yield " <div class=\"whr-store-featured\"> <div class=\"whr-store-dropdown-header\"> "; // line 572 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.featured", [], "whr-public"), "Featured"), "html", null, true); yield " </div> "; // line 574 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storePrimary"]) || array_key_exists("_storePrimary", $context) ? $context["_storePrimary"] : (function () { throw new RuntimeError('Variable "_storePrimary" does not exist.', 574, $this->source); })())); foreach ($context['_seq'] as $context["code"] => $context["country"]) { // line 575 yield " "; if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["country"], "android", [], "any", false, false, false, 575)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 576 yield " <a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["country"], "android", [], "any", false, false, false, 576), "html", null, true); yield "\" class=\"whr-store-country\" data-search=\""; // line 578 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["country"], "label", [], "any", false, false, false, 578)), "html", null, true); yield " "; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), $context["code"]), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" role=\"menuitem\"> "; // line 580 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["country"], "flag", [], "any", false, false, false, 580)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<span class=\"whr-flag\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["country"], "flag", [], "any", false, false, false, 580), "html", null, true); yield "</span>"; } // line 581 yield " <span class=\"whr-country-name\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["country"], "label", [], "any", false, false, false, 581), "html", null, true); yield "</span> </a> "; } // line 584 yield " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['code'], $context['country'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 585 yield " </div> "; } // line 587 yield " "; // line 589 yield " "; if ((($tmp = !Twig\Extension\CoreExtension::testEmpty((isset($context["_storeOthers"]) || array_key_exists("_storeOthers", $context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.', 589, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 590 yield " <div class=\"whr-store-others\"> <div class=\"whr-store-dropdown-header\"> "; // line 592 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.other_regions", [], "whr-public"), "Other regions"), "html", null, true); yield " </div> <div class=\"whr-store-grid\"> "; // line 595 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storeOthers"]) || array_key_exists("_storeOthers", $context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.', 595, $this->source); })())); foreach ($context['_seq'] as $context["code"] => $context["country"]) { // line 596 yield " "; if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["country"], "android", [], "any", false, false, false, 596)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 597 yield " <a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["country"], "android", [], "any", false, false, false, 597), "html", null, true); yield "\" class=\"whr-store-country\" data-search=\""; // line 599 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["country"], "label", [], "any", false, false, false, 599)), "html", null, true); yield " "; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), $context["code"]), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" role=\"menuitem\"> "; // line 601 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["country"], "flag", [], "any", false, false, false, 601)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<span class=\"whr-flag\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["country"], "flag", [], "any", false, false, false, 601), "html", null, true); yield "</span>"; } // line 602 yield " <span class=\"whr-country-name\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["country"], "label", [], "any", false, false, false, 602), "html", null, true); yield "</span> </a> "; } // line 605 yield " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['code'], $context['country'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 606 yield " </div> <div class=\"whr-store-empty\" style=\"display: none;\"> "; // line 608 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.no_country_found", [], "whr-public"), "No country found"), "html", null, true); yield " </div> </div> "; } // line 612 yield " </div> </div> "; } // line 615 yield " </div> <ul class=\"whr-foot-action-links\"> <li> <a href=\""; // line 619 yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("whileresume_homepage"); yield "\"> <i class=\"feather-flag\"></i> English </a> </li> <li> <a href=\""; // line 625 yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_whileresume_homepage", ["_locale" => "fr"]); yield "\"> <i class=\"feather-flag\"></i> Français </a> </li> </ul> </div> "; // line 634 yield " <div class=\"whr-foot-col\"> <h4>"; // line 635 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.latest_articles", [], "whr-public"), "Articles récents"), "html", null, true); yield "</h4> "; // line 636 if ((($tmp = !Twig\Extension\CoreExtension::testEmpty((isset($context["footerArticles"]) || array_key_exists("footerArticles", $context) ? $context["footerArticles"] : (function () { throw new RuntimeError('Variable "footerArticles" does not exist.', 636, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 637 yield " <ul> "; // line 638 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["footerArticles"]) || array_key_exists("footerArticles", $context) ? $context["footerArticles"] : (function () { throw new RuntimeError('Variable "footerArticles" does not exist.', 638, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["article"]) { // line 639 yield " <li> <a href=\""; // line 640 if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr", $context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.', 640, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_cvs_website_article", ["_locale" => (isset($context["_locale"]) || array_key_exists("_locale", $context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.', 640, $this->source); })()), "slug" => CoreExtension::getAttribute($this->env, $this->source, $context["article"], "slug", [], "any", false, false, false, 640)]), "html", null, true); } else { yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("cvs_website_article", ["slug" => CoreExtension::getAttribute($this->env, $this->source, $context["article"], "slug", [], "any", false, false, false, 640)]), "html", null, true); } yield "\" title=\""; // line 641 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["article"], "title", [], "any", false, false, false, 641), "html", null, true); yield "\"> "; // line 642 yield ((CoreExtension::getAttribute($this->env, $this->source, $context["article"], "shortTitle", [], "any", false, false, false, 642)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["article"], "shortTitle", [], "any", false, false, false, 642), "html", null, true)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['App\Twig\CoreExtension']->cleanSubstr(CoreExtension::getAttribute($this->env, $this->source, $context["article"], "title", [], "any", false, false, false, 642), 45), "html", null, true))); yield " </a> </li> "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['article'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 646 yield " </ul> "; } else { // line 648 yield " <p class=\"whr-foot-empty\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.coming_soon", [], "whr-public"), "Bientôt disponible"), "html", null, true); yield "</p> "; } // line 650 yield " </div> "; // line 653 yield " <div class=\"whr-foot-col\"> <h4>"; // line 654 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.jobs_by_city", [], "whr-public"), "Emplois par ville"), "html", null, true); yield "</h4> "; // line 655 if ((($tmp = !Twig\Extension\CoreExtension::testEmpty((isset($context["footerJobsCities"]) || array_key_exists("footerJobsCities", $context) ? $context["footerJobsCities"] : (function () { throw new RuntimeError('Variable "footerJobsCities" does not exist.', 655, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 656 yield " <ul> "; // line 657 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["footerJobsCities"]) || array_key_exists("footerJobsCities", $context) ? $context["footerJobsCities"] : (function () { throw new RuntimeError('Variable "footerJobsCities" does not exist.', 657, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["city"]) { // line 658 yield " <li> <a class=\"whr-city-link\" href=\""; // line 660 if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr", $context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.', 660, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_cvs_application_jobs_filter", ["_locale" => (isset($context["_locale"]) || array_key_exists("_locale", $context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.', 660, $this->source); })()), "slug" => CoreExtension::getAttribute($this->env, $this->source, $context["city"], "slug", [], "any", false, false, false, 660)]), "html", null, true); } else { yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("cvs_application_jobs_filter", ["slug" => CoreExtension::getAttribute($this->env, $this->source, $context["city"], "slug", [], "any", false, false, false, 660)]), "html", null, true); } yield "\" title=\""; // line 661 yield ((CoreExtension::getAttribute($this->env, $this->source, $context["city"], "shortTitle", [], "any", false, false, false, 661)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "shortTitle", [], "any", false, false, false, 661), "html", null, true)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "label", [], "any", false, false, false, 661), "html", null, true))); yield "\"> "; // line 662 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["city"], "icon", [], "any", false, false, false, 662)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 663 yield " <span class=\"whr-city-icon\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "icon", [], "any", false, false, false, 663), "html", null, true); yield "</span> "; } else { // line 665 yield " <i class=\"feather-map-pin whr-city-icon\"></i> "; } // line 667 yield " <span>"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "label", [], "any", false, false, false, 667), "html", null, true); yield "</span> </a> </li> "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['city'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 671 yield " </ul> "; } else { // line 673 yield " <p class=\"whr-foot-empty\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.coming_soon", [], "whr-public"), "Bientôt disponible"), "html", null, true); yield "</p> "; } // line 675 yield " </div> "; // line 678 yield " <div class=\"whr-foot-col\"> <h4>"; // line 679 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.companies_by_city", [], "whr-public"), "Entreprises par ville"), "html", null, true); yield "</h4> "; // line 680 if ((($tmp = !Twig\Extension\CoreExtension::testEmpty((isset($context["footerEnterprisesCities"]) || array_key_exists("footerEnterprisesCities", $context) ? $context["footerEnterprisesCities"] : (function () { throw new RuntimeError('Variable "footerEnterprisesCities" does not exist.', 680, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 681 yield " <ul> "; // line 682 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["footerEnterprisesCities"]) || array_key_exists("footerEnterprisesCities", $context) ? $context["footerEnterprisesCities"] : (function () { throw new RuntimeError('Variable "footerEnterprisesCities" does not exist.', 682, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["city"]) { // line 683 yield " <li> <a class=\"whr-city-link\" href=\""; // line 685 if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr", $context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.', 685, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_cvs_application_companies_filter", ["_locale" => (isset($context["_locale"]) || array_key_exists("_locale", $context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.', 685, $this->source); })()), "slug" => CoreExtension::getAttribute($this->env, $this->source, $context["city"], "slug", [], "any", false, false, false, 685)]), "html", null, true); } else { yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("cvs_application_companies_filter", ["slug" => CoreExtension::getAttribute($this->env, $this->source, $context["city"], "slug", [], "any", false, false, false, 685)]), "html", null, true); } yield "\" title=\""; // line 686 yield ((CoreExtension::getAttribute($this->env, $this->source, $context["city"], "shortTitle", [], "any", false, false, false, 686)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "shortTitle", [], "any", false, false, false, 686), "html", null, true)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "label", [], "any", false, false, false, 686), "html", null, true))); yield "\"> "; // line 687 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["city"], "icon", [], "any", false, false, false, 687)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 688 yield " <span class=\"whr-city-icon\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "icon", [], "any", false, false, false, 688), "html", null, true); yield "</span> "; } else { // line 690 yield " <i class=\"feather-map-pin whr-city-icon\"></i> "; } // line 692 yield " <span>"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "label", [], "any", false, false, false, 692), "html", null, true); yield "</span> </a> </li> "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['city'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 696 yield " </ul> "; } else { // line 698 yield " <p class=\"whr-foot-empty\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.coming_soon", [], "whr-public"), "Bientôt disponible"), "html", null, true); yield "</p> "; } // line 700 yield " </div> "; // line 703 yield " <div class=\"whr-foot-col\"> <h4>"; // line 704 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.featured_pages", [], "whr-public"), "À découvrir"), "html", null, true); yield "</h4> "; // line 705 if ((($tmp = !Twig\Extension\CoreExtension::testEmpty((isset($context["footerLandingJobs"]) || array_key_exists("footerLandingJobs", $context) ? $context["footerLandingJobs"] : (function () { throw new RuntimeError('Variable "footerLandingJobs" does not exist.', 705, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 706 yield " <ul> "; // line 707 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["footerLandingJobs"]) || array_key_exists("footerLandingJobs", $context) ? $context["footerLandingJobs"] : (function () { throw new RuntimeError('Variable "footerLandingJobs" does not exist.', 707, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["landing"]) { // line 708 yield " <li> <a href=\""; // line 709 if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr", $context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.', 709, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_whileresume_homepage_landing", ["_locale" => (isset($context["_locale"]) || array_key_exists("_locale", $context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.', 709, $this->source); })()), "slug" => CoreExtension::getAttribute($this->env, $this->source, $context["landing"], "slug", [], "any", false, false, false, 709)]), "html", null, true); } else { yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("whileresume_homepage_landing", ["slug" => CoreExtension::getAttribute($this->env, $this->source, $context["landing"], "slug", [], "any", false, false, false, 709)]), "html", null, true); } yield "\"> "; // line 710 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["landing"], "title", [], "any", false, false, false, 710), "html", null, true); yield " </a> </li> "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['landing'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 714 yield " </ul> "; } // line 716 yield " </div> </div> "; // line 720 yield " <div class=\"whr-foot-bottom\"> <p class=\"whr-foot-copy\"> "; // line 722 if ((($tmp = (isset($context["favicon"]) || array_key_exists("favicon", $context) ? $context["favicon"] : (function () { throw new RuntimeError('Variable "favicon" does not exist.', 722, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 723 yield " <img src=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["favicon"]) || array_key_exists("favicon", $context) ? $context["favicon"] : (function () { throw new RuntimeError('Variable "favicon" does not exist.', 723, $this->source); })()), "html", null, true); yield "\" alt=\"\" class=\"whr-favicon\" /> "; } // line 725 yield " <span>© "; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Twig\Extension\CoreExtension']->formatDate("now", "Y"), "html", null, true); yield " "; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["websitename"]) || array_key_exists("websitename", $context) ? $context["websitename"] : (function () { throw new RuntimeError('Variable "websitename" does not exist.', 725, $this->source); })()), "html", null, true); yield ". "; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.rights_reserved", [], "whr-public"), "Tous droits réservés."), "html", null, true); yield "</span> </p> <div class=\"whr-foot-legal\"> "; // line 729 $context["menuFooter"] = $this->extensions['App\Twig\MenuExtension']->getMenuWebsiteLocaleArray((isset($context["_locale"]) || array_key_exists("_locale", $context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.', 729, $this->source); })()), "footer", (isset($context["connectUser"]) || array_key_exists("connectUser", $context) ? $context["connectUser"] : (function () { throw new RuntimeError('Variable "connectUser" does not exist.', 729, $this->source); })())); // line 730 yield " "; if ((($tmp = !Twig\Extension\CoreExtension::testEmpty((isset($context["menuFooter"]) || array_key_exists("menuFooter", $context) ? $context["menuFooter"] : (function () { throw new RuntimeError('Variable "menuFooter" does not exist.', 730, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 731 yield " "; $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["menuFooter"]) || array_key_exists("menuFooter", $context) ? $context["menuFooter"] : (function () { throw new RuntimeError('Variable "menuFooter" does not exist.', 731, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["m"]) { // line 732 yield " <a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["m"], "link", [], "any", false, false, false, 732), "html", null, true); yield "\" aria-label=\""; // line 733 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["m"], "title", [], "any", false, false, false, 733), "html", null, true); yield "\" title=\""; // line 734 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["m"], "title", [], "any", false, false, false, 734), "html", null, true); yield "\" "; // line 735 if ((CoreExtension::getAttribute($this->env, $this->source, $context["m"], "targetBlank", [], "any", false, false, false, 735) == 1)) { yield "target=\"_blank\" rel=\"noreferrer\""; } yield "> "; // line 736 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["m"], "title", [], "any", false, false, false, 736), "html", null, true); yield " </a> "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['m'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 739 yield " "; } // line 740 yield " "; if (( !(null === CoreExtension::getAttribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 740, $this->source); })()), "user", [], "any", false, false, false, 740)) && $this->extensions['Symfony\Bridge\Twig\Extension\SecurityExtension']->isGranted("ROLE_SUPER_ADMIN"))) { // line 741 yield " <a href=\""; yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("backoffice_dashboard"); yield "\" class=\"whr-admin-link\" title=\"Administration\"> <i class=\"feather-settings\"></i> Administration </a> "; } // line 745 yield " </div> <ul class=\"whr-foot-social\"> "; // line 748 if ((($tmp = (isset($context["facebook"]) || array_key_exists("facebook", $context) ? $context["facebook"] : (function () { throw new RuntimeError('Variable "facebook" does not exist.', 748, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 749 yield " <li><a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["facebook"]) || array_key_exists("facebook", $context) ? $context["facebook"] : (function () { throw new RuntimeError('Variable "facebook" does not exist.', 749, $this->source); })()), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"Facebook\"><i class=\"feather-facebook\"></i></a></li> "; } // line 751 yield " "; if ((($tmp = (isset($context["twitter"]) || array_key_exists("twitter", $context) ? $context["twitter"] : (function () { throw new RuntimeError('Variable "twitter" does not exist.', 751, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 752 yield " <li><a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["twitter"]) || array_key_exists("twitter", $context) ? $context["twitter"] : (function () { throw new RuntimeError('Variable "twitter" does not exist.', 752, $this->source); })()), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"X / Twitter\"><i class=\"feather-twitter\"></i></a></li> "; } // line 754 yield " "; if ((($tmp = (isset($context["instagram"]) || array_key_exists("instagram", $context) ? $context["instagram"] : (function () { throw new RuntimeError('Variable "instagram" does not exist.', 754, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 755 yield " <li><a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["instagram"]) || array_key_exists("instagram", $context) ? $context["instagram"] : (function () { throw new RuntimeError('Variable "instagram" does not exist.', 755, $this->source); })()), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"Instagram\"><i class=\"feather-instagram\"></i></a></li> "; } // line 757 yield " "; if ((($tmp = (isset($context["linkedin"]) || array_key_exists("linkedin", $context) ? $context["linkedin"] : (function () { throw new RuntimeError('Variable "linkedin" does not exist.', 757, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 758 yield " <li><a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["linkedin"]) || array_key_exists("linkedin", $context) ? $context["linkedin"] : (function () { throw new RuntimeError('Variable "linkedin" does not exist.', 758, $this->source); })()), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"LinkedIn\"><i class=\"feather-linkedin\"></i></a></li> "; } // line 760 yield " "; if ((($tmp = (isset($context["youtube"]) || array_key_exists("youtube", $context) ? $context["youtube"] : (function () { throw new RuntimeError('Variable "youtube" does not exist.', 760, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 761 yield " <li><a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["youtube"]) || array_key_exists("youtube", $context) ? $context["youtube"] : (function () { throw new RuntimeError('Variable "youtube" does not exist.', 761, $this->source); })()), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"YouTube\"><i class=\"feather-youtube\"></i></a></li> "; } // line 763 yield " </ul> </div></footer>"; // line 769 yield "<script> (function() { 'use strict'; function closeAllDropdowns() { document.querySelectorAll('.whr-store-wrap.is-open').forEach(function(w) { w.classList.remove('is-open'); var b = w.querySelector('.whr-store-link'); if (b) b.setAttribute('aria-expanded', 'false'); // Reset search à la fermeture var input = w.querySelector('.whr-store-search'); if (input) { input.value = ''; applyFilter(w, ''); } }); } function applyFilter(wrap, query) { query = (query || '').trim().toLowerCase(); var items = wrap.querySelectorAll('.whr-store-country'); var othersWrap = wrap.querySelector('.whr-store-others'); var emptyMsg = wrap.querySelector('.whr-store-empty'); var grid = wrap.querySelector('.whr-store-grid'); var visibleInOthers = 0; items.forEach(function(item) { var searchData = item.dataset.search || ''; var matches = query === '' || searchData.indexOf(query) !== -1; if (matches) { item.classList.remove('is-hidden'); // Compter uniquement les items dans la grille \"others\" (pas le featured) if (grid && grid.contains(item)) { visibleInOthers++; } } else { item.classList.add('is-hidden'); } }); // Afficher le message \"aucun résultat\" si rien ne matche dans others if (emptyMsg && grid) { if (query !== '' && visibleInOthers === 0) { grid.style.display = 'none'; emptyMsg.style.display = 'block'; } else { grid.style.display = ''; emptyMsg.style.display = 'none'; } } } function initWhrStoreDropdowns() { var wraps = document.querySelectorAll('.whr-store-wrap'); if (!wraps.length) return; wraps.forEach(function(wrap) { var btn = wrap.querySelector('.whr-store-link'); if (!btn || btn.dataset.whrInit === '1') return; btn.dataset.whrInit = '1'; // === Toggle au clic sur le bouton === btn.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); var isOpen = wrap.classList.contains('is-open'); closeAllDropdowns(); if (!isOpen) { wrap.classList.add('is-open'); btn.setAttribute('aria-expanded', 'true'); // Auto-focus sur la search à l'ouverture (desktop seulement, // pour éviter le clavier qui pop sur mobile) var input = wrap.querySelector('.whr-store-search'); if (input && window.innerWidth >= 768) { setTimeout(function() { input.focus(); }, 50); } } }); // === Filtrage live sur la search === var input = wrap.querySelector('.whr-store-search'); if (input) { input.addEventListener('input', function() { applyFilter(wrap, this.value); }); // Empêcher la fermeture du dropdown quand on clique dans le champ input.addEventListener('click', function(e) { e.stopPropagation(); }); // Échap dans le champ → vider la recherche d'abord, puis fermer input.addEventListener('keydown', function(e) { if (e.key === 'Escape') { if (this.value !== '') { this.value = ''; applyFilter(wrap, ''); e.stopPropagation(); } } }); } }); // === Listeners globaux (un seul fois) === if (!document.body.dataset.whrStoreOutsideInit) { document.body.dataset.whrStoreOutsideInit = '1'; // Click outside → close document.addEventListener('click', function(e) { if (!e.target.closest('.whr-store-wrap')) { closeAllDropdowns(); } }); // ESC → close document.addEventListener('keydown', function(e) { if (e.key === 'Escape') { closeAllDropdowns(); } }); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initWhrStoreDropdowns); } else { initWhrStoreDropdowns(); } })();</script>"; $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); yield from []; } /** * @codeCoverageIgnore */ public function getTemplateName(): string { return "application/whileresume/website/components/footer.html.twig"; } /** * @codeCoverageIgnore */ public function isTraitable(): bool { return false; } /** * @codeCoverageIgnore */ public function getDebugInfo(): array { return array ( 1376 => 769, 1369 => 763, 1363 => 761, 1360 => 760, 1354 => 758, 1351 => 757, 1345 => 755, 1342 => 754, 1336 => 752, 1333 => 751, 1327 => 749, 1325 => 748, 1320 => 745, 1312 => 741, 1309 => 740, 1306 => 739, 1297 => 736, 1291 => 735, 1287 => 734, 1283 => 733, 1278 => 732, 1273 => 731, 1270 => 730, 1268 => 729, 1256 => 725, 1250 => 723, 1248 => 722, 1244 => 720, 1239 => 716, 1235 => 714, 1225 => 710, 1217 => 709, 1214 => 708, 1210 => 707, 1207 => 706, 1205 => 705, 1201 => 704, 1198 => 703, 1194 => 700, 1188 => 698, 1184 => 696, 1173 => 692, 1169 => 690, 1163 => 688, 1161 => 687, 1157 => 686, 1149 => 685, 1145 => 683, 1141 => 682, 1138 => 681, 1136 => 680, 1132 => 679, 1129 => 678, 1125 => 675, 1119 => 673, 1115 => 671, 1104 => 667, 1100 => 665, 1094 => 663, 1092 => 662, 1088 => 661, 1080 => 660, 1076 => 658, 1072 => 657, 1069 => 656, 1067 => 655, 1063 => 654, 1060 => 653, 1056 => 650, 1050 => 648, 1046 => 646, 1036 => 642, 1032 => 641, 1024 => 640, 1021 => 639, 1017 => 638, 1014 => 637, 1012 => 636, 1008 => 635, 1005 => 634, 994 => 625, 985 => 619, 979 => 615, 974 => 612, 967 => 608, 963 => 606, 957 => 605, 950 => 602, 944 => 601, 937 => 599, 931 => 597, 928 => 596, 924 => 595, 918 => 592, 914 => 590, 911 => 589, 908 => 587, 904 => 585, 898 => 584, 891 => 581, 885 => 580, 878 => 578, 872 => 576, 869 => 575, 865 => 574, 860 => 572, 856 => 570, 853 => 569, 841 => 568, 838 => 567, 835 => 565, 827 => 560, 822 => 557, 819 => 556, 807 => 555, 804 => 554, 794 => 546, 783 => 537, 781 => 536, 778 => 535, 766 => 534, 754 => 533, 751 => 532, 748 => 530, 743 => 527, 736 => 523, 732 => 521, 726 => 520, 719 => 517, 713 => 516, 706 => 514, 700 => 512, 697 => 511, 693 => 510, 687 => 507, 683 => 505, 680 => 504, 677 => 502, 673 => 500, 667 => 499, 660 => 496, 654 => 495, 647 => 493, 641 => 491, 638 => 490, 634 => 489, 629 => 487, 625 => 485, 622 => 484, 610 => 483, 607 => 482, 604 => 480, 596 => 475, 591 => 472, 588 => 471, 576 => 470, 573 => 469, 563 => 461, 555 => 455, 553 => 454, 550 => 453, 538 => 452, 526 => 451, 523 => 450, 520 => 448, 516 => 445, 510 => 443, 504 => 441, 502 => 440, 499 => 439, 495 => 436, 72 => 14, 70 => 13, 68 => 12, 66 => 11, 63 => 9, 61 => 8, 59 => 7, 57 => 6, 55 => 5, 52 => 3, 50 => 2, 48 => 1,); } public function getSourceContext(): Source { return new Source("{% set _locale = app.request.locale %}{% set _isFr = _locale == 'fr' %}{# Données dynamiques #}{% set footerArticles = getFooterArticles(_locale, 5) %}{% set footerLandingJobs = getFooterFeaturedLandingJobs(_locale, 5) %}{% set footerJobsCities = getFooterJobsCities(_locale, 6) %}{% set footerEnterprisesCities = getFooterEnterprisesCities(_locale, 6) %}{# Liens stores : nouvelle source de vérité (table cvs_app_store_links) #}{% set _storeData = getAppStoreCountries() %}{% set _storePrimary = _storeData.primary|default({}) %}{% set _storeOthers = _storeData.others|default({}) %}<style> /* ---------- Footer WhileResume ---------- */ .whr-footer { margin-top: 32px; padding: 36px 24px 24px; background: #F9FAFD; border-radius: 16px; color: #2c2c46; width: auto; max-width: none; margin-left: 16px; margin-right: 16px; } .theme-dark .whr-footer { background: #2a2a3c; color: #e9e9ef; } .middle-sidebar-left .whr-footer { width: 100%; margin-left: 0; margin-right: 0; } /* Stores en haut de la col 1 */ .whr-footer .whr-stores { display: flex; flex-direction: column; gap: 8px; margin-bottom: 18px; position: relative; /* pour le dropdown */ } .whr-footer .whr-store-link { display: inline-flex; align-items: center; gap: 10px; padding: 8px 14px; background: #111; color: #fff !important; border-radius: 10px; font-size: 12px; font-weight: 600; text-decoration: none !important; line-height: 1.2; transition: transform .15s ease, background .2s ease; max-width: 200px; cursor: pointer; border: none; font-family: inherit; text-align: left; } .whr-footer .whr-store-link:hover { background: #2c2c46; transform: translateY(-1px); } .whr-footer .whr-store-link small { display: block; font-weight: 400; font-size: 10px; opacity: .7; } .whr-footer .whr-store-link strong { font-size: 13px; display: block; } /* Wrapper du bouton + dropdown (version EN) */ .whr-store-wrap { position: relative; display: inline-block; } .whr-store-wrap .whr-store-link { width: 100%; max-width: 200px; } /* === Dropdown élargi (2 colonnes + search + featured pinné) === */ .whr-store-dropdown { position: absolute; bottom: calc(100% + 6px); left: 0; width: 380px; max-width: calc(100vw - 32px); background: #fff; border-radius: 12px; box-shadow: 0 -8px 24px rgba(0,0,0,.15), 0 -2px 6px rgba(0,0,0,.08); z-index: 1000; display: none; overflow: hidden; } .theme-dark .whr-store-dropdown { background: #34344a; box-shadow: 0 -8px 24px rgba(0,0,0,.4), 0 -2px 6px rgba(0,0,0,.2); } .whr-store-wrap.is-open .whr-store-dropdown { display: flex; flex-direction: column; animation: whrFadeInUp .15s ease; } @keyframes whrFadeInUp { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } } /* Chevron */ .whr-store-link .whr-store-chevron { margin-left: auto; font-size: 10px; opacity: .7; transition: transform .2s ease; } .whr-store-wrap.is-open .whr-store-link .whr-store-chevron { transform: rotate(180deg); } /* Zone search en haut */ .whr-store-search-wrap { padding: 10px 10px 6px; border-bottom: 1px solid rgba(0,0,0,.06); flex-shrink: 0; } .theme-dark .whr-store-search-wrap { border-bottom-color: rgba(255,255,255,.08); } .whr-store-search { width: 100%; height: 34px; padding: 0 12px 0 32px; border: 1px solid rgba(0,0,0,.1); border-radius: 8px; background: #f5f5f8 url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><line x1='21' y1='21' x2='16.65' y2='16.65'/></svg>\") no-repeat 10px center; font-size: 13px; color: #2c2c46; outline: none; transition: border-color .15s ease, background-color .15s ease; font-family: inherit; } .whr-store-search:focus { border-color: var(--theme-color, #6C3AED); background-color: #fff; } .theme-dark .whr-store-search { background-color: #2a2a3c; border-color: rgba(255,255,255,.1); color: #e9e9ef; } .theme-dark .whr-store-search:focus { background-color: #3c3c52; } .whr-store-search::placeholder { color: #999; } /* Featured pinné (toujours visible, hors scroll) */ .whr-store-featured { padding: 8px 8px 4px; flex-shrink: 0; border-bottom: 1px solid rgba(0,0,0,.06); } .theme-dark .whr-store-featured { border-bottom-color: rgba(255,255,255,.08); } /* Zone scrollable des \"other regions\" */ .whr-store-others { padding: 8px; max-height: 280px; overflow-y: auto; flex: 1; } .whr-store-others::-webkit-scrollbar { width: 6px; } .whr-store-others::-webkit-scrollbar-thumb { background: rgba(0,0,0,.15); border-radius: 3px; } .theme-dark .whr-store-others::-webkit-scrollbar-thumb { background: rgba(255,255,255,.15); } /* Header de section */ .whr-store-dropdown-header { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; opacity: .55; padding: 4px 8px 6px; color: #2c2c46; } .theme-dark .whr-store-dropdown-header { color: #e9e9ef; } /* Grille 2 colonnes pour les pays */ .whr-store-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; } /* Item pays */ .whr-store-country { display: flex; align-items: center; gap: 8px; padding: 7px 9px; border-radius: 6px; text-decoration: none !important; color: #2c2c46 !important; font-size: 12.5px; transition: background .15s ease; min-width: 0; } .theme-dark .whr-store-country { color: #e9e9ef !important; } .whr-store-country:hover { background: rgba(108, 58, 237, .08); color: var(--theme-color, #6C3AED) !important; } .theme-dark .whr-store-country:hover { background: rgba(108, 58, 237, .2); } .whr-store-country .whr-flag { font-size: 16px; line-height: 1; width: 18px; text-align: center; flex-shrink: 0; } .whr-store-country .whr-country-name { flex: 1; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; } /* Featured = pleine largeur, plus mis en avant */ .whr-store-featured .whr-store-country { background: linear-gradient(135deg, rgba(108, 58, 237, .08), rgba(108, 58, 237, .03)); font-weight: 600; padding: 9px 10px; } .theme-dark .whr-store-featured .whr-store-country { background: linear-gradient(135deg, rgba(108, 58, 237, .25), rgba(108, 58, 237, .1)); } /* Message \"aucun résultat\" */ .whr-store-empty { text-align: center; padding: 20px 12px; font-size: 12px; color: #999; font-style: italic; } .theme-dark .whr-store-empty { color: #aaa; } /* Item caché par la recherche */ .whr-store-country.is-hidden { display: none; } /* Responsive : sur mobile, 1 colonne et largeur ajustée */ @media (max-width: 575.98px) { .whr-store-dropdown { width: calc(100vw - 32px); max-width: 360px; } .whr-store-grid { grid-template-columns: 1fr; } } /* Colonnes */ .whr-footer .whr-foot-col h4 { font-size: 13px; font-weight: 700; margin: 0 0 14px 0; color: inherit; text-transform: uppercase; letter-spacing: .3px; } .whr-footer .whr-foot-col ul { list-style: none; padding: 0; margin: 0; font-size: 13px; } .whr-footer .whr-foot-col ul li { margin-bottom: 10px; } .whr-footer .whr-foot-col a { color: inherit; opacity: .75; text-decoration: none; transition: opacity .2s ease, color .2s ease; } .whr-footer .whr-foot-col a:hover { opacity: 1; color: var(--theme-color, #6C3AED); } .whr-footer .whr-foot-empty { font-size: 12px; opacity: .5; font-style: italic; } .whr-footer .whr-foot-action-links a { display: inline-flex; align-items: center; gap: 8px; } .whr-footer .whr-foot-action-links a i { font-size: 14px; opacity: .7; width: 16px; text-align: center; } .whr-footer .whr-foot-col .whr-city-link { display: inline-flex; align-items: center; gap: 6px; } .whr-footer .whr-foot-col .whr-city-link .whr-city-icon { font-size: 14px; line-height: 1; display: inline-block; width: 18px; text-align: center; opacity: .85; } .whr-footer .whr-foot-grid { display: grid; gap: 28px; grid-template-columns: 1fr; } @media (min-width: 576px) { .whr-footer .whr-foot-grid { grid-template-columns: 1fr 1fr; } } @media (min-width: 992px) { .whr-footer .whr-foot-grid { grid-template-columns: repeat(5, 1fr); gap: 32px; } } .whr-footer .whr-foot-bottom { margin-top: 32px; padding-top: 20px; border-top: 1px solid rgba(0,0,0,.08); display: flex; flex-direction: column; gap: 14px; align-items: center; text-align: center; } .theme-dark .whr-footer .whr-foot-bottom { border-top-color: rgba(255,255,255,.1); } @media (min-width: 768px) { .whr-footer .whr-foot-bottom { flex-direction: row; justify-content: space-between; text-align: left; } } .whr-footer .whr-foot-copy { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; opacity: .7; margin: 0; } .whr-footer .whr-foot-copy img.whr-favicon { width: 18px; height: 18px; border-radius: 4px; flex-shrink: 0; } .whr-footer .whr-foot-legal { display: flex; flex-wrap: wrap; gap: 6px 16px; justify-content: center; font-size: 12px; } .whr-footer .whr-foot-legal a { color: inherit; opacity: .75; text-decoration: none; } .whr-footer .whr-foot-legal a:hover { opacity: 1; } .whr-footer .whr-foot-legal .whr-admin-link { color: #e74c3c !important; opacity: 1; } .whr-footer .whr-foot-social { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; padding: 0; margin: 0; } .whr-footer .whr-foot-social a { width: 32px; height: 32px; border-radius: 8px; background: #fff; display: inline-flex; align-items: center; justify-content: center; color: #2c2c46; text-decoration: none !important; transition: background .2s ease, color .2s ease, transform .15s ease; box-shadow: 0 1px 2px rgba(0,0,0,.04); } .whr-footer .whr-foot-social a:hover { background: var(--theme-color, #6C3AED); color: #fff; transform: translateY(-1px); } .theme-dark .whr-footer .whr-foot-social a { background: #34344a; color: #fff; box-shadow: none; } .whr-footer .whr-foot-social i { font-size: 14px; } @media (max-width: 575.98px) { .whr-footer { padding: 24px 18px 20px; margin-left: 8px; margin-right: 8px; } .whr-store-dropdown { min-width: 220px; max-width: 90vw; } }</style><footer class=\"whr-footer\" role=\"contentinfo\"> {# === Grille principale 5 colonnes === #} <div class=\"whr-foot-grid\"> {# ===== Col 1 : Mon compte / Commencer ici ===== #} <div class=\"whr-foot-col whr-foot-col-action\"> {% if connectUser %} <h4>{{ 'layout.footer.my_account'|trans({}, 'whr-public')|default('Mon compte') }}</h4> {% else %} <h4>{{ 'layout.footer.start_here'|trans({}, 'whr-public')|default('Commencer ici') }}</h4> {% endif %} <div class=\"whr-stores\"> {# === Dropdown unifié (FR & EN) — la version FR aura FR en featured, la EN aura US === #} {# -- Bouton App Store + dropdown -- #} {% set _hasIos = false %} {% for c in _storePrimary %}{% if c.ios %}{% set _hasIos = true %}{% endif %}{% endfor %} {% for c in _storeOthers %}{% if c.ios %}{% set _hasIos = true %}{% endif %}{% endfor %} {% if _hasIos %} <div class=\"whr-store-wrap\" data-whr-store=\"ios\"> <button type=\"button\" class=\"whr-store-link\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-label=\"App Store - Choose your country\"> <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"#fff\" aria-hidden=\"true\"> <path d=\"M18.71 19.5C17.88 20.74 17 21.95 15.66 21.97C14.32 22 13.89 21.18 12.37 21.18C10.84 21.18 10.37 21.95 9.09997 22C7.78997 22.05 6.79997 20.68 5.95997 19.47C4.24997 17 2.93997 12.45 4.69997 9.39C5.56997 7.87 7.12997 6.91 8.81997 6.88C10.1 6.86 11.32 7.75 12.11 7.75C12.89 7.75 14.37 6.68 15.92 6.84C16.57 6.87 18.39 7.1 19.56 8.82C19.47 8.88 17.39 10.1 17.41 12.63C17.44 15.65 20.06 16.66 20.09 16.67C20.06 16.74 19.67 18.11 18.71 19.5ZM13 3.5C13.73 2.67 14.94 2.04 15.94 2C16.07 3.17 15.6 4.35 14.9 5.19C14.21 6.04 13.07 6.7 11.95 6.61C11.8 5.46 12.36 4.26 13 3.5Z\"/> </svg> <span> <small>{{ 'layout.download_on'|trans({}, 'whr-public')|default('Download on') }}</small> <strong>App Store</strong> </span> <span class=\"whr-store-chevron\" aria-hidden=\"true\">▲</span> </button> <div class=\"whr-store-dropdown\" role=\"menu\"> {# Search bar (n'apparaît que si > 20 pays \"others\") #} {% set _iosOthersCount = 0 %} {% for c in _storeOthers %}{% if c.ios %}{% set _iosOthersCount = _iosOthersCount + 1 %}{% endif %}{% endfor %} {% if _iosOthersCount > 20 %} <div class=\"whr-store-search-wrap\"> <input type=\"text\" class=\"whr-store-search\" placeholder=\"{{ 'layout.search_country'|trans({}, 'whr-public')|default('Search country...') }}\" aria-label=\"Search country\" autocomplete=\"off\"> </div> {% endif %} {# Featured (pinné, pas dans le scroll) #} {% set _iosPrimaryCount = 0 %} {% for c in _storePrimary %}{% if c.ios %}{% set _iosPrimaryCount = _iosPrimaryCount + 1 %}{% endif %}{% endfor %} {% if _iosPrimaryCount > 0 %} <div class=\"whr-store-featured\"> <div class=\"whr-store-dropdown-header\"> {{ 'layout.featured'|trans({}, 'whr-public')|default('Featured') }} </div> {% for code, country in _storePrimary %} {% if country.ios %} <a href=\"{{ country.ios }}\" class=\"whr-store-country\" data-search=\"{{ country.label|lower }} {{ code|lower }}\" target=\"_blank\" rel=\"noopener\" role=\"menuitem\"> {% if country.flag %}<span class=\"whr-flag\">{{ country.flag }}</span>{% endif %} <span class=\"whr-country-name\">{{ country.label }}</span> </a> {% endif %} {% endfor %} </div> {% endif %} {# Other regions (grille 2 colonnes, scrollable) #} {% if _storeOthers is not empty %} <div class=\"whr-store-others\"> <div class=\"whr-store-dropdown-header\"> {{ 'layout.other_regions'|trans({}, 'whr-public')|default('Other regions') }} </div> <div class=\"whr-store-grid\"> {% for code, country in _storeOthers %} {% if country.ios %} <a href=\"{{ country.ios }}\" class=\"whr-store-country\" data-search=\"{{ country.label|lower }} {{ code|lower }}\" target=\"_blank\" rel=\"noopener\" role=\"menuitem\"> {% if country.flag %}<span class=\"whr-flag\">{{ country.flag }}</span>{% endif %} <span class=\"whr-country-name\">{{ country.label }}</span> </a> {% endif %} {% endfor %} </div> <div class=\"whr-store-empty\" style=\"display: none;\"> {{ 'layout.no_country_found'|trans({}, 'whr-public')|default('No country found') }} </div> </div> {% endif %} </div> </div> {% endif %} {# -- Bouton Google Play + dropdown -- #} {% set _hasAndroid = false %} {% for c in _storePrimary %}{% if c.android %}{% set _hasAndroid = true %}{% endif %}{% endfor %} {% for c in _storeOthers %}{% if c.android %}{% set _hasAndroid = true %}{% endif %}{% endfor %} {% if _hasAndroid %} <div class=\"whr-store-wrap\" data-whr-store=\"android\"> <button type=\"button\" class=\"whr-store-link\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-label=\"Google Play - Choose your country\"> <svg width=\"18\" height=\"18\" viewBox=\"0 0 512 512\" aria-hidden=\"true\"> <path style=\"fill:#3A9BC8;\" d=\"M225.656,256.052L14.016,485.451l-6.442,7.052c-4.005-5.919-6.704-12.972-7.313-20.806C0.087,470.305,0,468.91,0,467.518V44.499c0-9.488,2.873-18.02,7.574-24.987L225.656,256.052z\"/> <path style=\"fill:#9BCD83;\" d=\"M320.811,152.8l-95.155,103.253L7.574,19.512C19.936,1.405,45.183-6.342,66.6,6.02L320.811,152.8z\"/> <path style=\"fill:#EEB84C;\" d=\"M455.056,257.27c-0.348,14.453-7.748,28.904-22.113,37.174l-112.132,64.771l-95.155-103.163L320.811,152.8l70.518,40.745l41.614,24.026C448.178,226.366,455.579,241.861,455.056,257.27z\"/> <path style=\"fill:#B43F70;\" d=\"M7.591,492.492c12.368,18.116,37.599,25.838,58.976,13.496L320.775,359.22l-95.156-103.209L7.591,492.492z\"/> </svg> <span> <small>{{ 'layout.available_on'|trans({}, 'whr-public')|default('Available on') }}</small> <strong>Google Play</strong> </span> <span class=\"whr-store-chevron\" aria-hidden=\"true\">▲</span> </button> <div class=\"whr-store-dropdown\" role=\"menu\"> {# Search bar (n'apparaît que si > 20 pays \"others\") #} {% set _androidOthersCount = 0 %} {% for c in _storeOthers %}{% if c.android %}{% set _androidOthersCount = _androidOthersCount + 1 %}{% endif %}{% endfor %} {% if _androidOthersCount > 20 %} <div class=\"whr-store-search-wrap\"> <input type=\"text\" class=\"whr-store-search\" placeholder=\"{{ 'layout.search_country'|trans({}, 'whr-public')|default('Search country...') }}\" aria-label=\"Search country\" autocomplete=\"off\"> </div> {% endif %} {# Featured (pinné) #} {% set _androidPrimaryCount = 0 %} {% for c in _storePrimary %}{% if c.android %}{% set _androidPrimaryCount = _androidPrimaryCount + 1 %}{% endif %}{% endfor %} {% if _androidPrimaryCount > 0 %} <div class=\"whr-store-featured\"> <div class=\"whr-store-dropdown-header\"> {{ 'layout.featured'|trans({}, 'whr-public')|default('Featured') }} </div> {% for code, country in _storePrimary %} {% if country.android %} <a href=\"{{ country.android }}\" class=\"whr-store-country\" data-search=\"{{ country.label|lower }} {{ code|lower }}\" target=\"_blank\" rel=\"noopener\" role=\"menuitem\"> {% if country.flag %}<span class=\"whr-flag\">{{ country.flag }}</span>{% endif %} <span class=\"whr-country-name\">{{ country.label }}</span> </a> {% endif %} {% endfor %} </div> {% endif %} {# Other regions (grille 2 colonnes) #} {% if _storeOthers is not empty %} <div class=\"whr-store-others\"> <div class=\"whr-store-dropdown-header\"> {{ 'layout.other_regions'|trans({}, 'whr-public')|default('Other regions') }} </div> <div class=\"whr-store-grid\"> {% for code, country in _storeOthers %} {% if country.android %} <a href=\"{{ country.android }}\" class=\"whr-store-country\" data-search=\"{{ country.label|lower }} {{ code|lower }}\" target=\"_blank\" rel=\"noopener\" role=\"menuitem\"> {% if country.flag %}<span class=\"whr-flag\">{{ country.flag }}</span>{% endif %} <span class=\"whr-country-name\">{{ country.label }}</span> </a> {% endif %} {% endfor %} </div> <div class=\"whr-store-empty\" style=\"display: none;\"> {{ 'layout.no_country_found'|trans({}, 'whr-public')|default('No country found') }} </div> </div> {% endif %} </div> </div> {% endif %} </div> <ul class=\"whr-foot-action-links\"> <li> <a href=\"{{ path('whileresume_homepage') }}\"> <i class=\"feather-flag\"></i> English </a> </li> <li> <a href=\"{{ path('locale_whileresume_homepage',{'_locale':'fr'}) }}\"> <i class=\"feather-flag\"></i> Français </a> </li> </ul> </div> {# ===== Col 2 : Articles récents (featured) ===== #} <div class=\"whr-foot-col\"> <h4>{{ 'layout.footer.latest_articles'|trans({}, 'whr-public')|default('Articles récents') }}</h4> {% if footerArticles is not empty %} <ul> {% for article in footerArticles %} <li> <a href=\"{% if _isFr %}{{ path('locale_cvs_website_article', {'_locale': _locale, 'slug': article.slug}) }}{% else %}{{ path('cvs_website_article', {'slug': article.slug}) }}{% endif %}\" title=\"{{ article.title }}\"> {{ article.shortTitle ?: cleanSubstr(article.title, 45) }} </a> </li> {% endfor %} </ul> {% else %} <p class=\"whr-foot-empty\">{{ 'layout.footer.coming_soon'|trans({}, 'whr-public')|default('Bientôt disponible') }}</p> {% endif %} </div> {# ===== Col 3 : Emplois par ville ===== #} <div class=\"whr-foot-col\"> <h4>{{ 'layout.footer.jobs_by_city'|trans({}, 'whr-public')|default('Emplois par ville') }}</h4> {% if footerJobsCities is not empty %} <ul> {% for city in footerJobsCities %} <li> <a class=\"whr-city-link\" href=\"{% if _isFr %}{{ path('locale_cvs_application_jobs_filter', {'_locale': _locale, 'slug': city.slug}) }}{% else %}{{ path('cvs_application_jobs_filter', {'slug': city.slug}) }}{% endif %}\" title=\"{{ city.shortTitle ?: city.label }}\"> {% if city.icon %} <span class=\"whr-city-icon\">{{ city.icon }}</span> {% else %} <i class=\"feather-map-pin whr-city-icon\"></i> {% endif %} <span>{{ city.label }}</span> </a> </li> {% endfor %} </ul> {% else %} <p class=\"whr-foot-empty\">{{ 'layout.footer.coming_soon'|trans({}, 'whr-public')|default('Bientôt disponible') }}</p> {% endif %} </div> {# ===== Col 4 : Entreprises par ville ===== #} <div class=\"whr-foot-col\"> <h4>{{ 'layout.footer.companies_by_city'|trans({}, 'whr-public')|default('Entreprises par ville') }}</h4> {% if footerEnterprisesCities is not empty %} <ul> {% for city in footerEnterprisesCities %} <li> <a class=\"whr-city-link\" href=\"{% if _isFr %}{{ path('locale_cvs_application_companies_filter', {'_locale': _locale, 'slug': city.slug}) }}{% else %}{{ path('cvs_application_companies_filter', {'slug': city.slug}) }}{% endif %}\" title=\"{{ city.shortTitle ?: city.label }}\"> {% if city.icon %} <span class=\"whr-city-icon\">{{ city.icon }}</span> {% else %} <i class=\"feather-map-pin whr-city-icon\"></i> {% endif %} <span>{{ city.label }}</span> </a> </li> {% endfor %} </ul> {% else %} <p class=\"whr-foot-empty\">{{ 'layout.footer.coming_soon'|trans({}, 'whr-public')|default('Bientôt disponible') }}</p> {% endif %} </div> {# ===== Col 5 : Pages SEO (LandingJobs featured) ===== #} <div class=\"whr-foot-col\"> <h4>{{ 'layout.footer.featured_pages'|trans({}, 'whr-public')|default('À découvrir') }}</h4> {% if footerLandingJobs is not empty %} <ul> {% for landing in footerLandingJobs %} <li> <a href=\"{% if _isFr %}{{ path('locale_whileresume_homepage_landing', {'_locale': _locale, 'slug': landing.slug}) }}{% else %}{{ path('whileresume_homepage_landing', {'slug': landing.slug}) }}{% endif %}\"> {{ landing.title }} </a> </li> {% endfor %} </ul> {% endif %} </div> </div> {# === Bas du footer === #} <div class=\"whr-foot-bottom\"> <p class=\"whr-foot-copy\"> {% if favicon %} <img src=\"{{ favicon }}\" alt=\"\" class=\"whr-favicon\" /> {% endif %} <span>© {{ \"now\"|date('Y') }} {{ websitename }}. {{ 'layout.rights_reserved'|trans({}, 'whr-public')|default('Tous droits réservés.') }}</span> </p> <div class=\"whr-foot-legal\"> {% set menuFooter = getMenuWebsiteLocaleArray(_locale, \"footer\", connectUser) %} {% if menuFooter is not empty %} {% for m in menuFooter %} <a href=\"{{ m.link }}\" aria-label=\"{{ m.title }}\" title=\"{{ m.title }}\" {% if m.targetBlank == 1 %}target=\"_blank\" rel=\"noreferrer\"{% endif %}> {{ m.title }} </a> {% endfor %} {% endif %} {% if app.user is not null and is_granted(\"ROLE_SUPER_ADMIN\") %} <a href=\"{{ path('backoffice_dashboard') }}\" class=\"whr-admin-link\" title=\"Administration\"> <i class=\"feather-settings\"></i> Administration </a> {% endif %} </div> <ul class=\"whr-foot-social\"> {% if facebook %} <li><a href=\"{{ facebook }}\" target=\"_blank\" rel=\"noopener\" aria-label=\"Facebook\"><i class=\"feather-facebook\"></i></a></li> {% endif %} {% if twitter %} <li><a href=\"{{ twitter }}\" target=\"_blank\" rel=\"noopener\" aria-label=\"X / Twitter\"><i class=\"feather-twitter\"></i></a></li> {% endif %} {% if instagram %} <li><a href=\"{{ instagram }}\" target=\"_blank\" rel=\"noopener\" aria-label=\"Instagram\"><i class=\"feather-instagram\"></i></a></li> {% endif %} {% if linkedin %} <li><a href=\"{{ linkedin }}\" target=\"_blank\" rel=\"noopener\" aria-label=\"LinkedIn\"><i class=\"feather-linkedin\"></i></a></li> {% endif %} {% if youtube %} <li><a href=\"{{ youtube }}\" target=\"_blank\" rel=\"noopener\" aria-label=\"YouTube\"><i class=\"feather-youtube\"></i></a></li> {% endif %} </ul> </div></footer>{# ====== JS dropdown stores (vanilla, autonome, pas de dépendance) ====== #}<script> (function() { 'use strict'; function closeAllDropdowns() { document.querySelectorAll('.whr-store-wrap.is-open').forEach(function(w) { w.classList.remove('is-open'); var b = w.querySelector('.whr-store-link'); if (b) b.setAttribute('aria-expanded', 'false'); // Reset search à la fermeture var input = w.querySelector('.whr-store-search'); if (input) { input.value = ''; applyFilter(w, ''); } }); } function applyFilter(wrap, query) { query = (query || '').trim().toLowerCase(); var items = wrap.querySelectorAll('.whr-store-country'); var othersWrap = wrap.querySelector('.whr-store-others'); var emptyMsg = wrap.querySelector('.whr-store-empty'); var grid = wrap.querySelector('.whr-store-grid'); var visibleInOthers = 0; items.forEach(function(item) { var searchData = item.dataset.search || ''; var matches = query === '' || searchData.indexOf(query) !== -1; if (matches) { item.classList.remove('is-hidden'); // Compter uniquement les items dans la grille \"others\" (pas le featured) if (grid && grid.contains(item)) { visibleInOthers++; } } else { item.classList.add('is-hidden'); } }); // Afficher le message \"aucun résultat\" si rien ne matche dans others if (emptyMsg && grid) { if (query !== '' && visibleInOthers === 0) { grid.style.display = 'none'; emptyMsg.style.display = 'block'; } else { grid.style.display = ''; emptyMsg.style.display = 'none'; } } } function initWhrStoreDropdowns() { var wraps = document.querySelectorAll('.whr-store-wrap'); if (!wraps.length) return; wraps.forEach(function(wrap) { var btn = wrap.querySelector('.whr-store-link'); if (!btn || btn.dataset.whrInit === '1') return; btn.dataset.whrInit = '1'; // === Toggle au clic sur le bouton === btn.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); var isOpen = wrap.classList.contains('is-open'); closeAllDropdowns(); if (!isOpen) { wrap.classList.add('is-open'); btn.setAttribute('aria-expanded', 'true'); // Auto-focus sur la search à l'ouverture (desktop seulement, // pour éviter le clavier qui pop sur mobile) var input = wrap.querySelector('.whr-store-search'); if (input && window.innerWidth >= 768) { setTimeout(function() { input.focus(); }, 50); } } }); // === Filtrage live sur la search === var input = wrap.querySelector('.whr-store-search'); if (input) { input.addEventListener('input', function() { applyFilter(wrap, this.value); }); // Empêcher la fermeture du dropdown quand on clique dans le champ input.addEventListener('click', function(e) { e.stopPropagation(); }); // Échap dans le champ → vider la recherche d'abord, puis fermer input.addEventListener('keydown', function(e) { if (e.key === 'Escape') { if (this.value !== '') { this.value = ''; applyFilter(wrap, ''); e.stopPropagation(); } } }); } }); // === Listeners globaux (un seul fois) === if (!document.body.dataset.whrStoreOutsideInit) { document.body.dataset.whrStoreOutsideInit = '1'; // Click outside → close document.addEventListener('click', function(e) { if (!e.target.closest('.whr-store-wrap')) { closeAllDropdowns(); } }); // ESC → close document.addEventListener('keydown', function(e) { if (e.key === 'Escape') { closeAllDropdowns(); } }); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initWhrStoreDropdowns); } else { initWhrStoreDropdowns(); } })();</script>", "application/whileresume/website/components/footer.html.twig", "/var/www/vhosts/mirtillostudio.fr/b1.mirtillostudio.fr/version-1/templates/application/whileresume/website/components/footer.html.twig"); }}