{% macro tasks(view) %} {% import "macros/widgets.html.twig" as widgets %} {% set actions = {'search': {'class': 'search-toggle visible-xs-inline'}} %} {% set actions = actions|merge({'visibility': {'modal': '#modal_tasks'}}) %} {% if is_granted('task_edit_other') %} {% set actions = actions|merge({'create': {'url': path('tasks_create'), 'class': 'modal-ajax-form'}}) %} {% elseif is_granted('task_edit_own') %} {% set actions = actions|merge({'create': {'url': path('tasks_create_my'), 'class': 'modal-ajax-form'}}) %} {% endif %} {% set actions = actions|merge({'help': {'url': 'https://www.kimai.org/store/task-management-bundle.html', 'target': '_blank'}}) %} {% set event = trigger('actions.tasks', {'actions': actions, 'view': view}) %} {{ widgets.page_actions(event.payload.actions) }} {% endmacro %} {% macro task(task, view) %} {%- apply spaceless -%} {% import "macros/widgets.html.twig" as widgets %} {% set actions = {} %} {% if task.id is not empty %} {% if is_granted('task_start', task) %} {% if not task.activeRecord %} {% set actions = actions|merge({'start.task': {'url': path('start_task', {'id' : task.id}), 'class': 'api-link', 'attr': {'data-event': 'kimai.taskUpdate kimai.taskStart kimai.timesheetUpdate kimai.timesheetStart', 'data-method': 'PATCH', 'data-msg-error': 'action.update.error', 'data-msg-success': 'action.update.success'}}}) %} {% else %} {% set actions = actions|merge({'stop.task': {'url': path('stop_task', {'id' : task.id}), 'class': 'api-link', 'attr': {'data-event': 'kimai.taskUpdate kimai.taskStop kimai.timesheetUpdate kimai.timesheetStop', 'data-method': 'PATCH', 'data-msg-error': 'action.update.error', 'data-msg-success': 'action.update.success'}}}) %} {% endif %} {% endif %} {% if is_granted('task_edit', task) %} {% set class = '' %} {% if view != 'edit' %} {% set class = 'modal-ajax-form' %} {% endif %} {% set actions = actions|merge({'edit': {'url': path('tasks_edit', {'id': task.id}), 'class': class}}) %} {% endif %} {% if is_granted('task_assign', task) %} {% if task.user is not null %} {% set actions = actions|merge({'unassign.task': {'url': path('unassign_task', {'id' : task.id}), 'class': 'api-link', 'attr': {'data-event': 'kimai.taskUpdate kimai.taskUnassign', 'data-question': 'task.unassign'|trans, 'data-method': 'PATCH', 'data-msg-error': 'action.update.error', 'data-msg-success': 'action.update.success'}}}) %} {% else %} {% set actions = actions|merge({'assign.task': {'url': path('assign_task', {'id' : task.id}), 'class': 'api-link', 'attr': {'data-event': 'kimai.taskUpdate kimai.taskAssign', 'data-question': 'task.assign'|trans, 'data-method': 'PATCH', 'data-msg-error': 'action.update.error', 'data-msg-success': 'action.update.success'}}}) %} {% endif %} {% endif %} {% if is_granted('task_close', task) %} {% if task.closed %} {% set actions = actions|merge({'reopen.task': {'url': path('reopen_task', {'id' : task.id}), 'class': 'api-link', 'attr': {'data-event': 'kimai.taskUpdate kimai.taskAssign', 'data-question': 'task.reopen'|trans, 'data-method': 'PATCH', 'data-msg-error': 'action.update.error', 'data-msg-success': 'action.update.success'}}}) %} {% else %} {% set actions = actions|merge({'close.task': {'url': path('close_task', {'id' : task.id}), 'class': 'api-link', 'attr': {'data-event': 'kimai.taskUpdate kimai.taskUnassign', 'data-question': 'task.close'|trans, 'data-method': 'PATCH', 'data-msg-error': 'action.update.error', 'data-msg-success': 'action.update.success'}}}) %} {% endif %} {% endif %} {% if view == 'index' and is_granted('task_delete', task) %} {% set actions = actions|merge({'trash': {'url': path('delete_task', {'id' : task.id}), 'class': 'api-link', 'attr': {'data-event': 'kimai.taskUpdate kimai.taskDelete kimai.userTaskDelete', 'data-method': 'DELETE', 'data-question': 'confirm.delete', 'data-msg-error': 'action.delete.error', 'data-msg-success': 'action.delete.success'}}}) %} {% endif %} {% endif %} {% if view != 'index' %} {% set actions = actions|merge({'back': path('tasks')}) %} {% endif %} {% set event = trigger('actions.task', {'actions': actions, 'view': view, 'task': task}) %} {% if view == 'index' %} {{ widgets.table_actions(event.payload.actions) }} {% else %} {{ widgets.entity_actions(event.payload.actions) }} {% endif %} {%- endapply -%} {% endmacro %}