Réconciliation avec la production réelle - V1.001 (badge société/avatar, USR_Code/USR_Societe dans preferences.php)

This commit is contained in:
2026-08-30 01:35:53 +00:00
parent ed92368926
commit ff0e3a62fb
3 changed files with 56 additions and 10 deletions
+42 -2
View File
@@ -12,6 +12,11 @@
:root{ :root{
--gris-fonce:#484848; --gris-fonce:#484848;
--orange:#FF5A1F; --orange:#FF5A1F;
/* Bleu badge/avatar (29 août 2026) : couleur commune au badge société et
à l'avatar (Jean-Marc a confirmé l'avatar réellement gris en
production — --gris-fonce reste donc défini et utilisé ailleurs dans
la feuille — puis a demandé d'unifier les deux en bleu). */
--bleu-badge:#2E5AAC;
--gris-clair:#C7C7C7; --gris-clair:#C7C7C7;
--zebra-jaune:#F7F3E3; --zebra-jaune:#F7F3E3;
--zebra-bleu:#E7EAF2; --zebra-bleu:#E7EAF2;
@@ -72,11 +77,27 @@
#bandeau-spacer{flex:1;} #bandeau-spacer{flex:1;}
#avatar{ #avatar{
width:28px;height:28px;border-radius:50%; width:28px;height:28px;border-radius:50%;
background:var(--gris-fonce);color:#FFFFFF; background:var(--bleu-badge);color:#FFFFFF;
display:flex;align-items:center;justify-content:center; display:flex;align-items:center;justify-content:center;
font-weight:700;font-size:10px;cursor:default; font-weight:700;font-size:10px;cursor:default;
border:1px solid rgba(0,0,0,0.2); border:1px solid rgba(0,0,0,0.2);
margin-left:6px;
} }
/* Badge société (29 août 2026) : repère visuel d'environnement, à gauche
de l'avatar. "Bouton" non cliquable (cursor:default, pas de hover) —
forme pilule plutôt que le disque de l'avatar, pour bien distinguer les
deux informations (société vs utilisateur) tout en les regroupant
visuellement. Masqué (display:none) si USR_Societe est vide en base
pour l'utilisateur connecté — voir chargerPreferences(). */
#badge-societe{
height:20px;padding:0 10px;border-radius:10px;
background:var(--bleu-badge);color:#FFFFFF;
display:flex;align-items:center;justify-content:center;
font-weight:700;font-size:10px;letter-spacing:0.3px;cursor:default;
border:1px solid rgba(0,0,0,0.2);
white-space:nowrap;
}
#badge-societe[hidden]{display:none;}
/* -------- En-tête colonnes -------- */ /* -------- En-tête colonnes -------- */
#entete-colonnes{ #entete-colonnes{
@@ -599,7 +620,8 @@
<div id="logo-aspic"><span class="A">A</span><span class="rest">SPIC</span></div> <div id="logo-aspic"><span class="A">A</span><span class="rest">SPIC</span></div>
<div id="titre-ecran">LISTE DES CONTACTS</div> <div id="titre-ecran">LISTE DES CONTACTS</div>
<div id="bandeau-spacer"></div> <div id="bandeau-spacer"></div>
<div id="avatar" title="Utilisateur">JMP</div> <div id="badge-societe" title="Société" hidden></div>
<div id="avatar" title="Utilisateur"></div>
</div> </div>
<!-- En-tête de colonnes --> <!-- En-tête de colonnes -->
@@ -1714,6 +1736,24 @@ async function chargerPreferences(){
const data = await reponse.json(); const data = await reponse.json();
if(typeof data.USR_RatioPanneauContact === "number") PREFERENCES.USR_RatioPanneauContact = data.USR_RatioPanneauContact; if(typeof data.USR_RatioPanneauContact === "number") PREFERENCES.USR_RatioPanneauContact = data.USR_RatioPanneauContact;
if(typeof data.USR_RatioPanneauProspect === "number") PREFERENCES.USR_RatioPanneauProspect = data.USR_RatioPanneauProspect; if(typeof data.USR_RatioPanneauProspect === "number") PREFERENCES.USR_RatioPanneauProspect = data.USR_RatioPanneauProspect;
// Avatar (29 août 2026) : jusqu'ici du texte figé "JMP" dans le HTML,
// jamais vraiment branché sur la session — corrigé au passage à
// l'occasion du badge société ci-dessous (voir journal).
const elAvatar = document.getElementById("avatar");
if(elAvatar && data.USR_Code) elAvatar.textContent = data.USR_Code;
// Badge société (29 août 2026) : repère d'environnement, masqué si
// l'utilisateur connecté n'a pas encore de USR_Societe renseignée.
const elBadge = document.getElementById("badge-societe");
if(elBadge){
if(data.USR_Societe){
elBadge.textContent = data.USR_Societe;
elBadge.hidden = false;
} else {
elBadge.hidden = true;
}
}
} catch(erreur){ } catch(erreur){
console.error("Erreur de chargement de preferences.php :", erreur); console.error("Erreur de chargement de preferences.php :", erreur);
// Pas de toast : une préférence d'affichage non chargée retombe sur le // Pas de toast : une préférence d'affichage non chargée retombe sur le
+13 -7
View File
@@ -1,10 +1,11 @@
<?php <?php
/** /**
* ASPIC — preferences.php * ASPIC — preferences.php
* Préférences d'affichage liées à l'utilisateur connecté (ASP_Users), et non * Préférences d'affichage liées à l'utilisateur connecté (ASP_Users) : le
* à un contact ou à une donnée métier — pour l'instant, uniquement le ratio * ratio de répartition du panneau de détail (grille des champs / sous-liste
* de répartition du panneau de détail (grille des champs / sous-liste des * des réalisations, voir journal de développement, section 17), et depuis
* réalisations), voir journal de développement, section 17. * le 29 août 2026, l'identité affichée dans le bandeau (USR_Code, USR_Societe
* — badge de repérage d'environnement, voir journal).
* *
* Toujours restreint à l'utilisateur de la session en cours * Toujours restreint à l'utilisateur de la session en cours
* ($_SESSION['USR_Code'], ouverte par aspic.php) : aucun USR_Code n'est * ($_SESSION['USR_Code'], ouverte par aspic.php) : aucun USR_Code n'est
@@ -12,9 +13,12 @@
* REA_CodeUser dans realisations.php (voir journal, section 15) — impossible * REA_CodeUser dans realisations.php (voir journal, section 15) — impossible
* pour un utilisateur de lire ou modifier les préférences d'un autre. * pour un utilisateur de lire ou modifier les préférences d'un autre.
* *
* GET : renvoie les deux ratios (0-100) de l'utilisateur connecté. * GET : renvoie les deux ratios (0-100), USR_Code et USR_Societe (peut être
* null si non renseignée) de l'utilisateur connecté.
* PUT : met à jour un ou plusieurs ratios (0-100 uniquement, whitelist des * PUT : met à jour un ou plusieurs ratios (0-100 uniquement, whitelist des
* colonnes acceptées — voir CHAMPS_RATIO). * colonnes acceptées — voir CHAMPS_RATIO). USR_Societe n'est pas
* modifiable depuis ce formulaire (donnée gérée à la main en base,
* comme le reste de ASP_Users — voir journal, section 2).
*/ */
session_start(); session_start();
@@ -46,7 +50,7 @@ try {
switch ($method) { switch ($method) {
case 'GET': case 'GET':
$stmt = $pdo->prepare( $stmt = $pdo->prepare(
'SELECT USR_RatioPanneauContact, USR_RatioPanneauProspect FROM ASP_Users WHERE USR_Code = ?' 'SELECT USR_Code, USR_Societe, USR_RatioPanneauContact, USR_RatioPanneauProspect FROM ASP_Users WHERE USR_Code = ?'
); );
$stmt->execute([$_SESSION['USR_Code']]); $stmt->execute([$_SESSION['USR_Code']]);
$ligne = $stmt->fetch(); $ligne = $stmt->fetch();
@@ -56,6 +60,8 @@ try {
exit; exit;
} }
echo json_encode([ echo json_encode([
'USR_Code' => $ligne['USR_Code'],
'USR_Societe' => $ligne['USR_Societe'],
'USR_RatioPanneauContact' => (int)$ligne['USR_RatioPanneauContact'], 'USR_RatioPanneauContact' => (int)$ligne['USR_RatioPanneauContact'],
'USR_RatioPanneauProspect' => (int)$ligne['USR_RatioPanneauProspect'], 'USR_RatioPanneauProspect' => (int)$ligne['USR_RatioPanneauProspect'],
]); ]);
+1 -1
View File
@@ -20,7 +20,7 @@
* d'identification, avant toute connexion. * d'identification, avant toute connexion.
*/ */
const ASPIC_VERSION = 'V1.000'; const ASPIC_VERSION = 'V1.001';
if (basename($_SERVER['SCRIPT_NAME']) === 'version.php') { if (basename($_SERVER['SCRIPT_NAME']) === 'version.php') {
header('Content-Type: application/json; charset=utf-8'); header('Content-Type: application/json; charset=utf-8');