mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-05-06 19:19:19 +02:00
feat: licence page, admin pages editor, license types, gradient card placeholders, latest-year home view
- Feature 1: public /licence.php fetches 'licenses' page from DB, renders Markdown - Feature 1: nav.php adds 'Licence' link with active state - Feature 2: Database::getPage(), savePage(), getAllPages() methods - Feature 2: bundled src/Parsedown.php (MIT, zero-dependency) - Feature 2: apropos.php now renders 'about' page content from DB via Parsedown - Feature 2: admin/pages.php (list) + admin/pages-edit.php (EasyMDE editor) - Feature 2: admin/actions/page.php (auth+CSRF+validation+save) - Feature 2: admin/head.php adds 'Pages statiques' nav link - Feature 3: storage/schema.sql seeds 8 CC license types - Feature 3: storage/migrations/003_seed_license_types.sql (applied to live DB) - Feature 3: Database::getLicenseTypes() / getAllLicenseTypes() - Feature 3: admin/add.php + formulaire.php: license_id field on add form - Feature 3: admin/edit.php: license_id field on edit form with raw FK lookup - Feature 3: tfe.php: shows 'Licence :' meta row when non-null - Feature 6: main.css: .card__media--gradient styles - Feature 6: index.php: deterministic HSL gradient placeholder cards - Feature 6: Database::getLatestYearTheses() + getLatestPublishedYear() - Feature 6: index.php default home = random latest-year theses with info label
This commit is contained in:
@@ -36,6 +36,8 @@ try {
|
||||
$db->beginTransaction();
|
||||
|
||||
// Update thesis basic info
|
||||
$editLicenseId = filter_var($_POST['license_id'] ?? '', FILTER_VALIDATE_INT) ?: null;
|
||||
|
||||
$stmt = $pdo->prepare("
|
||||
UPDATE theses SET
|
||||
title = ?,
|
||||
@@ -47,6 +49,7 @@ try {
|
||||
synopsis = ?,
|
||||
file_size_info = ?,
|
||||
baiu_link = ?,
|
||||
license_id = ?,
|
||||
is_published = ?,
|
||||
updated_at = CURRENT_TIMESTAMP
|
||||
WHERE id = ?
|
||||
@@ -62,6 +65,7 @@ try {
|
||||
trim($_POST['synopsis']),
|
||||
!empty($_POST['duration_info']) ? trim($_POST['duration_info']) : null,
|
||||
!empty($_POST['lien']) ? trim($_POST['lien']) : null,
|
||||
$editLicenseId,
|
||||
isset($_POST['is_published']) ? 1 : 0,
|
||||
$thesisId
|
||||
]);
|
||||
@@ -164,7 +168,13 @@ try {
|
||||
$finalityTypes = $db->getAllFinalityTypes();
|
||||
$languages = $db->getAllLanguages();
|
||||
$formatTypes = $db->getAllFormatTypes();
|
||||
|
||||
$licenseTypes = $db->getAllLicenseTypes();
|
||||
|
||||
// Fetch raw license_id FK (view only exposes license_type name string)
|
||||
$licenseStmt = $pdo->prepare("SELECT license_id FROM theses WHERE id = ?");
|
||||
$licenseStmt->execute([$thesisId]);
|
||||
$currentLicenseId = $licenseStmt->fetchColumn();
|
||||
|
||||
// Set page title for header
|
||||
$pageTitle = "Éditer TFE - " . htmlspecialchars($thesis['title']);
|
||||
|
||||
@@ -247,6 +257,19 @@ try {
|
||||
value="<?= htmlspecialchars($thesis['supervisors'] ?? '') ?>">
|
||||
</div>
|
||||
|
||||
<div class="admin-form-row">
|
||||
<label class="admin-label" for="license_id">Licence :</label>
|
||||
<select class="admin-select" id="license_id" name="license_id">
|
||||
<option value="">— Inconnue —</option>
|
||||
<?php foreach ($licenseTypes as $lt): ?>
|
||||
<option value="<?= $lt['id'] ?>"
|
||||
<?= ($currentLicenseId == $lt['id']) ? 'selected' : '' ?>>
|
||||
<?= htmlspecialchars($lt['name']) ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="admin-form-row">
|
||||
<label class="admin-label" for="titre">Titre :</label>
|
||||
<input class="admin-input" type="text" id="titre" name="titre"
|
||||
|
||||
Reference in New Issue
Block a user