FEATURE [menu][counters] show counter icon for person resources and residential address if there are any

This commit is contained in:
Julie Lenaerts 2023-02-24 13:54:44 +01:00
parent 6254303392
commit 27f13e0dd1
2 changed files with 14 additions and 1 deletions

View File

@ -12,11 +12,13 @@ declare(strict_types=1);
namespace Chill\PersonBundle\Menu; namespace Chill\PersonBundle\Menu;
use Chill\MainBundle\Routing\LocalMenuBuilderInterface; use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
use Chill\PersonBundle\Repository\ResidentialAddressRepository;
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter; use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter;
use Knp\Menu\MenuItem; use Knp\Menu\MenuItem;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
use Symfony\Contracts\Translation\TranslatorInterface; use Symfony\Contracts\Translation\TranslatorInterface;
use function count;
/** /**
* Add menu entrie to person menu. * Add menu entrie to person menu.
@ -35,16 +37,20 @@ class PersonMenuBuilder implements LocalMenuBuilderInterface
protected TranslatorInterface $translator; protected TranslatorInterface $translator;
private ResidentialAddressRepository $residentialAddressRepo;
private Security $security; private Security $security;
public function __construct( public function __construct(
ParameterBagInterface $parameterBag, ParameterBagInterface $parameterBag,
Security $security, Security $security,
TranslatorInterface $translator TranslatorInterface $translator,
ResidentialAddressRepository $residentialAddressRepo
) { ) {
$this->showAccompanyingPeriod = $parameterBag->get('chill_person.accompanying_period'); $this->showAccompanyingPeriod = $parameterBag->get('chill_person.accompanying_period');
$this->security = $security; $this->security = $security;
$this->translator = $translator; $this->translator = $translator;
$this->residentialAddressRepo = $residentialAddressRepo;
} }
public function buildMenu($menuId, MenuItem $menu, array $parameters) public function buildMenu($menuId, MenuItem $menu, array $parameters)
@ -67,6 +73,8 @@ class PersonMenuBuilder implements LocalMenuBuilderInterface
]) ])
->setExtras([ ->setExtras([
'order' => 60, 'order' => 60,
'counter' => count($this->residentialAddressRepo->findBy(['person' => $parameters['person']])) > 0 ?
count($this->residentialAddressRepo->findBy(['person' => $parameters['person']])) : null,
]); ]);
$menu->addChild($this->translator->trans('person_resources_menu'), [ $menu->addChild($this->translator->trans('person_resources_menu'), [
@ -77,6 +85,7 @@ class PersonMenuBuilder implements LocalMenuBuilderInterface
]) ])
->setExtras([ ->setExtras([
'order' => 70, 'order' => 70,
'counter' => count($parameters['person']->getResources()) > 0 ? count($parameters['person']->getResources()) : null,
]); ]);
$menu->addChild($this->translator->trans('household.person history'), [ $menu->addChild($this->translator->trans('household.person history'), [

View File

@ -17,8 +17,12 @@
<div class="list-group vertical-menu {{ 'menu-' ~ menus.name }}"> <div class="list-group vertical-menu {{ 'menu-' ~ menus.name }}">
{% for menu in menus %} {% for menu in menus %}
<a class="list-group-item list-group-item-action" <a class="list-group-item list-group-item-action"
href="{{ menu.uri }}"> href="{{ menu.uri }}">
{% if menu.extras.counter is defined and menu.extras.counter is not null %}
<span class="badge rounded-pill bg-danger notification-counter">{{ menu.extras.counter }}</span>
{% endif %}
{{ menu.label|upper }} {{ menu.label|upper }}
</a> </a>
{% endfor %} {% endfor %}