74 lines
3.0 KiB
PHP
74 lines
3.0 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
require_once __DIR__ . '/includes/app.php';
|
|
|
|
$slug = trim((string) ($_GET['slug'] ?? ''));
|
|
$publication = publication_by_slug($slug);
|
|
$activePage = 'publications';
|
|
|
|
if (!$publication) {
|
|
http_response_code(404);
|
|
$pageTitle = 'Publication Not Found';
|
|
$pageDescription = 'The requested publication could not be found.';
|
|
} else {
|
|
$pageTitle = $publication['title'];
|
|
$pageDescription = $publication['summary'];
|
|
}
|
|
|
|
$relatedPublications = array_filter(publication_catalog(), static fn (array $item): bool => $publication ? $item['slug'] !== $publication['slug'] : true);
|
|
$relatedPublications = array_slice(array_values($relatedPublications), 0, 2);
|
|
|
|
require __DIR__ . '/includes/header.php';
|
|
?>
|
|
<section class="page-section pt-4 pt-lg-5">
|
|
<div class="container">
|
|
<?php if (!$publication): ?>
|
|
<div class="empty-panel">
|
|
<span class="signal-chip signal-chip--gold mb-3">404</span>
|
|
<h1 class="page-title">Publication unavailable</h1>
|
|
<p class="empty-copy">Return to the publication index to keep exploring the ecosystem editorial layer.</p>
|
|
<a class="btn btn-brand mt-3" href="publications.php">Back to publications</a>
|
|
</div>
|
|
<?php else: ?>
|
|
<article class="hero-shell">
|
|
<span class="section-kicker"><?= h($publication['category']) ?></span>
|
|
<h1 class="page-title"><?= h($publication['title']) ?></h1>
|
|
<div class="meta-row mb-4">
|
|
<span class="signal-chip"><?= h(format_date_label($publication['date'])) ?></span>
|
|
<span class="signal-chip signal-chip--accent">Publication detail</span>
|
|
</div>
|
|
<p class="lead-copy mb-0"><?= h($publication['summary']) ?></p>
|
|
</article>
|
|
|
|
<div class="row g-4 mt-1">
|
|
<div class="col-lg-8">
|
|
<div class="surface-card h-100 publication-body">
|
|
<?php foreach ($publication['body'] as $paragraph): ?>
|
|
<p class="card-copy mb-3"><?= h($paragraph) ?></p>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-4">
|
|
<div class="surface-card h-100">
|
|
<span class="section-kicker">Continue exploring</span>
|
|
<h2 class="section-title">Related reading</h2>
|
|
<div class="stack-list mt-3">
|
|
<?php foreach ($relatedPublications as $related): ?>
|
|
<div class="stack-item">
|
|
<div>
|
|
<span><?= h($related['title']) ?></span>
|
|
<small><?= h($related['summary']) ?></small>
|
|
</div>
|
|
<a class="button-link" href="<?= h(page_url('publication.php', ['slug' => $related['slug']])) ?>">Open</a>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php endif; ?>
|
|
</div>
|
|
</section>
|
|
<?php require __DIR__ . '/includes/footer.php'; ?>
|