mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Bugfixes/tasks list
This commit is contained in:
parent
e1677cd2b6
commit
35d807cab0
@ -21,6 +21,7 @@ and this project adheres to
|
||||
* refactor `AuthorizationHelper` and `UserACLAwareRepository` to fix constructor, and separate logic for parent role helper into `ParentRoleHelper`
|
||||
* [main]: filter location and locationType in backend: exclude NULL names, only active and availableToUsers
|
||||
* [activity]: perform client-side validation & show/hide fields in the "new location" modal
|
||||
* [tasks]: different layout for task list / my tasks, and fix link to tasks in alert or in warning
|
||||
* [admin]: links to activity admin section added again.
|
||||
|
||||
|
||||
|
@ -33,12 +33,14 @@ class ParentRoleHelper
|
||||
* Return all the role which give access to the given role. Only the role
|
||||
* which are registered into Chill are taken into account.
|
||||
*
|
||||
* The array contains always the current $role (which give access to himself)
|
||||
*
|
||||
* @param string $role
|
||||
* @return string[] the role which give access to the given $role
|
||||
*/
|
||||
public function getParentRoles(string $role): array
|
||||
{
|
||||
$parentRoles = [];
|
||||
$parentRoles = [$role];
|
||||
// transform the roles from role hierarchy from string to Role
|
||||
$roles = \array_keys($this->hierarchy);
|
||||
|
||||
|
@ -14,7 +14,7 @@ class FilterOrderHelper
|
||||
private ?array $searchBoxFields = null;
|
||||
private array $checkboxes = [];
|
||||
private ?array $submitted = null;
|
||||
private ?string $formName = 'filter';
|
||||
private ?string $formName = 'f';
|
||||
private string $formType = FilterOrderType::class;
|
||||
private array $formOptions = [];
|
||||
|
||||
|
@ -23,9 +23,10 @@ class ParentRoleHelperTest extends KernelTestCase
|
||||
|
||||
$parentRoles = $this->parentRoleHelper->getParentRoles(PersonVoter::SEE);
|
||||
|
||||
$this->assertCount(2, $parentRoles);
|
||||
$this->assertCount(3, $parentRoles);
|
||||
$this->assertContains(PersonVoter::CREATE, $parentRoles);
|
||||
$this->assertContains(PersonVoter::UPDATE, $parentRoles);
|
||||
$this->assertContains(PersonVoter::SEE, $parentRoles);
|
||||
}
|
||||
|
||||
public function testIsRoleReached()
|
||||
|
@ -159,6 +159,12 @@ class HouseholdMember
|
||||
return $this->shareHousehold;
|
||||
}
|
||||
|
||||
public function setShareHousehold(bool $shareHousehold): self
|
||||
{
|
||||
$this->shareHousehold = $shareHousehold;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getPerson(): ?Person
|
||||
{
|
||||
|
@ -452,7 +452,7 @@ final class SingleTaskController extends AbstractController
|
||||
* @return Response
|
||||
* @Route(
|
||||
* "/{_locale}/task/single-task/list/my",
|
||||
* name="chill_task_single_my_tasks"
|
||||
* name="chill_task_singletask_my_tasks"
|
||||
* )
|
||||
*/
|
||||
public function myTasksAction()
|
||||
@ -480,7 +480,7 @@ final class SingleTaskController extends AbstractController
|
||||
]
|
||||
);
|
||||
|
||||
return $this->render('@ChillTask/SingleTask/List/index.html.twig', [
|
||||
return $this->render('@ChillTask/SingleTask/List/index_my_tasks.html.twig', [
|
||||
'tasks' => $tasks,
|
||||
'paginator' => $paginator,
|
||||
'filter_order' => $filterOrder,
|
||||
|
@ -88,27 +88,27 @@ class UserMenuBuilder implements LocalMenuBuilderInterface
|
||||
if ($ended > 0) {
|
||||
$this->addItemInMenu(
|
||||
$menu,
|
||||
$user,
|
||||
'%number% tasks over deadline',
|
||||
'My tasks over deadline',
|
||||
SingleTaskRepository::DATE_STATUS_ENDED,
|
||||
$ended,
|
||||
-15);
|
||||
-15,
|
||||
['new', 'in_progress'],
|
||||
['alert']
|
||||
);
|
||||
}
|
||||
|
||||
if ($warning > 0) {
|
||||
$this->addItemInMenu(
|
||||
$menu,
|
||||
$user,
|
||||
'%number% tasks near deadline',
|
||||
'My tasks near deadline',
|
||||
SingleTaskRepository::DATE_STATUS_WARNING,
|
||||
$warning,
|
||||
-14);
|
||||
-14,
|
||||
['new', 'in_progress'],
|
||||
['warning']
|
||||
);
|
||||
}
|
||||
|
||||
$menu->addChild("My tasks", [
|
||||
'route' => 'chill_task_single_my_tasks'
|
||||
'route' => 'chill_task_singletask_my_tasks'
|
||||
])
|
||||
->setExtras([
|
||||
'order' => -10,
|
||||
@ -117,20 +117,20 @@ class UserMenuBuilder implements LocalMenuBuilderInterface
|
||||
|
||||
}
|
||||
|
||||
protected function addItemInMenu(MenuItem $menu, User $u, $message, $title, $status, $number, $order)
|
||||
protected function addItemInMenu(MenuItem $menu, $message, $number, $order, array $states = [], array $status = [])
|
||||
{
|
||||
if ($number > 0) {
|
||||
$menu->addChild(
|
||||
$this->translator->transChoice($message, $number),
|
||||
[
|
||||
'route' => 'chill_task_singletask_list',
|
||||
'route' => 'chill_task_singletask_my_tasks',
|
||||
'routeParameters' => [
|
||||
'user_id' => $u->getId(),
|
||||
'status' => [
|
||||
$status
|
||||
],
|
||||
'hide_form' => true,
|
||||
'title' => $this->translator->trans($title)
|
||||
'f' => [
|
||||
'checkboxes' => [
|
||||
'states' => $states,
|
||||
'status' => $status
|
||||
]
|
||||
]
|
||||
]
|
||||
])
|
||||
->setExtras([
|
||||
|
@ -284,8 +284,8 @@ final class SingleTaskAclAwareRepository implements SingleTaskAclAwareRepository
|
||||
$qb->expr()->andX(
|
||||
$qb->expr()->not($qb->expr()->isNull('t.endDate')),
|
||||
$qb->expr()->not($qb->expr()->isNull('t.warningInterval')),
|
||||
$qb->expr()->gte('t.endDate - t.warningInterval', ':now'),
|
||||
$qb->expr()->lt('t.endDate', ':now')
|
||||
$qb->expr()->lte('t.endDate - t.warningInterval', ':now'),
|
||||
$qb->expr()->gt('t.endDate', ':now')
|
||||
)
|
||||
);
|
||||
$qb
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
{{ chill_pagination(paginator) }}
|
||||
|
||||
{% if is_granted('CHILL_TASK_TASK_CREATE_FOR_COURSE', person) %}
|
||||
{% if is_granted('CHILL_TASK_TASK_CREATE_FOR_COURSE', accompanyingCourse) %}
|
||||
<ul class="record_actions sticky-form-buttons">
|
||||
<li>
|
||||
{% if accompanyingCourse is not null %}
|
||||
@ -37,8 +37,10 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block css %}
|
||||
{{ parent() }}
|
||||
{{ encore_entry_link_tags('page_task_list') }}
|
||||
{% endblock %}
|
||||
{% block js %}
|
||||
{{ parent() }}
|
||||
{{ encore_entry_script_tags('page_task_list') }}
|
||||
{% endblock %}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{% extends 'ChillMainBundle::layout.html.twig' %}
|
||||
|
||||
{% block title 'My tasks'|trans %}
|
||||
{% block title 'Tasks'|trans %}
|
||||
|
||||
{% block content %}
|
||||
<div class="col-md-10 col-xxl">
|
||||
@ -25,8 +25,10 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block css %}
|
||||
{{ parent() }}
|
||||
{{ encore_entry_link_tags('page_task_list') }}
|
||||
{% endblock %}
|
||||
{% block js %}
|
||||
{{ parent() }}
|
||||
{{ encore_entry_script_tags('page_task_list') }}
|
||||
{% endblock %}
|
||||
|
@ -0,0 +1,34 @@
|
||||
{% extends 'ChillMainBundle::layout.html.twig' %}
|
||||
|
||||
{% block title 'My tasks'|trans %}
|
||||
|
||||
{% block content %}
|
||||
<div class="col-md-10 col-xxl">
|
||||
|
||||
<h1>{{ block('title') }}</h1>
|
||||
|
||||
{{ filter_order|chill_render_filter_order_helper }}
|
||||
|
||||
{% if tasks|length == 0 %}
|
||||
<p class="chill-no-data-statement">{{ 'Any tasks'|trans }}</p>
|
||||
{% else %}
|
||||
<div class="flex-table chill-task-list">
|
||||
{% for task in tasks %}
|
||||
{% include 'ChillTaskBundle:SingleTask/List:index_item.html.twig' with { 'showContext' : true} %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{{ chill_pagination(paginator) }}
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block css %}
|
||||
{{ parent() }}
|
||||
{{ encore_entry_link_tags('page_task_list') }}
|
||||
{% endblock %}
|
||||
{% block js %}
|
||||
{{ parent() }}
|
||||
{{ encore_entry_script_tags('page_task_list') }}
|
||||
{% endblock %}
|
Loading…
x
Reference in New Issue
Block a user