Migrate all <img>-based icons to inline SVG via PHP helper

Replace every <img src="/assets/icons/..."> with <?= icon('name') ?>
across 26 template files. The PHP helper inlines the SVG markup into the
DOM so CSS color cascades naturally through fill="currentColor".

- Add src/icon.php helper: reads SVG file, sets width/height to 1em,
  injects aria-hidden, supports optional CSS class
- Fix 12 icon SVGs that had hardcoded fill="#000000" or missing fill attr
- Replace search.svg with Phosphor fill-based magnifying glass
- Add explicit SVG sizes for admin header nav icons (16px/20px)
- Scope public search icon CSS to form[role=search]:not(.header-search-form)
  to avoid breaking admin header layout; change stroke to fill
- Remove <img> filter: brightness(0) invert(1) hacks from admin.css
This commit is contained in:
Pontoporeia
2026-06-21 17:23:37 +02:00
parent b1774e6e97
commit dfde88eaa5
42 changed files with 166 additions and 108 deletions

View File

@@ -73,11 +73,11 @@
<div class="admin-actions">
<a href="/partage/<?= urlencode($link['slug']) ?>" target="_blank" rel="noopener"
class="admin-icon-btn admin-icon-btn--view" title="Visiter le formulaire">
<img src="/assets/icons/play-triangle.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('play-triangle') ?>
</a>
<button type="button" class="admin-icon-btn admin-icon-btn--copy" title="Copier l'URL"
onclick="copyUrl(<?= $link['id'] ?>)">
<img src="/assets/icons/copy-duplicate.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('copy-duplicate') ?>
</button>
<form method="post" action="actions/acces-etudiante.php" class="publish-form">
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
@@ -87,15 +87,15 @@
class="admin-icon-btn <?= $link['is_active'] ? 'admin-icon-btn--unpublish' : 'admin-icon-btn--publish' ?>"
title="<?= $link['is_active'] ? 'Désactiver' : 'Activer' ?>">
<?php if ($link['is_active']): ?>
<img src="/assets/icons/columns.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('columns') ?>
<?php else: ?>
<img src="/assets/icons/play-triangle.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('play-triangle') ?>
<?php endif; ?>
</button>
</form>
<button type="button" class="admin-icon-btn admin-icon-btn--key" title="Modifier le mot de passe"
onclick="openPasswordDialog(<?= $link['id'] ?>, <?= $hasPassword ? 'true' : 'false' ?>)">
<img src="/assets/icons/fingerprint.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('fingerprint') ?>
</button>
<form method="post" action="actions/acces-etudiante.php" class="publish-form"
id="delete-link-form-<?= $link['id'] ?>">
@@ -104,7 +104,7 @@
<input type="hidden" name="id" value="<?= $link['id'] ?>">
<button type="button" class="admin-icon-btn admin-icon-btn--delete" title="Supprimer"
onclick="openDeleteLinkDialog(<?= $link['id'] ?>)">
<img src="/assets/icons/trash.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('trash') ?>
</button>
</form>
</div>

View File

