From 146f692a464c79e1cfebcf233f4c4d3ad95c2979 Mon Sep 17 00:00:00 2001 From: stephan Date: Thu, 18 Jun 2026 13:48:01 -0400 Subject: [PATCH] Enhance mobile registration interface and update version code This commit introduces several improvements to the mobile registration functionality, including the addition of a new function for parsing event IDs and updates to the CSS for a cleaner layout. The logic for displaying event information has been refined, and new JavaScript features have been added to improve user navigation. The version code is incremented to 4.72.671 to reflect these enhancements, further optimizing the mobile user experience. --- compte.php | 6 +- css/style.css | 333 ++++++++++++++----- inc_footer_scripts.php | 9 + inc_tableau_inscriptions_mobile.php | 2 +- mobile.php | 2 +- php/inc_fx_inscriptions_mobile.php | 490 ++++++++++++++-------------- php/inc_settings.php | 2 +- 7 files changed, 498 insertions(+), 346 deletions(-) diff --git a/compte.php b/compte.php index 9817bb4..f86a18a 100644 --- a/compte.php +++ b/compte.php @@ -335,6 +335,7 @@ $strMetaTitle = fxRemoveHtml(fxUnescape($recPage['pag_titre_' . $strLangue])); $strMetaDescription = fxRemoveHtml(fxUnescape($recPage['pag_description_' . $strLangue])); $strMetaKeywords = fxRemoveHtml(fxUnescape($recPage['pag_keywords_' . $strLangue])); $blnBoutonRetour = true; +$blnHideCompteTitle = false; require_once("inc_header.php"); @@ -344,7 +345,7 @@ require_once("inc_header.php");
@@ -361,7 +362,7 @@ require_once("inc_header.php"); } if (isset($_SESSION['msg'])) { echo fxMessage($_SESSION['msg'], '', $strLangue); - } else { + } else if (empty($blnHideCompteTitle)) { ?>
.epr-block > .epr-header:not(.inscr-mobile-result-card__head){ - border-radius:0; +.inscr-mobile-list-anchor{ + scroll-margin-top:8px; +} + +.inscr-mobile-pager .pagination{ + margin-bottom:0; +} + +.inscr-mobile-pager .page-link{ + min-width:38px; + text-align:center; } diff --git a/inc_footer_scripts.php b/inc_footer_scripts.php index 8fe6de5..86871f1 100644 --- a/inc_footer_scripts.php +++ b/inc_footer_scripts.php @@ -3453,6 +3453,15 @@ if ($strLangue == 'fr') { if (!moduleInscr) { return; } + var params = new URLSearchParams(window.location.search); + if (params.get('pec_id')) { + moduleInscr.scrollIntoView({block: 'start'}); + } else if (params.get('pg') && parseInt(params.get('pg'), 10) > 1) { + var listAnchor = document.getElementById('inscr-mobile-list'); + if (listAnchor) { + listAnchor.scrollIntoView({block: 'start'}); + } + } moduleInscr.addEventListener('click', function (e) { var btnToggle = e.target.closest('.epr-block-toggle'); if (!btnToggle || !moduleInscr.contains(btnToggle)) { diff --git a/inc_tableau_inscriptions_mobile.php b/inc_tableau_inscriptions_mobile.php index 54984ce..2b0d459 100644 --- a/inc_tableau_inscriptions_mobile.php +++ b/inc_tableau_inscriptions_mobile.php @@ -11,7 +11,7 @@ global $objDatabase, $vDomaine, $strLangue; $intEveId = 0; if (isset($_GET['promoteur_eve_id'])) { - $intEveId = (int)base64_decode(urldecode($_GET['promoteur_eve_id'])); + $intEveId = fxInscrMobileParseEveId($_GET['promoteur_eve_id']); } if ($intEveId === 0) { diff --git a/mobile.php b/mobile.php index 821c592..d555d87 100644 --- a/mobile.php +++ b/mobile.php @@ -29,7 +29,7 @@ if (!isset($_SESSION['com_id'])) { $intEveId = 0; if (!empty($_GET['promoteur_eve_id'])) { - $intEveId = (int)base64_decode(urldecode($_GET['promoteur_eve_id'])); + $intEveId = fxInscrMobileParseEveId($_GET['promoteur_eve_id']); } $tabEveIds = fxInscrMobileGetPromoteurEveIds($_SESSION['com_id']); diff --git a/php/inc_fx_inscriptions_mobile.php b/php/inc_fx_inscriptions_mobile.php index f163abd..6efc61b 100644 --- a/php/inc_fx_inscriptions_mobile.php +++ b/php/inc_fx_inscriptions_mobile.php @@ -1,8 +1,7 @@ isset($_GET['rech_prenom']) ? trim($_GET['rech_prenom']) : '', @@ -54,7 +70,12 @@ function fxInscrMobileParseRequest() { ); if (!empty($_GET['sel_rech_epreuve'])) { - $arr['sel_rech_epreuve'] = intval(base64_decode(urldecode($_GET['sel_rech_epreuve']))); + $decoded = base64_decode(urldecode($_GET['sel_rech_epreuve']), true); + if ($decoded !== false && $decoded !== '') { + $arr['sel_rech_epreuve'] = intval($decoded); + } else { + $arr['sel_rech_epreuve'] = intval($_GET['sel_rech_epreuve']); + } } return $arr; @@ -74,17 +95,6 @@ function fxInscrMobileFilterActiveCount($arrReq) { return $int; } -function fxInscrMobileShouldShowResults($arrReq) { - return isset($_GET['btn_recherche']) - || isset($_GET['pg']) - || isset($_GET['apply_filters']) - || $arrReq['rech_prenom'] !== '' - || $arrReq['rech_nom'] !== '' - || $arrReq['rech_no_commande'] !== '' - || $arrReq['rech_nom_equipe'] !== '' - || fxInscrMobileFilterActiveCount($arrReq) > 0; -} - function fxInscrMobileBuildWhere($intEveId, $arrReq) { global $objDatabase; @@ -172,24 +182,12 @@ function fxInscrMobileBibDisplay($arrRow) { return fxShowBibNumber($arrRow['no_bib'], $arrRow['epr_id'], 'participant'); } -function fxInscrMobileCollapseToggle($strLangue, $blnCollapsed = true) { - $strCollapse = ($strLangue === 'fr') ? 'Réduire' : 'Collapse'; - $strExpand = ($strLangue === 'fr') ? 'Développer' : 'Expand'; - $strLabel = $blnCollapsed ? $strExpand : $strCollapse; - $strIcon = $blnCollapsed ? 'fa-chevron-down' : 'fa-chevron-up'; - - return ''; -} - -function fxInscrMobileQueryString($arrReq, $intEveId, $arrExtra = array()) { +/** Paramètres GET pour liens (sans double-encodage). */ +function fxInscrMobileQueryParams($intEveId, $arrReq, $arrExtra = array()) { $tab = array( - 'promoteur_eve_id' => urlencode(base64_encode($intEveId)), + 'promoteur_eve_id' => base64_encode((string)$intEveId), ); + if ($arrReq['rech_prenom'] !== '') { $tab['rech_prenom'] = $arrReq['rech_prenom']; } @@ -209,52 +207,80 @@ function fxInscrMobileQueryString($arrReq, $intEveId, $arrExtra = array()) { $tab['chk_cancelled'] = 1; } if ($arrReq['sel_rech_epreuve'] > 0) { - $tab['sel_rech_epreuve'] = urlencode(base64_encode($arrReq['sel_rech_epreuve'])); + $tab['sel_rech_epreuve'] = base64_encode((string)$arrReq['sel_rech_epreuve']); } - if (!empty($arrExtra)) { - $tab = array_merge($tab, $arrExtra); + if (!empty($_GET['lng'])) { + $tab['lng'] = $_GET['lng']; + } + if (!empty($arrReq['pg']) && (int)$arrReq['pg'] > 1) { + $tab['pg'] = (int)$arrReq['pg']; } - return http_build_query($tab, '', '&'); + foreach ($arrExtra as $strKey => $mixVal) { + if ($mixVal === null || $mixVal === '' || ($strKey === 'pec_id' && (int)$mixVal === 0)) { + unset($tab[$strKey]); + } else { + $tab[$strKey] = $mixVal; + } + } + + return $tab; +} + +function fxInscrMobileBuildUrl($strBaseUrl, $intEveId, $arrReq, $arrExtra = array()) { + $tab = fxInscrMobileQueryParams($intEveId, $arrReq, $arrExtra); + $strQs = http_build_query($tab, '', '&'); + + return $strBaseUrl . ($strQs !== '' ? '?' . $strQs : ''); +} + +function fxInscrMobilePaginationUrl($strBaseUrl, $intEveId, $arrReq) { + $tab = fxInscrMobileQueryParams($intEveId, $arrReq, array('pec_id' => null)); + unset($tab['pg'], $tab['pec_id']); + $strQs = http_build_query($tab, '', '&'); + + return $strBaseUrl . ($strQs !== '' ? '?' . $strQs : '?promoteur_eve_id=' . rawurlencode(base64_encode((string)$intEveId))); +} + +function fxInscrMobileRenderPagination($strBaseUrl, $intEveId, $arrReq, $intTotal, $intPerPage, $intPage) { + if ($intTotal <= $intPerPage) { + return ''; + } + + return '
' + . fxGetPagination( + fxInscrMobilePaginationUrl($strBaseUrl, $intEveId, $arrReq), + $intTotal, + $intPerPage, + $intPage + ) + . '
'; } function fxInscrMobileRenderEventPicker($tabEveIds, $strLangue, $strBaseUrl) { - global $objDatabase, $vDomaine, $vRepertoireFichiers; + global $objDatabase; $strTitle = ($strLangue === 'fr') ? 'Choisir un événement' : 'Choose an event'; - $strHint = ($strLangue === 'fr') - ? 'Sélectionnez l\'événement pour gérer les inscriptions.' - : 'Select the event to manage registrations.'; - echo '

' . fxInscrMobileEsc($strTitle) . '

'; - echo '

' . fxInscrMobileEsc($strHint) . '

'; - echo '
'; + echo '
'; + echo '

' . fxInscrMobileEsc($strTitle) . '

'; + echo '
'; foreach ($tabEveIds as $intEveId) { - $qry = 'SELECT e.*, t.te_icone FROM inscriptions_evenements e, inscriptions_types_evenements t' - . ' WHERE t.te_id = e.te_id AND e.eve_actif = 1 AND e.eve_id = ' . intval($intEveId); + $qry = 'SELECT e.* FROM inscriptions_evenements e WHERE e.eve_actif = 1 AND e.eve_id = ' . intval($intEveId); $tabEv = $objDatabase->fxGetRow($qry); if ($tabEv === null) { continue; } - $strUrl = $strBaseUrl . '?promoteur_eve_id=' . urlencode(base64_encode($intEveId)); - if (!empty($_GET['lng'])) { - $strUrl .= '&lng=' . fxInscrMobileEsc($_GET['lng']); - } - - echo ''; - echo '
'; - echo '
' . fxInscrMobileEsc(fxUnescape($tabEv['eve_nom_' . $strLangue])) . '
'; - if (trim($tabEv['eve_date_debut']) !== '' && $tabEv['eve_date_debut'] !== '0000-00-00') { - echo '
' . fxInscrMobileEsc(fxShowDate($tabEv['eve_date_debut'], $strLangue)) . '
'; - } - echo '
'; - echo '
'; + $strUrl = fxInscrMobileBuildUrl($strBaseUrl, $intEveId, fxInscrMobileParseRequest(), array()); + echo '
'; + echo '' . fxInscrMobileEsc(fxUnescape($tabEv['eve_nom_' . $strLangue])) . ''; + echo ''; echo ''; } - echo '
'; + echo '
'; } function fxInscrMobileRenderList($intEveId, $strLangue, $strBaseUrl, $arrReq) { @@ -263,48 +289,40 @@ function fxInscrMobileRenderList($intEveId, $strLangue, $strBaseUrl, $arrReq) { $arrEvenement = fxGetEvenementsId($intEveId); $strEveNom = fxUnescape($arrEvenement['eve_nom_' . $strLangue]); $intFilterCount = fxInscrMobileFilterActiveCount($arrReq); - $strQs = fxInscrMobileQueryString($arrReq, $intEveId); $strBackUrl = fxInscrMobileIsEntry() ? $strBaseUrl : ($vDomaine . ($strLangue === 'fr' ? '/compte/inc_tableau_promoteur' : '/account/inc_tableau_promoteur') - . '?promoteur_eve_id=' . urlencode(base64_encode($intEveId))); + . '?promoteur_eve_id=' . rawurlencode(base64_encode((string)$intEveId))); - echo ''; - echo ''; - afficheTexte('promoteur_back'); - echo ''; + echo '
'; - echo '
'; - echo '

' . afficheTexte('inscr_mobile_title', 0) . '

'; - echo '
'; - echo '

' . fxInscrMobileEsc($strEveNom) . '

'; + echo '
'; + echo ''; + echo '
'; + echo '

' . fxInscrMobileEsc(fxInscrMobileT('inscr_mobile_title')) . '

'; + echo '
' . fxInscrMobileEsc($strEveNom) . '
'; + echo '
'; - echo '
'; + // Recherche (repliable — fermée par défaut pour montrer la liste d'abord) + echo '
'; + echo '' . fxInscrMobileEsc(fxInscrMobileT('txt_recherche')) . ''; + echo '
'; + echo '
'; + echo ''; - // —— Recherche —— - echo '
'; - echo '
'; - echo '
'; - echo '
' . afficheTexte('txt_recherche', 0) . '
'; - echo '
'; - echo '
'; - echo ''; - echo ''; - - echo '
'; - echo '
'; - - echo '
'; - echo '
'; - - echo '
'; - echo '
'; - - echo '
'; - echo '
'; + $arrFields = array( + 'rech_prenom' => 'rech_prenom', + 'rech_nom' => 'rech_nom', + 'rech_no_commande' => 'rech_no_commande', + 'rech_nom_equipe' => 'rech_equipe', + ); + foreach ($arrFields as $strKey => $strLbl) { + echo ''; + echo ''; + } if ($arrReq['sel_rech_epreuve'] > 0) { - echo ''; + echo ''; } if ($arrReq['chk_bib']) { echo ''; @@ -313,132 +331,124 @@ function fxInscrMobileRenderList($intEveId, $strLangue, $strBaseUrl, $arrReq) { echo ''; } - echo ''; - echo ''; - echo '
'; + echo ''; + echo '
'; - // —— Filtres —— - $sqlEpreuves = 'SELECT * FROM inscriptions_epreuves e WHERE e.eve_id = ' . intval($intEveId) . ' AND epr_actif = 1 ORDER BY epr_id'; + // Filtres global $objDatabase; - $tabEpreuves = $objDatabase->fxGetResults($sqlEpreuves); + $tabEpreuves = $objDatabase->fxGetResults( + 'SELECT * FROM inscriptions_epreuves e WHERE e.eve_id = ' . intval($intEveId) . ' AND epr_actif = 1 ORDER BY epr_id' + ); - $strFilterBadge = ''; + $strFilterLabel = fxInscrMobileT('inscr_mobile_filters'); if ($intFilterCount > 0) { - $strFilterBadge = '' . (int)$intFilterCount . ''; + $strFilterLabel .= ' (' . $intFilterCount . ')'; } - echo '
'; - echo '
'; + // Liste complète dès l'ouverture + $tabRows = fxInscrMobileFetchRows($intEveId, $arrReq); + $intNbItemsParPage = 50; + $intNbTotal = ($tabRows !== null) ? count($tabRows) : 0; + $intPage = 1; + $intStart = 1; + $intEnd = $intNbItemsParPage; + if (!empty($_GET['pg'])) { + $intPage = max(1, intval($_GET['pg'])); + } + if (intval($intPage) > 1) { + $intStart = ($intPage - 1) * $intNbItemsParPage + 1; + $intEnd = $intStart + $intNbItemsParPage - 1; + } + if ($intEnd > $intNbTotal) { + $intEnd = $intNbTotal; + } - // —— Résultats —— - if (fxInscrMobileShouldShowResults($arrReq)) { - $tabRows = fxInscrMobileFetchRows($intEveId, $arrReq); - $intNbItemsParPage = 100; - $intPage = $arrReq['pg']; - $intNbTotal = ($tabRows !== null) ? count($tabRows) : 0; - $intStart = ($intPage > 1) ? (($intPage - 1) * $intNbItemsParPage + 1) : 1; - $intEnd = min($intStart + $intNbItemsParPage - 1, $intNbTotal); + echo '
'; + echo '
'; + if ($strLangue === 'fr') { + echo '' . (int)$intNbTotal . ' inscription' . ($intNbTotal > 1 ? 's' : '') . ''; + } else { + echo '' . (int)$intNbTotal . ' registration' . ($intNbTotal !== 1 ? 's' : '') . ''; + } + if ($intNbTotal > $intNbItemsParPage) { + $intNbPages = (int)ceil($intNbTotal / $intNbItemsParPage); + echo '' . ($strLangue === 'fr' ? 'Page ' : 'Page ') . $intPage . ' / ' . $intNbPages . ''; + } + echo '
'; - if ($intNbTotal > 0) { - $intShown = $intEnd - $intStart + 1; - $intNbPages = (int)ceil($intNbTotal / $intNbItemsParPage); - echo '

'; - if ($strLangue === 'fr') { - echo fxInscrMobileEsc($intShown . ' de ' . $intNbTotal . ' — page ' . $intPage . ' / ' . $intNbPages); - } else { - echo fxInscrMobileEsc($intShown . ' of ' . $intNbTotal . ' — page ' . $intPage . ' / ' . $intNbPages); - } - echo '

'; + if ($intNbTotal > 0) { + echo '
'; + for ($j = $intStart; $j <= $intEnd; $j++) { + $row = $tabRows[$j]; + $strFicheUrl = fxInscrMobileBuildUrl($strBaseUrl, $intEveId, $arrReq, array( + 'pec_id' => (int)$row['pec_id_original'], + 'pg' => $intPage, + )); - for ($j = $intStart; $j <= $intEnd; $j++) { - $row = $tabRows[$j]; - $strFicheUrl = $strBaseUrl . '?' . fxInscrMobileQueryString($arrReq, $intEveId, array( - 'pec_id' => $row['pec_id_original'], - 'pg' => $intPage, - )); - - $strBib = fxInscrMobileBibDisplay($row); - $strName = fxUnescape($row['par_nom']) . ', ' . fxUnescape($row['par_prenom']); - $strRace = fxInscrMobileEpreuveLabel($row['epr_id'], $strLangue); - $strCardClass = 'epr-row inscr-mobile-result-card'; - if ($row['is_cancelled'] == '1') { - $strCardClass .= ' inscr-mobile-result-card--cancelled'; - } - - echo '
'; - echo '
'; - echo '
'; - echo '' . fxInscrMobileEsc($strName) . ''; - echo ''; - if (trim($strBib) !== '') { - echo '' . afficheTexte('promoteur_bib_no_participants', 0) . ' ' . fxInscrMobileEsc($strBib) . ''; - } - if ($row['no_bib_remis'] == 1) { - echo '' . afficheTexte('promoteur_bib_enregistre', 0) . ''; - } - if ($row['is_cancelled'] == '1') { - echo '' . afficheTexte('btn_annulerinscriptions', 0) . ''; - } - echo '
'; - echo '
'; - echo '
' . fxInscrMobileEsc($strRace) . '
'; - echo '
' . fxInscrMobileEsc($row['no_commande']) . '
'; - echo ''; - echo afficheTexte('inscr_mobile_view_record', 0); - echo ''; - echo '
'; + $strBib = fxInscrMobileBibDisplay($row); + $strName = fxUnescape($row['par_nom']) . ', ' . fxUnescape($row['par_prenom']); + $strRace = fxInscrMobileEpreuveLabel($row['epr_id'], $strLangue); + $strCardClass = 'inscr-mobile-list-item'; + if ($row['is_cancelled'] == '1') { + $strCardClass .= ' inscr-mobile-list-item--cancelled'; } - if ($intNbPages > 1) { - $strPagQs = fxInscrMobileQueryString($arrReq, $intEveId); - echo fxGetPagination($strBaseUrl . '?' . $strPagQs, $intNbTotal, $intNbItemsParPage, $intPage); + echo ''; + echo '
'; + echo '
' . fxInscrMobileEsc($strName) . '
'; + echo '
' . fxInscrMobileEsc($strRace) . '
'; + echo '
'; + echo '' . fxInscrMobileEsc($row['no_commande']) . ''; + if (trim($strBib) !== '') { + echo '#' . fxInscrMobileEsc($strBib) . ''; } - } else { - echo ''; + if ($row['no_bib_remis'] == 1) { + echo '' . fxInscrMobileEsc(fxInscrMobileT('promoteur_bib_enregistre')) . ''; + } + echo '
'; + echo ''; + echo '
'; } + echo '
'; + + echo fxInscrMobileRenderPagination($strBaseUrl, $intEveId, $arrReq, $intNbTotal, $intNbItemsParPage, $intPage); + } else { + echo '
' . fxInscrMobileEsc(fxInscrMobileT('txt_recherche_no_result')) . '
'; } echo '
'; @@ -447,7 +457,7 @@ function fxInscrMobileRenderList($intEveId, $strLangue, $strBaseUrl, $arrReq) { function fxInscrMobileRenderFiche($intEveId, $strLangue, $strBaseUrl, $arrReq, $arrRow) { global $vDomaine; - $strListUrl = $strBaseUrl . '?' . fxInscrMobileQueryString($arrReq, $intEveId, array('pg' => $arrReq['pg'])); + $strListUrl = fxInscrMobileBuildUrl($strBaseUrl, $intEveId, $arrReq, array('pec_id' => null, 'pg' => $arrReq['pg'])); $strEveCode = fxGetEvenementsUrl($arrRow['eve_id']); $strBib = fxInscrMobileBibDisplay($arrRow); $intParId = $arrRow['par_id']; @@ -466,72 +476,50 @@ function fxInscrMobileRenderFiche($intEveId, $strLangue, $strBaseUrl, $arrReq, $ $intRemisVal = 1; } - echo ''; - echo ''; - echo afficheTexte('inscr_mobile_back_list', 0); - echo ''; + echo '
'; - echo '
'; - echo '

' . fxInscrMobileEsc(fxUnescape($arrRow['par_nom']) . ', ' . fxUnescape($arrRow['par_prenom'])) . '

'; - echo '
'; + echo '
'; + echo ''; + echo '
'; + echo '

' . fxInscrMobileEsc(fxUnescape($arrRow['par_nom']) . ', ' . fxUnescape($arrRow['par_prenom'])) . '

'; + echo '
' . fxInscrMobileEsc(fxInscrMobileEpreuveLabel($arrRow['epr_id'], $strLangue)) . '
'; + echo '
'; - echo '
'; + echo '
'; + echo '

' . fxInscrMobileEsc(fxInscrMobileT('inscr_mobile_section_info')) . '

'; + echo '
'; + echo '
' . fxInscrMobileEsc(fxInscrMobileT('rech_no_commande')) . '
'; + echo '' . fxInscrMobileEsc($arrRow['no_commande']) . '
'; + echo '
' . fxInscrMobileEsc(fxInscrMobileT('inscr_mobile_details')) . '
'; + echo fxInscrMobileEsc($blnEquipe && fxIsParEquipe($arrRow['pec_id_original'], $arrRow['epr_id']) + ? fxInscrMobileT('promoteur_bib_show_teamates') : fxInscrMobileT('epreuve_individuelle')); + echo '
'; + echo '
' . fxInscrMobileEsc(fxInscrMobileT('inscr_mobile_modified')) . '
' . fxCheckMAJ($arrRow['pec_id_original'], $intParId, $strLangue) . '
'; + echo '
'; - // Informations - echo '
'; - echo '
'; - echo '' . afficheTexte('inscr_mobile_section_info', 0) . ''; - echo '
' . fxInscrMobileCollapseToggle($strLangue, false) . '
'; - echo '
'; - echo '
' . afficheTexte('sel_rech_epreuve', 0) . '
' . fxInscrMobileEsc(fxInscrMobileEpreuveLabel($arrRow['epr_id'], $strLangue)) . '
'; - echo '
' . afficheTexte('inscr_mobile_details', 0) . '
'; - if ($blnEquipe && fxIsParEquipe($arrRow['pec_id_original'], $arrRow['epr_id'])) { - afficheTexte('promoteur_bib_show_teamates', 0); - } else { - afficheTexte('epreuve_individuelle', 0); - } - echo '
'; - echo '
' . afficheTexte('rech_no_commande', 0) . '
'; - echo ''; - echo fxInscrMobileEsc($arrRow['no_commande']) . '
'; - echo '
' . afficheTexte('inscr_mobile_modified', 0) . '
' . fxCheckMAJ($arrRow['pec_id_original'], $intParId, $strLangue) . '
'; - echo '
'; - - // Dossard - echo '
'; - echo '
'; - echo '' . afficheTexte('promoteur_bib_number', 0) . ''; - echo '
' . fxInscrMobileCollapseToggle($strLangue, false) . '
'; - echo '
'; - echo ''; + echo '
'; + echo '

' . fxInscrMobileEsc(fxInscrMobileT('promoteur_bib_number')) . '

'; echo '
'; echo ''; echo ''; - echo '
'; + echo '
'; - // Check-in - echo '
'; - echo '
'; - echo '' . afficheTexte('promoteur_bib_enregistre', 0) . ''; - echo '
' . fxInscrMobileCollapseToggle($strLangue, false) . '
'; - echo '
'; + echo '
'; + echo '

' . fxInscrMobileEsc(fxInscrMobileT('promoteur_bib_enregistre')) . '

'; echo ''; echo '' . $strRemisIcon . ''; echo ''; - echo '
' . fxInscrMobileEsc($arrRow['no_bib_remis_date']) . '
'; - echo '
' . fxInscrMobileEsc($arrRow['no_bib_remis_par']) . '
'; - echo '
'; + echo '
' . fxInscrMobileEsc($arrRow['no_bib_remis_date']) . '
'; + echo '
' . fxInscrMobileEsc($arrRow['no_bib_remis_par']) . '
'; + echo '
'; - // Actions $strStyleEdit = $strStyleCancel = ''; $strStyleRetablir = ' d-none'; if ($blnCancelled) { @@ -539,34 +527,32 @@ function fxInscrMobileRenderFiche($intEveId, $strLangue, $strBaseUrl, $arrReq, $ $strStyleRetablir = ''; } - echo '
'; - echo '
'; - echo '' . afficheTexte('inscr_mobile_section_actions', 0) . ''; - echo '
' . fxInscrMobileCollapseToggle($strLangue, false) . '
'; - echo '
'; + echo '
'; + echo '

' . fxInscrMobileEsc(fxInscrMobileT('inscr_mobile_section_actions')) . '

'; + echo '
'; echo ''; + . ' value="' . (int)$arrRow['pec_id_original'] . '">' . fxInscrMobileEsc(fxInscrMobileT('btn_modifierinscriptions')) . ''; echo ''; + . ' value="' . (int)$arrRow['pec_id_original'] . '">' . fxInscrMobileEsc(fxInscrMobileT('btn_annulerinscriptions')) . ''; echo ''; + . ' value="' . (int)$arrRow['pec_id_original'] . '">' . fxInscrMobileEsc(fxInscrMobileT('btn_retablirinscriptions')) . ''; $strRenvoi = ($strLangue === 'fr') ? 'RENVOI' : 'RESEND'; - echo ''; - echo '
'; + echo '
'; echo '
'; } @@ -577,9 +563,9 @@ function fxInscrMobileRun($intEveId, $strLangue) { if ($arrReq['pec_id'] > 0) { $arrRow = fxInscrMobileFetchRowByPec($arrReq['pec_id'], $intEveId); if ($arrRow === null) { - echo '
' . afficheTexte('txt_recherche_no_result', 0) . '
'; - echo ''; - echo afficheTexte('inscr_mobile_back_list', 0) . ''; + echo '
' . fxInscrMobileEsc(fxInscrMobileT('txt_recherche_no_result')) . '
'; + echo ''; + echo fxInscrMobileEsc(fxInscrMobileT('inscr_mobile_back_list')) . ''; return; } fxInscrMobileRenderFiche($intEveId, $strLangue, $strBaseUrl, $arrReq, $arrRow); diff --git a/php/inc_settings.php b/php/inc_settings.php index 21b2bb0..5aae130 100644 --- a/php/inc_settings.php +++ b/php/inc_settings.php @@ -7,7 +7,7 @@ * Constantes * * **************/ -define('_VERSION_CODE', '4.72.670'); +define('_VERSION_CODE', '4.72.671'); define('_DATE_CODE', '2026-06-18'); //MSIN-4290 define('QR_SECRET_KEY', 'ms1_qr_2026_cle_secrete_longue_et_fixe');