MSIN-4470 — Refactor bib workspace navigation and action buttons for improved accessibility and user experience. Update styles for workspace elements and enhance button interactions. Increment version code to 4.72.858.
This commit is contained in:
@ -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));
|
||||
|
||||
@ -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)) {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -5048,7 +5048,8 @@ function renderBibProductionPreview(array $tabEpreuves, $strLangue = 'fr') {
|
||||
</p>
|
||||
|
||||
<?php if (($tabProductionOrder['bpo_status'] ?? '') === 'ready') { ?>
|
||||
<form method="post" action="<?php echo fxBibEsc($strExcelUrl); ?>" target="_blank">
|
||||
<form method="post" action="<?php echo fxBibEsc($strExcelUrl); ?>" target="_blank"
|
||||
class="bib-production-return-preparation-form">
|
||||
<input type="hidden" name="action" value="download">
|
||||
<input type="hidden" name="eve_id" value="<?php echo $intEveId; ?>">
|
||||
<input type="hidden" name="order_id" value="<?php echo (int)$tabProductionOrder['bpo_id']; ?>">
|
||||
@ -5080,7 +5081,8 @@ function renderBibProductionPreview(array $tabEpreuves, $strLangue = 'fr') {
|
||||
<?php } ?>
|
||||
<?php } elseif ($intRangeTotal > 0) { ?>
|
||||
<p class="text-muted small"><?php fxBibTexteTrad('bib_v5_production_excel_generate_help', 1); ?></p>
|
||||
<form method="post" action="<?php echo fxBibEsc($strExcelUrl); ?>" target="_blank">
|
||||
<form method="post" action="<?php echo fxBibEsc($strExcelUrl); ?>" target="_blank"
|
||||
class="bib-production-return-preparation-form">
|
||||
<input type="hidden" name="action" value="generate">
|
||||
<input type="hidden" name="eve_id" value="<?php echo $intEveId; ?>">
|
||||
<input type="hidden" name="csrf_token" value="<?php echo fxBibEsc(fxBibCsrfToken()); ?>">
|
||||
@ -5160,7 +5162,7 @@ function renderBibProductionPreview(array $tabEpreuves, $strLangue = 'fr') {
|
||||
}
|
||||
|
||||
/**
|
||||
* MSIN-4440 / MSIN-4467 — Espaces principaux + outils et panneau de détail unique.
|
||||
* MSIN-4440 / MSIN-4467 / MSIN-4470 — Espaces principaux + outils et panneau de détail unique.
|
||||
*/
|
||||
function renderBibToolNav($int_eve_id, $tabEpreuves, $strLangue = 'fr') {
|
||||
$int_eve_id = (int)$int_eve_id;
|
||||
@ -5181,12 +5183,17 @@ function renderBibToolNav($int_eve_id, $tabEpreuves, $strLangue = 'fr') {
|
||||
ob_start();
|
||||
?>
|
||||
<div class="bib-tool-hub">
|
||||
<nav class="bib-workspace-nav" role="tablist" aria-label="<?php echo fxBibEsc($strNavLabel); ?>">
|
||||
<?php echo renderBibWorkspaceTab('preparation', 'bib_v5_workspace_preparation', true); ?>
|
||||
<?php echo renderBibWorkspaceTab('operations', 'bib_v5_workspace_operations'); ?>
|
||||
<?php echo renderBibWorkspaceTab('settings', 'bib_v5_workspace_settings'); ?>
|
||||
<?php echo renderBibWorkspaceTab('production', 'bib_v5_workspace_production'); ?>
|
||||
</nav>
|
||||
<div class="bib-workspace-bar">
|
||||
<nav class="bib-workspace-nav" role="tablist" aria-label="<?php echo fxBibEsc($strNavLabel); ?>">
|
||||
<?php echo renderBibWorkspaceTab('preparation', 'bib_v5_workspace_preparation', true); ?>
|
||||
<?php echo renderBibWorkspaceTab('operations', 'bib_v5_workspace_operations'); ?>
|
||||
<?php echo renderBibWorkspaceTab('settings', 'bib_v5_workspace_settings'); ?>
|
||||
<?php echo renderBibWorkspaceTab('production', 'bib_v5_workspace_production'); ?>
|
||||
</nav>
|
||||
<div class="bib-workspace-action">
|
||||
<?php echo renderBibToolNavBtn('dist_print', 'bib_v4_dist_print_title'); ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="bib-workspace-panel" data-bib-workspace-panel="preparation">
|
||||
<?php echo renderBibPreparationOverview($tabEpreuves, $strAnomBadges); ?>
|
||||
@ -5204,7 +5211,6 @@ function renderBibToolNav($int_eve_id, $tabEpreuves, $strLangue = 'fr') {
|
||||
<?php if (fxBibGlobalBatchToolIsAvailable($int_eve_id, $tabEpreuves)) {
|
||||
echo renderBibToolNavBtn('global_batch', 'bib_v4_global_batch_title');
|
||||
} ?>
|
||||
<?php echo renderBibToolNavBtn('dist_print', 'bib_v4_dist_print_title'); ?>
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
@ -5697,15 +5703,17 @@ function fxShowBibTool4($str_code, $int_eve_id, $strLangue){
|
||||
|
||||
?>
|
||||
|
||||
<div class="card-header bib-tool-card-header">
|
||||
<h2 class="bib-tool-card-title"><?php afficheTexte('promoteur_bib_tool')?></h2>
|
||||
<?php
|
||||
if (function_exists('fxEveAccesPermInspectBadge')) {
|
||||
echo ' ' . fxEveAccesPermInspectBadge('dossards.manage', 'bib');
|
||||
echo ' ' . fxEveAccesPermInspectBadge('epreuves.edit_qte', 'bib');
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
// MSIN-4470 — Retire le bandeau « Épreuves » sans masquer les badges d'inspection des permissions.
|
||||
$strPermInspectBadges = '';
|
||||
if (function_exists('fxEveAccesPermInspectBadge')) {
|
||||
$strPermInspectBadges .= fxEveAccesPermInspectBadge('dossards.manage', 'bib');
|
||||
$strPermInspectBadges .= fxEveAccesPermInspectBadge('epreuves.edit_qte', 'bib');
|
||||
}
|
||||
if (trim($strPermInspectBadges) !== '') {
|
||||
echo '<div class="bib-tool-permission-inspect">' . $strPermInspectBadges . '</div>';
|
||||
}
|
||||
?>
|
||||
|
||||
<div id="module-bib" class="epr-wrapper" data-csrf-token="<?php echo fxBibEsc(fxBibCsrfToken()); ?>" data-lang="<?php echo fxBibEsc($strLangue); ?>" data-eve-id="<?php echo (int)$int_eve_id; ?>" data-allow-inter-epr="<?php echo fxBibEventAllowsInterEprDuplicates((int)$int_eve_id) ? '1' : '0'; ?>"<?php echo fxBibModuleJsDataAttrs(); ?><?php echo fxAdminTextEditModeActive() ? ' data-bib-trad="1"' : ''; ?>>
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
* Constantes *
|
||||
*
|
||||
**************/
|
||||
define('_VERSION_CODE', '4.72.856'); // MSIN-4469
|
||||
define('_VERSION_CODE', '4.72.858'); // MSIN-4470
|
||||
define('_DATE_CODE', '2026-07-21');
|
||||
//MSIN-4290
|
||||
define('QR_SECRET_KEY', 'ms1_qr_2026_cle_secrete_longue_et_fixe');
|
||||
|
||||
63
sql/MSIN-4470-corrections-interface-dossards.sql
Normal file
63
sql/MSIN-4470-corrections-interface-dossards.sql
Normal file
@ -0,0 +1,63 @@
|
||||
-- MSIN-4470 — Corrections de l'interface des dossards
|
||||
-- Prérequis : MSIN-4424-bib-allow-inter-epr.sql et MSIN-4467-refonte-visuelle-dossards.sql.
|
||||
-- Idempotent. Exécuter avant le déploiement PHP/CSS/JS.
|
||||
|
||||
UPDATE info
|
||||
SET info_texte = 'Autoriser les mêmes numéros de dossard entre épreuves (doublons)',
|
||||
info_description = 'MSIN-4470'
|
||||
WHERE info_clef = 'bib_v4_allow_inter_epr'
|
||||
AND info_langue = 'fr'
|
||||
AND info_prg = 'compte.php';
|
||||
|
||||
UPDATE info
|
||||
SET info_texte = 'Allow the same bib numbers across races (duplicates)',
|
||||
info_description = 'MSIN-4470'
|
||||
WHERE info_clef = 'bib_v4_allow_inter_epr'
|
||||
AND info_langue = 'en'
|
||||
AND info_prg = 'compte.php';
|
||||
|
||||
INSERT INTO info (
|
||||
info_clef,
|
||||
info_langue,
|
||||
info_texte,
|
||||
info_aide,
|
||||
info_prg,
|
||||
info_description,
|
||||
info_trie,
|
||||
info_actif,
|
||||
info_option1,
|
||||
info_option2,
|
||||
info_option3,
|
||||
info_creation
|
||||
)
|
||||
SELECT
|
||||
src.info_clef,
|
||||
src.info_langue,
|
||||
src.info_texte,
|
||||
'',
|
||||
'compte.php',
|
||||
'MSIN-4470',
|
||||
0,
|
||||
1,
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
NOW()
|
||||
FROM (
|
||||
SELECT
|
||||
'bib_v4_allow_inter_epr' AS info_clef,
|
||||
'fr' AS info_langue,
|
||||
'Autoriser les mêmes numéros de dossard entre épreuves (doublons)' AS info_texte
|
||||
UNION ALL
|
||||
SELECT
|
||||
'bib_v4_allow_inter_epr',
|
||||
'en',
|
||||
'Allow the same bib numbers across races (duplicates)'
|
||||
) src
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM info current_info
|
||||
WHERE current_info.info_clef = src.info_clef
|
||||
AND current_info.info_langue = src.info_langue
|
||||
AND current_info.info_prg = 'compte.php'
|
||||
);
|
||||
Reference in New Issue
Block a user