mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-11-26 05:38:29 +00:00
Compare commits
1 Commits
459-invita
...
424-displa
| Author | SHA1 | Date | |
|---|---|---|---|
| eb4a33ff75 |
@@ -1,6 +0,0 @@
|
|||||||
kind: Feature
|
|
||||||
body: Add a counter for invitations awaiting reply
|
|
||||||
time: 2025-11-25T16:58:11.780678466+01:00
|
|
||||||
custom:
|
|
||||||
Issue: "459"
|
|
||||||
SchemaChange: No schema change
|
|
||||||
6
.changes/unreleased/UX-20251125-150135.yaml
Normal file
6
.changes/unreleased/UX-20251125-150135.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
kind: UX
|
||||||
|
body: Display entire comment for activity item within list
|
||||||
|
time: 2025-11-25T15:01:35.558013876+01:00
|
||||||
|
custom:
|
||||||
|
Issue: "424"
|
||||||
|
SchemaChange: No schema change
|
||||||
@@ -136,7 +136,6 @@
|
|||||||
<div class="wl-col list">
|
<div class="wl-col list">
|
||||||
{{ activity.comment|chill_entity_render_box({
|
{{ activity.comment|chill_entity_render_box({
|
||||||
'disable_markdown': false,
|
'disable_markdown': false,
|
||||||
'limit_lines': 3,
|
|
||||||
'metadata': false,
|
'metadata': false,
|
||||||
}) }}
|
}) }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Chill\CalendarBundle\Menu;
|
namespace Chill\CalendarBundle\Menu;
|
||||||
|
|
||||||
use Chill\CalendarBundle\Repository\InviteRepository;
|
|
||||||
use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
|
use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
|
||||||
use Knp\Menu\MenuItem;
|
use Knp\Menu\MenuItem;
|
||||||
use Symfony\Component\Security\Core\Security;
|
use Symfony\Component\Security\Core\Security;
|
||||||
@@ -19,12 +18,10 @@ use Symfony\Contracts\Translation\TranslatorInterface;
|
|||||||
|
|
||||||
class UserMenuBuilder implements LocalMenuBuilderInterface
|
class UserMenuBuilder implements LocalMenuBuilderInterface
|
||||||
{
|
{
|
||||||
public function __construct(private readonly Security $security, public TranslatorInterface $translator, private readonly InviteRepository $inviteRepository) {}
|
public function __construct(private readonly Security $security, public TranslatorInterface $translator) {}
|
||||||
|
|
||||||
public function buildMenu($menuId, MenuItem $menu, array $parameters)
|
public function buildMenu($menuId, MenuItem $menu, array $parameters)
|
||||||
{
|
{
|
||||||
$invitationsPending = $this->inviteRepository->countPendingInvitesByUser($this->security->getUser());
|
|
||||||
|
|
||||||
if ($this->security->isGranted('ROLE_USER')) {
|
if ($this->security->isGranted('ROLE_USER')) {
|
||||||
$menu->addChild('My calendar list', [
|
$menu->addChild('My calendar list', [
|
||||||
'route' => 'chill_calendar_calendar_list_my',
|
'route' => 'chill_calendar_calendar_list_my',
|
||||||
@@ -33,14 +30,12 @@ class UserMenuBuilder implements LocalMenuBuilderInterface
|
|||||||
'order' => 8,
|
'order' => 8,
|
||||||
'icon' => 'tasks',
|
'icon' => 'tasks',
|
||||||
]);
|
]);
|
||||||
$menu->addChild(
|
$menu->addChild('invite.list.title', [
|
||||||
$this->translator->trans('invite.menu with counter', ['nb' => $invitationsPending]),
|
'route' => 'chill_calendar_invitations_list_my',
|
||||||
['route' => 'chill_calendar_invitations_list_my']
|
])
|
||||||
)
|
|
||||||
->setExtras([
|
->setExtras([
|
||||||
'order' => 9,
|
'order' => 9,
|
||||||
'icon' => 'tasks',
|
'icon' => 'tasks',
|
||||||
'counter' => 0 < $invitationsPending ? $invitationsPending : null,
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,25 +75,6 @@ class InviteRepository implements ObjectRepository
|
|||||||
->getSingleScalarResult();
|
->getSingleScalarResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function countPendingInvitesByUser(User $user): int
|
|
||||||
{
|
|
||||||
$qb = $this->entityRepository->createQueryBuilder('i');
|
|
||||||
|
|
||||||
$qb->select('COUNT(i)')
|
|
||||||
->where(
|
|
||||||
$qb->expr()->andX(
|
|
||||||
$qb->expr()->eq('i.user', ':user'),
|
|
||||||
$qb->expr()->eq('i.status', ':status')
|
|
||||||
)
|
|
||||||
)
|
|
||||||
->setParameters([
|
|
||||||
'user' => $user,
|
|
||||||
'status' => Invite::PENDING,
|
|
||||||
]);
|
|
||||||
|
|
||||||
return $qb->getQuery()->getSingleScalarResult();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function buildAcceptedInviteByUserAndDateRangeQuery(User $user, \DateTimeImmutable $from, \DateTimeImmutable $to)
|
public function buildAcceptedInviteByUserAndDateRangeQuery(User $user, \DateTimeImmutable $from, \DateTimeImmutable $to)
|
||||||
{
|
{
|
||||||
$qb = $this->entityRepository->createQueryBuilder('i');
|
$qb = $this->entityRepository->createQueryBuilder('i');
|
||||||
|
|||||||
@@ -6,11 +6,3 @@ chill_calendar:
|
|||||||
few {# rendez-vous sont ignorés par le filtre de date. Modifiez le filtre de date pour les voir apparaitre.}
|
few {# rendez-vous sont ignorés par le filtre de date. Modifiez le filtre de date pour les voir apparaitre.}
|
||||||
other {# rendez-vous sont ignorés par le filtre de date. Modifiez le filtre de date pour les voir apparaitre.}
|
other {# rendez-vous sont ignorés par le filtre de date. Modifiez le filtre de date pour les voir apparaitre.}
|
||||||
}
|
}
|
||||||
invite:
|
|
||||||
menu with counter: >-
|
|
||||||
{nb, plural,
|
|
||||||
=0 {Mes invitations}
|
|
||||||
one {# invitation}
|
|
||||||
few {# invitations}
|
|
||||||
other {# invitations}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -96,7 +96,6 @@ invite:
|
|||||||
list:
|
list:
|
||||||
none: Il n'y aucun invitation
|
none: Il n'y aucun invitation
|
||||||
title: Mes invitations
|
title: Mes invitations
|
||||||
number of invitations waiting: Invitations en attente
|
|
||||||
|
|
||||||
# exports
|
# exports
|
||||||
Exports of calendar: Exports des rendez-vous
|
Exports of calendar: Exports des rendez-vous
|
||||||
|
|||||||
Reference in New Issue
Block a user