mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-06-25 16:19:19 +02:00
TFE page: remove underlines from all links, lowercase keywords/languages/formats, inclusive writing, prevent keyword mid-word breaks, editable restriction messages in admin
This commit is contained in:
5
TODO.md
5
TODO.md
@@ -11,3 +11,8 @@
|
||||
- [x] Répertoire: barres de scroll discrètes (thin + semi-transparentes)
|
||||
- [x] Répertoire: fontes/graisses conformes à la maquette (Ductus pour titres colonnes, années en bold, etc.)
|
||||
- [x] Répertoire: diminutifs des AP entre crochets (ex: Design et Politique du Multiple [DPM])
|
||||
- [x] Page TFE: enlever le soulignage de tous les mots/liens
|
||||
- [x] Page TFE: harmoniser minuscules pour mots-clés, langues & formats
|
||||
- [x] Page TFE: corriger texte inclusif ("utilisateur·ices autorisé·es")
|
||||
- [x] Page TFE: empêcher les mots-clés de se couper au milieu du mot lors du wrapping
|
||||
- [x] Page TFE: rendre le texte des TFE internes/interdits éditable dans les paramètres
|
||||
|
||||
@@ -147,6 +147,18 @@ if ($section === 'formulaire_restrictions') {
|
||||
PeerTubeService::updateSettings($db, $data);
|
||||
$logger->logPeerTubeUpdate($enabled === '1');
|
||||
App::flash('success', 'Paramètres PeerTube mis à jour.');
|
||||
} elseif ($section === 'tfe_messages') {
|
||||
if (isset($_POST['tfe_restricted_message'])) {
|
||||
$db->setSetting('tfe_restricted_message', $_POST['tfe_restricted_message']);
|
||||
}
|
||||
if (isset($_POST['tfe_forbidden_message'])) {
|
||||
$db->setSetting('tfe_forbidden_message', $_POST['tfe_forbidden_message']);
|
||||
}
|
||||
if ($isHxRequest) {
|
||||
hxToastSuccess('Messages TFE mis à jour.');
|
||||
} else {
|
||||
App::flash('success', "Messages TFE mis à jour.");
|
||||
}
|
||||
} else {
|
||||
App::flash('error', "Section inconnue.");
|
||||
}
|
||||
@@ -166,6 +178,8 @@ if (in_array($section, ['formulaire_acces', 'objet_types'], true)) {
|
||||
$redirect = '/admin/contenus.php';
|
||||
} elseif ($section === 'formulaire_restrictions') {
|
||||
$redirect = '/admin/acces.php';
|
||||
} elseif ($section === 'tfe_messages') {
|
||||
$redirect = '/admin/acces.php';
|
||||
}
|
||||
header('Location: ' . $redirect);
|
||||
exit;
|
||||
|
||||
@@ -53,27 +53,32 @@ article dl {
|
||||
|
||||
/* Each dt/dd pair grouped in a <div> inside <dl> */
|
||||
article dl > div {
|
||||
display: flex;
|
||||
display: grid;
|
||||
grid-template-columns: auto 1fr;
|
||||
gap: var(--space-3xs);
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
article dl dt {
|
||||
color: var(--text-primary);
|
||||
font-weight: 400;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
article dl dd {
|
||||
color: var(--text-primary);
|
||||
font-weight: 700;
|
||||
margin: 0;
|
||||
min-width: 0;
|
||||
word-break: normal;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
|
||||
article dl dd a {
|
||||
color: inherit;
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 2px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
article dl dd a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Note field: align dt/dd to top, value in italics */
|
||||
@@ -169,13 +174,13 @@ aside figcaption {
|
||||
font-size: var(--step--1);
|
||||
font-weight: 500;
|
||||
color: var(--text-primary);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 2px;
|
||||
text-decoration: none;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.tfe-download-link:hover {
|
||||
color: var(--accent-primary);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.tfe-download-icon {
|
||||
@@ -192,8 +197,11 @@ aside figcaption {
|
||||
|
||||
.tfe-pdf-fallback a {
|
||||
color: var(--text-primary);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 2px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.tfe-pdf-fallback a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* "Not available" and "no files" notices */
|
||||
|
||||
@@ -106,6 +106,12 @@ class TfeController
|
||||
. (!empty($data['authors']) ? ' – ' . $data['authors'] : '')
|
||||
. ' – XAMXAM';
|
||||
|
||||
// Editable messages
|
||||
$restrictedMessage = $this->db->getSetting('tfe_restricted_message',
|
||||
'Les fichiers attachés à ce TFE sont réservés aux utilisateur·ices autorisé·es.');
|
||||
$forbiddenMessage = $this->db->getSetting('tfe_forbidden_message',
|
||||
"Ce TFE n'est pas disponible en ligne.");
|
||||
|
||||
return [
|
||||
// Core data
|
||||
'thesisId' => $thesisId,
|
||||
@@ -125,6 +131,10 @@ class TfeController
|
||||
'hasRestrictedAccess' => $hasRestrictedAccess,
|
||||
'shouldHideFiles' => $shouldHideFiles,
|
||||
|
||||
// Editable TFE messages
|
||||
'restrictedMessage' => $restrictedMessage,
|
||||
'forbiddenMessage' => $forbiddenMessage,
|
||||
|
||||
// Page meta
|
||||
'pageTitle' => $pageTitle,
|
||||
'metaDescription' => $metaDescription,
|
||||
|
||||
@@ -346,6 +346,47 @@
|
||||
<div id="restrictions-response" aria-live="polite"></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══════════════════════ TFE MESSAGES ═══════════════════════ -->
|
||||
<section aria-labelledby="acces-fichiers-messages-title" style="margin-top:var(--space-xl);">
|
||||
<h3 id="acces-fichiers-messages-title">Messages des pages TFE</h3>
|
||||
<p style="color:var(--text-secondary);font-size:var(--step--1);">
|
||||
Personnalisez les textes affichés sur les pages TFE pour les accès restreints et interdits.
|
||||
</p>
|
||||
|
||||
<fieldset id="fieldset-tfe-messages" style="margin-top:var(--space-m);">
|
||||
<legend>Message pour les TFE internes (accès restreint)</legend>
|
||||
<div>
|
||||
<label for="tfe_restricted_message">Texte affiché quand les fichiers sont masqués :</label>
|
||||
<textarea id="tfe_restricted_message" name="tfe_restricted_message" rows="3"
|
||||
hx-post="/admin/actions/settings.php"
|
||||
hx-trigger="change delay:500ms"
|
||||
hx-target="#tfe-messages-response"
|
||||
hx-swap="innerHTML"
|
||||
hx-include="#fieldset-tfe-messages"
|
||||
style="width:100%;max-width:60ch;"><?= htmlspecialchars($siteSettings['tfe_restricted_message'] ?? 'Les fichiers attachés à ce TFE sont réservés aux utilisateur·ices autorisé·es.') ?></textarea>
|
||||
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
|
||||
<input type="hidden" name="section" value="tfe_messages">
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="fieldset-tfe-forbidden" style="margin-top:var(--space-m);">
|
||||
<legend>Message pour les TFE interdits (non disponible)</legend>
|
||||
<div>
|
||||
<label for="tfe_forbidden_message">Texte affiché quand le TFE n'est pas disponible :</label>
|
||||
<textarea id="tfe_forbidden_message" name="tfe_forbidden_message" rows="2"
|
||||
hx-post="/admin/actions/settings.php"
|
||||
hx-trigger="change delay:500ms"
|
||||
hx-target="#tfe-messages-response"
|
||||
hx-swap="innerHTML"
|
||||
hx-include="#fieldset-tfe-forbidden"
|
||||
style="width:100%;max-width:60ch;"><?= htmlspecialchars($siteSettings['tfe_forbidden_message'] ?? "Ce TFE n'est pas disponible en ligne.") ?></textarea>
|
||||
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
|
||||
<input type="hidden" name="section" value="tfe_messages">
|
||||
</div>
|
||||
</fieldset>
|
||||
<div id="tfe-messages-response" aria-live="polite"></div>
|
||||
</section>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
fn($l) => '<a href="/search?query=' .
|
||||
urlencode($l) .
|
||||
'">' .
|
||||
htmlspecialchars($l) .
|
||||
htmlspecialchars(mb_strtolower($l)) .
|
||||
"</a>",
|
||||
$langs,
|
||||
);
|
||||
@@ -73,7 +73,7 @@
|
||||
fn($f) => '<a href="/search?query=' .
|
||||
urlencode($f) .
|
||||
'">' .
|
||||
htmlspecialchars($f) .
|
||||
htmlspecialchars(mb_strtolower($f)) .
|
||||
"</a>",
|
||||
$fmts,
|
||||
);
|
||||
@@ -91,7 +91,7 @@
|
||||
fn($k) => '<a href="/repertoire?kw[]=' .
|
||||
urlencode($k) .
|
||||
'">' .
|
||||
htmlspecialchars($k) .
|
||||
htmlspecialchars(mb_strtolower($k)) .
|
||||
"</a>",
|
||||
$kws,
|
||||
);
|
||||
@@ -295,13 +295,19 @@
|
||||
<?php $_videoIndex = 0; ?>
|
||||
<?php if ($isInterdit): ?>
|
||||
<p class="tfe-restricted">
|
||||
Ce TFE n'est pas disponible en ligne.
|
||||
<?= htmlspecialchars(
|
||||
$forbiddenMessage ??
|
||||
"Ce TFE n'est pas disponible en ligne.",
|
||||
) ?>
|
||||
</p>
|
||||
<?php elseif ($shouldHideFiles): ?>
|
||||
<div class="tfe-restricted-access">
|
||||
<p class="tfe-restricted-message">
|
||||
<strong>Accès restreint</strong><br>
|
||||
Les fichiers attachés à ce TFE sont réservés aux utilisateurs autorisés.
|
||||
<?= htmlspecialchars(
|
||||
$restrictedMessage ??
|
||||
'Les fichiers attachés à ce TFE sont réservés aux utilisateur·ices autorisé·es.',
|
||||
) ?>
|
||||
</p>
|
||||
|
||||
<form id="access-request-form" class="tfe-access-request-form"
|
||||
|
||||
Reference in New Issue
Block a user