Subversion Repositories web.kimai2

Rev

Blame | Last modification | View Log | Download

{% extends 'base.html.twig' %}
{% import "macros/widgets.html.twig" as widgets %}

{% block main %}
    {% set can_edit = is_granted('edit', activity) %}
    {% set currency = null %}
    {% if activity.project is not null %}
        {% set currency = activity.project.customer.currency %}
    {% endif %}

    {% embed '@theme/embeds/card.html.twig' %}
        {% import "macros/widgets.html.twig" as widgets %}
        {% import "customer/actions.html.twig" as customerActions %}
        {% import "project/actions.html.twig" as projectActions %}
        {% block box_attributes %}id="activity_details_box"{% endblock %}
        {% block box_title %}
            {{ widgets.label_name(activity.name, activity.color) }}
        {% endblock %}
        {% block box_tools %}
            {% if can_edit %}
                {{ widgets.card_tool_button('edit', {'class': 'modal-ajax-form open-edit', 'title': 'action.edit', 'url': path('admin_activity_edit', {'id': activity.id})}) }}
            {% endif %}
        {% endblock %}
        {% block box_body_class %}p-0{% endblock %}
        {% block box_body %}
            {% if activity.comment is not empty %}
                <div class="comment p-3">
                    {{ activity.comment|comment2html(true) }}
                </div>
            {% endif %}
            <table class="table table-hover dataTable">
                {% if not activity.visible %}
                    <tr class="{{ widgets.class_activity_row(activity, now) }}">
                        <th>{{ 'visible'|trans }}</th>
                        <td colspan="3">
                            {{ widgets.label_boolean(activity.visible) }}
                        </td>
                    </tr>
                {% endif %}
                {% if not activity.billable %}
                    <tr>
                        <th>{{ 'billable'|trans }}</th>
                        <td colspan="3">
                            {{ widgets.label_boolean(activity.billable) }}
                        </td>
                    </tr>
                {% endif %}
                {% if not activity.global %}
                    <tr {{ widgets.customer_row_attr(activity.project.customer, now) }}>
                        <th>{{ 'customer'|trans }}</th>
                        <td>
                            {{ widgets.label_customer(activity.project.customer) }}
                        </td>
                        <td class="w-min">
                            {{ widgets.badge_team_access(activity.project.customer.teams) }}
                        </td>
                        <td class="actions">
                            {{ customerActions.customer(activity.project.customer, 'custom') }}
                        </td>
                    </tr>
                    <tr {{ widgets.project_row_attr(activity.project, now) }}>
                        <th>{{ 'project'|trans }}</th>
                        <td>
                            {{ widgets.label_project(activity.project) }}
                        </td>
                        <td class="w-min">
                            {{ widgets.badge_team_access(activity.project.teams) }}
                        </td>
                        <td class="actions">
                            {{ projectActions.project(activity.project, 'custom') }}
                        </td>
                    </tr>
                {% endif %}
                {% for metaField in activity.visibleMetaFields|filter(field => field.defined)|sort((a, b) => a.order <=> b.order) %}
                    <tr>
                        <th>{{ metaField.label|trans }}</th>
                        <td colspan="3">{{ widgets.form_type_value(metaField.type, metaField.value, activity) }}</td>
                    </tr>
                {% endfor %}
            </table>
        {% endblock %}
    {% endembed %}

    {% if can_edit %}
        {{ include('embeds/rates-table.html.twig', {'id': 'activity_rates_box', 'entity': activity, 'create_url': path('admin_activity_rate_add', {'id': activity.id}), 'delete_route': 'delete_activity_rate', 'currency': currency, 'edit_route': 'admin_activity_rate_edit'}) }}
    {% endif %}

    {% if stats is not null %}
        {% set currency = kimai_config.customerDefaultCurrency %}
        {% if activity.project is not null %}
            {% set currency = activity.project.customer.currency %}
        {% endif %}
        {{ include('embeds/budgets.html.twig', {'entity': activity, 'stats': stats, 'currency': currency}) }}
    {% endif %}

    {% for controller in boxes %}
        {{ render(controller(controller, {'activity': activity, 'page': 1})) }}
    {% endfor %}

    {% if teams is not null %}
        {% set options = {'teams': teams, 'team': team} %}
        {% if is_granted('permissions', activity) %}
            {% set options = options|merge({'route_create': path('activity_team_create', {'id': activity.id}), 'route_edit': path('admin_activity_permissions', {'id': activity.id})}) %}
        {% endif %}
        {% if activity.project is not null and (activity.project.teams|length > 0 or activity.project.customer.teams|length > 0) %}
            {% set options = options|merge({'empty_message': 'team.activity_visibility_inherited'}) %}
        {% endif %}
        {{ include('embeds/teams.html.twig', options) }}
    {% endif %}

{% endblock %}

{% block javascripts %}
    {{ parent() }}
    <script type="text/javascript">
        document.addEventListener('kimai.initialized', function() {
            KimaiReloadPageWidget.create('kimai.activityUpdate kimai.teamUpdate kimai.activityTeamUpdate kimai.projectTeamUpdate kimai.customerTeamUpdate kimai.customerUpdate kimai.projectUpdate kimai.rateUpdate');
        });
    </script>
{% endblock %}