Refactor bib management interface to enhance translation functionality and improve button visibility. Introduced new helper functions for managing translation pop-ups and updated CSS styles for the new translation button. Incremented version code to 4.72.637 in inc_settings.php.

This commit is contained in:
2026-06-16 17:26:18 -04:00
parent b7ec814231
commit 7a8dafa49b
4 changed files with 117 additions and 19 deletions

View File

@ -1151,11 +1151,37 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
background-color:#6c757d;
color:#fff;
}
.btn-auto.btn-secondary + .btn-aide-bib:hover{
.btn-auto.btn-secondary + .btn-aide-bib.bib-aide-trigger:hover{
background-color:#5a6268;
color:#fff;
}
.btn-aide-trad{
border-color:#e67e22;
background:#f39c12;
color:#fff;
}
.btn-aide-trad:hover,
.btn-aide-trad:focus{
background:#e67e22;
color:#fff;
}
.btn-aide-trad .fa{
font-size:10px;
line-height:1;
}
.epr-line-header .btn-aide-trad{
width:18px;
height:18px;
}
.epr-line-header .btn-aide-trad .fa{
font-size:9px;
}
.tippy-box[data-theme~='ms1-bib']{
background-color:#1e293b;
color:#f8fafc;

View File

@ -2128,7 +2128,7 @@ if ($strLangue == 'fr') {
btnAuto.textContent = isActive ? row.dataset.autoLabelConfig : row.dataset.autoLabel;
btnAuto.classList.toggle('btn-success', isActive);
btnAuto.classList.toggle('btn-secondary', !isActive);
let autoAide = bibQuery(row, '.epr-action-auto-group > .btn-aide-bib');
let autoAide = bibQuery(row, '.epr-action-auto-group > .bib-aide-trigger');
if (autoAide) {
autoAide.classList.toggle('btn-aide-tone-success', isActive);
autoAide.classList.toggle('btn-aide-tone-secondary', !isActive);
@ -2470,6 +2470,31 @@ if ($strLangue == 'fr') {
moduleBib.addEventListener('click', function (e) {
let btnTrad = e.target.closest('.btn-bib-trad');
if (btnTrad) {
e.preventDefault();
e.stopPropagation();
let url = btnTrad.getAttribute('data-trad-url');
if (!url) {
return;
}
let clef = btnTrad.getAttribute('data-info-clef') || 'bib_trad';
let popup = window.open(
url,
'bib_trad_' + clef,
'width=960,height=640,scrollbars=yes,resizable=yes'
);
if (popup) {
let timer = setInterval(function () {
if (popup.closed) {
clearInterval(timer);
window.location.reload();
}
}, 400);
}
return;
}
// =====================
// DELETE
// =====================

View File

@ -2589,7 +2589,7 @@ function renderBatchConfig($tabBibAssignments, $strLangue = 'fr', $isTeamEpreuve
<!-- ANALYSE -->
<?php echo fxBibActionGroupOpen('epr-batch-info-group text-muted small'); ?>
<span class="batch-info-text"><?php fxBibTexte('bib_v4_batch_info', 1); ?></span>
<?php echo fxBibAideButton('bib_v4_batch_info'); ?>
<?php echo fxBibHelpButtons('bib_v4_batch_info'); ?>
<?php echo fxBibActionGroupClose(); ?>
</div>
@ -2769,10 +2769,57 @@ function fxBibAideButton($clef, $strTone = '') {
. '</button>';
}
/** Dev ou préprod — crayon traduction jamais affiché en prod. */
function fxBibIsDevPreprod() {
global $vblnEnvironementDev, $vblnEnvironementPreProd;
return !empty($vblnEnvironementDev) || !empty($vblnEnvironementPreProd);
}
/** Superadm connecté en dev/préprod — édition textes bib v4 via traduction.php. */
function fxBibCanEditTrad() {
return !empty($_SESSION['usa_id']) && fxBibIsDevPreprod();
}
/** URL pop-up traduction.php — info_texte + info_aide FR/EN. */
function fxBibTradUrl($clef) {
global $vDomaine, $vPage;
$strInfoPrg = fxBibInfoPage();
$strPage = !empty($vPage) ? $vPage : $strInfoPrg;
return $vDomaine . '/php/traduction.php?' . http_build_query(array(
'clef' => $clef,
'pk_prg' => $strInfoPrg,
'bd' => 'client',
'page' => $strPage,
));
}
/** Crayon — ouvre traduction.php (superadm dev/préprod uniquement). */
function fxBibTradButton($clef) {
if (!fxBibCanEditTrad() || strpos($clef, 'bib_v4_') !== 0) {
return '';
}
return '<button type="button" class="btn-bib-trad btn-aide-bib btn-aide-trad"'
. ' data-info-clef="' . fxBibEsc($clef) . '"'
. ' data-trad-url="' . fxBibEsc(fxBibTradUrl($clef)) . '"'
. ' title="Modifier textes FR/EN"'
. ' aria-label="Modifier textes">'
. '<i class="fa fa-pencil" aria-hidden="true"></i>'
. '</button>';
}
/** (?) + crayon traduction — à côté de chaque libellé / action bib v4. */
function fxBibHelpButtons($clef, $strTone = '') {
return fxBibAideButton($clef, $strTone) . fxBibTradButton($clef);
}
/** Libellé info_texte + bouton (?) si info_aide renseigné. */
function fxBibTexteAide($clef, $mem_echo = 1, $strFallback = '') {
$str = fxBibTexte($clef, 0, $strFallback);
$html = fxBibEsc($str) . fxBibAideButton($clef);
$html = fxBibEsc($str) . fxBibHelpButtons($clef);
if ($mem_echo) {
echo $html;
}
@ -2781,7 +2828,7 @@ function fxBibTexteAide($clef, $mem_echo = 1, $strFallback = '') {
/** Titre d'en-tête de bloc (assignation, gestion…) + aide. */
function fxBibBlockHeader($clef, $strFallback = '') {
return '<span class="epr-header-label">' . fxBibEsc(fxBibTexte($clef, 0, $strFallback)) . fxBibAideButton($clef) . '</span>';
return '<span class="epr-header-label">' . fxBibEsc(fxBibTexte($clef, 0, $strFallback)) . fxBibHelpButtons($clef) . '</span>';
}
/** Cellule d'en-tête de colonne séquence + aide optionnelle (info_texte peut être vide). */
@ -2793,7 +2840,7 @@ function fxBibColHeader($clef, $strFallback = '') {
}
return '<span class="' . $strClass . '">'
. fxBibEsc($strLabel)
. fxBibAideButton($clef)
. fxBibHelpButtons($clef)
. '</span>';
}
@ -2817,7 +2864,7 @@ function renderBibAddRangeButton($epr_id) {
data-epr-id="<?php echo (int)$epr_id; ?>"<?php echo fxBibTippyAttr('bib_v4_tip_add'); ?>>
<?php fxBibTexte('bib_v4_add', 1); ?>
</button>
<?php echo fxBibAideButton('bib_v4_add', 'success'); ?>
<?php echo fxBibHelpButtons('bib_v4_add', 'success'); ?>
<?php echo fxBibActionGroupClose(); ?>
</div>
<?php
@ -2856,7 +2903,7 @@ function renderBibAssignActions($tabBibAssignments, $strLangue, $infoBib, $blnAu
<button type="button" class="btn btn-sm btn-secondary btn-assign-batch"<?php echo fxBibTippyAttr('bib_v4_tip_assign_seq'); ?>>
<?php fxBibTexte('bib_v4_assign_seq', 1); ?>
</button>
<?php echo fxBibAideButton('bib_v4_assign_seq', 'secondary'); ?>
<?php echo fxBibHelpButtons('bib_v4_assign_seq', 'secondary'); ?>
<?php echo fxBibActionGroupClose(); ?>
<?php echo fxBibActionGroupOpen('epr-action-reset-group', $blnShowReset); ?>
@ -2864,7 +2911,7 @@ function renderBibAssignActions($tabBibAssignments, $strLangue, $infoBib, $blnAu
class="btn btn-sm btn-danger btn-reset"<?php echo fxBibTippyAttr('bib_v4_tip_reset'); ?>>
<?php fxBibTexte('bib_v4_reset', 1); ?>
</button>
<?php echo fxBibAideButton('bib_v4_reset', 'danger'); ?>
<?php echo fxBibHelpButtons('bib_v4_reset', 'danger'); ?>
<?php echo fxBibActionGroupClose(); ?>
<?php echo fxBibActionGroupOpen('epr-action-auto-group', $blnHasSequences); ?>
@ -2872,10 +2919,10 @@ function renderBibAssignActions($tabBibAssignments, $strLangue, $infoBib, $blnAu
class="btn btn-sm btn-auto <?php echo $blnAutoActive ? 'btn-success' : 'btn-secondary'; ?>"<?php echo fxBibTippyAttr('bib_v4_tip_auto'); ?>>
<?php echo fxBibEsc($blnAutoActive ? fxBibTexte('bib_v4_auto_config', 0) : fxBibTexte('bib_v4_auto', 0)); ?>
</button>
<?php echo fxBibAideButton('bib_v4_auto', $blnAutoActive ? 'success' : 'secondary'); ?>
<?php echo fxBibHelpButtons('bib_v4_auto', $blnAutoActive ? 'success' : 'secondary'); ?>
<?php echo fxBibActionGroupOpen('epr-auto-badge-wrap ml-1', $blnAutoActive); ?>
<span class="bib-auto-badge badge badge-success"><?php fxBibTexte('bib_v4_auto_badge', 1); ?></span>
<?php echo fxBibAideButton('bib_v4_auto_badge', 'success'); ?>
<?php echo fxBibHelpButtons('bib_v4_auto_badge', 'success'); ?>
<?php echo fxBibActionGroupClose(); ?>
<?php echo fxBibActionGroupClose(); ?>
</div>
@ -2883,22 +2930,22 @@ function renderBibAssignActions($tabBibAssignments, $strLangue, $infoBib, $blnAu
<div class="auto-config-container bib-ui-hidden">
<?php echo fxBibActionGroupOpen('epr-auto-info-group text-muted small mb-2'); ?>
<span class="auto-info-text"><?php fxBibTexte('bib_v4_auto_select_hint', 1); ?></span>
<?php echo fxBibAideButton('bib_v4_auto_select_hint'); ?>
<?php echo fxBibHelpButtons('bib_v4_auto_select_hint'); ?>
<?php echo fxBibActionGroupClose(); ?>
<div class="epr-action-row">
<?php echo fxBibActionGroupOpen('epr-action-accept-auto-group'); ?>
<button type="button" class="btn btn-sm btn-success btn-accepter-auto"><?php fxBibTexte('bib_v4_auto_accept', 1); ?></button>
<?php echo fxBibAideButton('bib_v4_auto_accept', 'success'); ?>
<?php echo fxBibHelpButtons('bib_v4_auto_accept', 'success'); ?>
<?php echo fxBibActionGroupClose(); ?>
<?php echo fxBibActionGroupOpen('epr-action-cancel-auto-group'); ?>
<button type="button" class="btn btn-sm btn-secondary btn-annuler-auto"><?php fxBibTexte('bib_v4_auto_cancel', 1); ?></button>
<?php echo fxBibAideButton('bib_v4_auto_cancel', 'secondary'); ?>
<?php echo fxBibHelpButtons('bib_v4_auto_cancel', 'secondary'); ?>
<?php echo fxBibActionGroupClose(); ?>
<?php echo fxBibActionGroupOpen('epr-action-desactiver-group', $blnAutoActive); ?>
<button type="button" class="btn btn-sm btn-danger btn-desactiver-auto">
<?php fxBibTexte('bib_v4_auto_disable', 1); ?>
</button>
<?php echo fxBibAideButton('bib_v4_auto_disable', 'danger'); ?>
<?php echo fxBibHelpButtons('bib_v4_auto_disable', 'danger'); ?>
<?php echo fxBibActionGroupClose(); ?>
</div>
</div>
@ -2910,13 +2957,13 @@ function renderBibAssignActions($tabBibAssignments, $strLangue, $infoBib, $blnAu
<button type="button" class="btn btn-sm btn-secondary btn-simuler-batch">
<?php fxBibTexte('bib_v4_batch_simulate', 1); ?>
</button>
<?php echo fxBibAideButton('bib_v4_batch_simulate', 'secondary'); ?>
<?php echo fxBibHelpButtons('bib_v4_batch_simulate', 'secondary'); ?>
<?php echo fxBibActionGroupClose(); ?>
<?php echo fxBibActionGroupOpen('epr-action-go-group', false); ?>
<button type="button" class="btn btn-sm btn-success btn-go-batch">
<?php fxBibTexte('bib_v4_batch_go', 1); ?>
</button>
<?php echo fxBibAideButton('bib_v4_batch_go', 'success'); ?>
<?php echo fxBibHelpButtons('bib_v4_batch_go', 'success'); ?>
<?php echo fxBibActionGroupClose(); ?>
</div>
</div>
@ -2940,7 +2987,7 @@ function fxShowBibTool4($str_code, $int_eve_id, $strLangue){
<h2><?php afficheTexte('promoteur_bib_tool')?></h2>
</div>
<div id="module-bib" class="epr-wrapper" data-csrf-token="<?php echo fxBibEsc(fxBibCsrfToken()); ?>">
<div id="module-bib" class="epr-wrapper" data-csrf-token="<?php echo fxBibEsc(fxBibCsrfToken()); ?>"<?php echo fxBibCanEditTrad() ? ' data-bib-trad="1"' : ''; ?>>
<?php for($i = 1; $i <= count($tabEpreuves); $i++){ ?>

View File

@ -7,7 +7,7 @@
* Constantes *
*
**************/
define('_VERSION_CODE', '4.72.636');
define('_VERSION_CODE', '4.72.637');
define('_DATE_CODE', '2026-06-17');
//MSIN-4290
define('QR_SECRET_KEY', 'ms1_qr_2026_cle_secrete_longue_et_fixe');