forked from FroSteel/Planification
Version 4.2.3 — Grande popup timeline persistante (bindTimelinePopover)
This commit is contained in:
+30
-14
@@ -211,23 +211,31 @@ async function fetchCurrentUser(origin, phpsessid) {
|
||||
const html = await resp.text();
|
||||
if (looksLikeLoginPage(html)) return null;
|
||||
|
||||
// Essais de patterns (du plus spécifique au plus générique)
|
||||
// v4.2.2 : patterns spécifiques à la structure EasyVista réelle du Canton
|
||||
// de Vaud (identifiés à partir du HTML de la page d'accueil). L'user est
|
||||
// affiché dans un dropdown ".ev-employee-dropdown" avec ces éléments :
|
||||
// <span class="profile-info">
|
||||
// <span class="h5" title="Nom, Prénom">Nom, Prénom</span>
|
||||
// <span class="h6" title="3.3 DGNSI-ServiceDesk">3.3 DGNSI-ServiceDesk</span>
|
||||
// ...
|
||||
// </span>
|
||||
// Le title du <a> parent contient aussi "Nom, Prénom / Service / Société".
|
||||
const patterns = [
|
||||
// Attribut data-user-name (si EasyVista l'expose)
|
||||
// 1) Le plus fiable : span class="h5" dans profile-info (structure EV 2026)
|
||||
/<span\s+class=["']profile-info["'][^>]*>\s*<span\s+class=["']h5["'][^>]*title=["']([^"']{2,80})["']/i,
|
||||
// 2) Fallback : span class="h5" avec title= même hors profile-info
|
||||
/<span\s+class=["']h5["'][^>]*title=["']([^"']{2,80})["'][^>]*>\s*([^<]{2,80})<\/span>/i,
|
||||
// 3) Fallback : title= de ev-employee-dropdown (format "Nom, Prénom / Service / Société")
|
||||
/class=["'][^"']*ev-employee-dropdown[^"']*["'][^>]*title=["']([^"'\/]+?)(?:\s*\/\s*[^"']+)?["']/i,
|
||||
// 4) Anciens patterns génériques (autres instances EasyVista éventuelles)
|
||||
/data-user-name\s*=\s*["']([^"']+)["']/i,
|
||||
/data-username\s*=\s*["']([^"']+)["']/i,
|
||||
/data-user-fullname\s*=\s*["']([^"']+)["']/i,
|
||||
// Variable JS typique EasyVista
|
||||
/EV\.User\.name\s*=\s*["']([^"']+)["']/,
|
||||
/EV\.User\.fullname\s*=\s*["']([^"']+)["']/,
|
||||
/userFullName\s*[:=]\s*["']([^"']+)["']/,
|
||||
/currentUser(?:Name)?\s*[:=]\s*["']([^"']+)["']/,
|
||||
// Balises cachées ou spans avec classe "user"
|
||||
/<(?:span|div)[^>]*class=["'][^"']*(?:user[_-]?(?:name|full|display))[^"']*["'][^>]*>([^<]{2,80})<\/(?:span|div)>/i,
|
||||
// "Bienvenue" / "Welcome"
|
||||
/(?:Bienvenue|Welcome)[,\s]+(?:M\.?\s+|Mme\s+)?([A-ZÀÁÂÄÇÉÈÊËÍÎÏÓÔÖÚÛÜÑ][\wÀ-ÿ'.\-]+(?:\s*,?\s+[A-ZÀÁÂÄÇÉÈÊËÍÎÏÓÔÖÚÛÜÑ][\wÀ-ÿ'.\-]+){0,3})/,
|
||||
// Title de la page (souvent "EasyVista - Nom Prénom")
|
||||
/<title>([^<]*)<\/title>/i
|
||||
// 5) "Bienvenue" / "Welcome"
|
||||
/(?:Bienvenue|Welcome)[,\s]+(?:M\.?\s+|Mme\s+)?([A-ZÀÁÂÄÇÉÈÊËÍÎÏÓÔÖÚÛÜÑ][\wÀ-ÿ'.\-]+(?:\s*,?\s+[A-ZÀÁÂÄÇÉÈÊËÍÎÏÓÔÖÚÛÜÑ][\wÀ-ÿ'.\-]+){0,3})/
|
||||
];
|
||||
|
||||
let name = null;
|
||||
@@ -236,7 +244,6 @@ async function fetchCurrentUser(origin, phpsessid) {
|
||||
if (m && m[1]) {
|
||||
const candidate = m[1].trim()
|
||||
.replace(/\s+/g, " ")
|
||||
// Enlever des éléments du <title> type "EasyVista" / "Planning" / etc.
|
||||
.replace(/^(?:EasyVista|EV|Accueil|Home|Planning|ITSMA)[\s\-|•]+/i, "")
|
||||
.replace(/[\s\-|•]+(?:EasyVista|EV|ITSMA)$/i, "")
|
||||
.trim();
|
||||
@@ -249,7 +256,16 @@ async function fetchCurrentUser(origin, phpsessid) {
|
||||
}
|
||||
}
|
||||
|
||||
// Chercher aussi le login (ID court) — utile comme fallback secondaire
|
||||
// v4.2.2 : on extrait aussi le service/unité si disponible (h6 à côté du h5)
|
||||
let service = null;
|
||||
const serviceMatch = html.match(
|
||||
/<span\s+class=["']profile-info["'][^>]*>[\s\S]{0,500}?<span\s+class=["']h6["'][^>]*title=["']([^"']{2,80})["']/i
|
||||
);
|
||||
if (serviceMatch && serviceMatch[1]) {
|
||||
service = serviceMatch[1].trim();
|
||||
}
|
||||
|
||||
// Login / identifiant court (optionnel)
|
||||
let login = null;
|
||||
const loginPatterns = [
|
||||
/data-user-login\s*=\s*["']([^"']+)["']/i,
|
||||
@@ -265,8 +281,8 @@ async function fetchCurrentUser(origin, phpsessid) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!name && !login) return null;
|
||||
return { name, login };
|
||||
if (!name && !login && !service) return null;
|
||||
return { name, login, service };
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user