@@ -86,7 +86,7 @@
<button type="button" class="admin-icon-btn" title="Copier le mot de passe"
onclick="event.stopPropagation(); copyTextToClipboard(document.getElementById('pwd-<?= $link['id'] ?>').value)"
style="width:24px;height:24px;">
<img src="/assets/icons/copy-duplicate.svg" width="16" height="16" alt="" aria-hidden="true">
<?= icon('copy-duplicate') ?>
</button>
</div>
<?php else: ?>
@@ -100,11 +100,11 @@
<div class="admin-actions">
<button type="button" class="admin-icon-btn admin-icon-btn--edit" title="Éditer"
onclick="event.stopPropagation(); openEditDialog(<?= $link['id'] ?>, <?= htmlspecialchars(json_encode($linkName), ENT_QUOTES) ?>, <?= $hasLinkPassword ? 'true' : 'false' ?>, <?= htmlspecialchars(json_encode($linkExpiresVal), ENT_QUOTES) ?>)">
<img src="/assets/icons/pencil-note.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('pencil-note') ?>
</button>
<button type="button" class="admin-icon-btn admin-icon-btn--copy" title="Copier l'URL"
onclick="event.stopPropagation(); copyUrl(<?= $link['id'] ?>)">
<img src="/assets/icons/copy-duplicate.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('copy-duplicate') ?>
</button>
<form method="post" action="actions/acces-etudiante.php" class="publish-form" onclick="event.stopPropagation()">
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
@@ -114,9 +114,9 @@
class="admin-icon-btn <?= $link['is_active'] ? 'admin-icon-btn--unpublish' : 'admin-icon-btn--publish' ?>"
title="<?= $link['is_active'] ? 'Désactiver' : 'Activer' ?>">
<?php if ($link['is_active']): ?>
<img src="/assets/icons/columns.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('columns') ?>
<?php else: ?>
<img src="/assets/icons/play-triangle.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('play-triangle') ?>
<?php endif; ?>
</button>
</form>
@@ -127,7 +127,7 @@
<input type="hidden" name="id" value="<?= $link['id'] ?>">
<button type="button" class="admin-icon-btn admin-icon-btn--archive" title="Archiver"
onclick="openArchiveLinkDialog(<?= $link['id'] ?>)">
<img src="/assets/icons/monitor.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('monitor') ?>
</button>
</form>
</div>
@@ -179,7 +179,7 @@
<td class="admin-actions-col">
<button type="button" class="admin-icon-btn admin-icon-btn--delete" title="Supprimer"
onclick="openDeleteArchivedLinkDialog(<?= $link['id'] ?>)">
<img src="/assets/icons/trash.svg" width="16" height="16" alt="" aria-hidden="true">
<?= icon('trash') ?>
</button>
</td>
</tr>

View File

@@ -1,5 +1,5 @@
<main id="main-content">
<h1><a href="/admin/" class="admin-back-btn" title="Retour à la liste"><img src="/assets/icons/arrow-left-circle.svg" width="32" height="32" alt="" aria-hidden="true"></a> Ajouter un TFE</h1>
<h1><a href="/admin/" class="admin-back-btn" title="Retour à la liste"><?= icon('arrow-left-circle') ?></a> Ajouter un TFE</h1>
<?php
// All form variables are already in scope from FormBootstrap::adminFormVariables().

View File

@@ -51,7 +51,7 @@
data-key="<?= $aproposKey ?>">+ Ajouter une entrée</button>
<button type="button" class="admin-icon-btn admin-icon-btn--delete delete-group-btn-f"
data-key="<?= $aproposKey ?>" title="Supprimer ce contact">
<img src="/assets/icons/trash-slash.svg" width="20" height="20" alt="" aria-hidden="true">
<?= icon('trash-slash') ?>
</button>
</fieldset>
<?php endforeach; ?>
@@ -88,7 +88,7 @@
data-key="<?= $aproposKey ?>">+ Ajouter une entrée</button>
<button type="button" class="admin-icon-btn admin-icon-btn--delete delete-group-btn-f"
data-key="<?= $aproposKey ?>" title="Supprimer ce contact">
<img src="/assets/icons/trash-slash.svg" width="20" height="20" alt="" aria-hidden="true">
<?= icon('trash-slash') ?>
</button>
</fieldset>
</template>

View File

