feat: roles, permissions, grille full-width, SSO display name
- Admin/roles : tableau des roles avec edition par role (/admin/role/<nom>) - Permissions par role : cases a cocher groupees (Articles, Acces & lecture) - Nouvelles capacites : propose/validate/publish articles (own/all), view_previews - Nom technique auto-genere depuis le label (JS + fallback serveur) - Blocage suppression du dernier administrateur - user_capabilities table ajoutee en DB - Navbar : dropdown unique (nom + Mon identite + Administration + Deconnexion) - SSO callback : preserve le nom personnalise, ne l ecrase plus a la connexion - Grille articles : CSS Grid auto-fill full-width, hauteur uniforme par ligne - CSP : add_files.js et post_confirm.js externalises
This commit is contained in:
@@ -5,7 +5,7 @@ $Parsedown = new Parsedown();
|
||||
ob_start();
|
||||
?>
|
||||
|
||||
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
|
||||
<div class="post-grid">
|
||||
<?php foreach ($posts as $i => $post): ?>
|
||||
<?php
|
||||
$html = $Parsedown->text($post['content']);
|
||||
@@ -19,8 +19,7 @@ ob_start();
|
||||
$isPrivate = $postCat !== '' && in_array($postCat, $privateCats ?? [], true);
|
||||
$isLocked = $isAvantPremiere;
|
||||
?>
|
||||
<div class="col">
|
||||
<article class="card h-100">
|
||||
<article class="card">
|
||||
<?php if ($isDraft): ?>
|
||||
<div class="draft-ribbon">Brouillon</div>
|
||||
<?php elseif ($isAvantPremiere): ?>
|
||||
@@ -67,8 +66,7 @@ ob_start();
|
||||
<?php if (!$isLocked): ?>
|
||||
<a href="<?= htmlspecialchars($postUrl) ?>" class="stretched-link"></a>
|
||||
<?php endif; ?>
|
||||
</article>
|
||||
</div>
|
||||
</article>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
|
||||
@@ -124,4 +122,5 @@ if (empty($cursor) && $filterCat === '') {
|
||||
], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
$mainClass = 'container-fluid';
|
||||
include __DIR__ . '/layout.php';
|
||||
|
||||
Reference in New Issue
Block a user