Compare commits
4
Commits
v1.6.3
...
74e29c690a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
74e29c690a | ||
|
|
587511bd67 | ||
|
|
231bef8330 | ||
|
|
18368027ee |
No files matched your search
@@ -38,3 +38,8 @@ Thumbs.db
|
|||||||
.idea/
|
.idea/
|
||||||
.vscode/
|
.vscode/
|
||||||
|
|
||||||
|
# Environnement local de développement (exclu de Git)
|
||||||
|
/.dev
|
||||||
|
/.env
|
||||||
|
/.env.local
|
||||||
|
|
||||||
+21
-2
@@ -19,6 +19,10 @@ $hasBranding = !empty($companyName) || !empty($companyLogo);
|
|||||||
|
|
||||||
$appVerData = file_exists(__DIR__ . '/../version.json') ? json_decode((string)file_get_contents(__DIR__ . '/../version.json'), true) : [];
|
$appVerData = file_exists(__DIR__ . '/../version.json') ? json_decode((string)file_get_contents(__DIR__ . '/../version.json'), true) : [];
|
||||||
$appVersion = $appVerData['version'] ?? '1.5.0';
|
$appVersion = $appVerData['version'] ?? '1.5.0';
|
||||||
|
|
||||||
|
// Détection de l'environnement de développement : présence de .dev local ou branche git dev
|
||||||
|
$isDevEnv = file_exists(__DIR__ . '/../.dev')
|
||||||
|
|| (trim((string)@shell_exec('git -C ' . escapeshellarg(__DIR__) . ' rev-parse --abbrev-ref HEAD 2>/dev/null')) === 'dev');
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="fr" class="h-full">
|
<html lang="fr" class="h-full">
|
||||||
@@ -26,7 +30,7 @@ $appVersion = $appVerData['version'] ?? '1.5.0';
|
|||||||
<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">
|
||||||
<meta name="nexus-app-version" content="<?= htmlspecialchars($appVersion) ?>">
|
<meta name="nexus-app-version" content="<?= htmlspecialchars($appVersion) ?>">
|
||||||
<title>NexusPBX — Supervision & Téléphonie IP • Powered by Asterisk</title>
|
<title><?= $isDevEnv ? '🛠️ [DEV] ' : '' ?>NexusPBX — Supervision & Téléphonie IP • Powered by Asterisk</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 ?>">
|
||||||
<link rel="apple-touch-icon" href="/assets/logo.png?v=<?= file_exists(__DIR__ . '/assets/logo.png') ? filemtime(__DIR__ . '/assets/logo.png') : 1 ?>">
|
<link rel="apple-touch-icon" href="/assets/logo.png?v=<?= file_exists(__DIR__ . '/assets/logo.png') ? filemtime(__DIR__ . '/assets/logo.png') : 1 ?>">
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
<script src="https://cdn.tailwindcss.com"></script>
|
||||||
@@ -162,7 +166,12 @@ $appVersion = $appVerData['version'] ?? '1.5.0';
|
|||||||
<div class="flex items-center gap-4 mb-6">
|
<div class="flex items-center gap-4 mb-6">
|
||||||
<img src="/assets/logo.png?v=<?= file_exists(__DIR__ . '/assets/logo.png') ? filemtime(__DIR__ . '/assets/logo.png') : 1 ?>" alt="NexusPBX Logo" class="w-20 h-20 sm:w-24 sm:h-24 object-contain shrink-0 filter drop-shadow-xl">
|
<img src="/assets/logo.png?v=<?= file_exists(__DIR__ . '/assets/logo.png') ? filemtime(__DIR__ . '/assets/logo.png') : 1 ?>" alt="NexusPBX Logo" class="w-20 h-20 sm:w-24 sm:h-24 object-contain shrink-0 filter drop-shadow-xl">
|
||||||
<div>
|
<div>
|
||||||
<h1 class="text-2xl sm:text-3xl font-black text-white tracking-tight leading-none mb-1">NexusPBX</h1>
|
<h1 class="text-2xl sm:text-3xl font-black text-white tracking-tight leading-none mb-1 flex items-center gap-2">
|
||||||
|
NexusPBX
|
||||||
|
<?php if ($isDevEnv): ?>
|
||||||
|
<span class="px-2 py-0.5 text-xs font-mono font-extrabold tracking-wider rounded bg-amber-500/20 text-amber-300 border border-amber-500/40">DEV</span>
|
||||||
|
<?php endif; ?>
|
||||||
|
</h1>
|
||||||
<p class="text-xs text-slate-300">Supervision & Téléphonie IP • Powered by Asterisk</p>
|
<p class="text-xs text-slate-300">Supervision & Téléphonie IP • Powered by Asterisk</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -212,6 +221,9 @@ $appVersion = $appVerData['version'] ?? '1.5.0';
|
|||||||
Nexus<span class="text-indigo-400">PBX</span>
|
Nexus<span class="text-indigo-400">PBX</span>
|
||||||
</div>
|
</div>
|
||||||
<span id="app-version-badge" class="px-1.5 py-0.5 text-[10px] font-mono font-bold tracking-wider rounded bg-indigo-500/20 text-indigo-300 border border-indigo-500/30">v<?= htmlspecialchars($appVersion) ?></span>
|
<span id="app-version-badge" class="px-1.5 py-0.5 text-[10px] font-mono font-bold tracking-wider rounded bg-indigo-500/20 text-indigo-300 border border-indigo-500/30">v<?= htmlspecialchars($appVersion) ?></span>
|
||||||
|
<?php if ($isDevEnv): ?>
|
||||||
|
<span class="px-1.5 py-0.5 text-[10px] font-mono font-black tracking-wider rounded bg-amber-500/25 text-amber-300 border border-amber-500/50 shadow-xs shadow-amber-500/20 animate-pulse">DEV</span>
|
||||||
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-[10px] text-slate-400 font-medium tracking-wide mt-0.5">Powered by Asterisk</div>
|
<div class="text-[10px] text-slate-400 font-medium tracking-wide mt-0.5">Powered by Asterisk</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -494,6 +506,13 @@ $appVersion = $appVerData['version'] ?? '1.5.0';
|
|||||||
|
|
||||||
<!-- Boutons d'action globaux -->
|
<!-- Boutons d'action globaux -->
|
||||||
<div class="flex items-center gap-2.5">
|
<div class="flex items-center gap-2.5">
|
||||||
|
<?php if ($isDevEnv): ?>
|
||||||
|
<div class="inline-flex items-center gap-1.5 px-3 py-1.5 rounded-xl text-xs font-bold bg-amber-500/15 text-amber-300 border border-amber-500/30">
|
||||||
|
<span class="w-2 h-2 rounded-full bg-amber-400 animate-pulse"></span>
|
||||||
|
<span class="hidden md:inline font-mono">SERVEUR</span> DEV
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
<!-- Badge Notification Mise à Jour Disponible -->
|
<!-- Badge Notification Mise à Jour Disponible -->
|
||||||
<button id="header-update-badge" type="button" onclick="openUpdatePanel()" style="display:none;"
|
<button id="header-update-badge" type="button" onclick="openUpdatePanel()" style="display:none;"
|
||||||
class="inline-flex items-center gap-1.5 px-3 py-1.5 rounded-xl text-xs font-bold bg-amber-500/20 hover:bg-amber-500/30 text-amber-300 border border-amber-500/40 shadow-sm transition animate-pulse" title="Une mise à jour NexusPBX est disponible ! Cliquez pour voir les détails.">
|
class="inline-flex items-center gap-1.5 px-3 py-1.5 rounded-xl text-xs font-bold bg-amber-500/20 hover:bg-amber-500/30 text-amber-300 border border-amber-500/40 shadow-sm transition animate-pulse" title="Une mise à jour NexusPBX est disponible ! Cliquez pour voir les détails.">
|
||||||
|
|||||||
@@ -295,7 +295,7 @@ class ConfigGenerator
|
|||||||
}
|
}
|
||||||
|
|
||||||
$context = trim((string)($trunk['context'] ?? 'from-external')) ?: 'from-external';
|
$context = trim((string)($trunk['context'] ?? 'from-external')) ?: 'from-external';
|
||||||
$fromUser = trim((string)($trunk['from_user'] ?? '')) ?: $username;
|
$fromUser = trim((string)($trunk['from_user'] ?? ''));
|
||||||
$fromDomain = trim((string)($trunk['from_domain'] ?? '')) ?: $host;
|
$fromDomain = trim((string)($trunk['from_domain'] ?? '')) ?: $host;
|
||||||
$callerId = trim((string)($trunk['outbound_callerid'] ?? ''));
|
$callerId = trim((string)($trunk['outbound_callerid'] ?? ''));
|
||||||
$sendPai = ((int)($trunk['send_pai'] ?? 1) === 1) ? 'yes' : 'no';
|
$sendPai = ((int)($trunk['send_pai'] ?? 1) === 1) ? 'yes' : 'no';
|
||||||
|
|||||||
+2
-1
@@ -1,9 +1,10 @@
|
|||||||
{
|
{
|
||||||
"version": "1.6.3",
|
"version": "1.6.4",
|
||||||
"codename": "Helios",
|
"codename": "Helios",
|
||||||
"release_date": "2026-11-05",
|
"release_date": "2026-11-05",
|
||||||
"min_php_version": "8.2",
|
"min_php_version": "8.2",
|
||||||
"changelog": [
|
"changelog": [
|
||||||
|
"Trunks SIP : suppression du forçage de from_user afin de préserver l'en-tête SIP From dynamique avec Nom d'appelant (CNAM) pour OVH / Orange",
|
||||||
"Trunks SIP & Routage Sortant : activation systématique de trust_id_outbound et formatage strict du Caller ID Name (CNAM) pour affichage garanti chez les opérateurs distants (OVH, Orange, etc.)",
|
"Trunks SIP & Routage Sortant : activation systématique de trust_id_outbound et formatage strict du Caller ID Name (CNAM) pour affichage garanti chez les opérateurs distants (OVH, Orange, etc.)",
|
||||||
"Sauvegarde & Restauration : versionnage dynamique automatique basé sur la version installée (résolution du tag figé v1.2.0)",
|
"Sauvegarde & Restauration : versionnage dynamique automatique basé sur la version installée (résolution du tag figé v1.2.0)",
|
||||||
"Mises à jour système OTA : déclenchement garanti d'une sauvegarde Disaster Recovery complète pré-mise à jour (visible et restaurable dans l'interface)",
|
"Mises à jour système OTA : déclenchement garanti d'une sauvegarde Disaster Recovery complète pré-mise à jour (visible et restaurable dans l'interface)",
|
||||||
|
|||||||
Reference in new issue
Block a user