@@ -1,5 +1,5 @@
<main id="main-content" class="full-editor-page">
<h1><a href="/admin/contenus.php" class="admin-back-btn" title="Retour"><img src="/assets/icons/arrow-left-circle.svg" width="32" height="32" alt="" aria-hidden="true"></a> Éditer : <?= htmlspecialchars($editTitle) ?></h1>
<h1><a href="/admin/contenus.php" class="admin-back-btn" title="Retour"><?= icon('arrow-left-circle') ?></a> Éditer : <?= htmlspecialchars($editTitle) ?></h1>
<?php if ($editType === 'about_page'): ?>
@@ -63,7 +63,7 @@
</div>
<button type="button" class="admin-icon-btn admin-icon-btn--delete remove-sidebar-link-btn"
title="Supprimer ce lien">
<img src="/assets/icons/trash-slash.svg" width="20" height="20" alt="" aria-hidden="true">
<?= icon('trash-slash') ?>
</button>
</div>
<?php endforeach; ?>
@@ -87,7 +87,7 @@
</div>
<button type="button" class="admin-icon-btn admin-icon-btn--delete remove-sidebar-link-btn"
title="Supprimer ce lien">
<img src="/assets/icons/trash-slash.svg" width="20" height="20" alt="" aria-hidden="true">
<?= icon('trash-slash') ?>
</button>
</div>
</template>

View File

@@ -38,7 +38,7 @@
<td>
<a href="/admin/contenus-edit.php?slug=<?= urlencode($p['slug']) ?>"
class="admin-icon-btn admin-icon-btn--edit" title="Éditer">
<img src="/assets/icons/pencil-note.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('pencil-note') ?>
</a>
</td>
</tr>
@@ -309,10 +309,10 @@ function languesStartRename(id) {
+ '<input type="hidden" name="language_id" value="' + id + '">'
+ '<input type="text" name="new_name" value="' + cell.getAttribute('data-name') + '" required class="admin-input--inline">'
+ '<button type="submit" class="admin-icon-btn admin-icon-btn--edit" title="Valider">'
+ '<img src="/assets/icons/check-circle.svg" width="32" height="32" alt="" aria-hidden="true">'
+ '<?= icon('check-circle') ?>'
+ '</button>'
+ '<button type="button" class="admin-icon-btn admin-icon-btn--delete" onclick="languesCancelRename(' + id + ')" title="Annuler">'
+ '<img src="/assets/icons/x-close.svg" width="32" height="32" alt="" aria-hidden="true">'
+ '<?= icon('x-close') ?>'
+ '</button></form>';
cell.querySelector('input').focus();
}
@@ -321,7 +321,7 @@ function languesCancelRename(id) {
var cell = document.getElementById('lang-name-' + id);
cell.innerHTML = '<span class="tag-name-cell">' + cell.getAttribute('data-name') + '</span>'
+ '<button type="button" class="admin-icon-btn admin-icon-btn--edit" title="Renommer" onclick="languesStartRename(' + id + ')">'
+ '<img src="/assets/icons/pencil-note.svg" width="32" height="32" alt="" aria-hidden="true">'
+ '<?= icon('pencil-note') ?>'
+ '</button>';
}
@@ -488,10 +488,10 @@ function motsclesStartRename(id) {
+ '<input type="hidden" name="tag_id" value="' + id + '">'
+ '<input type="text" name="new_name" value="' + cell.getAttribute('data-name') + '" required class="admin-input--inline">'
+ '<button type="submit" class="admin-icon-btn admin-icon-btn--edit" title="Valider">'
+ '<img src="/assets/icons/check-circle.svg" width="32" height="32" alt="" aria-hidden="true">'
+ '<?= icon('check-circle') ?>'
+ '</button>'
+ '<button type="button" class="admin-icon-btn admin-icon-btn--delete" onclick="motsclesCancelRename(' + id + ')" title="Annuler">'
+ '<img src="/assets/icons/x-close.svg" width="32" height="32" alt="" aria-hidden="true">'
+ '<?= icon('x-close') ?>'
+ '</button></form>';
cell.querySelector('input').focus();
}
@@ -500,7 +500,7 @@ function motsclesCancelRename(id) {
var cell = document.getElementById('motscles-name-' + id);
cell.innerHTML = '<span class="tag-name-cell">' + cell.getAttribute('data-name') + '</span>'
+ '<button type="button" class="admin-icon-btn admin-icon-btn--edit" title="Renommer" onclick="motsclesStartRename(' + id + ')">'
+ '<img src="/assets/icons/pencil-note.svg" width="32" height="32" alt="" aria-hidden="true">'
+ '<?= icon('pencil-note') ?>'
+ '</button>';
}

