0
0
Fork 0
mirror of https://github.com/kevinpapst/kimai2.git synced 2025-03-18 23:02:53 +00:00
kevinpapst_kimai2/templates/base.html.twig

241 lines
10 KiB
Twig

{% extends '@AdminLTE/layout/default-layout.html.twig' %}
{% block body_start %}
data-title="{{- get_title() -}}"
{% endblock %}
{% block after_body_start %}
{% embed 'embeds/modal.html.twig' %}
{% block modal_id %}remote_form_modal{% endblock %}
{% block modal_title %}{% endblock %}
{% block modal_body %}{% endblock %}
{% block modal_footer %}{% endblock %}
{% endembed %}
{% endblock %}
{% block page_content_before %}
{% set event = trigger(constant('App\\Event\\ThemeEvent::CONTENT_BEFORE')) %}
{{ event.content|raw }}
<div class="toolbar-pad no-print">
{% block main_before %}{% endblock %}
</div>
{% endblock %}
{% block page_content_after %}
{% block main_after %}{% endblock %}
{% set event = trigger(constant('App\\Event\\ThemeEvent::CONTENT_AFTER')) %}
{{ event.content|raw }}
{% endblock %}
{% block page_content %}
{% set event = trigger(constant('App\\Event\\ThemeEvent::CONTENT_START')) %}
{{ event.content|raw }}
{% block main %}{% endblock %}
{% set event = trigger(constant('App\\Event\\ThemeEvent::CONTENT_END')) %}
{{ event.content|raw }}
{% endblock %}
{% block title %}
{{- get_title() -}}
{% endblock %}
{% block page_subtitle %}{% endblock %}
{% block logo_mini %}
{% if not kimai_context.branding.mini is empty %}
{{ kimai_context.branding.mini|raw }}
{% else %}
<b>K</b>TT
{% endif %}
{% endblock %}
{% block logo_large %}
{% if not kimai_context.branding.company is empty %}
{{ kimai_context.branding.company|raw }}
{% else %}
<b>Kimai</b> - Time Tracking
{% endif %}
{% endblock %}
{% block footer %}
<!-- Page rendered on {{ 'now'|localizeddate('long', 'long', null, 'UTC') }} -->
{% endblock %}
{% block navbar_start %}
{% if app.user is not null and is_granted('IS_AUTHENTICATED_REMEMBERED') %}
{% if is_granted('view_own_timesheet') %}
{% if app.user.preferenceValue('login.initial_view') == 'calendar' %}
<li class="visible-xs-inline-block">
<a href="{{ path('calendar') }}" class="ddt-large">
<i class="{{ 'calendar'|icon }} fa-2x"></i>
</a>
</li>
{% else %}
<li class="visible-xs-inline-block">
<a href="{{ path('timesheet') }}" class="ddt-large">
<i class="{{ 'timesheet'|icon }} fa-2x"></i>
</a>
</li>
{% endif %}
{% endif %}
{% if is_granted('view_invoice') %}
<li class="visible-xs-inline-block">
<a href="{{ path('invoice') }}" class="ddt-large">
<i class="{{ 'invoice'|icon }} fa-2x"></i>
</a>
</li>
{% endif %}
{% if is_granted('create_export') %}
<li class="visible-xs-inline-block">
<a href="{{ path('export') }}" class="ddt-large">
<i class="{{ 'export'|icon }} fa-2x"></i>
</a>
</li>
{% endif %}
{% block navbar_extensions %}{% endblock %}
{{ render(controller('App\\Controller\\TimesheetController::activeEntriesAction')) }}
{% endif %}
{% endblock %}
{# these blocks and the hook-in logic by the AdminTheme could be re-used by Kimai or an extension at some point #}
{#
{% block navbar_messages %}{% endblock %}
{% block navbar_notifications %}{% endblock %}
{% block navbar_tasks %}{% endblock %}
{% block navbar_end %}{% endblock %}
#}
{# deactivated blocks, as Kimai does not ship the sidebar for UX reasons #}
{% block sidebar_user %}{% endblock %}
{% block sidebar_search %}{% endblock %}
{% block navbar_user %}
{% if app.user is not null and is_granted('IS_AUTHENTICATED_REMEMBERED') %}
{% include 'navbar/recent-activities.html.twig' %}
{% endif %}
{% import "macros/widgets.html.twig" as widgets %}
<li class="dropdown user-menu">
<a href="#" class="dropdown-toggle ddt-large" data-toggle="dropdown">
{{ widgets.user_avatar(app.user, false) }}
</a>
<ul class="dropdown-menu">
{% if app.user is not null %}
{% if is_granted('view', app.user) %}
<li>
<a href="{{ path('user_profile', {'username' : app.user.username}) }}">
<h4 class="control-sidebar-subheading">
<i class="{{ 'avatar'|icon }}"></i>
{{ 'my.profile'|trans }}
</h4>
</a>
</li>
{% endif %}
{% if is_granted('edit', app.user) %}
<li>
<a href="{{ path('user_profile_edit', {'username' : app.user.username}) }}">
<h4 class="control-sidebar-subheading">
<i class="{{ 'profile'|icon }}"></i>
{{ 'action.edit'|trans }}
</h4>
</a>
</li>
{% endif %}
{% if is_granted('preferences', app.user) %}
<li>
<a href="{{ path('user_profile_preferences', {'username' : app.user.username}) }}">
<h4 class="control-sidebar-subheading">
<i class="{{ 'settings'|icon }}"></i>
{{ 'profile.preferences'|trans }}
</h4>
</a>
</li>
{% endif %}
<li>
<a href="{{ path('fos_user_security_logout') }}">
<h4 class="control-sidebar-subheading">
<i class="{{ 'logout'|icon }}"></i>
{{ 'menu.logout'|trans }}
</h4>
</a>
</li>
{% endif %}
{% if kimai_context.show_about %}
<li class="divider"></li>
<li>
<a href="{{ path('about') }}">
<h4 class="control-sidebar-subheading">
<i class="{{ 'about'|icon }}"></i>
{{ 'about.title'|trans({}, 'about') }}
</h4>
</a>
</li>
{% endif %}
</ul>
</li>
{% endblock %}
{% block breadcrumb %}
{% block page_search %}{% endblock %}
{% block page_actions %}{% endblock %}
{% endblock %}
{% block stylesheets %}
{# we do not call parent() as we use a custom built for the frontend assets and don't want the default <stylesheet> #}
{{ encore_entry_link_tags('app') }}
{% set event = trigger(constant('App\\Event\\ThemeEvent::STYLESHEET')) %}
{{ event.content|raw }}
{% endblock %}
{% block head %}
{{ parent() }}
{{ encore_entry_script_tags('app') }}
{% include 'partials/head.html.twig' %}
{% set event = trigger(constant('App\\Event\\ThemeEvent::HTML_HEAD')) %}
{{ event.content|raw }}
{% endblock %}
{% block javascripts %}
{# no call to parent(), as we use a custom built for the frontend assets and don't want the default <script> #}
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
var loader = new KimaiWebLoader(
{
login: '{{ path('fos_user_security_login') }}',
locale: '{{ app.request.locale }}',
twentyFourHours: {{ 'true'|hour24('false') }},
autoReloadDatatable: {% if theme_config('auto_reload_datatable') %}true{% else %}false{% endif %},
autoComplete: {{ theme_config('autocomplete_chars') }}
},
{
'confirm': '{{ 'confirm'|trans }}',
'cancel': '{{ 'cancel'|trans }}',
'today': '{{ 'daterangepicker.today'|trans({}, 'daterangepicker') }}',
'yesterday': '{{ 'daterangepicker.yesterday'|trans({}, 'daterangepicker') }}',
'lastWeek': '{{ 'daterangepicker.lastWeek'|trans({}, 'daterangepicker') }}',
'thisWeek': '{{ 'daterangepicker.thisWeek'|trans({}, 'daterangepicker') }}',
'lastMonth': '{{ 'daterangepicker.lastMonth'|trans({}, 'daterangepicker') }}',
'thisMonth': '{{ 'daterangepicker.thisMonth'|trans({}, 'daterangepicker') }}',
'lastYear': '{{ 'daterangepicker.lastYear'|trans({}, 'daterangepicker') }}',
'thisYear': '{{ 'daterangepicker.thisYear'|trans({}, 'daterangepicker') }}',
'customRange': '{{ 'daterangepicker.customRange'|trans({}, 'daterangepicker') }}',
'timesheet.start.success': '{{ 'timesheet.start.success'|trans({}, 'flashmessages') }}',
'timesheet.start.error': '{{ 'timesheet.start.error'|trans({}, 'flashmessages') }}',
'timesheet.start.exceeded_limit': '{{ 'timesheet.start.exceeded_limit'|trans({}, 'flashmessages') }}',
'timesheet.stop.success': '{{ 'timesheet.stop.success'|trans({}, 'flashmessages') }}',
'timesheet.stop.error': '{{ 'timesheet.stop.error'|trans({}, 'flashmessages') }}',
'action.update.success': '{{ 'action.update.success'|trans({}, 'flashmessages') }}',
'action.update.error': '{{ 'action.update.error'|trans({}, 'flashmessages') }}',
'action.delete.success': '{{ 'action.delete.success'|trans({}, 'flashmessages') }}',
'action.delete.error': '{{ 'action.delete.error'|trans({}, 'flashmessages') }}',
'confirm.delete': '{{ 'confirm.delete' |trans }}',
'delete': '{{ 'action.delete' |trans }}',
'login.required': '{{ 'login_required'|trans }}'
}
);
window.kimai = loader.getKimai();
});
</script>
{% set event = trigger(constant('App\\Event\\ThemeEvent::JAVASCRIPT')) %}
{{ event.content|raw }}
{% endblock %}