billable timesheets, inactive projects report, bookmark export search (#2503)

This commit is contained in:
Kevin Papst
2021-04-18 21:51:27 +02:00
committed by GitHub
parent 8664d94ea6
commit 0330f45c6a
97 changed files with 1516 additions and 664 deletions

View File

@@ -47,7 +47,17 @@ abstract class AbstractTimesheetSubscriber extends AbstractActionsSubscriber
}
if ($event->isIndexView() && $this->isGranted('delete', $timesheet)) {
$event->addAction('trash', ['url' => $this->path('delete_timesheet', ['id' => $timesheet->getId()]), 'class' => 'api-link', 'attr' => ['data-event' => 'kimai.timesheetDelete kimai.timesheetUpdate', 'data-method' => 'DELETE', 'data-question' => 'confirm.delete', 'data-msg-error' => 'action.delete.error', 'data-msg-success' => 'action.delete.success']]);
$event->addAction('trash', [
'url' => $this->path('delete_timesheet', ['id' => $timesheet->getId()]),
'class' => 'api-link',
'attr' => [
'data-event' => 'kimai.timesheetDelete',
'data-method' => 'DELETE',
'data-question' => 'confirm.delete',
'data-msg-error' => 'action.delete.error',
'data-msg-success' => 'action.delete.success'
]
]);
}
}

View File

@@ -29,7 +29,8 @@ class ActivitySubscriber extends AbstractActionsSubscriber
if ($activity->getId() === null) {
return;
}
if ($this->isGranted('view', $activity)) {
if (!$event->isView('activity_details') && $this->isGranted('view', $activity)) {
$event->addAction('details', ['url' => $this->path('activity_details', ['id' => $activity->getId()])]);
}
@@ -68,7 +69,7 @@ class ActivitySubscriber extends AbstractActionsSubscriber
$event->addAction('create-timesheet', ['icon' => 'start', 'url' => $this->path('admin_timesheet_create', $parameters), 'class' => 'modal-ajax-form']);
}
if ($event->isIndexView() && $this->isGranted('delete', $activity)) {
if (($event->isIndexView() || $event->isView('project_details')) && $this->isGranted('delete', $activity)) {
$event->addDelete($this->path('admin_activity_delete', ['id' => $activity->getId()]));
}
}

View File

@@ -30,7 +30,7 @@ class CustomerSubscriber extends AbstractActionsSubscriber
return;
}
if ($this->isGranted('view', $customer)) {
if (!$event->isView('customer_details') && $this->isGranted('view', $customer)) {
$event->addAction('details', ['url' => $this->path('customer_details', ['id' => $customer->getId()])]);
}
@@ -69,7 +69,7 @@ class CustomerSubscriber extends AbstractActionsSubscriber
}
if ($event->isIndexView() && $this->isGranted('delete', $customer)) {
$event->addAction('trash', ['url' => $this->path('admin_customer_delete', ['id' => $customer->getId()]), 'class' => 'modal-ajax-form text-red']);
$event->addDelete($this->path('admin_customer_delete', ['id' => $customer->getId()]));
}
if ($this->isGranted('view_reporting') && $this->isGranted('budget_project')) {

View File

@@ -30,7 +30,7 @@ class ProjectSubscriber extends AbstractActionsSubscriber
return;
}
if ($this->isGranted('view', $project)) {
if (!$event->isView('project_details') && $this->isGranted('view', $project)) {
$event->addAction('details', ['url' => $this->path('project_details', ['id' => $project->getId()])]);
}
@@ -68,8 +68,8 @@ class ProjectSubscriber extends AbstractActionsSubscriber
$event->addAction('copy', ['url' => $this->path('admin_project_duplicate', ['id' => $project->getId()])]);
}
if ($event->isIndexView() && $this->isGranted('delete', $project)) {
$event->addAction('trash', ['url' => $this->path('admin_project_delete', ['id' => $project->getId()]), 'class' => 'modal-ajax-form text-red']);
if (($event->isIndexView() || $event->isView('customer_details')) && $this->isGranted('delete', $project)) {
$event->addDelete($this->path('admin_project_delete', ['id' => $project->getId()]));
}
}
}

View File

@@ -70,7 +70,7 @@ class UserSubscriber extends AbstractActionsSubscriber
}
if ($event->isIndexView() && $this->isGranted('delete', $user)) {
$event->addAction('trash', ['url' => $this->path('admin_user_delete', ['id' => $user->getId()]), 'class' => 'modal-ajax-form']);
$event->addDelete($this->path('admin_user_delete', ['id' => $user->getId()]));
}
}
}