<?php
namespace App\Controller\Admin\EasyAdmin;
use App\Entity\Core\AudioReference;
use App\Entity\Core\BugReport;
use App\Entity\Core\Category;
use App\Entity\Core\ImageReference;
use App\Entity\Core\Info;
use App\Entity\Core\Mathproblem;
use App\Entity\Core\Publication;
use App\Entity\Core\Publisher;
use App\Entity\Core\Quiz\Quiz;
use App\Entity\Core\Quiz\QuizType;
use App\Entity\Core\TagMathproblem;
use App\Entity\Core\TemplateMathproblem;
use App\Entity\Core\SelfStudy\SelfStudyTypicalExamProblem;
use App\Entity\Core\TemplateSet;
use App\Entity\Core\Topic\Topic;
use App\Entity\User\User;
use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\User\UserInterface;
class DashboardController extends AbstractDashboardController
{
#[Route('/easyadmin/', name: 'easyadmin_dashboard')]
public function index(): Response
{
return $this->render('Admin/index.html.twig');
}
public function configureDashboard(): Dashboard
{
$title = $this->isGale() ? '<b>CMS til Ibog</b>' : 'CMS ' . $this->getProductName();
return Dashboard::new()->setTitle($title);
}
public function configureUserMenu(UserInterface $user): UserMenu
{
$menu = parent::configureUserMenu($user);
if ($this->isGranted('ROLE_ADMIN')) {
$menu->addMenuItems([
MenuItem::linkToUrl('Skift adgangskode', 'fas fa-key', $this->generateUrl('user_change_password'))
]);
if (!$this->isGale()) {
$menu->addMenuItems([
MenuItem::linkToUrl('Administrator forside', 'fas fa-wrench', $this->generateUrl('a_ba_cus_admin_homepage'))
]);
}
}
if ($this->isGranted('ROLE_TEACHER') && !$this->isGale()) {
$menu->addMenuItems([
MenuItem::linkToUrl('Lærer forside', 'fas fa-book', $this->generateUrl('a_ba_cus_teacher_homepage'))
]);
}
return $menu;
}
public function configureMenuItems(): iterable
{
if ($this->isGale())
return $this->configureGaleMenuItems();
return $this->configureProductMenuItems();
}
public function configureGaleMenuItems(): iterable
{
yield MenuItem::linkToDashboard('Vejledning', 'fa fa-circle-question');
yield MenuItem::section('Indhold');
yield MenuItem::linkToCrud('Forlag', 'fas fa-building', Publisher::class);
yield MenuItem::linkToCrud('Udgivelser', 'fas fa-book', Publication::class)
->setController(PublicationCrudController::class);
yield MenuItem::linkToCrud('Quizzer', 'fas fa-list-check', Quiz::class)
->setController(QuizCrudController::class);
yield MenuItem::linkToCrud('Opgaver', 'fas fa-grip-lines', Mathproblem::class)
->setController(ProblemCrudController::class);
yield MenuItem::section('Rettigheder')->setPermission('ROLE_ADMIN');
yield MenuItem::linkToCrud('Brugere', 'fas fa-users', User::class)->setPermission('ROLE_ADMIN');
}
public function configureProductMenuItems(): iterable
{
yield MenuItem::linkToUrl('Lærerside', 'fa fa-chalkboard-teacher', $this->generateUrl('a_ba_cus_teacher_homepage'));
yield MenuItem::linkToUrl('Adminside', 'fa fa-chalkboard-teacher', $this->generateUrl('a_ba_cus_admin_homepage'));
yield MenuItem::section('Indhold');
yield MenuItem::linkToCrud('Kategorier', 'fas fa-list', Category::class)
->setController(CategoryCrudController::class);
yield MenuItem::linkToCrud('Emner (niveauer/aktiviteter)', 'fas fa-list', Topic::class)
->setController(TopicCrudController::class);
yield MenuItem::linkToCrud('Skabeloner', 'fas fa-list', TemplateMathproblem::class)
->setController(TemplateCrudController::class);
yield MenuItem::linkToCrud('Opgaver', 'fas fa-list', Mathproblem::class)
->setController(ProblemCrudController::class);
yield MenuItem::linkToCrud('Nøgleord', 'fas fa-list', TagMathproblem::class)
->setController(TagCrudController::class);
yield MenuItem::section('Medier');
yield MenuItem::linkToCrud('Billeder', 'fas fa-image', ImageReference::class)
->setController(ImageReferenceCrudController::class);
yield MenuItem::linkToCrud('Lyde', 'fas fa-volume-up', AudioReference::class)
->setController(AudioReferenceCrudController::class);
yield MenuItem::section('Fejlindberetninger');
yield MenuItem::linkToCrud('Fejlindberetninger', 'fas fa-bug', BugReport::class)
->setController(BugReportCrudController::class);
yield MenuItem::section('Opgavesæt');
yield MenuItem::linkToCrud('Opgavesæt', 'fas fa-list', Quiz::class)
->setController(ProductQuizCrudController::class);
yield MenuItem::linkToCrud('Type', 'fas fa-list', QuizType::class)
->setController(QuizTypeCrudController::class);
yield MenuItem::section('Rutinetræning');
yield MenuItem::linkToCrud('Rutinetræningssæt', 'fas fa-list', TemplateSet::class)
->setController(TemplateSetCrudController::class);
yield MenuItem::section('Træn selv');
yield MenuItem::linkToCrud('Eksamenssæt', 'fas fa-list', TemplateSet::class)
->setController(SelfStudyExamQuizCrudController::class);
yield MenuItem::linkToCrud('Træn-selv indhold', 'fas fa-list', SelfStudyTypicalExamProblem::class)
->setController(SelfStudyTypicalExamProblemCrudController::class);
yield MenuItem::section('Arbejdsark');
yield MenuItem::linkToCrud('Arbejdsark', 'fas fa-list', TemplateSet::class)
->setController(WorksheetCrudController::class);
yield MenuItem::section('Lærer preview');
yield MenuItem::linkToRoute('Preview adaptiv træning', 'fas fa-list', 'content_overview', [
'activity' => 'training'
]);
yield MenuItem::linkToRoute('Preview opgavesæt', 'fas fa-list', 'content_overview', [
'activity' => 'quiz'
]);
yield MenuItem::section('Adgang')->setPermission('ROLE_SUPER_ADMIN');
yield MenuItem::linkToCrud('Brugere', 'fas fa-users', User::class)->setPermission('ROLE_SUPER_ADMIN');
yield MenuItem::section('Andet');
yield MenuItem::linkToCrud('Tekster', 'fas fa-list', Info::class);
}
public function configureAssets(): Assets
{
return parent::configureAssets()
->addCssFile('assets/css/core/roboto/roboto_100_300_400_500.css');
}
private function isGale(): bool
{
return $this->getParameter('abacus.scope') === 'gale';
}
private function getProductName(): string
{
$productName = $this->getParameter('abacus.scope');
if (empty($productName)) {
$productName = 'Abacus';
}
// remove - and capitalize words
$productName = str_replace('-', '', $productName);
$productName = ucwords($productName);
return $productName;
}
}