<?php require_once '../includes/config.php'; require_once '../includes/auth.php'; require_once '../includes/stories.php'; // Vérification de l'authentification if (!Auth::check()) { header('Location: login.php'); exit; } $stories = Stories::getAll(); // Filtrer les histoires auxquelles l'utilisateur a accès if (!Auth::isAdmin()) { $stories = array_filter($stories, function($story) { return Auth::canAccessStory($story['id']); }); } // Obtenir la liste des utilisateurs pour la modale d'accès $users = Auth::getAllUsers(false); ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Administration</title> <?php if (file_exists(__DIR__ . '/../assets/images/site/favicon.png')): ?> <link rel="icon" type="image/png" href="../assets/images/site/favicon.png"> <?php endif; ?> <link rel="stylesheet" href="../assets/css/main.css"> <style> .version-banner { position: fixed; bottom: 0; left: 0; right: 0; padding: 8px; background-color: var(--bg-tertiary); color: var(--text-secondary); text-align: center; font-size: 0.8rem; border-top: 1px solid var(--border-color); z-index: 100; } </style> </head> <body> <nav class="admin-nav"> <div class="nav-brand"> <?php $config = Config::load(); if (!empty($config['site']['logo'])): ?> <img src="<?= htmlspecialchars('../' . $config['site']['logo']) ?>" alt="<?= htmlspecialchars($config['site']['name']) ?>"> <?php endif; ?> <span>Administration</span> </div> <div class="nav-menu"> <a href="../index.php" target="_blank" class="button tooltip" data-tooltip="Visiter le site"> <i class="fa-solid fa-house"></i> </a> <a href="profile.php" class="button tooltip" data-tooltip="Profil"> <i class="fas fa-user"></i> </a> <?php if (Auth::isAdmin() || Auth::hasAdminRole()): ?> <a href="users.php" class="button tooltip" data-tooltip="Utilisateurs"> <i class="fas fa-users"></i> </a> <?php endif; ?> <a href="story-edit.php" class="button tooltip" data-tooltip="Nouveau roman"> <i class="fa-solid fa-book"></i> </a> <a href="options.php" class="button tooltip" data-tooltip="Options"> <i class="fas fa-cog"></i> </a> <a href="export-import.php" class="button tooltip" data-tooltip="Import/Export"> <i class="fa-solid fa-upload"></i> </a> <form method="POST" action="logout.php" class="logout-form"> <button type="submit" class="tooltip" data-tooltip="Déconnexion"> <i class="fas fa-sign-out-alt"></i> </button> </form> </div> </nav> <main class="admin-main"> <h1>Gestion des romans</h1> <div class="stories-list"> <?php foreach ($stories as $story): ?> <div class="story-item"> <img src="<?= htmlspecialchars('../' . $story['cover']) ?>" alt="Couverture de <?= htmlspecialchars($story['title']) ?>" class="story-cover" loading="lazy"> <div class="story-info"> <h2><?= htmlspecialchars($story['title']) ?></h2> <p> <?= count($story['chapters'] ?? []) ?> chapitre<?= count($story['chapters'] ?? []) > 1 ? 's' : '' ?><br> Dernière modification : <?= htmlspecialchars(Stories::formatDate($story['updated'])) ?> </p> </div> <div class="story-actions"> <a href="story-edit.php?id=<?= htmlspecialchars($story['id']) ?>" class="button tooltip" data-tooltip="Modifier"> <i class="fas fa-edit"></i> </a> <?php if (Auth::isAdmin() || Auth::hasAdminRole()): ?> <button type="button" class="button tooltip manage-access" data-tooltip="Accès" data-id="<?= htmlspecialchars($story['id']) ?>"> <i class="fas fa-users-cog"></i> </button> <?php endif; ?> <button type="button" class="button tooltip delete-story" data-tooltip="Supprimer" data-id="<?= htmlspecialchars($story['id']) ?>"> <i class="fas fa-trash-alt"></i> </button> </div> </div> <?php endforeach; ?> </div> </main> <!-- Modale de gestion des accès --> <?php if (Auth::isAdmin() || Auth::hasAdminRole()): ?> <div id="accessModal" class="modal"> <div class="modal-content"> <div class="modal-header"> <h2>Gérer les accès</h2> <p id="modalStoryTitle"></p> </div> <div class="modal-body"> <p>Sélectionnez les utilisateurs qui auront accès à ce roman :</p> <div class="users-access-list"> <?php foreach ($users as $user): ?> <div class="user-access-item"> <label> <input type="checkbox" name="user_access[]" value="<?= htmlspecialchars($user['id']) ?>" <?= $user['isAdmin'] ? 'checked disabled' : '' ?>> <?= htmlspecialchars($user['id']) ?> <?php if ($user['role'] === 'admin'): ?> <span class="user-role-badge admin">Admin</span> <?php else: ?> <span class="user-role-badge editor">Éditeur</span> <?php endif; ?> </label> </div> <?php endforeach; ?> </div> </div> <div class="modal-footer"> <button type="button" class="button dark" id="cancelAccess"> <i class="fas fa-times"></i> <span class="button-text">Annuler</span> </button> <button type="button" class="button" id="saveAccess"> <i class="fas fa-save"></i> <span class="button-text">Enregistrer</span> </button> </div> </div> </div> <?php endif; ?> <script src="../assets/js/admin.js"></script> <link rel="stylesheet" href="../assets/css/dialog.css"> <script src="../assets/js/dialog.js"></script> <?php $version = file_exists(__DIR__ . '/../version.txt') ? trim(file_get_contents(__DIR__ . '/../version.txt')) : 'version inconnue'; ?> <div class="version-banner"> Lectures d'Esenjin - <a href="https://git.crystalyx.net/Esenjin_Asakha/Lectures" target="_blank" style="color: inherit; text-decoration: underline;">v.<?= htmlspecialchars($version) ?></a> </div> </body> </html>