src/Controller/Admin/EasyAdmin/DashboardController.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin\EasyAdmin;
  3. use App\Entity\Core\AudioReference;
  4. use App\Entity\Core\BugReport;
  5. use App\Entity\Core\Category;
  6. use App\Entity\Core\ImageReference;
  7. use App\Entity\Core\Info;
  8. use App\Entity\Core\Mathproblem;
  9. use App\Entity\Core\Publication;
  10. use App\Entity\Core\Publisher;
  11. use App\Entity\Core\Quiz\Quiz;
  12. use App\Entity\Core\Quiz\QuizType;
  13. use App\Entity\Core\TagMathproblem;
  14. use App\Entity\Core\TemplateMathproblem;
  15. use App\Entity\Core\SelfStudy\SelfStudyTypicalExamProblem;
  16. use App\Entity\Core\TemplateSet;
  17. use App\Entity\Core\Topic\Topic;
  18. use App\Entity\User\User;
  19. use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
  20. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  21. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  22. use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
  23. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  24. use Symfony\Component\HttpFoundation\Response;
  25. use Symfony\Component\Routing\Annotation\Route;
  26. use Symfony\Component\Security\Core\User\UserInterface;
  27. class DashboardController extends AbstractDashboardController
  28. {
  29. #[Route('/easyadmin/', name: 'easyadmin_dashboard')]
  30. public function index(): Response
  31. {
  32. return $this->render('Admin/index.html.twig');
  33. }
  34. public function configureDashboard(): Dashboard
  35. {
  36. $title = $this->isGale() ? '<b>CMS til Ibog</b>' : 'CMS ' . $this->getProductName();
  37. return Dashboard::new()->setTitle($title);
  38. }
  39. public function configureUserMenu(UserInterface $user): UserMenu
  40. {
  41. $menu = parent::configureUserMenu($user);
  42. if ($this->isGranted('ROLE_ADMIN')) {
  43. $menu->addMenuItems([
  44. MenuItem::linkToUrl('Skift adgangskode', 'fas fa-key', $this->generateUrl('user_change_password'))
  45. ]);
  46. if (!$this->isGale()) {
  47. $menu->addMenuItems([
  48. MenuItem::linkToUrl('Administrator forside', 'fas fa-wrench', $this->generateUrl('a_ba_cus_admin_homepage'))
  49. ]);
  50. }
  51. }
  52. if ($this->isGranted('ROLE_TEACHER') && !$this->isGale()) {
  53. $menu->addMenuItems([
  54. MenuItem::linkToUrl('Lærer forside', 'fas fa-book', $this->generateUrl('a_ba_cus_teacher_homepage'))
  55. ]);
  56. }
  57. return $menu;
  58. }
  59. public function configureMenuItems(): iterable
  60. {
  61. if ($this->isGale())
  62. return $this->configureGaleMenuItems();
  63. return $this->configureProductMenuItems();
  64. }
  65. public function configureGaleMenuItems(): iterable
  66. {
  67. yield MenuItem::linkToDashboard('Vejledning', 'fa fa-circle-question');
  68. yield MenuItem::section('Indhold');
  69. yield MenuItem::linkToCrud('Forlag', 'fas fa-building', Publisher::class);
  70. yield MenuItem::linkToCrud('Udgivelser', 'fas fa-book', Publication::class)
  71. ->setController(PublicationCrudController::class);
  72. yield MenuItem::linkToCrud('Quizzer', 'fas fa-list-check', Quiz::class)
  73. ->setController(QuizCrudController::class);
  74. yield MenuItem::linkToCrud('Opgaver', 'fas fa-grip-lines', Mathproblem::class)
  75. ->setController(ProblemCrudController::class);
  76. yield MenuItem::section('Rettigheder')->setPermission('ROLE_ADMIN');
  77. yield MenuItem::linkToCrud('Brugere', 'fas fa-users', User::class)->setPermission('ROLE_ADMIN');
  78. }
  79. public function configureProductMenuItems(): iterable
  80. {
  81. yield MenuItem::linkToUrl('Lærerside', 'fa fa-chalkboard-teacher', $this->generateUrl('a_ba_cus_teacher_homepage'));
  82. yield MenuItem::linkToUrl('Adminside', 'fa fa-chalkboard-teacher', $this->generateUrl('a_ba_cus_admin_homepage'));
  83. yield MenuItem::section('Indhold');
  84. yield MenuItem::linkToCrud('Kategorier', 'fas fa-list', Category::class)
  85. ->setController(CategoryCrudController::class);
  86. yield MenuItem::linkToCrud('Emner (niveauer/aktiviteter)', 'fas fa-list', Topic::class)
  87. ->setController(TopicCrudController::class);
  88. yield MenuItem::linkToCrud('Skabeloner', 'fas fa-list', TemplateMathproblem::class)
  89. ->setController(TemplateCrudController::class);
  90. yield MenuItem::linkToCrud('Opgaver', 'fas fa-list', Mathproblem::class)
  91. ->setController(ProblemCrudController::class);
  92. yield MenuItem::linkToCrud('Nøgleord', 'fas fa-list', TagMathproblem::class)
  93. ->setController(TagCrudController::class);
  94. yield MenuItem::section('Medier');
  95. yield MenuItem::linkToCrud('Billeder', 'fas fa-image', ImageReference::class)
  96. ->setController(ImageReferenceCrudController::class);
  97. yield MenuItem::linkToCrud('Lyde', 'fas fa-volume-up', AudioReference::class)
  98. ->setController(AudioReferenceCrudController::class);
  99. yield MenuItem::section('Fejlindberetninger');
  100. yield MenuItem::linkToCrud('Fejlindberetninger', 'fas fa-bug', BugReport::class)
  101. ->setController(BugReportCrudController::class);
  102. yield MenuItem::section('Opgavesæt');
  103. yield MenuItem::linkToCrud('Opgavesæt', 'fas fa-list', Quiz::class)
  104. ->setController(ProductQuizCrudController::class);
  105. yield MenuItem::linkToCrud('Type', 'fas fa-list', QuizType::class)
  106. ->setController(QuizTypeCrudController::class);
  107. yield MenuItem::section('Rutinetræning');
  108. yield MenuItem::linkToCrud('Rutinetræningssæt', 'fas fa-list', TemplateSet::class)
  109. ->setController(TemplateSetCrudController::class);
  110. yield MenuItem::section('Træn selv');
  111. yield MenuItem::linkToCrud('Eksamenssæt', 'fas fa-list', TemplateSet::class)
  112. ->setController(SelfStudyExamQuizCrudController::class);
  113. yield MenuItem::linkToCrud('Træn-selv indhold', 'fas fa-list', SelfStudyTypicalExamProblem::class)
  114. ->setController(SelfStudyTypicalExamProblemCrudController::class);
  115. yield MenuItem::section('Arbejdsark');
  116. yield MenuItem::linkToCrud('Arbejdsark', 'fas fa-list', TemplateSet::class)
  117. ->setController(WorksheetCrudController::class);
  118. yield MenuItem::section('Lærer preview');
  119. yield MenuItem::linkToRoute('Preview adaptiv træning', 'fas fa-list', 'content_overview', [
  120. 'activity' => 'training'
  121. ]);
  122. yield MenuItem::linkToRoute('Preview opgavesæt', 'fas fa-list', 'content_overview', [
  123. 'activity' => 'quiz'
  124. ]);
  125. yield MenuItem::section('Adgang')->setPermission('ROLE_SUPER_ADMIN');
  126. yield MenuItem::linkToCrud('Brugere', 'fas fa-users', User::class)->setPermission('ROLE_SUPER_ADMIN');
  127. yield MenuItem::section('Andet');
  128. yield MenuItem::linkToCrud('Tekster', 'fas fa-list', Info::class);
  129. }
  130. public function configureAssets(): Assets
  131. {
  132. return parent::configureAssets()
  133. ->addCssFile('assets/css/core/roboto/roboto_100_300_400_500.css');
  134. }
  135. private function isGale(): bool
  136. {
  137. return $this->getParameter('abacus.scope') === 'gale';
  138. }
  139. private function getProductName(): string
  140. {
  141. $productName = $this->getParameter('abacus.scope');
  142. if (empty($productName)) {
  143. $productName = 'Abacus';
  144. }
  145. // remove - and capitalize words
  146. $productName = str_replace('-', '', $productName);
  147. $productName = ucwords($productName);
  148. return $productName;
  149. }
  150. }