mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-06-25 16:19:19 +02:00
merge banners into covers: remove banner field, migrate files, add covers to search/home/repertoire cards
This commit is contained in:
@@ -83,9 +83,8 @@
|
||||
|
||||
// Files: edit mode
|
||||
$filesMode = 'edit';
|
||||
$currentCover = $currentCover ?? null;
|
||||
$currentFiles = $currentFiles ?? [];
|
||||
$currentBannerPath = $thesis['banner_path'] ?? null;
|
||||
$currentCover = $currentCover ?? null;
|
||||
$currentFiles = $currentFiles ?? [];
|
||||
$currentContextNote = $currentContextNote ?? null;
|
||||
|
||||
// Website URL from existing files
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* Shared partial — "Fichiers" fieldset (add / student submission mode).
|
||||
*
|
||||
* Order per spec:
|
||||
* 1. Image de bannière (optionnel)
|
||||
* 1. Image de couverture (optionnel)
|
||||
* 2. Note d'intention (obligatoire)
|
||||
* 3. TFE (obligatoire)
|
||||
* 4. Annexes éventuelles (optionnel)
|
||||
@@ -15,10 +15,10 @@
|
||||
<legend>Fichiers</legend>
|
||||
|
||||
<?php
|
||||
$name = 'banner';
|
||||
$label = 'Image de bannière (optionnel) :';
|
||||
$name = 'couverture';
|
||||
$label = 'Image de couverture (optionnel) :';
|
||||
$accept = 'image/jpeg,image/png,image/webp';
|
||||
$hint = 'JPG, PNG ou WEBP. Format paysage recommandé (4:1). Max 20 MB.';
|
||||
$hint = 'JPG, PNG ou WEBP. Format 4:3 recommandé. Max 20 MB.';
|
||||
include APP_ROOT . '/templates/partials/form/file-field.php';
|
||||
?>
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
* bool $showContact — Contact checkbox fieldset
|
||||
* bool $showCoverPreview — cover image preview + remove checkbox
|
||||
* bool $showExistingFiles — existing thesis files list (sortable, deletable)
|
||||
* bool $showBannerPreview — banner image preview + remove checkbox
|
||||
* bool $showContextNote — Note contextuelle fieldset
|
||||
* bool $showBackoffice — Backoffice fieldset (jury_points, remarks, contact_interne, exemplaires)
|
||||
* bool $showEmailConfirmation — E-mail de confirmation fieldset
|
||||
@@ -44,7 +43,6 @@
|
||||
* string $filesMode — 'add' | 'edit' (determines which file inputs to show)
|
||||
* ?string $currentCover — existing cover file info for edit mode
|
||||
* array $currentFiles — existing thesis files for edit mode
|
||||
* ?string $currentBannerPath — existing banner path for edit mode
|
||||
* ?string $currentContextNote — existing context note for edit mode
|
||||
* array $currentRaw — raw thesis row for edit mode
|
||||
* ?string $currentAuthorShowContact — author show_contact flag for edit mode
|
||||
@@ -84,7 +82,7 @@ $showFlash = $showFlash ?? false;
|
||||
$showContact = $showContact ?? false;
|
||||
$showCoverPreview = $showCoverPreview ?? false;
|
||||
$showExistingFiles = $showExistingFiles ?? false;
|
||||
$showBannerPreview = $showBannerPreview ?? false;
|
||||
$showBannerPreview = false; // Banners merged into covers — field removed
|
||||
$showContextNote = $showContextNote ?? false;
|
||||
$showBackoffice = $showBackoffice ?? false;
|
||||
$showEmailConfirmation = $showEmailConfirmation ?? false;
|
||||
@@ -249,11 +247,11 @@ $checkedFormatsForSiteWeb = $checkedFormatsForSiteWeb ?? [];
|
||||
</label>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<input type="file" id="couverture" name="couverture" accept="image/jpeg,image/png" data-preview="fp-couverture">
|
||||
<input type="file" id="couverture" name="couverture" accept="image/jpeg,image/png,image/webp" data-preview="fp-couverture">
|
||||
<div id="fp-couverture" class="file-preview-list" aria-live="polite"></div>
|
||||
<small><?= empty($currentCover)
|
||||
? "JPG, PNG. Format 4:3 recommandé. Max 20 MB."
|
||||
: "Laisser vide pour conserver la couverture actuelle. JPG, PNG. Max 20 MB." ?></small>
|
||||
? "JPG, PNG ou WEBP. Format 4:3 recommandé. Max 20 MB."
|
||||
: "Laisser vide pour conserver la couverture actuelle. JPG, PNG ou WEBP. Max 20 MB." ?></small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -377,27 +375,7 @@ $checkedFormatsForSiteWeb = $checkedFormatsForSiteWeb ?? [];
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Banner image -->
|
||||
<div class="admin-form-group">
|
||||
<label>Image bannière (accueil) :</label>
|
||||
<div class="admin-file-input">
|
||||
<?php if (!empty($currentBannerPath)): ?>
|
||||
<div class="admin-banner-preview">
|
||||
<img src="/media.php?path=<?= urlencode(
|
||||
$currentBannerPath,
|
||||
) ?>" alt="Bannière actuelle">
|
||||
<label class="admin-checkbox-label">
|
||||
<input type="checkbox" name="remove_banner" value="1"> Supprimer la bannière
|
||||
</label>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<input type="file" name="banner" id="banner" accept="image/jpeg,image/png,image/webp" data-preview="fp-banner">
|
||||
<div id="fp-banner" class="file-preview-list" aria-live="polite"></div>
|
||||
<small><?= empty($currentBannerPath)
|
||||
? "JPG, PNG ou WEBP. Format paysage recommandé (4:1). Max 20 MB."
|
||||
: "Laisser vide pour conserver la bannière actuelle. JPG, PNG ou WEBP. Format paysage recommandé (4:1). Max 20 MB." ?></small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
<?php else: ?>
|
||||
<?php
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
* Partial: student popover preview card(s).
|
||||
*
|
||||
* Expected variables:
|
||||
* $theses array rows from Database::getThesesByAuthorName()
|
||||
* $name string student name
|
||||
* $theses array rows from Database::getThesesByAuthorName()
|
||||
* $name string student name
|
||||
* $coverMap array<int,string> thesis_id => cover file_path
|
||||
*/
|
||||
|
||||
foreach ($theses as $t):
|
||||
@@ -20,8 +21,9 @@ foreach ($theses as $t):
|
||||
]);
|
||||
?>
|
||||
<a href="/tfe?id=<?= (int)$t['id'] ?>" class="student-card">
|
||||
<?php if (!empty($t['banner_path'])): ?>
|
||||
<div class="student-card__banner" style="background-image:url('<?= htmlspecialchars($t['banner_path']) ?>')"></div>
|
||||
<?php $cover = $coverMap[$t['id']] ?? null; ?>
|
||||
<?php if ($cover): ?>
|
||||
<div class="student-card__banner" style="background-image:url('/media?path=<?= urlencode($cover) ?>')"></div>
|
||||
<?php else: ?>
|
||||
<div class="student-card__banner student-card__banner--gradient">
|
||||
<span class="student-card__gradient-author"><?= htmlspecialchars($t['authors'] ?? '') ?></span>
|
||||
|
||||
@@ -14,13 +14,7 @@
|
||||
<li class="card">
|
||||
<a href="/tfe?id=<?= (int)$item["id"] ?>">
|
||||
<?php
|
||||
$thumb = null;
|
||||
if (!empty($item['banner_path'])) {
|
||||
$thumb = $item['banner_path'];
|
||||
}
|
||||
if (!$thumb && isset($coverMap[$item['id']])) {
|
||||
$thumb = $coverMap[$item['id']];
|
||||
}
|
||||
$thumb = $coverMap[$item['id']] ?? null;
|
||||
?>
|
||||
<?php if ($thumb): ?>
|
||||
<figure>
|
||||
|
||||
@@ -51,7 +51,15 @@
|
||||
<?php if (!empty($results)): ?>
|
||||
<ul class="results-grid">
|
||||
<?php foreach ($results as $item): ?>
|
||||
<li><a href="/tfe?id=<?= (int)$item['id'] ?>" class="result-card">
|
||||
<?php $thumb = $coverMap[$item['id']] ?? null; ?>
|
||||
<li><a href="/tfe?id=<?= (int)$item['id'] ?>" class="result-card<?= $thumb ? ' result-card--has-cover' : '' ?>">
|
||||
<?php if ($thumb): ?>
|
||||
<figure class="result-card__cover">
|
||||
<img src="/media?path=<?= urlencode($thumb) ?>"
|
||||
alt="Couverture — <?= htmlspecialchars($item['title']) ?>"
|
||||
loading="lazy">
|
||||
</figure>
|
||||
<?php endif; ?>
|
||||
<span class="result-card__authors"><?= htmlspecialchars($item['authors'] ?? '') ?></span>
|
||||
<span class="result-card__title"><?= htmlspecialchars($item['title']) ?></span>
|
||||
<small class="result-card__meta"><?= htmlspecialchars($item['year']) ?><?php if (!empty($item['orientation'])): ?> · <?= htmlspecialchars($item['orientation']) ?><?php endif; ?></small>
|
||||
|
||||
Reference in New Issue
Block a user