From c58e860ff06a42478c5a55a2febaf205d2ec911f Mon Sep 17 00:00:00 2001 From: bernardhanna Date: Fri, 1 May 2026 09:49:27 +0100 Subject: [PATCH 1/2] fix(training): embed roadmap PDF in iframe again for clickable links PDF.js canvas rendering dropped link annotations; use the native PDF viewer in an iframe so roadmap URLs stay interactive. Made-with: Cursor --- .../TrainingRoadmapPdfController.php | 51 --------------- .../partials/roadmap-pdf-embed.blade.php | 7 +- .../views/training/roadmap-pdfjs.blade.php | 65 ------------------- routes/web.php | 5 -- 4 files changed, 2 insertions(+), 126 deletions(-) delete mode 100644 app/Http/Controllers/TrainingRoadmapPdfController.php delete mode 100644 resources/views/training/roadmap-pdfjs.blade.php diff --git a/app/Http/Controllers/TrainingRoadmapPdfController.php b/app/Http/Controllers/TrainingRoadmapPdfController.php deleted file mode 100644 index 72899ccd0..000000000 --- a/app/Http/Controllers/TrainingRoadmapPdfController.php +++ /dev/null @@ -1,51 +0,0 @@ -get(self::ROADMAP_SOURCE); - - if (! $response->successful()) { - abort(502, 'Unable to load roadmap PDF.'); - } - - return $response->body(); - } - ); - - return response($bytes, 200, [ - 'Content-Type' => 'application/pdf', - 'Content-Disposition' => 'inline; filename="DDP_toolkit_roadmap.pdf"', - 'Cache-Control' => 'public, max-age=3600', - ]); - } - - /** - * Minimal PDF.js viewer (no site chrome) for iframe embedding on training pages. - */ - public function viewer() - { - return response() - ->view('training.roadmap-pdfjs') - ->header('X-Frame-Options', 'SAMEORIGIN'); - } -} diff --git a/resources/views/training/partials/roadmap-pdf-embed.blade.php b/resources/views/training/partials/roadmap-pdf-embed.blade.php index c037de629..e9d50e771 100644 --- a/resources/views/training/partials/roadmap-pdf-embed.blade.php +++ b/resources/views/training/partials/roadmap-pdf-embed.blade.php @@ -4,12 +4,9 @@ @php // Strip any fragment from stored URL for the "open in new tab" link. $tabUrl = \Illuminate\Support\Str::before($url, '#'); - // Same-origin PDF.js viewer for the allowlisted DDP roadmap (see TrainingRoadmapPdfController). - // Other URLs keep the direct PDF iframe with viewer chrome hints. - $ddpRoadmapBase = 'https://codeweek-resources.s3.eu-west-1.amazonaws.com/+discover-digital-toolkit/DDP_toolkit_roadmap.pdf'; - $usePdfjsViewer = strtolower(rtrim($tabUrl, '/')) === strtolower(rtrim($ddpRoadmapBase, '/')); + // Native PDF in iframe keeps link annotations clickable (canvas PDF.js viewers do not). $fragment = '#toolbar=0&navpanes=0&scrollbar=1&view=FitH'; - $embedSrc = $usePdfjsViewer ? route('training.roadmap_pdf_viewer') : $tabUrl.$fragment; + $embedSrc = $tabUrl.$fragment; @endphp