fix(ucp): adaptation iPhone/iOS Safari sans auto-zoom ni débordement (v2.5.5)
This commit is contained in:
1 parent
c10c980024
commit
d8ec7e4508
3 files changed
+20
-9
No files matched your search
+3
-3
@@ -286,8 +286,8 @@ function renderExtensionsGrid() {
|
|||||||
: '';
|
: '';
|
||||||
|
|
||||||
return `
|
return `
|
||||||
<div class="ucp-card rounded-2xl p-5 space-y-4">
|
<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">
|
<div class="flex items-start justify-between gap-3 min-w-0">
|
||||||
<div class="flex items-center gap-3 min-w-0">
|
<div class="flex items-center gap-3 min-w-0">
|
||||||
${avatarSrc
|
${avatarSrc
|
||||||
? `<img src="${escapeHtml(avatarSrc)}" alt="" class="w-12 h-12 rounded-full object-cover border border-slate-200 shrink-0">`
|
? `<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}
|
${statusPill}
|
||||||
${vmPill}
|
${vmPill}
|
||||||
</div>
|
</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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+15
-5
@@ -24,7 +24,7 @@ $csrfToken = UcpAuth::getCsrfToken();
|
|||||||
<html lang="fr" class="h-full bg-slate-50">
|
<html lang="fr" class="h-full bg-slate-50">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<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>
|
<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 ?>">
|
<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>
|
<script src="https://cdn.tailwindcss.com"></script>
|
||||||
@@ -41,8 +41,18 @@ $csrfToken = UcpAuth::getCsrfToken();
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
|
html, body {
|
||||||
|
max-width: 100%;
|
||||||
|
overflow-x: hidden;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
}
|
||||||
body { background-color: #f8fafc; color: #0f172a; }
|
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); }
|
.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 { width: 7px; height: 7px; }
|
||||||
::-webkit-scrollbar-track { background: #f1f5f9; }
|
::-webkit-scrollbar-track { background: #f1f5f9; }
|
||||||
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }
|
::-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">
|
<body class="min-h-full font-sans antialiased text-slate-800">
|
||||||
|
|
||||||
<!-- Toast Container -->
|
<!-- 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): ?>
|
<?php if (!$ucpEnabled): ?>
|
||||||
<div class="min-h-screen flex items-center justify-center p-6">
|
<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>
|
<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
|
<input type="text" id="ucp-login-user" name="username" required autocomplete="username" autofocus
|
||||||
placeholder="ex: fred ou fred@entreprise.fr"
|
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>
|
||||||
<div>
|
<div>
|
||||||
<label for="ucp-login-pass" class="block text-xs font-semibold text-slate-700 mb-1.5">Mot de passe</label>
|
<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"
|
<input type="password" id="ucp-login-pass" name="password" required autocomplete="current-password"
|
||||||
placeholder="••••••••"
|
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>
|
||||||
<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>
|
<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"
|
<button type="submit" id="ucp-login-btn"
|
||||||
@@ -154,7 +164,7 @@ $csrfToken = UcpAuth::getCsrfToken();
|
|||||||
</div>
|
</div>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<!-- INTERFACE PRINCIPALE UCP -->
|
<!-- INTERFACE PRINCIPALE UCP -->
|
||||||
<div class="min-h-screen flex flex-col">
|
<div class="min-h-screen flex flex-col overflow-x-hidden">
|
||||||
<!-- Top Navbar -->
|
<!-- Top Navbar -->
|
||||||
<header class="sticky top-0 z-30 bg-white/95 backdrop-blur border-b border-slate-200">
|
<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">
|
<div class="max-w-6xl mx-auto px-4 sm:px-6 h-16 flex items-center justify-between gap-4">
|
||||||
|
|||||||
+2
-1
@@ -1,9 +1,10 @@
|
|||||||
{
|
{
|
||||||
"version": "2.5.4",
|
"version": "2.5.5",
|
||||||
"codename": "Pulsar UCP",
|
"codename": "Pulsar UCP",
|
||||||
"release_date": "2026-11-11",
|
"release_date": "2026-11-11",
|
||||||
"min_php_version": "8.2",
|
"min_php_version": "8.2",
|
||||||
"changelog": [
|
"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)",
|
"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)",
|
"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)",
|
"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)",
|
||||||
|
|||||||
Reference in new issue
Block a user