From f29ed77969619ea50da907a2a89c0a03b6242c0c Mon Sep 17 00:00:00 2001
From: stephan
Date: Tue, 21 Jul 2026 15:19:49 -0400
Subject: [PATCH] =?UTF-8?q?MSIN-4470=20=E2=80=94=20Refactor=20bib=20worksp?=
=?UTF-8?q?ace=20navigation=20and=20action=20buttons=20for=20improved=20ac?=
=?UTF-8?q?cessibility=20and=20user=20experience.=20Update=20styles=20for?=
=?UTF-8?q?=20workspace=20elements=20and=20enhance=20button=20interactions?=
=?UTF-8?q?.=20Increment=20version=20code=20to=204.72.858.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
css/style.css | 57 +++++++++++++++--
js/v2/bib-assignments.js | 16 ++++-
php/inc_fx_bib_production.php | 2 +
php/inc_fx_promoteur.php | 46 ++++++++------
php/inc_settings.php | 2 +-
...IN-4470-corrections-interface-dossards.sql | 63 +++++++++++++++++++
6 files changed, 160 insertions(+), 26 deletions(-)
create mode 100644 sql/MSIN-4470-corrections-interface-dossards.sql
diff --git a/css/style.css b/css/style.css
index 7f4bcdd..28fb03f 100644
--- a/css/style.css
+++ b/css/style.css
@@ -1078,7 +1078,7 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
margin-top:10px;
}
-#module-bib .bib-workspace-nav{
+#module-bib .bib-workspace-bar{
display:flex;
align-items:stretch;
gap:4px;
@@ -1089,6 +1089,12 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
overflow-x:auto;
}
+#module-bib .bib-workspace-nav{
+ display:flex;
+ align-items:stretch;
+ gap:4px;
+}
+
#module-bib .bib-workspace-tab{
display:inline-flex;
align-items:center;
@@ -1107,6 +1113,41 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
cursor:pointer;
}
+/* MSIN-4470 — L'impression PDF reste accessible à droite des espaces principaux. */
+#module-bib .bib-workspace-action{
+ display:flex;
+ flex:0 0 auto;
+ margin-left:auto;
+}
+
+#module-bib .bib-workspace-action .bib-tool-btn{
+ width:auto;
+ min-height:42px;
+ padding:8px 16px;
+ border-width:0;
+ background:transparent;
+ color:#495057;
+ font-size:13px;
+ font-weight:600;
+ line-height:1.25;
+}
+
+#module-bib .bib-workspace-action .bib-tool-btn:not(.is-active):hover,
+#module-bib .bib-workspace-action .bib-tool-btn:not(.is-active):focus{
+ background:#e8f0f8;
+ color:#1e4a9e;
+ box-shadow:none;
+}
+
+#module-bib .bib-workspace-action .bib-tool-btn.is-active,
+#module-bib .bib-workspace-action .bib-tool-btn.is-active:hover,
+#module-bib .bib-workspace-action .bib-tool-btn.is-active:focus{
+ background:#2f5fd0;
+ color:#fff;
+ border-color:transparent;
+ box-shadow:none;
+}
+
#module-bib .bib-workspace-tab:hover,
#module-bib .bib-workspace-tab:focus{
background:#e8f0f8;
@@ -1655,6 +1696,7 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
}
@media (max-width:768px){
+ #module-bib .bib-workspace-bar,
#module-bib .bib-workspace-nav{
align-items:stretch;
}
@@ -2103,13 +2145,18 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
.bib-race-summary__group h4{
margin:0 0 5px;
- color:#6c757d;
- font-size:10px;
- font-weight:700;
- letter-spacing:.03em;
+ color:#1e3a6e;
+ font-size:11px;
+ font-weight:800;
+ letter-spacing:.06em;
text-transform:uppercase;
}
+/* MSIN-4470 — Accentue légèrement les deux repères principaux de chaque épreuve. */
+.bib-race-summary__group--bibs h4{
+ color:#1e4fbf;
+}
+
.bib-race-summary__stats{
display:grid;
grid-template-columns:repeat(3, minmax(0, 1fr));
diff --git a/js/v2/bib-assignments.js b/js/v2/bib-assignments.js
index f2c0e7f..5430b74 100644
--- a/js/v2/bib-assignments.js
+++ b/js/v2/bib-assignments.js
@@ -540,9 +540,14 @@
if (toolId === 'event_config') {
return 'settings';
}
- if (toolId === 'global_batch' || toolId === 'dist_print') {
+ if (toolId === 'global_batch') {
return 'operations';
}
+ // MSIN-4470 — L'action PDF est globale et s'ouvre depuis la barre supérieure
+ // sans déplacer l'utilisateur vers un autre espace de travail.
+ if (toolId === 'dist_print') {
+ return bibActiveWorkspace;
+ }
return 'preparation';
}
@@ -1983,6 +1988,15 @@
bibOpenTool(toolBtn.getAttribute('data-bib-tool'));
});
+ // MSIN-4469 — Le téléchargement part dans un nouvel onglet;
+ // l’écran principal revient aussitôt à Quantités et assignation.
+ moduleBib.addEventListener('submit', function (e) {
+ var productionForm = e.target.closest('.bib-production-return-preparation-form');
+ if (productionForm && moduleBib.contains(productionForm)) {
+ bibSetWorkspace('preparation');
+ }
+ });
+
moduleBib.addEventListener('click', function (e) {
var workspaceTab = e.target.closest('.bib-workspace-tab');
if (workspaceTab && moduleBib.contains(workspaceTab)) {
diff --git a/php/inc_fx_bib_production.php b/php/inc_fx_bib_production.php
index cbb3713..a9ef2b1 100644
--- a/php/inc_fx_bib_production.php
+++ b/php/inc_fx_bib_production.php
@@ -160,6 +160,8 @@ function fxBibProductionCollectSnapshot($intEveId, $strLangue = 'fr') {
continue;
}
+ // MSIN-4469 — La commande porte sur toute la séquence à imprimer,
+ // même lorsqu’aucun coureur ni aucun dossard assigné ne s’y trouve encore.
$tabRangesRaw = $objDatabase->fxGetResults(
"SELECT epr_bib_id, epr_bib_start, epr_bib_finish
FROM inscriptions_epreuves_bib
diff --git a/php/inc_fx_promoteur.php b/php/inc_fx_promoteur.php
index 9c6023d..559acd2 100644
--- a/php/inc_fx_promoteur.php
+++ b/php/inc_fx_promoteur.php
@@ -5048,7 +5048,8 @@ function renderBibProductionPreview(array $tabEpreuves, $strLangue = 'fr') {
-