fix(ucp): adaptation iPhone/iOS Safari sans auto-zoom ni débordement (v2.5.5)

This commit is contained in:
sorcier committed 2026-11-11 23:04:04 +01:00
1 parent c10c980024
commit d8ec7e4508
3 files changed
+20 -9

No files matched your search

+3 -3
View File
@@ -286,8 +286,8 @@ function renderExtensionsGrid() {
: '';
return `
<div class="ucp-card rounded-2xl p-5 space-y-4">
<div class="flex items-start justify-between gap-3">
<div class="ucp-card rounded-2xl p-4 sm:p-5 space-y-4 min-w-0 overflow-hidden">
<div class="flex items-start justify-between gap-3 min-w-0">
<div class="flex items-center gap-3 min-w-0">
${avatarSrc
? `<img src="${escapeHtml(avatarSrc)}" alt="" class="w-12 h-12 rounded-full object-cover border border-slate-200 shrink-0">`
@@ -301,7 +301,7 @@ function renderExtensionsGrid() {
${statusPill}
${vmPill}
</div>
${ext.ip ? `<div class="text-[11px] text-slate-400 font-mono mt-1">${escapeHtml(ext.ip)} ${ext.user_agent ? '• ' + escapeHtml(ext.user_agent) : ''}</div>` : ''}
${ext.ip ? `<div class="text-[11px] text-slate-400 font-mono mt-1 break-all">${escapeHtml(ext.ip)} ${ext.user_agent ? '• ' + escapeHtml(ext.user_agent) : ''}</div>` : ''}
</div>
</div>
</div>
+15 -5
View File
@@ -24,7 +24,7 @@ $csrfToken = UcpAuth::getCsrfToken();
<html lang="fr" class="h-full bg-slate-50">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<title><?= htmlspecialchars($companyName ?: 'NexusPBX') ?> — Portail Utilisateur (UCP)</title>
<link rel="icon" type="image/png" href="/assets/favicon.png?v=<?= file_exists(__DIR__ . '/assets/favicon.png') ? filemtime(__DIR__ . '/assets/favicon.png') : 1 ?>">
<script src="https://cdn.tailwindcss.com"></script>
@@ -41,8 +41,18 @@ $csrfToken = UcpAuth::getCsrfToken();
};
</script>
<style>
html, body {
max-width: 100%;
overflow-x: hidden;
-webkit-text-size-adjust: 100%;
}
body { background-color: #f8fafc; color: #0f172a; }
.ucp-card { background: #ffffff; border: 1px solid #e2e8f0; box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04); }
@media screen and (max-width: 639px) {
input, select, textarea {
font-size: 16px !important;
}
}
::-webkit-scrollbar { width: 7px; height: 7px; }
::-webkit-scrollbar-track { background: #f1f5f9; }
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }
@@ -100,7 +110,7 @@ $csrfToken = UcpAuth::getCsrfToken();
<body class="min-h-full font-sans antialiased text-slate-800">
<!-- Toast Container -->
<div id="ucp-toast-container" class="fixed top-4 right-4 z-50 flex flex-col gap-2 max-w-sm w-full pointer-events-none px-4 sm:px-0"></div>
<div id="ucp-toast-container" class="fixed top-4 inset-x-3 sm:inset-x-auto sm:right-4 z-50 flex flex-col gap-2 sm:max-w-sm sm:w-full pointer-events-none"></div>
<?php if (!$ucpEnabled): ?>
<div class="min-h-screen flex items-center justify-center p-6">
@@ -132,13 +142,13 @@ $csrfToken = UcpAuth::getCsrfToken();
<label for="ucp-login-user" class="block text-xs font-semibold text-slate-700 mb-1.5">Identifiant utilisateur</label>
<input type="text" id="ucp-login-user" name="username" required autocomplete="username" autofocus
placeholder="ex: fred ou fred@entreprise.fr"
class="w-full px-3.5 py-2.5 rounded-xl bg-slate-50 border border-slate-300 text-sm text-slate-900 focus:bg-white focus:ring-2 focus:ring-indigo-500/30 focus:border-indigo-500 focus:outline-none transition">
class="w-full px-3.5 py-2.5 rounded-xl bg-slate-50 border border-slate-300 text-base sm:text-sm text-slate-900 focus:bg-white focus:ring-2 focus:ring-indigo-500/30 focus:border-indigo-500 focus:outline-none transition">
</div>
<div>
<label for="ucp-login-pass" class="block text-xs font-semibold text-slate-700 mb-1.5">Mot de passe</label>
<input type="password" id="ucp-login-pass" name="password" required autocomplete="current-password"
placeholder="••••••••"
class="w-full px-3.5 py-2.5 rounded-xl bg-slate-50 border border-slate-300 text-sm text-slate-900 focus:bg-white focus:ring-2 focus:ring-indigo-500/30 focus:border-indigo-500 focus:outline-none transition">
class="w-full px-3.5 py-2.5 rounded-xl bg-slate-50 border border-slate-300 text-base sm:text-sm text-slate-900 focus:bg-white focus:ring-2 focus:ring-indigo-500/30 focus:border-indigo-500 focus:outline-none transition">
</div>
<div id="ucp-login-error" class="hidden rounded-xl bg-rose-50 border border-rose-200 px-3.5 py-2.5 text-xs font-medium text-rose-700"></div>
<button type="submit" id="ucp-login-btn"
@@ -154,7 +164,7 @@ $csrfToken = UcpAuth::getCsrfToken();
</div>
<?php else: ?>
<!-- INTERFACE PRINCIPALE UCP -->
<div class="min-h-screen flex flex-col">
<div class="min-h-screen flex flex-col overflow-x-hidden">
<!-- Top Navbar -->
<header class="sticky top-0 z-30 bg-white/95 backdrop-blur border-b border-slate-200">
<div class="max-w-6xl mx-auto px-4 sm:px-6 h-16 flex items-center justify-between gap-4">
+2 -1
View File
@@ -1,9 +1,10 @@
{
"version": "2.5.4",
"version": "2.5.5",
"codename": "Pulsar UCP",
"release_date": "2026-11-11",
"min_php_version": "8.2",
"changelog": [
"Correctif v2.5.5 : suppression du zoom automatique iOS/iPhone sur les champs (<16px) et blocage du débordement horizontal mobile dans l'UCP",
"Correctif v2.5.4 : correction du journal personnel UCP « Mes Appels » (correspondance caller_number/callee_number/canaux PJSIP et filtres Répondus/Manqués)",
"Nouveauté v2.5.3 : onglet UCP « Notice & Codes » avec mémo pas-à-pas, codes de fonction dynamiques et export PDF / impression A4 corporate (logo, encarts, poste utilisateur)",
"Correctif v2.5.2 : purge systématique try/finally + auto-nettoyage des dossiers temporaires HA /tmp (élimine la saturation tmpfs 100% qui bloquait la réplication)",