custom/plugins/HoggiTheme/src/Resources/views/storefront/base.html.twig line 1

Open in your IDE?
  1. {% sw_extends '@Storefront/storefront/base.html.twig' %}
  2. {% block base_navigation %}{% endblock %}
  3. {% block base_header_inner %}
  4.     {% sw_include '@Storefront/storefront/emz/header/header.html.twig' %}
  5. {% endblock %}
  6. {% block base_footer %}
  7.     <footer class="footer-main">
  8.         {% block base_footer_inner %}
  9.             {% sw_include '@Storefront/storefront/layout/footer/footer.html.twig' %}
  10.         {% endblock %}
  11.     </footer>
  12. {% endblock %}
  13. {% block base_body %}
  14.     {{ parent(base_body) }}
  15.     {% if controllerName != "Register" and controllerName != "Checkout" %}
  16.         {% block layout_footer_smartphone %}
  17.             <footer data-emzscrollup id="emz-sticky-sm-footer" class="emz-sticky-sm-footer">
  18.                 <div class="container">
  19.                     <nav class="row emz-sticky-sm-footer-nav">
  20.                         <button type="button" aria-label="searchButton" class="justify-content-center emz-btn-modal btn btn-primary" data-toggle="modal" data-target="#searchmodal">
  21.                             {% sw_icon 'search' %}
  22.                         </button>
  23.                         <button type="button" aria-label="accountButton" class="justify-content-center emz-btn-modal btn btn-primary" data-toggle="modal" data-target="#accountmodal">
  24.                             {% sw_icon 'avatar' %}
  25.                         </button>
  26.                     </nav>
  27.                 </div>
  28.             </footer>
  29.         {% endblock %}
  30.         {% block base_modals %}
  31.             <!-- Modal -->
  32.             <div class="modal fade" data-backdrop="true" id="accountmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  33.                 <div class="modal-dialog emz-modal" role="document">
  34.                     <div class="modal-content">
  35.                         <div class="emz-modal-header">
  36.                             <button type="button" class="btn" data-dismiss="modal">
  37.                                 <span>{% sw_icon 'x' %}</span>
  38.                             </button>
  39.                         </div>
  40.                         <div class="modal-body">
  41.                             <div class="account-menu-login">
  42.                                 {% if context.customer %}
  43.                                     {% block layout_header_actions_account_widget_dropdown_header %}
  44.                                         <div class="dropdown-header account-menu-header">
  45.                                             {{ "account.myAccount"|trans|sw_sanitize }}
  46.                                         </div>
  47.                                     {% endblock %}
  48.                                     {% block layout_header_actions_account_widget_dropdown_links %}
  49.                                         <div class="account-menu-links">
  50.                                             {% sw_include '@Storefront/storefront/page/account/sidebar.html.twig' with {'headerWidget': true} %}
  51.                                         </div>
  52.                                     {% endblock %}
  53.                                 {% else %}
  54.                                     <a href="{{ path('frontend.account.login.page') }}" title="{{ "account.loginSubmit"|trans|striptags }}" class="btn btn-primary account-menu-login-button">
  55.                                         {{ "account.loginSubmit"|trans|sw_sanitize }}
  56.                                     </a>
  57.                                     <div class="account-menu-register">
  58.                                         {{ "account.orRegister"|trans|sw_sanitize }}
  59.                                         <a href="{{ path('frontend.account.login.page') }}" title="{{ "account.orRegisterLink"|trans|striptags }}">{{ "account.orRegisterLink"|trans|striptags }}</a>
  60.                                     </div>
  61.                                 {% endif %}
  62.                             </div>
  63.                         </div>
  64.                     </div>
  65.                 </div>
  66.             </div>
  67.             <div class="modal fade" data-backdrop="true" id="searchmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  68.                 <div class="modal-dialog emz-modal" role="document">
  69.                     <div class="modal-content">
  70.                         <div class="emz-modal-header">
  71.                             <button type="button" class="btn" data-dismiss="modal">
  72.                                 <span>{% sw_icon 'x' %}</span>
  73.                             </button>
  74.                         </div>
  75.                         <div class="modal-body">
  76.                             <div class="emz-footer-search">
  77.                                 <form action="{{ path('frontend.search.page') }}" method="get" data-search-form="true" data-url="{{ path('frontend.search.suggest') }}?search=" class="header-search-form">
  78.                                     {% block layout_footer_search_input_group %}
  79.                                         <div class="input-group">
  80.                                             {% block layout_header_search_input %}
  81.                                                 <input autofocus type="search" name="search" class="form-control header-search-input" autocomplete="off" autocapitalize="off" placeholder="{{ "header.searchPlaceholder"|trans|striptags }}" aria-label="{{ "header.searchPlaceholder"|trans|striptags }}" maxlength="30" value="{{ page.searchTerm }}">
  82.                                             {% endblock %}
  83.                                             {% block layout_footer_search_button %}
  84.                                                 <div class="input-group-append">
  85.                                                     <button type="submit" class="btn header-search-btn" aria-label="{{ "header.searchButton"|trans|striptags }}">
  86.                                                         <span class="header-search-icon">
  87.                                                             {% sw_icon 'search' %}
  88.                                                         </span>
  89.                                                     </button>
  90.                                                 </div>
  91.                                             {% endblock %}
  92.                                         </div>
  93.                                     {% endblock %}
  94.                                 </form>
  95.                             </div>
  96.                         </div>
  97.                     </div>
  98.                 </div>
  99.             </div>
  100.         {% endblock %}
  101.     {% endif %}
  102. {% endblock %}
  103. {% block base_body_script %}
  104.     {{ parent() }}
  105.     <script>
  106.         (function () {
  107.             const newHtml =
  108.                     'Vielen Dank für Ihre Anfrage.<br><br>' +
  109.                     'Wir haben Ihre Anfrage erhalten und werden uns so schnell wie möglich mit Ihnen in Verbindung setzen.<br>' +
  110.                     'Die Freischaltung erfolgt manuell. Bitte beachten Sie unsere Öffnungszeiten.<br><br>' +
  111.                     '<b>Mo - Do</b><br> 08:00 - 12:00 Uhr, 13:00 - 16:00 Uhr <br><br> ' +
  112.                     '<b>Fr</b><br> 08:00 - 12:00 Uhr';
  113.             const matches = (el) => {
  114.                 const t = (el.textContent || "")
  115.                         .replace(/\s+/g, " ")
  116.                         .trim()
  117.                         .toLowerCase();
  118.                 return (
  119.                         t.includes("vielen dank für ihre anfrage") &&
  120.                         t.includes("wir haben ihre anfrage erhalten") &&
  121.                         t.includes("freischaltung erfolgt manuell") &&
  122.                         t.includes("öffnungszeiten")
  123.                 );
  124.             };
  125.             let obs = null;
  126.             let scheduled = false;
  127.             const apply = () => {
  128.                 scheduled = false;
  129.                 const messages = document.querySelectorAll('div[id^="period-request-form-success-message-"]');
  130.                 if (!messages.length) return;
  131.                 messages.forEach((msg) => {
  132.                     if (msg.dataset.emzSuccessAdjusted === "1") return;
  133.                     if (!matches(msg)) return;
  134.                     if (obs) obs.disconnect();
  135.                     msg.classList.add("p-3", "text-center");
  136.                     msg.innerHTML = newHtml;
  137.                     msg.dataset.emzSuccessAdjusted = "1";
  138.                     if (obs) obs.observe(document.body, { childList: true, subtree: true });
  139.                 });
  140.             };
  141.             const scheduleApply = () => {
  142.                 if (scheduled) return;
  143.                 scheduled = true;
  144.                 setTimeout(apply, 100);
  145.             };
  146.             const start = () => {
  147.                 apply();
  148.                 obs = new MutationObserver(scheduleApply);
  149.                 obs.observe(document.body, { childList: true, subtree: true });
  150.             };
  151.             if (document.readyState === "loading") {
  152.                 document.addEventListener("DOMContentLoaded", start);
  153.             } else {
  154.                 start();
  155.             }
  156.         })();
  157.     </script>
  158. {% endblock %}