refactor: extract templates from public/

- Created /templates for main site (header.php, footer.php)
- Created /templates/admin for admin section (head.php, footer.php)
- Removed /public/includes and /public/admin/inc
- Updated all references in code and docs
- Tests passing 

Cleaner separation: /public only contains web-accessible files (PHP entry points + assets)
This commit is contained in:
Théophile Gervreau-Mercier
2026-02-12 12:15:41 +01:00
parent 7fca85d1c1
commit 87971f9c23
15 changed files with 21 additions and 21 deletions

View File

@@ -57,7 +57,7 @@ function wasSelected($key, $value)
return $formData[$key] == $value;
}
?>
<?php require_once __DIR__ . "/inc/head.php"; ?>
<?php require_once APP_ROOT . '/templates/admin/head.php'; ?>
<main>
<?php if ($error): ?>
<div class="error-message">
@@ -260,4 +260,4 @@ function wasSelected($key, $value)
</form>
</main>
<?php require_once __DIR__ . "/inc/footer.php"; ?>
<?php require_once APP_ROOT . '/templates/admin/footer.php'; ?>

View File

@@ -173,7 +173,7 @@ try {
die("Erreur lors du chargement: " . $e->getMessage());
}
?>
<?php require_once __DIR__ . '/inc/head.php'; ?>
<?php require_once APP_ROOT . '/templates/admin/head.php'; ?>
<main>
<?php if ($error): ?>
@@ -318,4 +318,4 @@ try {
</form>
</main>
<?php require_once __DIR__ . '/inc/footer.php'; ?>
<?php require_once APP_ROOT . '/templates/admin/footer.php'; ?>

View File

@@ -277,7 +277,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['csv_file'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
?>
<?php require_once __DIR__ . '/inc/head.php'; ?>
<?php require_once APP_ROOT . '/templates/admin/head.php'; ?>
<main>
<h2>Importer des TFE depuis un fichier CSV</h2>
@@ -347,4 +347,4 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['csv_file'])) {
<p>Voir: <code>../db/Database_TFE_test.csv</code></p>
</main>
<?php require_once __DIR__ . "/inc/footer.php"; ?>
<?php require_once APP_ROOT . '/templates/admin/footer.php'; ?>

View File

@@ -1,6 +0,0 @@
<footer>
<p>Formulaire fait avec en PHP et <a href="https://watercss.kognise.dev/">Water.css</a>.</p>
</footer>
</body>
</html>

View File

@@ -1,71 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo htmlspecialchars($pageTitle ?? 'Admin'); ?> - Post-ERG</title>
<link rel="stylesheet" href="/assets/modern-normalize.min.css">
<link rel="stylesheet" href="/assets/admin.css">
<link rel="shortcut icon" href="/assets/admin_favicon.svg" type="image/svg+xml">
<?php if (php_sapi_name() === 'cli-server'): ?>
<!-- Live reload for development -->
<script>
(function poll() {
fetch('/live-reload.php')
.then(r => r.json())
.then(d => {
if (d.changed) location.reload();
else setTimeout(poll, 1000);
})
.catch(() => setTimeout(poll, 2000));
})();
</script>
<?php endif; ?>
</head>
<body>
<header>
<h1><?php echo htmlspecialchars($pageTitle ?? 'Admin'); ?></h1>
<nav>
<?php
// Detect current page
$currentPage = basename($_SERVER['PHP_SELF']);
$thesisId = $_GET['id'] ?? null;
// Build navigation based on context
$navLinks = [];
// Always show list
if ($currentPage !== 'index.php') {
$navLinks[] = '<a href="/admin/"><button>📋 Liste des TFE</button></a>';
}
// Show add thesis if not on add page
if ($currentPage !== 'add.php') {
$navLinks[] = '<a href="/admin/add.php"><button> Ajouter un TFE</button></a>';
}
// Show import if not on import page
if ($currentPage !== 'import.php') {
$navLinks[] = '<a href="/admin/import.php"><button>📥 Importer CSV</button></a>';
}
// If on edit or thanks page with thesis ID, show edit and view links
if ($thesisId && in_array($currentPage, ['edit.php', 'thanks.php'])) {
if ($currentPage !== 'edit.php') {
$navLinks[] = '<a href="/admin/edit.php?id=' . intval($thesisId) . '"><button>✏️ Modifier</button></a>';
}
if ($currentPage !== 'thanks.php') {
$navLinks[] = '<a href="/admin/thanks.php?id=' . intval($thesisId) . '"><button>👁️ Voir</button></a>';
}
}
echo implode(' ', $navLinks);
?>
<?php if (defined('ADMIN_PASSWORD_HASH')): ?>
<a href="/admin/logout.php"><button>🔐 Déconnexion</button></a>
<?php endif; ?>
</nav>
</header>

View File

@@ -77,7 +77,7 @@ try {
}
?>
<?php require_once __DIR__ . "/inc/head.php"; ?>
<?php require_once APP_ROOT . '/templates/admin/head.php'; ?>
<script>
function toggleAll(source) {
const checkboxes = document.querySelectorAll('input[name="selected_theses[]"]');
@@ -285,4 +285,4 @@ try {
<?php endif; ?>
</main>
<?php require_once __DIR__ . "/inc/footer.php"; ?>
<?php require_once APP_ROOT . '/templates/admin/footer.php'; ?>

View File

@@ -71,7 +71,7 @@ function formatFileSize($bytes) {
// Set page title for header
$pageTitle = "Merci";
?>
<?php require_once __DIR__ . '/inc/head.php'; ?>
<?php require_once APP_ROOT . '/templates/admin/head.php'; ?>
<main>
<?php if ($error): ?>
@@ -198,4 +198,4 @@ $pageTitle = "Merci";
<?php endif; ?>
</main>
<?php require_once __DIR__ . '/inc/footer.php'; ?>
<?php require_once APP_ROOT . '/templates/admin/footer.php'; ?>