Brouillon'; } if (strtotime((string)($a['published_at'] ?? '')) > $now) { return 'Avant-première'; } return 'Publié'; } ?>

Administration

+ Nouvel article
'Publiés', 'value' => $adminData['published'], 'color' => 'success'], ['label' => 'Avant-premières', 'value' => $adminData['previews'], 'color' => 'warning'], ['label' => 'Brouillons', 'value' => $adminData['drafts'], 'color' => 'secondary'], ['label' => 'Total', 'value' => $adminData['total'], 'color' => 'primary'], ]; foreach ($stats as $s): ?>
adminNotices() : []; $_branch = isset($_updateChecker) ? $_updateChecker->getBranch() : 'main'; $_lastChecked = isset($_updateChecker) ? $_updateChecker->getLastChecked() : null; $_upgradeLog = isset($_updateChecker) ? $_updateChecker->getLastUpgradeLog() : null; $_repoConfigured = folioRepoUrl() !== ''; $_remoteLabel = '—'; foreach ($_notices as $_n) { if ($_n['type'] === 'info' && preg_match('/v([\d]+\.[\d]+\.[\d]+)/', $_n['message'], $_m)) { $_remoteLabel = $_m[1]; } } ?>
Moteur Folio
Version déployée
Dernière version disponible
(FOLIO_REPO_URL non configuré)
Branche suivie · vérifié le ' . date('d/m/Y à H:i', $_lastChecked) . '' : '' ?>
Moteur mis à jour avec succès.
Erreur lors de la mise à jour.
Journal
Dernière mise à jour
Activité récente
Titre Auteur Statut Modifié le
$adminData['filter_author'] ?? '', 'filter_category' => $adminData['filter_category'] ?? '', 'filter_status' => $adminData['filter_status'] ?? '', 'filter_search' => $adminData['filter_search'] ?? '', 'filter_featured' => $adminData['filter_featured'] ?? '', ], fn ($v) => $v !== ''); $p['sort'] = $col; $p['dir'] = $dir; return '/admin/articles?' . http_build_query($p); }; $_sortIcon = function (string $col) use ($_sortBy, $_sortDir): string { if ($_sortBy !== $col) { return ''; } return '' . ($_sortDir === 'asc' ? '↑' : '↓') . ''; }; ?>
Réinitialiser
résultat(s)

Aucun article.

Titre Auteur Catégorie Statut Date
$adminData['filter_author'] ?? '', 'filter_category' => $adminData['filter_category'] ?? '', 'filter_status' => $adminData['filter_status'] ?? '', 'filter_search' => $adminData['filter_search'] ?? '', 'filter_featured' => $adminData['filter_featured'] ?? '', 'sort' => $_sortBy, 'dir' => $_sortDir], fn ($v) => $v !== '')); ?> Modifier
Impossible de retirer le rôle Administrateur : il doit rester au moins un administrateur.
Attribuer un rôle

Aucun utilisateur.

Email Statut Rôles
Pré-inscrit Actif Inactif
!in_array($r['name'], $currentRoleNames, true)); ?>

Aucun rôle défini.

Rôle Utilisateurs
KNOWN_CAPABILITIES[$c] ?? $c, $r['capabilities'] ); echo htmlspecialchars(implode(', ', $capLabels) ?: '–'); ?>
Toutes les permissions
Éditer
Nouveau rôle
Paramètres enregistrés.
Impossible d'enregistrer : le fichier n'est pas accessible en écriture.
Paramètres du site
Affiché dans la barre de navigation et les onglets.
Affiché sous le titre dans la navbar et dans le pied de page.
Format BCP 47 (ex : fr, fr-FR). Utilisé dans <html lang>, og:locale, RSS et JSON-LD.
Affiché dans le footer.
Configuration Folio enregistrée.
Impossible d'enregistrer.
Mises à jour du moteur
Sans slash final. Laissez vide pour utiliser FOLIO_REPO_URL du .env.
Catégories existantes

Aucune catégorie définie.

$_count): $_gradient = coverGradient($_cat, $_cats); ?>
article 1 ? 's' : '' ?>
Prochaine couleur

La prochaine catégorie reçoit la couleur n°.

$_rgb): $_g = _paletteGradient($_rgb, 0); $_active = $_i === $_nextIdx; ?>

Types de tags

Aucun type de tag défini.

$_label): ?>
Nouveau type
Minuscules, chiffres, _
Paramètres SMTP enregistrés.
Impossible d'enregistrer : le fichier n'est pas accessible en écriture.
Configuration SMTP
Laisser vide pour conserver le mot de passe actuel.
✓ Succès ✗ Échec
0, 'sent' => 0, 'error' => 0, 'queued' => 0]; $emlFilters = [ '' => ['label' => 'Tous', 'count' => $emlCounts['all']], 'sent' => ['label' => 'Envoyés', 'count' => $emlCounts['sent']], 'error' => ['label' => 'Erreurs', 'count' => $emlCounts['error']], 'queued' => ['label' => 'En file', 'count' => $emlCounts['queued']], ]; ?>
Logs emails
$fInfo): ?>

Aucun email enregistré.

Envoyé' . ($emSentAt ? ' ' . $emSentAt : '') . ''; } elseif ($em['status'] === 'error') { $emBadge = 'Erreur'; } else { $emBadge = 'En file'; } ?>
Date Destinataire Sujet Statut Contenu
Voir ↗ ⚠ Erreur
0 || count($adminData['emails']) === 50): ?> 0, 'pending' => 0, 'verified' => 0, 'hidden' => 0]; $cmtFilters = [ '' => ['label' => 'Tous', 'count' => $cmtCounts['all']], 'pending' => ['label' => 'En attente', 'count' => $cmtCounts['pending']], 'verified' => ['label' => 'Vérifiés', 'count' => $cmtCounts['verified']], 'hidden' => ['label' => 'Masqués', 'count' => $cmtCounts['hidden']], ]; ?>
Commentaires
$fInfo): ?>

Aucun commentaire pour ce filtre.

Envoyé'; } elseif ($mailStatus === 'error') { $mailBadge = 'Erreur'; } elseif ($mailStatus === 'queued') { $mailBadge = 'En file'; } else { $mailBadge = '-'; } ?>
Article Auteur Commentaire Date Email Statut

Code :
En attente Vérifié Publié Masqué
Configuration enregistrée.
Impossible d'enregistrer : le fichier n'est pas accessible en écriture.
Configuration des logs
Pattern glob dans /var/log/apache2/. Les rotations (.gz, .tar.gz) sont automatiquement incluses.
Termes recherchés
Derniers jours · cache 10 min
Les logs Apache ne sont pas lisibles par PHP. Vérifiez que www-data appartient au groupe adm.

Aucune recherche trouvée dans les logs.

$count): ?>
# Terme recherché Visiteurs
Livre supprimé.
Livres
+ Nouveau

Aucun livre pour l'instant.

Modifier le livre
Livre sauvegardé.
Le slug ne peut pas être modifié après création.
Un slug par ligne. L'ordre définit la navigation précédent/suivant.
Voir le livre ↗

Nouveau livre
Minuscules, chiffres, tirets — basé sur le titre.
Annuler

Sélectionnez un livre à gauche pour le modifier, ou créez-en un nouveau. Cliquez sur + Nouveau pour créer votre premier livre.