Release 2.5.0 (#4454)

- added command to list users
- corrected wrong german translation
- work contract validations
- prevent error with missing params
- use collapsible, minor UI improvement
- added classes to target menu buttons in custom rules
- disable webpack notifier, incompatible with mac arm
- use explicit menu service to generate menu
- bump to fontawesome 6 and replace restart icon
- change repeat icon for recent activities
- moved user bookmarks (favorites) to top nav
- fix totp seconds window (leeway)
- new migration to fix remaining user preferences with dots in name
- remove duplicate named column in user screen
- unify and added translations
- added missing filter and tags to InvoiceSecurity
This commit is contained in:
Kevin Papst
2023-12-01 11:38:17 +01:00
committed by GitHub
parent 16d4a691f8
commit 02bcd45116
72 changed files with 922 additions and 562 deletions

View File

@@ -9,13 +9,10 @@
namespace App\EventSubscriber;
use App\Entity\User;
use App\Event\ConfigureMainMenuEvent;
use App\Utils\MenuItemModel;
use App\Utils\MenuService;
use KevinPapst\TablerBundle\Event\MenuEvent;
use KevinPapst\TablerBundle\Model\MenuItemInterface;
use Psr\EventDispatcher\EventDispatcherInterface;
use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
@@ -24,7 +21,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
*/
final class MenuBuilderSubscriber implements EventSubscriberInterface
{
public function __construct(private EventDispatcherInterface $eventDispatcher, private Security $security)
public function __construct(private MenuService $menuService)
{
}
@@ -37,15 +34,7 @@ final class MenuBuilderSubscriber implements EventSubscriberInterface
public function onSetupNavbar(MenuEvent $event): void
{
$menuEvent = new ConfigureMainMenuEvent();
/** @var User $user */
$user = $this->security->getUser();
// error pages don't have a user and will fail when is_granted() is called
if (null !== $user) {
$this->eventDispatcher->dispatch($menuEvent);
}
$menuEvent = $this->menuService->getKimaiMenu();
foreach ($menuEvent->getMenu()->getChildren() as $child) {
if ($child->getRoute() === null && !$child->hasChildren()) {