src/Controller/DocumentationController.php line 25

  1. <?php
  2. namespace App\Controller;
  3. use App\RepositoryManager;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. class DocumentationController extends AbstractController
  8. {
  9.     public function __construct(private readonly RepositoryManager $repositoryManager)
  10.     {
  11.     }
  12.     #[Route('/docs'name'documentation')]
  13.     public function index(): Response
  14.     {
  15.         return $this->render('documentation/index.html.twig', [
  16.             'repositories' => $this->repositoryManager->all(),
  17.         ]);
  18.     }
  19.     #[Route('/docs/{repository}/{version}/{page}'name'documentation_page'defaults: ['page' => ''], requirements: ['page' => '.+'])]
  20.     public function page(string $repositorystring $versionstring $page): Response
  21.     {
  22.         $metadata $this->repositoryManager->repository($repository);
  23.         if ($version === $metadata['current_version']) {
  24.             return $this->redirectToRoute('documentation_page', [
  25.                 'repository' => $repository,
  26.                 'version' => 'current',
  27.                 'page' => $page,
  28.             ]);
  29.         }
  30.         $page $this->repositoryManager->page($repository$version$page);
  31.         return $this->render('documentation/page.html.twig', [
  32.             'repository' => $repository,
  33.             'repository_data' => $metadata,
  34.             'version' => $version,
  35.             'page' => $page,
  36.         ]);
  37.     }
  38. }