Compare commits
2 commits
d9409e689a
...
02e4cc71a6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
02e4cc71a6 | ||
|
|
32b20a9305 |
7 changed files with 140 additions and 3 deletions
|
|
@ -3,7 +3,9 @@
|
|||
"allow": [
|
||||
"Bash(git add:*)",
|
||||
"Bash(git commit:*)",
|
||||
"Bash(cat:*)"
|
||||
"Bash(cat:*)",
|
||||
"Bash(curl:*)",
|
||||
"Bash(php -l:*)"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
|
|
|
|||
8
.gitignore
vendored
8
.gitignore
vendored
|
|
@ -60,5 +60,11 @@ Icon
|
|||
/vendor/*
|
||||
|
||||
# Local
|
||||
# ---------------
|
||||
local/
|
||||
/local/*
|
||||
/local/*
|
||||
|
||||
# Claude config
|
||||
# ---------------
|
||||
.claude/
|
||||
/.claude/*
|
||||
0
site/cache/index.html
vendored
0
site/cache/index.html
vendored
|
|
@ -30,5 +30,53 @@ return [
|
|||
'campaign_slug' => 'soutenir-index-en-2024',
|
||||
'campaign_url' => 'https://donorbox.org/soutenir-index-en-2024',
|
||||
'api_base_url' => 'https://donorbox.org/api/v1'
|
||||
],
|
||||
|
||||
'routes' => [
|
||||
// Route pour /enquetes/:slug/resume - Page virtuelle résumé
|
||||
[
|
||||
'pattern' => 'enquetes/(:any)/resume',
|
||||
'action' => function($slug) {
|
||||
$parent = page('enquetes/' . $slug);
|
||||
if (!$parent) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($parent->intendedTemplate()->name() !== 'investigation') {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Créer une page virtuelle avec le template investigation-summary
|
||||
return Page::factory([
|
||||
'slug' => 'resume',
|
||||
'template' => 'investigation-summary',
|
||||
'parent' => $parent,
|
||||
'content' => $parent->content()->toArray()
|
||||
]);
|
||||
}
|
||||
],
|
||||
|
||||
// Route pour /enquetes/:slug/detail - Page virtuelle détail
|
||||
[
|
||||
'pattern' => 'enquetes/(:any)/detail',
|
||||
'action' => function($slug) {
|
||||
$parent = page('enquetes/' . $slug);
|
||||
if (!$parent) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($parent->intendedTemplate()->name() !== 'investigation') {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Créer une page virtuelle avec le template investigation
|
||||
return Page::factory([
|
||||
'slug' => 'detail',
|
||||
'template' => 'investigation',
|
||||
'parent' => $parent,
|
||||
'content' => $parent->content()->toArray()
|
||||
]);
|
||||
}
|
||||
]
|
||||
]
|
||||
];
|
||||
62
site/config/routes/investigations.php
Normal file
62
site/config/routes/investigations.php
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Routes pour les enquêtes (investigations)
|
||||
*
|
||||
* Structure des URLs :
|
||||
* - /enquetes/:slug → redirige vers /enquetes/:slug/resume (géré par le controller)
|
||||
* - /enquetes/:slug/resume → affiche le résumé (template investigation-summary)
|
||||
* - /enquetes/:slug/detail → affiche l'enquête complète (template investigation)
|
||||
*
|
||||
* Note : La redirection de /enquetes/:slug vers /resume est gérée par le controller
|
||||
* investigation.php, pas par une route, car les routes ne peuvent pas intercepter
|
||||
* les pages existantes.
|
||||
*/
|
||||
|
||||
return [
|
||||
// Route pour /enquetes/:slug/resume - Page virtuelle résumé
|
||||
[
|
||||
'pattern' => 'enquetes/(:any)/resume',
|
||||
'action' => function($slug) {
|
||||
$parent = page('enquetes/' . $slug);
|
||||
if (!$parent) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($parent->intendedTemplate()->name() !== 'investigation') {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Créer une page virtuelle avec le template investigation-summary
|
||||
return Page::factory([
|
||||
'slug' => 'resume',
|
||||
'template' => 'investigation-summary',
|
||||
'parent' => $parent,
|
||||
'content' => $parent->content()->toArray()
|
||||
]);
|
||||
}
|
||||
],
|
||||
|
||||
// Route pour /enquetes/:slug/detail - Page virtuelle détail
|
||||
[
|
||||
'pattern' => 'enquetes/(:any)/detail',
|
||||
'action' => function($slug) {
|
||||
$parent = page('enquetes/' . $slug);
|
||||
if (!$parent) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($parent->intendedTemplate()->name() !== 'investigation') {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Créer une page virtuelle avec le template investigation
|
||||
return Page::factory([
|
||||
'slug' => 'detail',
|
||||
'template' => 'investigation',
|
||||
'parent' => $parent,
|
||||
'content' => $parent->content()->toArray()
|
||||
]);
|
||||
}
|
||||
]
|
||||
];
|
||||
19
site/controllers/investigation.php
Normal file
19
site/controllers/investigation.php
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Controller pour le template investigation
|
||||
* Redirige automatiquement vers la page /resume
|
||||
* SAUF si c'est une page virtuelle (resume/detail)
|
||||
*/
|
||||
|
||||
return function ($page) {
|
||||
// Ne rediriger que si c'est la page "réelle" (pas une page virtuelle)
|
||||
// Les pages virtuelles ont un slug 'resume' ou 'detail'
|
||||
if ($page->slug() !== 'resume' && $page->slug() !== 'detail') {
|
||||
// Redirection 301 vers la page résumé
|
||||
go($page->url() . '/resume', 301);
|
||||
}
|
||||
|
||||
// Si c'est une page virtuelle, laisser le template s'afficher normalement
|
||||
return compact('page');
|
||||
};
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
</nav>
|
||||
|
||||
<div class="btn--group">
|
||||
<button class="btn--bold"><a href="#">Lire le rapport</a></button>
|
||||
<button class="btn--bold"><a href="<?= $page->parent()->url() ?>/detail">Lire le rapport</a></button>
|
||||
<label for="share-banner__desktop" class="btn--bold-inline no-link">Partager</label>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue