diff --git a/php/chronotrack_api/fx_chronotrack_admin.php b/php/chronotrack_api/fx_chronotrack_admin.php index 0cc5238..f9380e1 100644 --- a/php/chronotrack_api/fx_chronotrack_admin.php +++ b/php/chronotrack_api/fx_chronotrack_admin.php @@ -103,7 +103,7 @@ function fxChronotrackApiAdminRenderEventPage($intEveId, $strLangue = 'fr', $bln // Sync d’abord (usage courant) ; config repliable ensuite. MSIN-4328 if ($arrConfig !== null && $blnEventLinked && $blnConfigured) { - fxChronotrackApiAdminRenderPushPanel($intEveId, $blnClosed); + fxChronotrackApiAdminRenderPushPanel($intEveId, $blnClosed, $arrConfig); } if ($arrConfig !== null && $blnEventLinked) { @@ -244,7 +244,7 @@ function fxChronotrackApiAdminRenderRaceMapping($intEveId, $arrConfig, $strLangu echo ''; } -function fxChronotrackApiAdminRenderPushPanel($intEveId, $blnClosed = false) { +function fxChronotrackApiAdminRenderPushPanel($intEveId, $blnClosed = false, $arrConfig = null) { echo '
'; echo '
Synchronisation ChronoTrack
'; echo '
'; @@ -252,7 +252,63 @@ function fxChronotrackApiAdminRenderPushPanel($intEveId, $blnClosed = false) { echo '
Événement fermé — envoi manuel encore possible.
'; } - // Zone employé : statut clair + actions d’abord. MSIN-4328 + // MSIN-4328 — Phase A : config sync auto (exécutée plus tard par cron) + $blnAutoOn = (intval($arrConfig['auto_sync_enabled'] ?? 0) === 1); + $intAutoInterval = intval($arrConfig['auto_sync_interval_min'] ?? 15); + if (!in_array($intAutoInterval, array(1, 5, 15, 30, 60), true)) { + $intAutoInterval = 15; + } + $strUntilRaw = trim((string)($arrConfig['auto_sync_until'] ?? '')); + $strUntilLocal = ''; + if ($strUntilRaw !== '' && $strUntilRaw !== '0000-00-00 00:00:00') { + $intUntilTs = strtotime($strUntilRaw); + if ($intUntilTs !== false) { + $strUntilLocal = date('Y-m-d\TH:i', $intUntilTs); + } + } + + echo '
'; + echo '
'; + echo ''; + echo ''; + echo '
'; + echo '
'; + echo '
'; + echo ''; + echo '
'; + echo '
'; + echo ''; + echo ''; + echo '
'; + if (!$blnClosed) { + echo '
'; + echo ''; + echo '
'; + } + echo '
'; + echo '

'; + if ($blnAutoOn && $strUntilRaw !== '') { + echo 'Config enregistrée — exécution serveur (cron) à brancher. Arrêt prévu : ' + . fxChronotrackApiAdminEsc($strUntilRaw) . '.'; + } else { + echo 'Quand c’est coché, le serveur (cron) poussera le différentiel à cet intervalle jusqu’à la date de fin. ' + . 'Pas encore actif côté serveur.'; + } + echo '

'; + echo '
'; + echo '
'; + + // Zone employé : statut clair + actions echo '
'; echo '
Cliquez Actualiser pour vérifier s’il y a des changements à envoyer.
'; echo '
'; @@ -263,7 +319,7 @@ function fxChronotrackApiAdminRenderPushPanel($intEveId, $blnClosed = false) { echo ''; echo '
'; - echo '

La sync automatique arrivera bientôt — pour l’instant, un clic suffit quand il y a du nouveau.

'; + echo '

Envoi manuel : uniquement les nouveaux / modifiés depuis le dernier push OK.

'; echo '
'; // Détails / debug : sous les boutons, repliés par défaut @@ -355,6 +411,13 @@ function fxChronotrackApiAdminRenderPageScript($intEveId, $arrConfig, $blnClosed } .ct-api-push-actions .btn-lg { font-size: 1.05rem; padding: 0.55rem 1.1rem; } #ct_api_push_details_card .card-header a { text-decoration: none; } +.ct-api-auto-wrap { + padding: 12px 14px; + border-radius: 8px; + border: 1px dashed #adb5bd; + background: #fafbfc; +} +.ct-api-auto-wrap--disabled { opacity: 0.7; }