<?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 "<style> /* ---------- Footer WhileResume ---------- */ .whr-footer { margin-top: 32px; padding: 36px 24px 24px; background: #F9FAFD; border-radius: 16px; color: #2c2c46; /* Pleine largeur quand le footer est en dehors de .middle-sidebar-left */ width: auto; max-width: none; margin-left: 16px; margin-right: 16px; } .theme-dark .whr-footer { background: #2a2a3c; color: #e9e9ef; } /* Si le footer reste dans .middle-sidebar-left (fallback ancien layout) */ .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; } .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: 170px; } .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; } /* 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; } /* Liste avec icônes (col 1) */ .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; } /* Mini-icône ville pour cols 3 et 4 */ .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; } /* Grille principale : 1 col → 2 cols → 5 cols */ .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; } } /* Bottom bar */ .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; } }</style><footer class=\"whr-footer\" role=\"contentinfo\"> "; // line 239 yield " <div class=\"whr-foot-grid\"> "; // line 242 yield " "; if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr", $context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.', 242, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 243 yield " "; $context["_ios"] = (isset($context["ios_fr"]) || array_key_exists("ios_fr", $context) ? $context["ios_fr"] : (function () { throw new RuntimeError('Variable "ios_fr" does not exist.', 243, $this->source); })()); // line 244 yield " "; $context["_android"] = (isset($context["android_fr"]) || array_key_exists("android_fr", $context) ? $context["android_fr"] : (function () { throw new RuntimeError('Variable "android_fr" does not exist.', 244, $this->source); })()); // line 245 yield " "; } else { // line 246 yield " "; $context["_ios"] = (isset($context["ios_us"]) || array_key_exists("ios_us", $context) ? $context["ios_us"] : (function () { throw new RuntimeError('Variable "ios_us" does not exist.', 246, $this->source); })()); // line 247 yield " "; $context["_android"] = (isset($context["android_us"]) || array_key_exists("android_us", $context) ? $context["android_us"] : (function () { throw new RuntimeError('Variable "android_us" does not exist.', 247, $this->source); })()); // line 248 yield " "; } // line 249 yield " <div class=\"whr-foot-col whr-foot-col-action\"> "; // line 251 if ((($tmp = (isset($context["connectUser"]) || array_key_exists("connectUser", $context) ? $context["connectUser"] : (function () { throw new RuntimeError('Variable "connectUser" does not exist.', 251, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 252 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 254 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 256 yield " <div class=\"whr-stores\"> "; // line 258 if ((($tmp = (isset($context["_ios"]) || array_key_exists("_ios", $context) ? $context["_ios"] : (function () { throw new RuntimeError('Variable "_ios" does not exist.', 258, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 259 yield " <a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["_ios"]) || array_key_exists("_ios", $context) ? $context["_ios"] : (function () { throw new RuntimeError('Variable "_ios" does not exist.', 259, $this->source); })()), "html", null, true); yield "\" class=\"whr-store-link\" target=\"_blank\" rel=\"noopener\" aria-label=\"App Store\"> <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 264 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"), "Télécharger sur"), "html", null, true); yield "</small> <strong>App Store</strong> </span> </a> "; } // line 269 yield " "; if ((($tmp = (isset($context["_android"]) || array_key_exists("_android", $context) ? $context["_android"] : (function () { throw new RuntimeError('Variable "_android" does not exist.', 269, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 270 yield " <a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["_android"]) || array_key_exists("_android", $context) ? $context["_android"] : (function () { throw new RuntimeError('Variable "_android" does not exist.', 270, $this->source); })()), "html", null, true); yield "\" class=\"whr-store-link\" target=\"_blank\" rel=\"noopener\" aria-label=\"Google Play\"> <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 278 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"), "Disponible sur"), "html", null, true); yield "</small> <strong>Google Play</strong> </span> </a> "; } // line 283 yield " </div> <ul class=\"whr-foot-action-links\"> <li> <a href=\""; // line 287 yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("whileresume_homepage"); yield "\"> <i class=\"feather-flag\"></i> English </a> </li> <li> <a href=\""; // line 293 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 302 yield " <div class=\"whr-foot-col\"> <h4>"; // line 303 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 304 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.', 304, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 305 yield " <ul> "; // line 306 $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.', 306, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["article"]) { // line 307 yield " <li> <a href=\""; // line 308 if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr", $context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.', 308, $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.', 308, $this->source); })()), "slug" => CoreExtension::getAttribute($this->env, $this->source, $context["article"], "slug", [], "any", false, false, false, 308)]), "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, 308)]), "html", null, true); } yield "\" title=\""; // line 309 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["article"], "title", [], "any", false, false, false, 309), "html", null, true); yield "\"> "; // line 310 yield ((CoreExtension::getAttribute($this->env, $this->source, $context["article"], "shortTitle", [], "any", false, false, false, 310)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["article"], "shortTitle", [], "any", false, false, false, 310), "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, 310), 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 314 yield " </ul> "; } else { // line 316 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 318 yield " </div> "; // line 321 yield " <div class=\"whr-foot-col\"> <h4>"; // line 322 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 323 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.', 323, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 324 yield " <ul> "; // line 325 $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.', 325, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["city"]) { // line 326 yield " <li> <a class=\"whr-city-link\" href=\""; // line 328 if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr", $context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.', 328, $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.', 328, $this->source); })()), "slug" => CoreExtension::getAttribute($this->env, $this->source, $context["city"], "slug", [], "any", false, false, false, 328)]), "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, 328)]), "html", null, true); } yield "\" title=\""; // line 329 yield ((CoreExtension::getAttribute($this->env, $this->source, $context["city"], "shortTitle", [], "any", false, false, false, 329)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "shortTitle", [], "any", false, false, false, 329), "html", null, true)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "label", [], "any", false, false, false, 329), "html", null, true))); yield "\"> "; // line 330 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["city"], "icon", [], "any", false, false, false, 330)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 331 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, 331), "html", null, true); yield "</span> "; } else { // line 333 yield " <i class=\"feather-map-pin whr-city-icon\"></i> "; } // line 335 yield " <span>"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "label", [], "any", false, false, false, 335), "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 339 yield " </ul> "; } else { // line 341 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 343 yield " </div> "; // line 346 yield " <div class=\"whr-foot-col\"> <h4>"; // line 347 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 348 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.', 348, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 349 yield " <ul> "; // line 350 $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.', 350, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["city"]) { // line 351 yield " <li> <a class=\"whr-city-link\" href=\""; // line 353 if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr", $context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.', 353, $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.', 353, $this->source); })()), "slug" => CoreExtension::getAttribute($this->env, $this->source, $context["city"], "slug", [], "any", false, false, false, 353)]), "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, 353)]), "html", null, true); } yield "\" title=\""; // line 354 yield ((CoreExtension::getAttribute($this->env, $this->source, $context["city"], "shortTitle", [], "any", false, false, false, 354)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "shortTitle", [], "any", false, false, false, 354), "html", null, true)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "label", [], "any", false, false, false, 354), "html", null, true))); yield "\"> "; // line 355 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["city"], "icon", [], "any", false, false, false, 355)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 356 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, 356), "html", null, true); yield "</span> "; } else { // line 358 yield " <i class=\"feather-map-pin whr-city-icon\"></i> "; } // line 360 yield " <span>"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["city"], "label", [], "any", false, false, false, 360), "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 364 yield " </ul> "; } else { // line 366 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 368 yield " </div> "; // line 373 yield " <div class=\"whr-foot-col\"> <h4>"; // line 374 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 375 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.', 375, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 376 yield " <ul> "; // line 377 $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.', 377, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["landing"]) { // line 378 yield " <li> <a href=\""; // line 379 if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr", $context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.', 379, $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.', 379, $this->source); })()), "slug" => CoreExtension::getAttribute($this->env, $this->source, $context["landing"], "slug", [], "any", false, false, false, 379)]), "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, 379)]), "html", null, true); } yield "\"> "; // line 380 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["landing"], "title", [], "any", false, false, false, 380), "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 384 yield " </ul> "; } // line 386 yield " </div> </div> "; // line 390 yield " <div class=\"whr-foot-bottom\"> <p class=\"whr-foot-copy\"> "; // line 392 if ((($tmp = (isset($context["favicon"]) || array_key_exists("favicon", $context) ? $context["favicon"] : (function () { throw new RuntimeError('Variable "favicon" does not exist.', 392, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 393 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.', 393, $this->source); })()), "html", null, true); yield "\" alt=\"\" class=\"whr-favicon\" /> "; } // line 395 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.', 395, $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 399 $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.', 399, $this->source); })()), "footer", (isset($context["connectUser"]) || array_key_exists("connectUser", $context) ? $context["connectUser"] : (function () { throw new RuntimeError('Variable "connectUser" does not exist.', 399, $this->source); })())); // line 400 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.', 400, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 401 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.', 401, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["m"]) { // line 402 yield " <a href=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["m"], "link", [], "any", false, false, false, 402), "html", null, true); yield "\" aria-label=\""; // line 403 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["m"], "title", [], "any", false, false, false, 403), "html", null, true); yield "\" title=\""; // line 404 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["m"], "title", [], "any", false, false, false, 404), "html", null, true); yield "\" "; // line 405 if ((CoreExtension::getAttribute($this->env, $this->source, $context["m"], "targetBlank", [], "any", false, false, false, 405) == 1)) { yield "target=\"_blank\" rel=\"noreferrer\""; } yield "> "; // line 406 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["m"], "title", [], "any", false, false, false, 406), "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 409 yield " "; } // line 410 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.', 410, $this->source); })()), "user", [], "any", false, false, false, 410)) && $this->extensions['Symfony\Bridge\Twig\Extension\SecurityExtension']->isGranted("ROLE_SUPER_ADMIN"))) { // line 411 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 415 yield " </div> <ul class=\"whr-foot-social\"> "; // line 418 if ((($tmp = (isset($context["facebook"]) || array_key_exists("facebook", $context) ? $context["facebook"] : (function () { throw new RuntimeError('Variable "facebook" does not exist.', 418, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 419 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.', 419, $this->source); })()), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"Facebook\"><i class=\"feather-facebook\"></i></a></li> "; } // line 421 yield " "; if ((($tmp = (isset($context["twitter"]) || array_key_exists("twitter", $context) ? $context["twitter"] : (function () { throw new RuntimeError('Variable "twitter" does not exist.', 421, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 422 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.', 422, $this->source); })()), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"X / Twitter\"><i class=\"feather-twitter\"></i></a></li> "; } // line 424 yield " "; if ((($tmp = (isset($context["instagram"]) || array_key_exists("instagram", $context) ? $context["instagram"] : (function () { throw new RuntimeError('Variable "instagram" does not exist.', 424, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 425 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.', 425, $this->source); })()), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"Instagram\"><i class=\"feather-instagram\"></i></a></li> "; } // line 427 yield " "; if ((($tmp = (isset($context["linkedin"]) || array_key_exists("linkedin", $context) ? $context["linkedin"] : (function () { throw new RuntimeError('Variable "linkedin" does not exist.', 427, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 428 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.', 428, $this->source); })()), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"LinkedIn\"><i class=\"feather-linkedin\"></i></a></li> "; } // line 430 yield " "; if ((($tmp = (isset($context["youtube"]) || array_key_exists("youtube", $context) ? $context["youtube"] : (function () { throw new RuntimeError('Variable "youtube" does not exist.', 430, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 431 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.', 431, $this->source); })()), "html", null, true); yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"YouTube\"><i class=\"feather-youtube\"></i></a></li> "; } // line 433 yield " </ul> </div></footer>"; $__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 ( 773 => 433, 767 => 431, 764 => 430, 758 => 428, 755 => 427, 749 => 425, 746 => 424, 740 => 422, 737 => 421, 731 => 419, 729 => 418, 724 => 415, 716 => 411, 713 => 410, 710 => 409, 701 => 406, 695 => 405, 691 => 404, 687 => 403, 682 => 402, 677 => 401, 674 => 400, 672 => 399, 660 => 395, 654 => 393, 652 => 392, 648 => 390, 643 => 386, 639 => 384, 629 => 380, 621 => 379, 618 => 378, 614 => 377, 611 => 376, 609 => 375, 605 => 374, 602 => 373, 598 => 368, 592 => 366, 588 => 364, 577 => 360, 573 => 358, 567 => 356, 565 => 355, 561 => 354, 553 => 353, 549 => 351, 545 => 350, 542 => 349, 540 => 348, 536 => 347, 533 => 346, 529 => 343, 523 => 341, 519 => 339, 508 => 335, 504 => 333, 498 => 331, 496 => 330, 492 => 329, 484 => 328, 480 => 326, 476 => 325, 473 => 324, 471 => 323, 467 => 322, 464 => 321, 460 => 318, 454 => 316, 450 => 314, 440 => 310, 436 => 309, 428 => 308, 425 => 307, 421 => 306, 418 => 305, 416 => 304, 412 => 303, 409 => 302, 398 => 293, 389 => 287, 383 => 283, 375 => 278, 363 => 270, 360 => 269, 352 => 264, 343 => 259, 341 => 258, 337 => 256, 331 => 254, 325 => 252, 323 => 251, 319 => 249, 316 => 248, 313 => 247, 310 => 246, 307 => 245, 304 => 244, 301 => 243, 298 => 242, 294 => 239, 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) %}<style> /* ---------- Footer WhileResume ---------- */ .whr-footer { margin-top: 32px; padding: 36px 24px 24px; background: #F9FAFD; border-radius: 16px; color: #2c2c46; /* Pleine largeur quand le footer est en dehors de .middle-sidebar-left */ width: auto; max-width: none; margin-left: 16px; margin-right: 16px; } .theme-dark .whr-footer { background: #2a2a3c; color: #e9e9ef; } /* Si le footer reste dans .middle-sidebar-left (fallback ancien layout) */ .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; } .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: 170px; } .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; } /* 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; } /* Liste avec icônes (col 1) */ .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; } /* Mini-icône ville pour cols 3 et 4 */ .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; } /* Grille principale : 1 col → 2 cols → 5 cols */ .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; } } /* Bottom bar */ .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; } }</style><footer class=\"whr-footer\" role=\"contentinfo\"> {# === Grille principale 5 colonnes === #} <div class=\"whr-foot-grid\"> {# ===== Col 1 : Mon compte / Commencer ici ===== #} {% if _isFr %} {% set _ios = ios_fr %} {% set _android = android_fr %} {% else %} {% set _ios = ios_us %} {% set _android = android_us %} {% endif %} <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\"> {% if _ios %} <a href=\"{{ _ios }}\" class=\"whr-store-link\" target=\"_blank\" rel=\"noopener\" aria-label=\"App Store\"> <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('Télécharger sur') }}</small> <strong>App Store</strong> </span> </a> {% endif %} {% if _android %} <a href=\"{{ _android }}\" class=\"whr-store-link\" target=\"_blank\" rel=\"noopener\" aria-label=\"Google Play\"> <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('Disponible sur') }}</small> <strong>Google Play</strong> </span> </a> {% 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) ===== ⚠️ Route 'cvs_application_landing_jobs_show' non trouvée dans tes routes.yml (peut-être dans whileresume_resume.yml ?). Adapte si besoin. #} <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>", "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"); }}