mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-05-07 03:29:19 +02:00
admin/thanks.php:
- <div style="margin-top:1.5rem;display:flex;gap:.75rem;flex-wrap:wrap;"> → class="admin-action-bar"
- <p style="color:var(--text-secondary);"> → class="admin-muted"
admin/pages.php:
- Éditer button style="font-size:.8rem;padding:.3rem .75rem;" → class="admin-btn admin-btn--sm"
admin.css (Thesis info sections block):
- Added .admin-action-bar { margin-top:1.5rem; display:flex; gap:0.75rem; flex-wrap:wrap }
- Added .admin-muted { color: var(--text-secondary) }
The only remaining inline style in any admin PHP file is the dynamic
--disk-pct/--disk-color custom properties on the disk bar in system.php,
which carry PHP runtime values and cannot be moved to static CSS.
154 lines
5.8 KiB
PHP
154 lines
5.8 KiB
PHP
<?php
|
||
// Bootstrap application
|
||
require_once __DIR__ . "/../../config/bootstrap.php";
|
||
require_once __DIR__ . '/../../src/AdminAuth.php';
|
||
|
||
// PHP-level auth guard (defence-in-depth behind nginx Basic Auth)
|
||
AdminAuth::requireLogin();
|
||
|
||
// Configure error reporting
|
||
ini_set('display_errors', 0);
|
||
ini_set('log_errors', 1);
|
||
ini_set('error_log', 'error.log');
|
||
|
||
require_once __DIR__ . '/../../src/Database.php';
|
||
|
||
// Security: Validate thesis ID parameter
|
||
$thesisId = null;
|
||
$thesis = null;
|
||
$files = [];
|
||
$error = null;
|
||
|
||
if (isset($_GET['id'])) {
|
||
$thesisId = filter_var($_GET['id'], FILTER_VALIDATE_INT);
|
||
|
||
if ($thesisId !== false && $thesisId > 0) {
|
||
try {
|
||
$db = new Database();
|
||
|
||
// Get thesis data
|
||
$thesis = $db->getThesis($thesisId);
|
||
|
||
if (!$thesis) {
|
||
$error = "TFE non trouvé.";
|
||
} else {
|
||
$files = $db->getThesisFiles($thesisId);
|
||
}
|
||
} catch (Exception $e) {
|
||
error_log("Error loading thesis: " . $e->getMessage());
|
||
$error = "Erreur lors de la lecture des données.";
|
||
}
|
||
} else {
|
||
error_log("Invalid thesis ID: " . $_GET['id']);
|
||
$error = "Identifiant invalide.";
|
||
}
|
||
} else {
|
||
$error = "Aucun identifiant spécifié.";
|
||
}
|
||
|
||
// Helper function to format file size
|
||
function formatFileSize($bytes) {
|
||
if ($bytes >= 1073741824) {
|
||
return number_format($bytes / 1073741824, 2) . ' GB';
|
||
} elseif ($bytes >= 1048576) {
|
||
return number_format($bytes / 1048576, 2) . ' MB';
|
||
} elseif ($bytes >= 1024) {
|
||
return number_format($bytes / 1024, 2) . ' KB';
|
||
} else {
|
||
return $bytes . ' bytes';
|
||
}
|
||
}
|
||
|
||
// Set page title for header
|
||
$pageTitle = "Récapitulatif TFE";
|
||
?>
|
||
<?php $isAdmin = true; $bodyClass = 'admin-body'; require_once APP_ROOT . '/templates/head.php'; ?>
|
||
<?php include APP_ROOT . '/templates/header.php'; ?>
|
||
|
||
<main id="main-content">
|
||
<h1>Récapitulatif TFE</h1>
|
||
|
||
<?php if ($error): ?>
|
||
<p role="alert" data-type="error">⚠ <?= htmlspecialchars($error) ?></p>
|
||
<p><a href="/admin/add.php" class="admin-btn-secondary">Retour au formulaire</a></p>
|
||
|
||
<?php elseif ($thesis): ?>
|
||
<section>
|
||
<h2>Informations de base</h2>
|
||
<dl>
|
||
<dt>Identifiant</dt><dd><?= htmlspecialchars($thesis['identifier']) ?></dd>
|
||
<dt>Titre</dt><dd><?= htmlspecialchars($thesis['title']) ?></dd>
|
||
<?php if ($thesis['subtitle']): ?>
|
||
<dt>Sous-titre</dt><dd><?= htmlspecialchars($thesis['subtitle']) ?></dd>
|
||
<?php endif; ?>
|
||
<dt>Auteur·ice(s)</dt><dd><?= htmlspecialchars($thesis['authors']) ?></dd>
|
||
<dt>Année</dt><dd><?= htmlspecialchars($thesis['year']) ?></dd>
|
||
</dl>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Détails académiques</h2>
|
||
<dl>
|
||
<dt>Orientation</dt><dd><?= htmlspecialchars($thesis['orientation'] ?? '–') ?></dd>
|
||
<dt>Atelier pratique</dt><dd><?= htmlspecialchars($thesis['ap_program'] ?? '–') ?></dd>
|
||
<dt>Finalité</dt><dd><?= htmlspecialchars($thesis['finality_type'] ?? '–') ?></dd>
|
||
<?php if ($thesis['supervisors']): ?>
|
||
<dt>Promoteur·ice(s)</dt><dd><?= htmlspecialchars($thesis['supervisors']) ?></dd>
|
||
<?php endif; ?>
|
||
</dl>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Contenu</h2>
|
||
<dl>
|
||
<?php if ($thesis['languages']): ?>
|
||
<dt>Langue(s)</dt><dd><?= htmlspecialchars($thesis['languages']) ?></dd>
|
||
<?php endif; ?>
|
||
<?php if ($thesis['formats']): ?>
|
||
<dt>Format(s)</dt><dd><?= htmlspecialchars($thesis['formats']) ?></dd>
|
||
<?php endif; ?>
|
||
<?php if ($thesis['keywords']): ?>
|
||
<dt>Mots-clés</dt><dd><?= htmlspecialchars($thesis['keywords']) ?></dd>
|
||
<?php endif; ?>
|
||
<?php if ($thesis['file_size_info']): ?>
|
||
<dt>Durée / Taille</dt><dd><?= htmlspecialchars($thesis['file_size_info']) ?></dd>
|
||
<?php endif; ?>
|
||
<?php if ($thesis['baiu_link']): ?>
|
||
<dt>Lien</dt><dd><a href="<?= htmlspecialchars($thesis['baiu_link']) ?>" target="_blank" rel="noopener"><?= htmlspecialchars($thesis['baiu_link']) ?></a></dd>
|
||
<?php endif; ?>
|
||
</dl>
|
||
</section>
|
||
|
||
<?php if (!empty($files)): ?>
|
||
<section>
|
||
<h2>Fichiers</h2>
|
||
<table>
|
||
<thead><tr><th scope="col">Type</th><th scope="col">Fichier</th><th scope="col">Taille</th><th scope="col">Date</th></tr></thead>
|
||
<tbody>
|
||
<?php foreach ($files as $f): ?>
|
||
<tr>
|
||
<td><?= htmlspecialchars($f['file_type']) ?></td>
|
||
<td><?= htmlspecialchars($f['file_name']) ?></td>
|
||
<td><?= formatFileSize($f['file_size']) ?></td>
|
||
<td><?= date('d/m/Y H:i', strtotime($f['uploaded_at'])) ?></td>
|
||
</tr>
|
||
<?php endforeach; ?>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
<?php endif; ?>
|
||
|
||
<div class="admin-action-bar">
|
||
<a href="/admin/edit.php?id=<?= $thesisId ?>" class="admin-btn">Modifier</a>
|
||
<a href="/admin/add.php" class="admin-btn-secondary">Ajouter un autre TFE</a>
|
||
<a href="/admin/" class="admin-btn-secondary">Retour à la liste</a>
|
||
</div>
|
||
|
||
<?php else: ?>
|
||
<p class="admin-muted">Aucune donnée à afficher.</p>
|
||
<p><a href="/admin/add.php" class="admin-btn-secondary">Retour au formulaire</a></p>
|
||
<?php endif; ?>
|
||
</main>
|
||
|
||
<?php require_once APP_ROOT . '/templates/admin/footer.php'; ?>
|