View File

@@ -1,5 +1,5 @@
<main id="main-content">
<h1><a href="/admin/" class="admin-back-btn" title="Retour à la liste"><img src="/assets/icons/arrow-left-circle.svg" width="32" height="32" alt="" aria-hidden="true"></a> Modifier un TFE</h1>
<h1><a href="/admin/" class="admin-back-btn" title="Retour à la liste"><?= icon('arrow-left-circle') ?></a> Modifier un TFE</h1>
<?php
// All form variables are already in scope from FormBootstrap::adminFormVariables().

View File

@@ -87,7 +87,7 @@ $sortArrow = function(string $col) use ($sortCol, $sortDir): string {
<td class="admin-actions-col">
<div class="admin-actions">
<a href="/admin/edit.php?id=<?= $thesis['id'] ?>" class="admin-icon-btn admin-icon-btn--edit" title="Éditer" onclick="event.stopPropagation()">
<img src="/assets/icons/pencil-note.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('pencil-note') ?>
</a>
<form method="post" action="actions/publish.php" class="publish-form" onclick="event.stopPropagation()">
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
@@ -95,12 +95,12 @@ $sortArrow = function(string $col) use ($sortCol, $sortDir): string {
<?php if ($thesis['is_published']): ?>
<input type="hidden" name="action" value="unpublish">
<button type="submit" class="admin-icon-btn admin-icon-btn--unpublish" title="Dépublier">
<img src="/assets/icons/eye-slash.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('eye-slash') ?>
</button>
<?php else: ?>
<input type="hidden" name="action" value="publish">
<button type="submit" class="admin-icon-btn admin-icon-btn--publish" title="Publier">
<img src="/assets/icons/eye.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('eye') ?>
</button>
<?php endif; ?>
</form>
@@ -109,7 +109,7 @@ $sortArrow = function(string $col) use ($sortCol, $sortDir): string {
<input type="hidden" name="thesis_id" value="<?= $thesis['id'] ?>">
<button type="button" class="admin-icon-btn admin-icon-btn--delete" title="Supprimer"
onclick="event.stopPropagation(); confirmDelete(<?= $thesis['id'] ?>, <?= htmlspecialchars(json_encode($thesis['title']), ENT_QUOTES) ?>)">
<img src="/assets/icons/trash.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('trash') ?>
</button>
</form>
</div>

View File

@@ -2,7 +2,7 @@
<div class="admin-list-toolbar admin-list-toolbar--list">
<div class="admin-toolbar-top">
<div class="admin-toolbar-title-row">
<h1><a href="/admin/" class="admin-back-btn" title="Retour à la liste"><img src="/assets/icons/arrow-left-circle.svg" width="32" height="32" alt="" aria-hidden="true"></a> Corbeille</h1>
<h1><a href="/admin/" class="admin-back-btn" title="Retour à la liste"><?= icon('arrow-left-circle') ?></a> Corbeille</h1>
<span class="admin-stat admin-stat--inline" style="margin-left:auto"><?= count($trashedTheses) ?> TFE(s)</span>
</div>
</div>
@@ -60,7 +60,7 @@
<input type="hidden" name="action" value="restore">
<input type="hidden" name="thesis_id" value="<?= (int)$t['id'] ?>">
<button type="submit" class="admin-icon-btn admin-icon-btn--edit" title="Restaurer">
<img src="/assets/icons/archive-box.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('archive-box') ?>
</button>
</form>
<form method="post" action="actions/corbeille.php" class="admin-inline-form" style="display:inline"
@@ -69,7 +69,7 @@
<input type="hidden" name="action" value="hard_delete">
<input type="hidden" name="thesis_id" value="<?= (int)$t['id'] ?>">
<button type="submit" class="admin-icon-btn admin-icon-btn--delete" title="Supprimer définitivement">
<img src="/assets/icons/trash.svg" width="32" height="32" alt="" aria-hidden="true">
<?= icon('trash') ?>
</button>
</form>
</div>

View File

@@ -33,7 +33,7 @@ document.addEventListener('htmx:afterSwap',()=>{document.querySelectorAll('input
</div>
</div>
<div class="admin-btn-group">
<a href="/admin/add.php" class="btn btn--primary btn--sm">+ Ajouter un TFE</a>
<a href="/admin/add.php" class="btn btn--primary btn--sm"><?= icon('plus-circle') ?> Ajouter un TFE</a>
<?php if ($trashCount > 0): ?>
<a href="/admin/index.php?tab=trash" class="btn btn--sm <?= $tab === 'trash' ? 'btn--primary' : 'btn--secondary' ?>">
Corbeille (<?= $trashCount ?>)
@@ -42,12 +42,12 @@ document.addEventListener('htmx:afterSwap',()=>{document.querySelectorAll('input
<?php if ($tmpTotalCount > 0): ?>
<button type="button" class="btn btn--sm btn--secondary" id="tmp-cleanup-btn"
onclick="document.getElementById('tmp-cleanup-dialog').showModal(); htmx.trigger('#tmp-cleanup-stats-wrapper','loadStats'); htmx.trigger('#peertube-orphans-wrapper','loadPeertube')">
Nettoyer (<?= $tmpTotalCount ?>)
<?= icon('trash') ?> Nettoyer (<?= $tmpTotalCount ?>)
</button>
<?php endif; ?>
<button type="button" class="btn btn--primary btn--sm" id="import-dialog-btn"
onclick="document.getElementById('import-dialog').showModal(); window.XamxamInitFilePonds()">
Importer
<?= icon('tray-arrow-up') ?> Importer
</button>
</div>
</div>

View File

@@ -15,7 +15,7 @@
hx-indicator="#tmp-cleanup-stats-wrapper">
<details class="n-section" open>
<summary>
<img src="/assets/icons/paint-brush-household.svg" width="14" height="14" alt="" aria-hidden="true">
<?= icon('paint-brush-household') ?>
Fichiers temporaires
</summary>
<p style="margin:0;color:var(--text-secondary)">Chargement…</p>

View File

@@ -28,7 +28,7 @@
<?php else: ?>
<!-- ═══════════════════ ADMIN MODE: Recap page ═══════════════════ -->
<h1><a href="/admin/" class="admin-back-btn" title="Retour à la liste"><img src="/assets/icons/arrow-left-circle.svg" width="32" height="32" alt="" aria-hidden="true"></a> Récapitulatif TFE</h1>
<h1><a href="/admin/" class="admin-back-btn" title="Retour à la liste"><?= icon('arrow-left-circle') ?></a> Récapitulatif TFE</h1>
<?php if ($error): ?>
<p class="toast" role="alert" data-type="error">⚠ <?= htmlspecialchars($error) ?></p>

View File

@@ -52,10 +52,10 @@ function tagsStartRename(id) {
+ '<input type=\"hidden\" name=\"tag_id\" value=\"' + id + '\">'
+ '<input type=\"text\" name=\"new_name\" value=\"' + cell.getAttribute('data-name') + '\" required class=\"admin-input--inline\">'
+ '<button type=\"submit\" class=\"admin-icon-btn admin-icon-btn--edit\" title=\"Valider\">'
+ '<img src=\"/assets/icons/check-circle.svg\" width=\"32\" height=\"32\" alt=\"\" aria-hidden=\"true\">'
+ '<?= icon("check-circle") ?>'
+ '</button>'
+ '<button type=\"button\" class=\"admin-icon-btn admin-icon-btn--delete\" onclick=\"tagsCancelRename(' + id + ')\" title=\"Annuler\">'
+ '<img src=\"/assets/icons/x-close.svg\" width=\"32\" height=\"32\" alt=\"\" aria-hidden=\"true\">'
+ '<?= icon("x-close") ?>'
+ '</button></form>';
cell.querySelector('input').focus();
}
@@ -64,7 +64,7 @@ function tagsCancelRename(id) {
var cell = document.getElementById('tag-name-' + id);
cell.innerHTML = '<span class=\"tag-name-cell\">' + cell.getAttribute('data-name') + '</span>'
+ '<button type=\"button\" class=\"admin-icon-btn admin-icon-btn--edit\" title=\"Renommer\" onclick=\"tagsStartRename(' + id + ')\">'
+ '<img src=\"/assets/icons/pencil-note.svg\" width=\"32\" height=\"32\" alt=\"\" aria-hidden=\"true\">'
+ '<?= icon("pencil-note") ?>'
+ '</button>';
}
@@ -90,7 +90,7 @@ document.addEventListener('htmx:afterSwap', function(evt) {
<div class="admin-list-toolbar admin-list-toolbar--list" style="margin-bottom:var(--space-s)">
<div class="admin-toolbar-top">
<div class="admin-toolbar-title-row">
<h1><a href="/admin/" class="admin-back-btn" title="Retour à la liste"><img src="/assets/icons/arrow-left-circle.svg" width="32" height="32" alt="" aria-hidden="true"></a> Mots-clés</h1>
<h1><a href="/admin/" class="admin-back-btn" title="Retour à la liste"><?= icon('arrow-left-circle') ?></a> Mots-clés</h1>
<span id="tags-total-count" class="admin-stat admin-stat--inline" style="margin-left:auto"></span>
</div>
</div>

View File

@@ -15,7 +15,7 @@ $_thesisId = $_GET['id'] ?? null;
<nav aria-label="Navigation admin">
<ul class="nav-left-links">
<li><a href="/" target="_blank" rel="noopener noreferrer" class="nav-logo">
<img src="/assets/icons/sign-out.svg" width="16" height="16" alt="" aria-hidden="true">XAMXAM<span class="sr-only"> (site public, nouvel onglet)</span>
<?= icon('sign-out') ?>XAMXAM<span class="sr-only"> (site public, nouvel onglet)</span>
</a></li>
</ul>
<ul class="nav-right-links">
@@ -29,7 +29,7 @@ $_thesisId = $_GET['id'] ?? null;
</a></li>
<li><a href="/admin/parametres.php" <?= in_array($_currentPage, ['parametres.php', 'system.php', 'status.php', 'logs.php']) ? 'aria-current="page"' : '' ?>>Paramètres</a></li>
<?php if ($_isAdmin && AdminAuth::hasPassword()): ?>
<li data-nav-logout><a href="/admin/logout.php" aria-label="Déconnexion"><img src="/assets/icons/sign-in.svg" width="20" height="20" alt="" aria-hidden="true"><span class="sr-only">Déconnexion</span></a></li>
<li data-nav-logout><a href="/admin/logout.php" aria-label="Déconnexion"><?= icon('sign-in') ?><span class="sr-only">Déconnexion</span></a></li>
<?php endif; ?>
</ul>
</nav>
@@ -90,7 +90,7 @@ $_thesisId = $_GET['id'] ?? null;
<?php if ($_isAdmin && !$_isLogin): ?>
<div class="admin-mobile-block">
<img src="/assets/icons/desktop-monitor.svg" width="48" height="48" alt="" aria-hidden="true">
<?= icon('desktop-monitor') ?>
<h2>Section administrateur</h2>
<p>L'administration n'est pas accessible sur mobile. Veuillez utiliser un ordinateur.</p>
</div>
@@ -106,7 +106,7 @@ $searchBarValue = $searchBarValue ?? $_GET['query'] ?? '';
role="search" aria-label="Recherche" class="header-search-form">
<label for="site-search-input" class="sr-only">Recherche</label>
<div class="header-search-input-wrap">
<img src="/assets/icons/search.svg" width="24" height="24" alt="" aria-hidden="true" class="header-search-icon">
<?= icon('search', 0, 'header-search-icon') ?>
<input
id="site-search-input"
type="text"

View File

@@ -100,7 +100,7 @@ $websiteLabel = htmlspecialchars($_POST['website_label'] ?? '');
hx-swap="innerHTML"
hx-trigger="click"
onclick="document.getElementById('relink-modal').showModal(); window.__xamxamRelinkCtx = { queueType: 'cover', thesisId: '<?= htmlspecialchars((string)($thesisId ?? $_GET['id'] ?? '')) ?>' };">
<img src="/assets/icons/magic-wand.svg" width="16" height="16" alt="" aria-hidden="true" style="vertical-align:-2px;margin-right:var(--space-3xs)"> Relier un fichier existant
<?= icon('magic-wand') ?> Relier un fichier existant
</button>
<?php endif; ?>
</div>
@@ -128,7 +128,7 @@ $websiteLabel = htmlspecialchars($_POST['website_label'] ?? '');
hx-swap="innerHTML"
hx-trigger="click"
onclick="document.getElementById('relink-modal').showModal(); window.__xamxamRelinkCtx = { queueType: 'note_intention', thesisId: '<?= htmlspecialchars((string)($thesisId ?? $_GET['id'] ?? '')) ?>' };">
<img src="/assets/icons/magic-wand.svg" width="16" height="16" alt="" aria-hidden="true" style="vertical-align:-2px;margin-right:var(--space-3xs)"> Relier un fichier existant
<?= icon('magic-wand') ?> Relier un fichier existant
</button>
<?php endif; ?>
</div>
@@ -166,7 +166,7 @@ $websiteLabel = htmlspecialchars($_POST['website_label'] ?? '');
hx-swap="innerHTML"
hx-trigger="click"
onclick="document.getElementById('relink-modal').showModal(); window.__xamxamRelinkCtx = { queueType: 'tfe', thesisId: '<?= htmlspecialchars((string)($thesisId ?? $_GET['id'] ?? '')) ?>' };">
<img src="/assets/icons/magic-wand.svg" width="16" height="16" alt="" aria-hidden="true" style="vertical-align:-2px;margin-right:var(--space-3xs)"> Relier un fichier existant
<?= icon('magic-wand') ?> Relier un fichier existant
</button>
<?php if ($peerTubeEnabled): ?>
<button type="button" class="btn btn--sm btn--ghost peertube-browser-trigger"
@@ -177,7 +177,7 @@ $websiteLabel = htmlspecialchars($_POST['website_label'] ?? '');
hx-trigger="click"
onclick="document.getElementById('peertube-relink-modal').showModal(); window.__xamxamPeertubeRelinkCtx = { thesisId: '<?= htmlspecialchars((string)($thesisId ?? $_GET['id'] ?? '')) ?>' };"
>
<img src="/assets/icons/magic-wand.svg" width="16" height="16" alt="" aria-hidden="true" style="vertical-align:-2px;margin-right:var(--space-3xs)"> Relier une vidéo PeerTube
<?= icon('magic-wand') ?> Relier une vidéo PeerTube
</button>
<?php endif; ?>
<?php endif; ?>
@@ -207,7 +207,7 @@ $websiteLabel = htmlspecialchars($_POST['website_label'] ?? '');
hx-swap="innerHTML"
hx-trigger="click"
onclick="document.getElementById('relink-modal').showModal(); window.__xamxamRelinkCtx = { queueType: 'annexe', thesisId: '<?= htmlspecialchars((string)($thesisId ?? $_GET['id'] ?? '')) ?>' };">
<img src="/assets/icons/magic-wand.svg" width="16" height="16" alt="" aria-hidden="true" style="vertical-align:-2px;margin-right:var(--space-3xs)"> Relier un fichier existant
<?= icon('magic-wand') ?> Relier un fichier existant
</button>
<?php endif; ?>
</div>

View File

@@ -65,7 +65,7 @@ $adminMode = $adminMode ?? false;
<br>
</label>
<details class="licence-details">
<summary class="licence-summary"> <img src="/assets/icons/circle-i.svg" width="1rem" height="16" alt="" aria-hidden="true"> Info</summary>
<summary class="licence-summary"> <?= icon('circle-i') ?> Info</summary>
<p>
Mon TFE est en libre accès à tout le monde sur la plateforme des TFE ainsi que dans la bibliothèque de l'erg. Je suis conscient des responsabilités et obligations légales qui viennent avec une diffusion externe et acquiesce avoir lu la documentation prévue à cet effet par l'erg, ainsi qu'avoir discuté des enjeux d'une publication avec l'équipe pédagogique. J'accepte de partager mes droits de diffusion avec l'erg, ce uniquement dans le cadre d'une diffusion sur la plateforme xamxam.
</p>
@@ -86,7 +86,7 @@ $adminMode = $adminMode ?? false;
</label>
<br>
<details class="licence-details">
<summary class="licence-summary"> <img src="/assets/icons/circle-i.svg" width="1rem" height="16" alt="" aria-hidden="true"> Info</summary>
<summary class="licence-summary"> <?= icon('circle-i') ?> Info</summary>
<p>
Mon TFE et ma note d'intention ne sont accessibles que sur place en physique ainsi que sur la plateforme xamxam par la communauté erg. Une note descriptive est disponible sur le site à toustes. J'autorise une (ré-)utilisation et diffusion dans un contexte académique et didactique au sein de l'erg.
</p>
@@ -109,7 +109,7 @@ $adminMode = $adminMode ?? false;
</label>
<br>
<details class="licence-details">
<summary class="licence-summary"> <img src="/assets/icons/circle-i.svg" width="1rem" height="16" alt="" aria-hidden="true"> Info</summary>
<summary class="licence-summary"> <?= icon('circle-i') ?> Info</summary>
<p>
Mon TFE n'est pas disponible en physique ni sur le site. Une note descriptive est disponible sur le site.
</p>

View File

@@ -45,7 +45,7 @@ $langCount = count($selectedLanguages);
<input type="hidden" name="<?= htmlspecialchars($name) ?>[]" value="<?= htmlspecialchars($lang['name']) ?>">
<span class="tag-pill-name"><?= htmlspecialchars($lang['name']) ?></span>
<button type="button" class="tag-pill-remove" title="Retirer «&nbsp;<?= htmlspecialchars($lang['name']) ?>&nbsp;»" aria-label="Retirer <?= htmlspecialchars($lang['name']) ?>">
<img src="/assets/icons/trash-slash.svg" width="16" height="16" alt="" aria-hidden="true">
<?= icon('trash-slash') ?>
</button>
</span>
<?php endforeach; ?>

View File

@@ -48,7 +48,7 @@ $belowMin = $required && $tagCount < $minTags;
<input type="hidden" name="<?= htmlspecialchars($name) ?>[]" value="<?= htmlspecialchars($tag['name']) ?>">
<span class="tag-pill-name"><?= htmlspecialchars($tag['name']) ?></span>
<button type="button" class="tag-pill-remove" title="Retirer «&nbsp;<?= htmlspecialchars($tag['name']) ?>&nbsp;»" aria-label="Retirer <?= htmlspecialchars($tag['name']) ?>">
<img src="/assets/icons/trash-slash.svg" width="16" height="16" alt="" aria-hidden="true">
<?= icon('trash-slash') ?>
</button>
</span>
<?php endforeach; ?>

View File

@@ -6,7 +6,7 @@ $_sbValue = $searchBarValue ?? $_GET['query'] ?? '';
<form method="GET" action="/search"
role="search" aria-label="Recherche">
<label for="site-search-input" class="sr-only">Recherche</label>
<img src="/assets/icons/search.svg" width="24" height="24" alt="" aria-hidden="true">
<?= icon('search') ?>
<input
id="site-search-input"
type="text"