index-main/site/templates/investigation-summary.php
isUnknown 1e6b241a98 Dynamiser template investigation-summary et nettoyer blueprint report
Dynamisation complète du template investigation-summary.php :
- Hero adaptatif (image simple, slider ou vidéo) selon heroType
- Lien automatique vers le rapport (sous-page de type report)
- Affichage dynamique des métadonnées (dates, lieu, conséquences, etc.)
- Section synthèse avec support KirbyText
- Section "en lien" avec enquêtes similaires (champ relatedInvestigations ou fallback sur les dernières enquêtes)
- Dates formatées en français via ICU

Nettoyage du blueprint report.yml :
- Suppression du champ indexTeam (remplacé par le champ team en tags)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-13 11:56:02 +01:00

285 lines
10 KiB
PHP

<?php snippet('header') ?>
<?php
// Récupérer le rapport (première page enfant de type report)
$report = $page->children()->filterBy('intendedTemplate', 'report')->first();
?>
<?php if ($page->heroType()->value() == 'image'): ?>
<?php if ($heroImage = $page->heroImages()->toFile()): ?>
<!-- HERO IMAGE SIMPLE -->
<div id="hero">
<figure>
<img src="<?= $heroImage->url() ?>" alt="<?= $page->title()->esc() ?>">
</figure>
<?php if ($heroImage->caption()->isNotEmpty()): ?>
<figcaption><?= $heroImage->caption() ?></figcaption>
<?php endif ?>
</div>
<?php endif ?>
<?php elseif ($page->heroType()->value() == 'slider'): ?>
<?php if ($heroImages = $page->heroImages()->toFiles()): ?>
<!-- HERO SLIDER -->
<div id="hero" class="hero-slider swiper">
<div class="swiper-wrapper">
<?php foreach ($heroImages as $image): ?>
<div class="swiper-slide">
<figure>
<img src="<?= $image->url() ?>" alt="<?= $page->title()->esc() ?>">
</figure>
<?php if ($image->caption()->isNotEmpty()): ?>
<figcaption><?= $image->caption() ?></figcaption>
<?php endif ?>
</div>
<?php endforeach ?>
</div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
<div class="swiper-pagination"></div>
</div>
<?php endif ?>
<?php elseif ($page->heroType()->value() == 'video'): ?>
<!-- HERO VIDEO -->
<div id="hero" class="hero-video">
<p class="page-title-small"><?= $page->title()->esc() ?></p>
<div class="player-container">
<?php if ($page->videoExtractUrl()->isNotEmpty()): ?>
<div class="extract">
<video class="vjs-tech" id="player-element_html5_api" tabindex="-1" loop="" muted="muted" playsinline="playsinline" autoplay="" src="<?= $page->videoExtractUrl() ?>"></video>
<button id="hero-play-video"><span class="btn--bold"><?= svg('assets/icons/play.svg') ?> <span class="text">play video</span></button>
</div>
<?php endif ?>
<?php if ($page->videoFullUrl()->isNotEmpty()): ?>
<div class="video-full">
<iframe rel="0" frameborder="0" allowfullscreen="" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" title="<?= $page->title()->esc() ?>" width="480" height="320" src="<?= $page->videoFullUrl() ?>"></iframe>
</div>
<?php endif ?>
</div>
</div>
<?php endif ?>
<header>
<p class="tag-inline">Enquête</p>
<h2 class="page-title"><?= $page->title()->esc() ?></h2>
<p class="date-publish"></p>
</header>
<div id="banner--page">
<nav id="nav--page">
<ul>
<li><a href="#section__short">Vidéo</a></li>
<li><a href="#section__synthese">Synthèse</a></li>
<li><a href="#section__impacts">Impacts</a></li>
<li><a href="#section__en-lien">En lien</a></li>
</ul>
</nav>
<div class="btn--group">
<?php if ($report): ?>
<button class="btn--bold"><a href="<?= $report->url() ?>">Lire le rapport</a></button>
<?php endif ?>
<label for="share-banner__desktop" class="btn--bold-inline no-link">Partager</label>
</div>
<input type="checkbox" id="share-banner__desktop">
<?php snippet('modal-share') ?>
</div>
<?php if ($page->chapo()->isNotEmpty()): ?>
<p class="section__article" id="section__short"><?= $page->chapo()->inline() ?></p>
<?php endif ?>
<dl class="section__article" id="section__dl">
<?php if ($page->incidentDate()->isNotEmpty()): ?>
<div class="dl__group">
<dt>Date de l'incident</dt>
<dd><time datetime="<?= $page->incidentDate()->toDate('yyyy-MM-dd') ?>"><?= $page->incidentDate()->toDate('d MMMM yyyy', 'fr_FR') ?></time></dd>
</div>
<?php endif ?>
<?php if ($page->incidentLocation()->isNotEmpty()): ?>
<div class="dl__group">
<dt>Lieu de l'incident</dt>
<dd><?= $page->incidentLocation()->esc() ?></dd>
</div>
<?php endif ?>
<?php if ($page->incidentConsequences()->isNotEmpty()): ?>
<div class="dl__group">
<dt>Conséquences</dt>
<dd><?= $page->incidentConsequences()->esc() ?></dd>
</div>
<?php endif ?>
<?php if ($keywords = $page->keywords()->split()): ?>
<?php if (count($keywords) > 0): ?>
<div class="dl__group dl__group__keywords">
<dt>Mots-clés</dt>
<dd>
<ul class="keywords">
<?php foreach ($keywords as $keyword): ?>
<li><a href="#"><?= esc($keyword) ?></a></li>
<?php endforeach ?>
</ul>
</dd>
</div>
<?php endif ?>
<?php endif ?>
<?php if ($methodology = $page->methodology()->split()): ?>
<?php if (count($methodology) > 0): ?>
<div class="dl__group">
<dt>Méthodologie</dt>
<dd>
<ul>
<?php foreach ($methodology as $method): ?>
<li><?= esc($method) ?></li>
<?php endforeach ?>
</ul>
</dd>
</div>
<?php endif ?>
<?php endif ?>
<?php if ($team = $page->team()->split()): ?>
<?php if (count($team) > 0): ?>
<div class="dl__group">
<dt>Équipe</dt>
<dd><?= implode(', ', array_map('esc', $team)) ?></dd>
</div>
<?php endif ?>
<?php endif ?>
<?php if ($partners = $page->partners()->toStructure()): ?>
<?php if ($partners->isNotEmpty()): ?>
<div class="dl__group">
<dt>Partenaire(s)</dt>
<dd>
<?php $partnerLinks = [] ?>
<?php foreach ($partners as $partner): ?>
<?php if ($partner->link()->isNotEmpty()): ?>
<?php $partnerLinks[] = '<a href="' . $partner->link() . '" target="_blank">' . $partner->name()->esc() . '</a>' ?>
<?php else: ?>
<?php $partnerLinks[] = $partner->name()->esc() ?>
<?php endif ?>
<?php endforeach ?>
<?= implode(', ', $partnerLinks) ?>
</dd>
</div>
<?php endif ?>
<?php endif ?>
<?php if ($page->created()->isNotEmpty()): ?>
<div class="dl__group">
<dt>Date de publication</dt>
<dd><time datetime="<?= $page->created()->toDate('yyyy-MM-dd') ?>"><?= $page->created()->toDate('d MMMM yyyy', 'fr_FR') ?></time></dd>
</div>
<?php endif ?>
</dl>
<?php if ($page->synthesis()->isNotEmpty()): ?>
<div class="section__article" id="section__synthese">
<h3 class="section__title">Synthèse</h3>
<?= $page->synthesis()->kt() ?>
</div>
<?php endif ?>
<div class="section__article" id="section__impacts">
<h3 class="section__title">Impacts</h3>
<!-- Contenu statique temporaire - sera dynamique quand les pages impacts seront créées -->
<div class="card--impact" data-impact-type="media">
<p class="tag">Médiatique</p>
<div class="content">
<p>12 articles et reprises</p>
<p>1.5M de vues cumulées</p>
</div>
<details class="open-graph__details">
<summary><p class="summary-inner">Détails <span class="arrow-details"><?= svg('assets/icons/arrow-details.svg') ?></span><p></summary>
<div class="open-graph__inner">
<?php snippet('card-open-graph') ?>
</div>
</details>
</div>
<div class="card--impact" data-impact-type="judiciaire">
<p class="tag">Judiciaire</p>
<p class="date">12 Dec 2025</p>
<div class="content">
<p >La justice israélienne déclare ouvrir une enquête sur "les circonstances de la mort de Nidal et Khaled Amirah".
</p>
</div>
</div>
<div class="card--impact" data-impact-type="judiciaire">
<p class="tag">Judiciaire</p>
<p class="date">12 Dec 2025</p>
<div class="content">
<p >La justice israélienne déclare ouvrir une enquête sur "les circonstances de la mort de Nidal et Khaled Amirah"
</p>
</div>
</div>
<div class="card--impact" data-impact-type="public">
<p class="tag">Judiciaire</p>
<p class="date">12 Dec 2025</p>
<div class="content">
<p>Index présente une série d'enquêtes récentes au Festival du Réel 2025. <a class="see-more" href="#">Voir plus</a>
</p>
</div>
</div>
</div>
<?php
// Récupérer les enquêtes en lien
$relatedInvestigations = $page->relatedInvestigations()->toPages();
if ($relatedInvestigations->isEmpty()) {
// Si pas d'enquêtes liées définies, prendre les 3 dernières enquêtes (sauf la page actuelle)
$relatedInvestigations = $page->parent()->children()->filterBy('intendedTemplate', 'investigation-summary')->not($page)->listed()->limit(3);
}
?>
<?php if ($relatedInvestigations->isNotEmpty()): ?>
<aside class="section__article" id="section__en-lien">
<h3 class="section__title">En lien</h3>
<?php foreach ($relatedInvestigations as $related): ?>
<article class="card--article-small">
<?php if ($cover = $related->cover()->toFile()): ?>
<figure>
<img src="<?= $cover->url() ?>" alt="<?= $related->title()->esc() ?>">
</figure>
<?php endif ?>
<div class="content">
<h4 class="title"><a href="<?= $related->url() ?>"><?= $related->title()->esc() ?></a></h4>
<?php if ($related->incidentDate()->isNotEmpty()): ?>
<time datetime="<?= $related->incidentDate()->toDate('yyyy-MM-dd') ?>"><?= $related->incidentDate()->toDate('d MMMM yyyy', 'fr_FR') ?></time>
<?php endif ?>
<?php if ($relatedKeywords = $related->keywords()->split()): ?>
<?php if (count($relatedKeywords) > 0): ?>
<ul class="keywords">
<?php foreach ($relatedKeywords as $keyword): ?>
<li><a href="#"><?= esc($keyword) ?></a></li>
<?php endforeach ?>
</ul>
<?php endif ?>
<?php endif ?>
</div>
<a class="link-block" href="<?= $related->url() ?>"></a>
</article>
<?php endforeach ?>
</aside>
<?php endif ?>
<?php snippet('footer') ?>