templates/security/layout.html.twig line 98

Open in your IDE?
  1. {% import "@component/_template/_html_macro.html.twig" as macros %}
  2. {% if platform_front('security.wrapper_header_content') %}
  3. {% set wrapper_header_content = getFrontDataFromSettingOrYaml('front.security.wrapper_header_content', platform_front('security'), 'wrapper_header_content') %}
  4. {% set wrapper_header_content_config = generateComponentOptions(wrapper_header_content, 'wrapper_header_content') %}
  5. {% endif %}
  6. <!DOCTYPE html>
  7. <html lang="fr">
  8. <head>
  9. <title>{% block title %}{{ platform_global('seo.title') }}{% endblock title %}</title>
  10. {% include "front/common/layout.head_common_meta_link.html.twig" with {bootstrapVersion: '5'} %}
  11. {% block styles_global_vendor %}
  12. {# Styles venant de vendor / fonts / commun à l'ensemble du site #}
  13. <link rel="stylesheet" href="{{ asset('build/assets/plugins/cookieconsent2/build/cookieconsent.min.css') }}?v={{ version }}" />
  14. {% endblock styles_global_vendor %}
  15. {# Styles commun à l'ensemble du site #}
  16. {% if platform_front('theme') and platform_front('theme') not in ['', null] %}
  17. <link rel="stylesheet"
  18. href="{{ asset('build/assets/templates/' ~ platform_front('theme') ~'/scss/main.css') }}?v={{ version }}">
  19. <link rel="stylesheet"
  20. href="{{ asset('build/assets/templates/' ~ platform_front('theme') ~'/scss/security.css') }}?v={{ version }}">
  21. <link rel="stylesheet"
  22. href="{{ asset('build/assets/templates/' ~ platform_front('theme') ~'/scss/media-queries.css') }}?v={{ version }}">
  23. {% endif %}
  24. <link rel="stylesheet" href="{{ path('front_common_css_custom') }}">
  25. {# parsley hack pour help labels rouges #}
  26. <style rel="stylesheet">
  27. .fv-help-block {
  28. color : red !important;
  29. }
  30. .cc-window{
  31. border:1px solid #000000;
  32. }
  33. </style>
  34. {# end parsley hack #}
  35. {% block styles %}
  36. {# Styles spécifique à une page #}
  37. {% endblock styles %}
  38. {# Style global venant du fichier platform.[projet].yaml, doit avoir la priorité absolue sur tous les autres #}
  39. {% if platform_front('css_config.custom_css_files') %}
  40. {% for file in platform_front('css_config.custom_css_files') %}
  41. <link rel="stylesheet" href="{{ asset(file) }}?v={{ version }}">
  42. {% endfor %}
  43. {% endif %}
  44. {% if platform_front('common.custom_css') %}
  45. <style rel="stylesheet">
  46. {{ platform_front('common.custom_css')|raw }}
  47. </style>
  48. {% endif %}
  49. {% if platform_front('security.custom_css') %}
  50. <style rel="stylesheet">
  51. {{ platform_front('security.custom_css')|raw }}
  52. </style>
  53. {% endif %}
  54. {% block styles_custom %}
  55. {# Styles spécifique à une page et prioritaire par rapport au css global venant de platform.[projet].yaml #}
  56. {% endblock styles_custom %}
  57. {% include "front/common/layout.head_common_js.html.twig" %}
  58. <script>
  59. const cdn = '{{ cdn }}';
  60. </script>
  61. </head>
  62. <body class="security {% block bodyclass %}login{% endblock %} --theme-{{ platform_front('security.theme') ? getFrontDataFromSettingOrYaml('front.security.theme', platform_front('security'), 'theme') : 'light' }}">
  63. <div class="main-wrapper">
  64. {% for type, messages in app.flashes() %}
  65. {% for message in messages %}
  66. <div class="alert alert-{{ type }}">
  67. {{ message }}
  68. </div>
  69. {% endfor %}
  70. {% endfor %}
  71. {#
  72. Wrapper qui permet de rassembler le header et le content dans une même div pour mettre un bg spécifique
  73. Pas Iso DTV mais présent dans beaucoup de maquettes...
  74. #}
  75. {% if platform_front('security.wrapper_header_content') and wrapper_header_content.enabled %}
  76. {{ macros.generateHtmlComponentStart(wrapper_header_content_config.wrapper) }}
  77. {#ITEM#}
  78. {{ macros.generateHtmlComponentStart(wrapper_header_content_config.item) }}
  79. {#CONTAINER#}
  80. {{ macros.generateHtmlComponentStart(wrapper_header_content_config.container) }}
  81. {% endif %}
  82. {{ component('security.header','security.header') }}
  83. <main>
  84. <div class="{% block content_container %}container{% endblock %}">
  85. {% block content %}{% endblock %}
  86. </div>
  87. </main>
  88. {#
  89. Wrapper qui permet de rassembler le header et le content dans une même div pour mettre un bg spécifique
  90. Pas Iso DTV mais présent dans beaucoup de maquettes...
  91. #}
  92. {% if platform_front('security.wrapper_header_content') and wrapper_header_content.enabled %}
  93. {{ macros.generateHtmlComponentEnd(wrapper_header_content_config.wrapper) }}
  94. {#ITEM#}
  95. {{ macros.generateHtmlComponentEnd(wrapper_header_content_config.item) }}
  96. {#CONTAINER#}
  97. {{ macros.generateHtmlComponentEnd(wrapper_header_content_config.container) }}
  98. {% endif %}
  99. {% block footer %}
  100. {{ component('security.footer', 'security.footer') }}
  101. {% endblock footer %}
  102. </div>
  103. {% if platform_front('common.panels.enabled') %}
  104. {% include 'front/common/panel-right.html.twig' %}
  105. {% endif %}
  106. </body>
  107. {% include '@back/_common/flash.html.twig' %}
  108. {% block scripts %}
  109. {{ getTranslate() }}
  110. <script>
  111. console.log("Translation called")
  112. </script>
  113. <script src="{{ asset('build/assets/bower_components/bootstrap4/dist/js/bootstrap.bundle.min.js') }}?v={{ version }}"></script>
  114. <script src="{{ asset('build/assets/bower_components/jquery-popup-overlay/jquery.popupoverlay.js') }}?v={{ version }}"></script>
  115. <script src="{{ asset('build/assets/bower_components/moment/min/moment.min.js') }}?v={{ version }}"></script>
  116. <script src="{{ asset('build/assets/plugins/cookieconsent2/build/cookieconsent.min.js') }}?v={{ version }}"
  117. data-cfasync="false"></script>
  118. <script>
  119. let messageCookies;
  120. {% if platform_front('security.cookies.message') %}
  121. messageCookies = "{{ platform_front('security.cookies.message')|raw }}";
  122. {% endif %}
  123. </script>
  124. <script src="{{ asset('build/assets/js/front/common/cookieConsentInit.js') }}?v={{ version }}"></script>
  125. <script src="{{ asset('build/assets/templates/daikin/js/custom.js') }}?v={{ version }}"></script>
  126. <script src="{{ asset('build/assets/templates/daikin/js/rater.js') }}?v={{ version }}"></script>
  127. <script src="{{ asset('build/assets/bower_components/inputmask/dist/jquery.inputmask.min.js') }}?v={{ version }}"></script>
  128. <script src="{{ asset('build/assets/bower_components/parsleyjs/dist/parsley.min.js') }}?v={{ version }}"></script>
  129. <script src="{{ asset('build/assets/bower_components/parsleyjs/dist/i18n/fr.js') }}?v={{ version }}"></script>
  130. <script src="{{ asset('build/assets/bower_components/parsleyjs/dist/i18n/fr.extra.js') }}?v={{ version }}"></script>
  131. <script src="{{ asset('build/assets/js/front/parsley_validator.js') }}?v={{ version }}"></script>
  132. <script src="{{ asset('build/assets/js/dtv/common/confirmation.js') }}?v={{ version }}"></script>
  133. <script src="{{ asset('build/assets/js/dtv/common/spinner_button.js') }}?v={{ version }}"></script>
  134. <script src="{{ asset('build/assets/js/front/security/cookie.js') }}?v={{ version }}"></script>
  135. <script>
  136. $( '.toggle-password' ).on('click', function () {
  137. $( this ).toggleClass( 'fa-eye fa-eye-slash' );
  138. let input = $( $( this ).attr( 'data-toggle' ) );
  139. if ( input.attr( 'type' ) === 'password' ) {
  140. input.attr( 'type', 'text' );
  141. } else {
  142. input.attr( 'type', 'password' );
  143. }
  144. } );
  145. const init_inputmask = function () {
  146. $('[data-inputmask]').inputmask();
  147. };
  148. $(function () {
  149. init_inputmask();
  150. console.log('pk', '{{ platform.global.project_key|md5 }}' )
  151. });
  152. {% if app.request.query.has(constant('App\\Constants\\Synchronisation::LOGIN_SKIP_QUERY_PARAMETER')) %}
  153. (function () {
  154. const skipSyncParam = {{ constant('App\\Constants\\Synchronisation::LOGIN_SKIP_QUERY_PARAMETER')|json_encode|raw }};
  155. const removeSkipSync = function () {
  156. const url = new URL(window.location.href);
  157. url.searchParams.delete(skipSyncParam);
  158. window.history.replaceState({}, document.title, url.pathname + url.search + url.hash);
  159. };
  160. if (document.readyState === 'loading') {
  161. document.addEventListener('DOMContentLoaded', removeSkipSync, { once: true });
  162. } else {
  163. removeSkipSync();
  164. }
  165. }());
  166. {% endif %}
  167. </script>
  168. {# @TODO: fichiers par component si besoin, acl, fichiers en fonction des pages ? #}
  169. {% if platform_front('security.js_files') %}
  170. {% for file in platform_front('security.js_files') %}
  171. <script src="{{ asset(file) }}?v={{ version }}"></script>
  172. {% endfor %}
  173. {% endif %}
  174. {% endblock scripts %}
  175. </html>