src/Controller/Admin/DashboardController.php line 45

  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Ecole;
  4. use App\Entity\Email;
  5. use App\Entity\FormatEcole;
  6. use App\Entity\FrequenceEcole;
  7. use App\Entity\Inscription;
  8. use App\Entity\InscriptionContextScientifique;
  9. use App\Entity\InscriptionLogementLieu;
  10. use App\Entity\InscriptionModeTransfert;
  11. use App\Entity\InscriptionModeTransport;
  12. use App\Entity\InscriptionNbParticipation;
  13. use App\Entity\InscriptionQualite;
  14. use App\Entity\InscriptionRepas;
  15. use App\Entity\InscriptionSituation;
  16. use App\Entity\InscriptionVilleArrive;
  17. use App\Entity\Institut;
  18. use App\Entity\SubventionOrganisme;
  19. use App\Entity\TailleEcole;
  20. use App\Entity\Thematique;
  21. use App\Entity\User;
  22. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  23. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  24. use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
  25. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  26. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  27. use Symfony\Component\HttpFoundation\Response;
  28. use Symfony\Component\Routing\Annotation\Route;
  29. use Symfony\Component\Security\Core\User\UserInterface;
  30. use function Symfony\Component\Translation\t;
  31. class DashboardController extends AbstractDashboardController
  32. {
  33.     public function __construct(private AdminUrlGenerator $adminUrlGenerator){}
  34.     #[Route('/'name'admin_redirect')]
  35.     public function adminRedirect(): Response
  36.     {
  37.         return $this->redirect("/admin/fr");
  38.     }
  39.     #[Route('/admin/{_locale}'defaults: ['_locale' => 'fr'], name'admin_dashboard')]
  40.     public function index(): Response
  41.     {
  42.         //return $this->render('admin/my-dashboard.html.twig', []);
  43.         // Option 1. You can make your dashboard redirect to some common page of your backend
  44.         //
  45.         // $adminUrlGenerator = $this->container->get(AdminUrlGenerator::class);
  46.         return $this->redirect($this->adminUrlGenerator->setController(EcoleCrudController::class)->generateUrl());
  47.         // Option 2. You can make your dashboard redirect to different pages depending on the user
  48.         //
  49.         // if ('jane' === $this->getUser()->getUsername()) {
  50.         //     return $this->redirect('...');
  51.         // }
  52.         // Option 3. You can render some custom template to display a proper dashboard with widgets, etc.
  53.         // (tip: it's easier if your template extends from @EasyAdmin/page/content.html.twig)
  54.         //
  55.         // return $this->render('some/path/my-dashboard.html.twig');
  56.     }
  57.     public function configureDashboard(): Dashboard
  58.     {
  59.         $dashboard Dashboard::new()
  60.             // the name visible to end users
  61.             ->setTitle('Institut d\'Études Scientifiques')
  62.             // you can include HTML contents too (e.g. to link to an image)
  63.             //->setTitle('<img src="..."> ACME <span class="text-small">Corp.</span>')
  64.             // by default EasyAdmin displays a black square as its default favicon;
  65.             // use this method to display a custom favicon: the given path is passed
  66.             // "as is" to the Twig asset() function:
  67.             // <link rel="shortcut icon" href="{{ asset('...') }}">
  68.             ->setFaviconPath('favicon.svg')
  69.             // the domain used by default is 'messages'
  70.             ->setTranslationDomain('admin')
  71.             ->disableDarkMode()
  72.             // there's no need to define the "text direction" explicitly because
  73.             // its default value is inferred dynamically from the user locale
  74.            // ->setTextDirection('ltr')
  75.             // set this option if you prefer the page content to span the entire
  76.             // browser width, instead of the default design which sets a max width
  77.             ->renderContentMaximized()
  78.             // set this option if you prefer the sidebar (which contains the main menu)
  79.             // to be displayed as a narrow column instead of the default expanded design
  80.             //->renderSidebarMinimized()
  81.             // by default, users can select between a "light" and "dark" mode for the
  82.             // backend interface. Call this method if you prefer to disable the "dark"
  83.             // mode for any reason (e.g. if your interface customizations are not ready for it)
  84.             //->disableDarkMode()
  85.             // by default, all backend URLs are generated as absolute URLs. If you
  86.             // need to generate relative URLs instead, call this method
  87.             ->generateRelativeUrls()
  88.             // set this option if you want to enable locale switching in dashboard.
  89.             // IMPORTANT: this feature won't work unless you add the {_locale}
  90.             // parameter in the admin dashboard URL (e.g. '/admin/{_locale}').
  91.             // the name of each locale will be rendered in that locale
  92.             // (in the following example you'll see: "English", "Polski")
  93.             //->setLocales(['fr', 'en'])
  94.             // to customize the labels of locales, pass a key => value array
  95.             // (e.g. to display flags; although it's not a recommended practice,
  96.             // because many languages/locales are not associated to a single country)
  97.             ->setLocales([
  98.                 'fr' => '🇫🇷 France',
  99.                 'en' => '🇬🇧 English',
  100.             ])
  101.             // to further customize the locale option, pass an instance of
  102.             // EasyCorp\Bundle\EasyAdminBundle\Config\Locale
  103.             //->setLocales([
  104.             //    'fr',
  105.             //    'en', // locale without custom options
  106.             //    //Locale::new('pl', 'polski', 'far fa-language') // custom label and icon
  107.             //])
  108.             ;
  109.         return $dashboard;
  110.     }
  111.     public function configureMenuItems(): iterable
  112.     {
  113.         /** @var User|null $user */
  114.         $user $this->getUser();
  115.         $item = [
  116.             MenuItem::linkToDashboard('Dashboard''fa fa-home'),
  117.             MenuItem::section(t('menu.section.ecole', [], 'admin')),
  118.             MenuItem::linkToCrud(t('menu.item.project_ecole', [], 'admin'), 'fa fa-tags'Ecole::class),
  119.         ];
  120.         if ($user && ($user->isAdmin() || $user->isGestionnaireEcole())) {
  121.             $item[] = MenuItem::linkToCrud(t('menu.item.inscription', [], 'admin'), 'fa fa-users'Inscription::class);
  122.             $item[] = MenuItem::section(t('menu.section.email', [], 'admin'));
  123.             $item[] = MenuItem::linkToCrud(t('menu.item.email', [], 'admin'), 'fa fa-envelope'Email::class);
  124.         }
  125.         return [
  126.             ...$item,
  127.             MenuItem::section(t('menu.section.utilisateur', [], 'admin'))->setPermission(User::ROLE_ADMIN),
  128.             MenuItem::linkToCrud(t('menu.item.utilisateur', [], 'admin'), 'fa fa-user'User::class)->setPermission(User::ROLE_ADMIN),
  129.             MenuItem::section(t('menu.section.administration_ecole_form', [], 'admin'))->setPermission(User::ROLE_ADMIN),
  130.             MenuItem::linkToCrud(t('menu.item.format_ecole', [], 'admin'), 'fa fa-gear'FormatEcole::class)->setPermission(User::ROLE_ADMIN),
  131.             MenuItem::linkToCrud(t('menu.item.frequence_ecole', [], 'admin'), 'fa fa-gear'FrequenceEcole::class)->setPermission(User::ROLE_ADMIN),
  132.             MenuItem::linkToCrud(t('menu.item.taille_ecole', [], 'admin'), 'fa fa-gear'TailleEcole::class)->setPermission(User::ROLE_ADMIN),
  133.             MenuItem::linkToCrud(t('menu.item.thematique_ecole', [], 'admin'), 'fa fa-gear'Thematique::class)->setPermission(User::ROLE_ADMIN),
  134.             MenuItem::linkToCrud(t('menu.item.institut_ecole', [], 'admin'), 'fa fa-gear'Institut::class)->setPermission(User::ROLE_ADMIN),
  135.             MenuItem::linkToCrud(t('menu.item.organisme_subvention', [], 'admin'), 'fa fa-gear'SubventionOrganisme::class)->setPermission(User::ROLE_ADMIN),
  136.             MenuItem::section(t('menu.section.administration_inscription_form', [], 'admin'))->setPermission(User::ROLE_ADMIN),
  137.             MenuItem::linkToCrud(t('menu.item.context_scientifique', [], 'admin'), 'fa fa-gear'InscriptionContextScientifique::class)->setPermission(User::ROLE_ADMIN),
  138.             MenuItem::linkToCrud(t('menu.item.lieu_logement', [], 'admin'), 'fa fa-gear'InscriptionLogementLieu::class)->setPermission(User::ROLE_ADMIN),
  139.             MenuItem::linkToCrud(t('menu.item.mode_transfert', [], 'admin'), 'fa fa-gear'InscriptionModeTransfert::class)->setPermission(User::ROLE_ADMIN),
  140.             MenuItem::linkToCrud(t('menu.item.mode_transport', [], 'admin'), 'fa fa-gear'InscriptionModeTransport::class)->setPermission(User::ROLE_ADMIN),
  141.             MenuItem::linkToCrud(t('menu.item.nb_participations', [], 'admin'), 'fa fa-gear'InscriptionNbParticipation::class)->setPermission(User::ROLE_ADMIN),
  142.             MenuItem::linkToCrud(t('menu.item.qualite', [], 'admin'), 'fa fa-gear'InscriptionQualite::class)->setPermission(User::ROLE_ADMIN),
  143.             MenuItem::linkToCrud(t('menu.item.repas', [], 'admin'), 'fa fa-gear'InscriptionRepas::class)->setPermission(User::ROLE_ADMIN),
  144.             MenuItem::linkToCrud(t('menu.item.situation', [], 'admin'), 'fa fa-gear'InscriptionSituation::class)->setPermission(User::ROLE_ADMIN),
  145.             MenuItem::linkToCrud(t('menu.item.ville_arrive', [], 'admin'), 'fa fa-gear'InscriptionVilleArrive::class)->setPermission(User::ROLE_ADMIN),
  146.         ];
  147.     }
  148. }