mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-10-31 09:18:24 +00:00 
			
		
		
		
	Bugfixes/tasks list
This commit is contained in:
		| @@ -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 %} | ||||
		Reference in New Issue
	
	Block a user