engelsystem/resources/views/layouts/parts/navbar.twig

117 lines
5.1 KiB
Twig
Raw Normal View History

{% import 'macros/base.twig' as m %}
2023-01-22 19:16:33 +01:00
{% macro toolbar_item(label, link, active_page, icon, title) %}
<li class="nav-item">
2023-01-22 19:16:33 +01:00
<a
class="nav-link{% if page() == active_page %} active{% endif %}"
{% if page() == active_page %}aria-current="page"{% endif %}
{% if title %}title="{{ title }}"{% endif %}
href="{{ link }}"
>
{% if icon %}{{ m.icon(icon) }}{% endif %}
2018-09-23 19:13:19 +02:00
{{ label|raw }}
</a>
</li>
{% endmacro %}
2023-01-22 19:16:33 +01:00
{% macro dropdown_item(label, link, active_page, icon) %}
<li>
<a class="dropdown-item{% if page() == active_page %} active{% endif %}"{% if page() == active_page %} aria-current="page"{% endif %} href="{{ link }}">
{{ icon }} {{ label }}
</a>
</li>
{% endmacro %}
{% if is_guest() %}
{% set navbar_expand_class = 'navbar-expand-md' %}
{% else %}
{% set navbar_expand_class = 'navbar-expand-xxl' %}
{% endif %}
<nav class="navbar fixed-top {{ navbar_expand_class }} border-bottom {{ theme['navbar_classes'] }}">
2018-09-23 19:13:19 +02:00
<div class="container-fluid">
<a class="navbar-brand" href="{{ url('/') }}">
2023-04-03 19:05:35 +02:00
{{ m.angel() }}
<strong class="visible-lg-inline">{{ config('app_name')|upper }}</strong>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
2023-01-22 19:16:33 +01:00
<ul class="navbar-nav mb-2 mb-lg-0">
{{ menu() }}
</ul>
2018-09-23 19:13:19 +02:00
{% if config('header_items') %}
<ul class="navbar-nav mb-2 mb-lg-0">
{% for name,opt in config('header_items', {}) %}
{% set url = opt is iterable ? opt[0] : opt %}
{% set permission = opt is iterable ? opt[1] : null %}
{% if not permission or can(permission) %}
<li class="nav-item">
2023-12-24 14:08:41 +01:00
<a class="nav-link" href="{{ url|replace({'%lang%': session_get('locale')|split('_')[0]})|escape('html_attr') }}">
{{ __(name) }}
</a>
</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
2023-01-22 19:16:33 +01:00
{% if is_guest() %}
{% include "layouts/parts/language_dropdown.twig" %}
{% if can('register') and config('registration_enabled') %}
{{ _self.toolbar_item(
__('general.register'),
config('external_registration_url') ?: url('/register'),
'register',
'plus'
) }}
2023-01-22 19:16:33 +01:00
{% endif %}
2018-09-23 19:13:19 +02:00
{% if can('login') %}
2023-11-13 16:56:52 +01:00
{{ _self.toolbar_item(__('general.login'), url('/login'), 'login', 'box-arrow-in-right') }}
2023-01-22 19:16:33 +01:00
{% endif %}
{% endif %}
2018-09-23 19:13:19 +02:00
2023-01-22 19:16:33 +01:00
{% if is_user() %}
2023-11-23 17:37:06 +01:00
{{ _self.toolbar_item(menuUserShiftState(user), url('/shifts', {'action': 'next'}), '', 'clock', __('shift.next')) }}
2023-01-22 19:16:33 +01:00
{% if can('user_messages') %}
2023-01-22 19:16:33 +01:00
{{ _self.toolbar_item(
user_messages ? '<span class="badge bg-danger">' ~ user_messages ~ '</span>' : '',
2023-11-13 16:56:52 +01:00
url('/messages'),
2023-01-22 19:16:33 +01:00
'messages',
'envelope'
) }}
{% endif %}
{{ menuUserHints() }}
{% include "layouts/parts/language_dropdown.twig" %}
2023-01-22 19:16:33 +01:00
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
{{ m.angel() }} {{ user.displayName }}
2023-01-22 19:16:33 +01:00
</a>
<ul class="dropdown-menu dropdown-menu-end">
{% if can('user_myshifts') %}
2023-11-13 16:56:52 +01:00
{{ _self.dropdown_item(__('profile.my-shifts'), url('/users', {'action': 'view'}), 'users', m.icon('calendar-range')) }}
2023-01-22 19:16:33 +01:00
{% endif %}
2018-09-23 19:13:19 +02:00
{% if can('user_settings') %}
2023-11-13 16:56:52 +01:00
{{ _self.dropdown_item(__('settings.settings'), url('/settings/profile'), 'settings/profile', m.icon('person-fill-gear')) }}
2023-01-22 19:16:33 +01:00
{% endif %}
2018-09-23 19:13:19 +02:00
{% if can('logout') %}
2023-11-23 17:37:06 +01:00
{{ _self.dropdown_item(__('general.logout'), url('/logout'), 'logout', m.icon('box-arrow-left')) }}
2023-01-22 19:16:33 +01:00
{% endif %}
</ul>
</li>
{% endif %}
</ul>
</div>
2018-09-23 19:13:19 +02:00
</div>
</nav>