diff --git a/composer.json b/composer.json index 544726b..3d9f9a0 100644 --- a/composer.json +++ b/composer.json @@ -7,6 +7,7 @@ "prefer-stable": true, "require": { "php": ">=8.0.0", + "knplabs/knp-snappy": "^1.4", "murph/murph-core": "^1.13,>=1.13.0", "sabre/dav": "^4.3" }, diff --git a/src/Controller/DebriefingController.php b/src/Controller/DebriefingController.php index 3d9b9f5..84b1188 100644 --- a/src/Controller/DebriefingController.php +++ b/src/Controller/DebriefingController.php @@ -4,11 +4,13 @@ namespace App\Controller; use App\Core\Controller\Site\PageController; use App\Entity\Debriefing; +use Knp\Snappy\Pdf; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\ResponseHeaderBag; class DebriefingController extends PageController { - public function debriefing(Debriefing $entity, \DateTime $date): Response + public function debriefing(Debriefing $entity, \DateTime $date, string $format): Response { if (!$this->siteRequest->getPage()) { throw $this->createNotFoundException(); @@ -18,8 +20,19 @@ class DebriefingController extends PageController throw $this->createNotFoundException(); } - return $this->defaultRender($this->siteRequest->getPage()->getTemplate(), [ + $response = $this->defaultRender($this->siteRequest->getPage()->getTemplate(), [ 'entity' => $entity, ]); + + if ('pdf' === $format) { + $snappy = new Pdf('/usr/bin/wkhtmltopdf', [ + 'enable-local-file-access' => true, + ]); + + $response->setContent($snappy->getOutputFromHtml($response->getContent())); + $response->headers->set('Content-Type', 'application/pdf'); + } + + return $response; } } diff --git a/templates/admin/debriefing/_show.html.twig b/templates/admin/debriefing/_show.html.twig index f345305..2f8ca5c 100644 --- a/templates/admin/debriefing/_show.html.twig +++ b/templates/admin/debriefing/_show.html.twig @@ -39,10 +39,24 @@
  • Partager - {% set url = safe_path('main_fr_menu_debriefing', {entity: entity.id, date: entity.date|date('d-m-Y')}) %} + {% set urlHtml = safe_path('main_fr_menu_debriefing', { + entity: entity.id, + date: entity.date|date('d-m-Y'), + format: 'html' + }) %} - - Partager + {% set urlPdf = safe_path('main_fr_menu_debriefing', { + entity: entity.id, + date: entity.date|date('d-m-Y'), + format: 'pdf' + }) %} + + + Partager en ligne + + + + Voir en PDF
  • diff --git a/templates/page/debriefing/default.html.twig b/templates/page/debriefing/default.html.twig index cf2769e..0e78bcf 100644 --- a/templates/page/debriefing/default.html.twig +++ b/templates/page/debriefing/default.html.twig @@ -12,11 +12,11 @@ {%- endblock -%} {%- block stylesheets -%} - {{ encore_entry_link_tags('cr') }} + {{ encore_entry_link_tags('cr')|replace({'href="/': 'href="' ~ absolute_url('/')})|raw }} {%- endblock -%} {%- block javascripts -%} - {{ encore_entry_script_tags('cr') }} + {{ encore_entry_script_tags('cr')|replace({'src="/': 'src="' ~ absolute_url('/')})|raw }} {%- endblock -%} {%- block title -%} @@ -27,7 +27,7 @@
    - Tinternet & Cie + Tinternet & Cie

    {{ entity.topic }}

    @@ -65,7 +65,7 @@ {% endif %} {% if entity.files %} -
  • +
  • Fichiers {% for item in entity.files %}