Browse Source

Maintient dans le menu une liste des tâches verrouillées

master
vincent 2 months ago
parent
commit
a1174f86f8
3 changed files with 34 additions and 1 deletions
  1. +1
    -1
      src/Entity/Task.php
  2. +16
    -0
      src/Entity/User.php
  3. +17
    -0
      templates/_header.html.twig

+ 1
- 1
src/Entity/Task.php View File

@ -71,7 +71,7 @@ class Task
#[Gedmo\Timestampable(on: 'create')]
private ?\DateTimeImmutable $createdAt = null;
#[ORM\ManyToOne]
#[ORM\ManyToOne(inversedBy: 'lockedTasks')]
private ?User $lockedBy = null;
#[ORM\Column(nullable: true)]


+ 16
- 0
src/Entity/User.php View File

@ -43,10 +43,17 @@ class User implements UserInterface
#[ORM\OneToMany(targetEntity: Task::class, mappedBy: 'createdBy', orphanRemoval: true)]
private Collection $tasks;
/**
* @var Collection<int, Task>
*/
#[ORM\OneToMany(targetEntity: Task::class, mappedBy: 'lockedBy', orphanRemoval: true)]
private Collection $lockedTasks;
public function __construct()
{
$this->projects = new ArrayCollection();
$this->tasks = new ArrayCollection();
$this->lockedTasks = new ArrayCollection();
}
public function getId(): ?int
@ -180,4 +187,13 @@ class User implements UserInterface
return $this;
}
/**
* @return Collection<int, Task>
*/
public function getLockedTasks(): Collection
{
return $this->lockedTasks;
}
}

+ 17
- 0
templates/_header.html.twig View File

@ -13,6 +13,23 @@
</li>
{% endfor %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
{% if app.user.lockedTasks is not empty %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list-task" viewBox="0 0 16 16">
<path fill-rule="evenodd" d="M2 2.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5zM3 3H2v1h1z"/>
<path d="M5 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M5.5 7a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zm0 4a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1z"/>
<path fill-rule="evenodd" d="M1.5 7a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5zM2 7h1v1H2zm0 3.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm1 .5H2v1h1z"/>
</svg>
Tâches
</a>
<ul class="dropdown-menu">
{% for lockedTask in app.user.lockedTasks %}
<li><a class="dropdown-item" href="{{ path('app_task_show', {'slug': lockedTask.slug}) }}">{{ lockedTask.project.name }} / {{ lockedTask.name }}</a></li>
{% endfor %}
</ul>
</li>
{% endif %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person" viewBox="0 0 16 16">


Loading…
Cancel
Save