You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

277 lines
14KB

  1. {# @var ea \EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext #}
  2. {% trans_default_domain ea.i18n.translationDomain %}
  3. <!DOCTYPE html>
  4. <html lang="{{ ea.i18n.htmlLocale }}" dir="{{ ea.i18n.textDirection }}">
  5. <head>
  6. {% block head_metas %}
  7. <meta charset="utf-8">
  8. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  9. <meta name="robots"
  10. content="noindex, nofollow, noarchive, nosnippet, noodp, noimageindex, notranslate, nocache"/>
  11. <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
  12. <meta name="generator" content="EasyAdmin"/>
  13. {% endblock head_metas %}
  14. <title>{% block page_title %}{{ block('content_title')|striptags|raw }}{% endblock %}</title>
  15. {# {% block head_stylesheets %}
  16. <link rel="stylesheet" href="{{ asset('bundles/easyadmin/app.css') }}">
  17. {% endblock %} #}
  18. {% block configured_stylesheets %}
  19. {% for css_asset in ea.assets.cssFiles ?? [] %}
  20. <link rel="stylesheet" href="{{ asset(css_asset) }}">
  21. {% endfor %}
  22. {% for webpack_encore_entry in ea.assets.webpackEncoreEntries ?? [] %}
  23. {{ ea_call_function_if_exists('encore_entry_link_tags', webpack_encore_entry) }}
  24. {% endfor %}
  25. {% endblock %}
  26. {% block head_favicon %}
  27. <link rel="shortcut icon" href="{{ asset(ea.dashboardFaviconPath) }}">
  28. {% endblock %}
  29. {# {% block head_javascript %}
  30. <script src="{{ asset('bundles/easyadmin/app.js') }}"></script>
  31. {% endblock head_javascript %} #}
  32. {% block configured_javascripts %}
  33. {% for js_asset in ea.assets.jsFiles ?? [] %}
  34. <script src="{{ asset(js_asset) }}"></script>
  35. {% endfor %}
  36. {% for webpack_encore_entry in ea.assets.webpackEncoreEntries ?? [] %}
  37. {{ ea_call_function_if_exists('encore_entry_script_tags', webpack_encore_entry) }}
  38. {% endfor %}
  39. {% endblock %}
  40. {# {% if 'rtl' == ea.i18n.textDirection %}
  41. <link rel="stylesheet" href="{{ asset('bundles/easyadmin/app.rtl.css') }}">
  42. <link rel="stylesheet" href="{{ asset('bundles/easyadmin/app-custom-rtl.css') }}">
  43. {% endif %} #}
  44. {% block configured_head_contents %}
  45. {% for htmlContent in ea.assets.headContents ?? [] %}
  46. {{ htmlContent|raw }}
  47. {% endfor %}
  48. {% endblock %}
  49. </head>
  50. {% block body %}
  51. <body id="{% block body_id %}{% endblock %}" class="antialiased {% block body_class %}{% endblock %}">
  52. {% block javascript_page_layout %}
  53. <script>
  54. document.body.classList.add(
  55. 'ea-content-width-' + (localStorage.getItem('ea/content/width') || '{{ ea.crud.contentWidth ?? ea.dashboardContentWidth ?? 'normal' }}'),
  56. 'ea-sidebar-width-' + (localStorage.getItem('ea/sidebar/width') || '{{ ea.crud.sidebarWidth ?? ea.dashboardSidebarWidth ?? 'normal' }}')
  57. );
  58. </script>
  59. {% endblock javascript_page_layout %}
  60. {% block wrapper_wrapper %}
  61. {% block flash_messages %}
  62. {{ include(ea.templatePath('flash_messages')) }}
  63. {% endblock flash_messages %}
  64. <div class="wrapper">
  65. {% block wrapper %}
  66. {# <header class="main-header">
  67. {% block header %}
  68. <nav class="navbar" role="navigation">
  69. {% block header_navbar %}
  70. <button id="navigation-toggler" type="button" aria-label="Toggle navigation">
  71. <i class="fa fa-fw fa-bars"></i>
  72. </button>
  73. {% endblock header_navbar %}
  74. </nav>
  75. {% set _user_menu_content %}
  76. <div class="popover-content-section user-details {{ ea.userMenu.items|length > 0 ? 'user-has-actions' }}">
  77. <p class="small text-muted mb-0">{{ 'user.logged_in_as'|trans(domain = 'EasyAdminBundle') }}</p>
  78. <p class="user-details-name">
  79. {{ ea.user is null ? 'user.anonymous'|trans(domain = 'EasyAdminBundle') : ea.userMenu.name }}
  80. </p>
  81. </div>
  82. {% block user_menu %}
  83. {% if ea.userMenu.items|length > 0 %}
  84. <div class="popover-content-section user-menu">
  85. {% for item in ea.userMenu.items %}
  86. {% if item.isMenuSection %}
  87. <hr class="m-0" />
  88. {% else %}
  89. <a href="{{ item.linkUrl }}" class="user-action {{ item.cssClass }}" target="{{ item.linkTarget }}" rel="{{ item.linkRel }}" referrerpolicy="origin-when-cross-origin">
  90. {% if item.icon is not empty %}<i class="fa fa-fw {{ item.icon }}"></i>{% endif %}
  91. <span>{{ item.label }}</span>
  92. </a>
  93. {% endif %}
  94. {% endfor %}
  95. </div>
  96. {% endif %}
  97. {% endblock user_menu %}
  98. {% endset %}
  99. <div class="content-top navbar-custom-menu">
  100. {% block header_custom_menu %}
  101. {% if constant('Symfony\\Component\\Security\\Core\\Authorization\\Voter\\AuthenticatedVoter::IS_IMPERSONATOR') is defined %}
  102. {% set impersonator_permission = 'IS_IMPERSONATOR' %}
  103. {% else %}
  104. {% set impersonator_permission = 'ROLE_PREVIOUS_ADMIN' %}
  105. {% endif %}
  106. <div class="user user-menu-wrapper {{ is_granted(impersonator_permission) ? 'user-is-impersonated' }}" data-toggle="popover" data-placement="bottom" data-container=".user-menu-wrapper" data-content="{{ _user_menu_content|e('html_attr') }}" data-html="true">
  107. {% if ea.userMenu.isAvatarDisplayed %}
  108. {% if null == ea.userMenu.avatarUrl %}
  109. <i class="fa fa-fw {{ ea.user is not null ? 'fa-user-circle' : 'fa-user-times' }} user-avatar"></i>
  110. {% else %}
  111. <img class="user-avatar" src="{{ ea.userMenu.avatarUrl }}" />
  112. {% endif %}
  113. {% endif %}
  114. {% if ea.userMenu.isNameDisplayed %}
  115. <span class="user-name">{{ ea.userMenu.name }}</span>
  116. {% endif %}
  117. </div>
  118. {% endblock header_custom_menu %}
  119. </div>
  120. {% endblock header %}
  121. </header> #}
  122. <aside class="navbar navbar-vertical navbar-expand-lg navbar-dark">
  123. <div class="container-fluid">
  124. {% block sidebar %}
  125. {% block header_logo %}
  126. <h1 class="navbar-brand navbar-brand-autodark">
  127. <a class="{{ ea.dashboardTitle|length > 14 ? 'logo-long' }}"
  128. title="{{ ea.dashboardTitle|striptags }}"
  129. href="{{ path(ea.dashboardRouteName) }}">
  130. {{ ea.dashboardTitle|raw }}
  131. </a>
  132. </h1>
  133. {% endblock header_logo %}
  134. <section class="sidebar">
  135. {% block main_menu_wrapper %}
  136. {{ include(ea.templatePath('main_menu')) }}
  137. {% endblock main_menu_wrapper %}
  138. </section>
  139. {% endblock sidebar %}
  140. </div>
  141. </aside>
  142. <div class="page-wrapper">
  143. <div class="sticky-top">
  144. <header class="navbar navbar-expand-md navbar-light sticky-top d-print-none">
  145. <div class="container-xl">
  146. <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
  147. data-bs-target="#navbar-menu">
  148. <span class="navbar-toggler-icon"></span>
  149. </button>
  150. <span class="push-menu">
  151. <i class="ti ti-antenna-bars-1"></i>
  152. </span>
  153. <div class="navbar-nav flex-row order-md-last">
  154. <div class="nav-item d-none d-md-flex me-3">
  155. <div class="btn-list">
  156. <a href="#" class="btn btn-outline-white" target="_blank" rel="noreferrer">
  157. Afficher le site
  158. </a>
  159. </div>
  160. </div>
  161. <div class="nav-item dropdown">
  162. <a href="#" class="nav-link d-flex lh-1 text-reset p-0"
  163. data-bs-toggle="dropdown"
  164. aria-label="Open user menu">
  165. <span class="ti ti-user"></span>
  166. <div class="d-none d-xl-block ps-2">
  167. <div>Fabien Normand</div>
  168. <div class="mt-1 small text-muted">Superadmin</div>
  169. </div>
  170. </a>
  171. <div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
  172. <a href="#" class="dropdown-item">Mon compte</a>
  173. <a href="#" class="dropdown-item">Déconnexion</a>
  174. </div>
  175. </div>
  176. </div>
  177. </div>
  178. </header>
  179. </div>
  180. {% block content %}
  181. {% block content_header_wrapper %}
  182. <div class="container-xl">
  183. <div class="page-header d-print-none">
  184. <div class="row align-items-center">
  185. {% set has_help_message = (ea.crud.helpMessage ?? '') is not empty %}
  186. {% block content_header %}
  187. <div class="col">
  188. <h2 class="page-title">
  189. {% block content_title %}{% endblock %}
  190. </h2>
  191. {% block content_help %}
  192. {% if has_help_message %}
  193. <div class="text-muted">
  194. {{ ea.crud.helpMessage|e('html_attr') }}
  195. </div>
  196. {% endif %}
  197. {% endblock %}
  198. </div>
  199. {% block page_actions_wrapper %}
  200. <div class="col-auto ms-auto d-print-none">
  201. <div class="btn-list">
  202. {% block page_actions %}{% endblock %}
  203. </div>
  204. </div>
  205. {% endblock %}
  206. {% endblock %}
  207. </div>
  208. </div>
  209. </div>
  210. {% endblock %}
  211. <div class="page-body">
  212. <div class="container-xl">
  213. {% block main %}{% endblock %}
  214. </div>
  215. </div>
  216. {% block content_footer_wrapper %}
  217. {% set content_footer = block('content_footer') is defined ? block('content_footer') : '' %}
  218. {% if content_footer is not empty %}
  219. <footer class="footer footer-transparent d-print-none">
  220. <div class="container">
  221. <div class="row text-center align-items-center flex-row-reverse">
  222. {{ content_footer }}
  223. </div>
  224. </div>
  225. </footer>
  226. {% endif %}
  227. {% endblock %}
  228. {% endblock %}
  229. </div>
  230. {% endblock wrapper %}
  231. </div>
  232. {% endblock wrapper_wrapper %}
  233. {% block body_javascript %}{% endblock body_javascript %}
  234. {% block configured_body_contents %}
  235. {% for htmlContent in ea.assets.bodyContents ?? [] %}
  236. {{ htmlContent|raw }}
  237. {% endfor %}
  238. {% endblock %}
  239. </body>
  240. {% endblock body %}
  241. </html>