Ajout specialiste.php choisir_abb.php
This commit is contained in:
1 parent
bd311da711
commit
f852c0516a
5 files changed
+164
-130
No files matched your search
+44
-42
@@ -1,35 +1,36 @@
|
|||||||
<?php
|
<?php
|
||||||
// /choisir_abb.php (BLOC EMBED - pas de <html>, pas de <body>, pas de form Stripe)
|
// /choisir_abb.php (BLOC EMBED - pas de <html>, pas de <body>, pas de form Stripe)
|
||||||
require_once __DIR__ . '/../includes/bootstrap_global.php';
|
require_once __DIR__ . '/../includes/bootstrap_global.php';
|
||||||
|
|
||||||
// Abonnement gratuit (id=1)
|
// Abonnement gratuit (id=1)
|
||||||
$FREE_PLAN_ID = 1;
|
$FREE_PLAN_ID = 1;
|
||||||
|
|
||||||
// (Optionnel) Déjà utilisé ? -> on retire le gratuit
|
// (Optionnel) Déjà utilisé ? -> on retire le gratuit
|
||||||
$hasUsedFree = false;
|
$hasUsedFree = false;
|
||||||
$praticien_id = (int)($_SESSION['praticien_id'] ?? 0); // si tu as déjà un id en session, sinon 0
|
$praticien_id = (int) ($_SESSION['praticien_id'] ?? 0); // si tu as déjà un id en session, sinon 0
|
||||||
|
|
||||||
if ($praticien_id > 0) {
|
if ($praticien_id > 0) {
|
||||||
$sql = "SELECT 1
|
$sql = "SELECT 1
|
||||||
FROM paiement
|
FROM paiement
|
||||||
WHERE praticien_id = ?
|
WHERE praticien_id = ?
|
||||||
AND abonnement_id = ?
|
AND abonnement_id = ?
|
||||||
AND (statut IS NULL OR statut <> 'échoué')
|
AND (statut IS NULL OR statut <> 'échoué')
|
||||||
LIMIT 1";
|
LIMIT 1";
|
||||||
$st = $pdo->prepare($sql);
|
$st = $pdo->prepare($sql);
|
||||||
$st->execute([$praticien_id, $FREE_PLAN_ID]);
|
$st->execute([$praticien_id, $FREE_PLAN_ID]);
|
||||||
$hasUsedFree = (bool)$st->fetchColumn();
|
$hasUsedFree = (bool) $st->fetchColumn();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Abonnements actifs
|
// Abonnements actifs
|
||||||
$stmt = $pdo->query("SELECT * FROM abonnement WHERE actif = 1 ORDER BY prix ASC, duree_jours ASC");
|
$stmt = $pdo->query("SELECT * FROM abonnement WHERE actif = 1 ORDER BY prix ASC, duree_jours ASC");
|
||||||
$abonnements = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
$abonnements = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
if ($hasUsedFree) {
|
if ($hasUsedFree) {
|
||||||
$abonnements = array_values(array_filter($abonnements, fn($ab) => (int)$ab['id'] !== 1));
|
$abonnements = array_values(array_filter($abonnements, fn($ab) => (int) $ab['id'] !== 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
function h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); }
|
function h($s)
|
||||||
|
{return htmlspecialchars((string) $s, ENT_QUOTES, 'UTF-8');}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@@ -68,58 +69,59 @@ function h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); }
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="abo-wrap" id="abo-block">
|
<div class="abo-wrap" id="abo-block">
|
||||||
<h3 class="mb-4 text-center"><?= h($translations['choisissez_votre_abonnement'] ?? 'Выберите ваш тариф') ?></h4>
|
<h3 class="mb-4 text-center"><?php echo h($translations['choisissez_votre_abonnement'] ?? 'Выберите ваш тариф') ?></h4>
|
||||||
<p class="abo-sub"><?= h($translations['abo_obligatoire_inscription'] ?? "Выберите тариф: без этого регистрация невозможна.") ?></p>
|
<p class="abo-sub"><?php echo h($translations['abo_obligatoire_inscription'] ?? "Выберите тариф: без этого регистрация невозможна.") ?></p>
|
||||||
|
|
||||||
<?php if (!$abonnements): ?>
|
<?php if (! $abonnements): ?>
|
||||||
<div class="alert alert-warning text-center mb-0"><?= h($translations['aucun_abonnement_dispo'] ?? 'Нет доступных тарифов.') ?></div>
|
<div class="alert alert-warning text-center mb-0"><?php echo h($translations['aucun_abonnement_dispo'] ?? 'Нет доступных тарифов.') ?></div>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<div class="abo-grid" role="radiogroup" aria-label="<?= h($translations['choisissez_votre_abonnement'] ?? 'Выберите ваш тариф') ?>">
|
<div class="abo-grid" role="radiogroup" aria-label="<?php echo h($translations['choisissez_votre_abonnement'] ?? 'Выберите ваш тариф') ?>">
|
||||||
<?php foreach ($abonnements as $ab): ?>
|
<?php foreach ($abonnements as $ab): ?>
|
||||||
<?php
|
<?php
|
||||||
$isFree = ((float)$ab['prix'] == 0.0);
|
$isFree = ((float) $ab['prix'] == 0.0);
|
||||||
|
|
||||||
$prixTxt = $isFree
|
$prixTxt = $isFree
|
||||||
? ($translations['gratuit'] ?? 'Бесплатно')
|
? ($translations['gratuit'] ?? 'Бесплатно')
|
||||||
: number_format((float)$ab['prix'], 2, ',', ' ') . ' €';
|
: number_format((float) $ab['prix'], 2, ',', ' ') . ' €';
|
||||||
|
|
||||||
$nomKey = trim((string)($ab['nom'] ?? ''));
|
$nomKey = trim((string) ($ab['nom'] ?? ''));
|
||||||
$descKey = trim((string)($ab['description'] ?? ''));
|
$descKey = trim((string) ($ab['description'] ?? ''));
|
||||||
|
|
||||||
$nomTxt = $translations[$nomKey] ?? $nomKey;
|
$nomTxt = $translations[$nomKey] ?? $nomKey;
|
||||||
$descTxt = $translations[$descKey] ?? $descKey;
|
$descTxt = $translations[$descKey] ?? $descKey;
|
||||||
|
|
||||||
$id = (int)$ab['id'];
|
$id = (int) $ab['id'];
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<label class="abo-item" data-abo-item="1">
|
<label class="abo-item" data-abo-item="1">
|
||||||
<input class="abo-radio"
|
<input class="abo-radio"
|
||||||
type="radio"
|
type="radio"
|
||||||
name="abonnement_id_ui"
|
name="abonnement_id_ui"
|
||||||
value="<?= $id ?>"
|
value="<?php echo $id ?>"
|
||||||
aria-label="<?= h($nomTxt) ?>">
|
aria-label="<?php echo h($nomTxt) ?>">
|
||||||
<div>
|
<div>
|
||||||
<p class="abo-name"><?= h($nomTxt) ?></p>
|
<p class="abo-name"><?php echo h($nomTxt) ?></p>
|
||||||
|
|
||||||
<?php if ($descKey !== ''): ?>
|
<?php if ($descKey !== ''): ?>
|
||||||
<p class="abo-desc"><?= nl2br(h($descTxt)) ?></p>
|
<p class="abo-desc"><?php echo nl2br(h($descTxt)) ?></p>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<div class="abo-meta">
|
<div class="abo-meta">
|
||||||
|
|
||||||
<?= h($translations['col_duree'] ?? 'Длительность:') ?>
|
<?php echo h($translations['col_duree'] ?? 'Длительность:') ?>
|
||||||
<?= (int)$ab['duree_jours'] ?> <?= h($translations['dnei'] ?? 'дней') ?><br>
|
<?php echo (int) $ab['duree_jours'] ?> <?php echo h($translations['dnei'] ?? 'дней') ?><br>
|
||||||
|
|
||||||
<?= h($prixTxt) ?>
|
<?php echo h($prixTxt) ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
|
<a href="\specialiste.php" target="_blank" class="btn btn-outline-secondary w-100"><?php echo h($translations['uznat_bolche'] ?? 'Узнать преимущества') ?></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="abo-error" id="abo-error">
|
<div class="abo-error" id="abo-error">
|
||||||
<?= h($translations['abonnement_obligatoire'] ?? "Пожалуйста, выберите тариф.") ?>
|
<?php echo h($translations['abonnement_obligatoire'] ?? "Пожалуйста, выберите тариф.") ?>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -107,7 +107,7 @@
|
|||||||
<!-- ✅ Open Graph -->
|
<!-- ✅ Open Graph -->
|
||||||
<meta property="og:title" content="<?php echo h($translations['seo_index_title'] ?? '') ?>">
|
<meta property="og:title" content="<?php echo h($translations['seo_index_title'] ?? '') ?>">
|
||||||
<meta property="og:description" content="<?php echo h($translations['seo_index_desc'] ?? '') ?>">
|
<meta property="og:description" content="<?php echo h($translations['seo_index_desc'] ?? '') ?>">
|
||||||
<meta property="og:image" content="https://uslugi.fr/public/uploads/img/logo.png">
|
<meta property="og:image" content="https://uslugi.fr/public/uploads/img/logo_u.png">
|
||||||
<meta property="og:url" content="https://uslugi.fr<?php echo $reqUri ?>">
|
<meta property="og:url" content="https://uslugi.fr<?php echo $reqUri ?>">
|
||||||
<meta property="og:type" content="website">
|
<meta property="og:type" content="website">
|
||||||
|
|
||||||
|
|||||||
+4
-1
@@ -505,6 +505,7 @@ Cliquez simplement sur le lien pour vous connecter.<br>',
|
|||||||
'etape2_label' => 'Choisissez un expert',
|
'etape2_label' => 'Choisissez un expert',
|
||||||
'etape3_label' => 'Prenez rendez-vous',
|
'etape3_label' => 'Prenez rendez-vous',
|
||||||
'plus_details' => 'Plus de détails >>',
|
'plus_details' => 'Plus de détails >>',
|
||||||
|
'uznat_bolche' => 'En savoir plus',
|
||||||
'plus_favorits' => '[Mémoriser]',
|
'plus_favorits' => '[Mémoriser]',
|
||||||
|
|
||||||
// Profil praticien / avis
|
// Profil praticien / avis
|
||||||
@@ -1344,7 +1345,7 @@ Cliquez simplement sur le lien pour vous connecter.<br>',
|
|||||||
'abb_description_1' => 'Essayez la plateforme gratuitement — sans engagement et sans carte bancaire.',
|
'abb_description_1' => 'Essayez la plateforme gratuitement — sans engagement et sans carte bancaire.',
|
||||||
|
|
||||||
'abb_titre_2' => 'Forfait mensuel',
|
'abb_titre_2' => 'Forfait mensuel',
|
||||||
'abb_description_2' => 'Accès complet à la plateforme pendant un mois. Formule flexible — possibilité de prolonger ou de suspendre à tout moment.',
|
'abb_description_2' => 'Accès complet à la plateforme pendant un mois. Formule flexible — possibilité de suspendre à tout moment.',
|
||||||
|
|
||||||
'abb_titre_3' => 'Abonnement annuel',
|
'abb_titre_3' => 'Abonnement annuel',
|
||||||
'abb_description_3' => 'Économisez 25 € par an. Idéal pour les professionnels utilisant la plateforme de manière régulière.',
|
'abb_description_3' => 'Économisez 25 € par an. Idéal pour les professionnels utilisant la plateforme de manière régulière.',
|
||||||
@@ -1966,6 +1967,8 @@ Cliquez simplement sur le lien pour vous connecter.<br>',
|
|||||||
'spec_benefit_online' => 'Consultations en ligne directement sur la plateforme',
|
'spec_benefit_online' => 'Consultations en ligne directement sur la plateforme',
|
||||||
'spec_benefit_articles' => 'Visibilité supplémentaire grâce aux publications d’experts',
|
'spec_benefit_articles' => 'Visibilité supplémentaire grâce aux publications d’experts',
|
||||||
'spec_benefit_russian_clients' => 'Accès à une clientèle russophone en France',
|
'spec_benefit_russian_clients' => 'Accès à une clientèle russophone en France',
|
||||||
|
'spec_invite_secretaire' => 'Invitez un secrétaire pour gérer l’agenda et l’organisation de plusieurs spécialistes.',
|
||||||
|
'spec_suivi_clients' => 'Accédez à un espace dédié pour suivre vos clients et l’historique des rendez-vous.',
|
||||||
|
|
||||||
'spec_section_for_who_title' => 'À qui s’adresse la plateforme',
|
'spec_section_for_who_title' => 'À qui s’adresse la plateforme',
|
||||||
|
|
||||||
|
|||||||
+4
-1
@@ -507,6 +507,7 @@ return [
|
|||||||
'etape2_label' => 'Чат со специалистом',
|
'etape2_label' => 'Чат со специалистом',
|
||||||
'etape3_label' => 'Видео связь',
|
'etape3_label' => 'Видео связь',
|
||||||
'plus_details' => 'Подробнее>>',
|
'plus_details' => 'Подробнее>>',
|
||||||
|
'uznat_bolche' => 'Узнать преимущества',
|
||||||
'plus_favorits' => '[Запомнить]',
|
'plus_favorits' => '[Запомнить]',
|
||||||
|
|
||||||
// Профиль врача / отзывы
|
// Профиль врача / отзывы
|
||||||
@@ -1353,7 +1354,7 @@ return [
|
|||||||
'abb_titre_1' => '7 дней бесплатно',
|
'abb_titre_1' => '7 дней бесплатно',
|
||||||
'abb_description_1' => 'Попробуйте платформу бесплатно — без обязательств и привязки к карте.',
|
'abb_description_1' => 'Попробуйте платформу бесплатно — без обязательств и привязки к карте.',
|
||||||
'abb_titre_2' => 'Месячный пакет',
|
'abb_titre_2' => 'Месячный пакет',
|
||||||
'abb_description_2' => 'Полный доступ к платформе на месяц. Гибкий формат — можно продлить или приостановить в любой момент.',
|
'abb_description_2' => 'Полный доступ к платформе на месяц. Гибкий формат — можно приостановить в любой момент.',
|
||||||
'abb_titre_3' => 'Годовая подписка',
|
'abb_titre_3' => 'Годовая подписка',
|
||||||
'abb_description_3' => 'Экономия 25 € в год. Подходит для тех, кто работает на платформе стабильно.',
|
'abb_description_3' => 'Экономия 25 € в год. Подходит для тех, кто работает на платформе стабильно.',
|
||||||
'abb_titre_4' => 'Пакет «Профи+»',
|
'abb_titre_4' => 'Пакет «Профи+»',
|
||||||
@@ -1976,6 +1977,8 @@ return [
|
|||||||
'spec_benefit_online' => 'Проведение онлайн-консультаций прямо на платформе',
|
'spec_benefit_online' => 'Проведение онлайн-консультаций прямо на платформе',
|
||||||
'spec_benefit_articles' => 'Дополнительная видимость через экспертные публикации',
|
'spec_benefit_articles' => 'Дополнительная видимость через экспертные публикации',
|
||||||
'spec_benefit_russian_clients' => 'Привлечение русскоязычных клиентов во Франции',
|
'spec_benefit_russian_clients' => 'Привлечение русскоязычных клиентов во Франции',
|
||||||
|
'spec_invite_secretaire' => 'Пригласите секретаря для управления расписанием и организацией работы нескольких специалистов.',
|
||||||
|
'spec_suivi_clients' => 'Получите доступ к личному пространству для ведения клиентов и истории записей.',
|
||||||
|
|
||||||
'spec_section_for_who_title' => 'Для кого предназначена платформа',
|
'spec_section_for_who_title' => 'Для кого предназначена платформа',
|
||||||
|
|
||||||
|
|||||||
+111
-85
@@ -1,74 +1,98 @@
|
|||||||
<?php
|
<?php
|
||||||
declare(strict_types=1);
|
declare (strict_types = 1);
|
||||||
require_once __DIR__ . '/../includes/bootstrap_global.php';
|
require_once __DIR__ . '/../includes/bootstrap_global.php';
|
||||||
|
|
||||||
// ===== Helpers header (identiques à index.php) =====
|
// ===== Helpers header (identiques à index.php) =====
|
||||||
function is_client_logged_in(): bool {
|
function is_client_logged_in(): bool
|
||||||
$role = $_SESSION['role'] ?? ($_SESSION['user_type'] ?? '');
|
{
|
||||||
if (!empty($_SESSION['user_id']) && $role === 'client') return true;
|
$role = $_SESSION['role'] ?? ($_SESSION['user_type'] ?? '');
|
||||||
if (!empty($_SESSION['client_id'])) return true;
|
if (! empty($_SESSION['user_id']) && $role === 'client') {
|
||||||
if (!empty($_SESSION['reference_id']) && $role === 'client') return true;
|
return true;
|
||||||
if (!empty($_SESSION['user_id']) && $role === 'praticien') return true;
|
}
|
||||||
if (!empty($_SESSION['praticien_id'])) return true;
|
|
||||||
if (!empty($_SESSION['reference_id']) && $role === 'praticien') return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function include_header_clean(string $absPath): void {
|
if (! empty($_SESSION['client_id'])) {
|
||||||
global $translations, $lang;
|
return true;
|
||||||
ob_start();
|
}
|
||||||
include $absPath; // /public/includes/header.php
|
|
||||||
$buf = ob_get_clean() ?: '';
|
|
||||||
|
|
||||||
// 0) DOCTYPE + <html>…</html>
|
if (! empty($_SESSION['reference_id']) && $role === 'client') {
|
||||||
$buf = preg_replace('~<!doctype\s+html[^>]*>~i', '', $buf);
|
return true;
|
||||||
$buf = preg_replace('~</?html\b[^>]*>~i', '', $buf);
|
}
|
||||||
|
|
||||||
// 1) retirer <head>…</head> et <body> ouverts/fermés
|
if (! empty($_SESSION['user_id']) && $role === 'praticien') {
|
||||||
$buf = preg_replace('~<head\b[^>]*>.*?</head>~is', '', $buf);
|
return true;
|
||||||
$buf = preg_replace('~</?body\b[^>]*>~i', '', $buf);
|
}
|
||||||
|
|
||||||
// 2) retirer les <link> CSS “globaux” pour éviter d’écraser la home
|
if (! empty($_SESSION['praticien_id'])) {
|
||||||
$buf = preg_replace('~<link[^>]+href="[^"]*(bootstrap[^"]*\.css|mobil_style\.css|site_style\.css|fonts\.googleapis)[^"]*"[^>]*>~i', '', $buf);
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// 3) retirer le <script> Bootstrap CDN (on le charge déjà en bas de la page)
|
if (! empty($_SESSION['reference_id']) && $role === 'praticien') {
|
||||||
$buf = preg_replace('~<script[^>]+src="[^"]*bootstrap[^"]*bundle[^"]*\.js[^"]*"[^>]*>\s*</script>~i', '', $buf);
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
echo $buf; // garde <header> + tes scripts inline utiles
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function t(array $translations, string $key, string $fallback = ''): string {
|
function include_header_clean(string $absPath): void
|
||||||
$val = $translations[$key] ?? '';
|
{
|
||||||
if ($val === '') return $fallback;
|
global $translations, $lang;
|
||||||
return (string)$val;
|
ob_start();
|
||||||
}
|
include $absPath; // /public/includes/header.php
|
||||||
|
$buf = ob_get_clean() ?: '';
|
||||||
|
|
||||||
// Lang HTML
|
// 0) DOCTYPE + <html>…</html>
|
||||||
$langHtml = preg_match('~^[a-z]{2}(-[A-Z]{2})?$~', (string)($lang ?? '')) ? (string)$lang : 'ru';
|
$buf = preg_replace('~<!doctype\s+html[^>]*>~i', '', $buf);
|
||||||
|
$buf = preg_replace('~</?html\b[^>]*>~i', '', $buf);
|
||||||
|
|
||||||
|
// 1) retirer <head>…</head> et <body> ouverts/fermés
|
||||||
|
$buf = preg_replace('~<head\b[^>]*>.*?</head>~is', '', $buf);
|
||||||
|
$buf = preg_replace('~</?body\b[^>]*>~i', '', $buf);
|
||||||
|
|
||||||
|
// 2) retirer les <link> CSS “globaux” pour éviter d’écraser la home
|
||||||
|
$buf = preg_replace('~<link[^>]+href="[^"]*(bootstrap[^"]*\.css|mobil_style\.css|site_style\.css|fonts\.googleapis)[^"]*"[^>]*>~i', '', $buf);
|
||||||
|
|
||||||
|
// 3) retirer le <script> Bootstrap CDN (on le charge déjà en bas de la page)
|
||||||
|
$buf = preg_replace('~<script[^>]+src="[^"]*bootstrap[^"]*bundle[^"]*\.js[^"]*"[^>]*>\s*</script>~i', '', $buf);
|
||||||
|
|
||||||
|
echo $buf; // garde <header> + tes scripts inline utiles
|
||||||
|
}
|
||||||
|
|
||||||
|
function t(array $translations, string $key, string $fallback = ''): string
|
||||||
|
{
|
||||||
|
$val = $translations[$key] ?? '';
|
||||||
|
if ($val === '') {
|
||||||
|
return $fallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (string) $val;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lang HTML
|
||||||
|
$langHtml = preg_match('~^[a-z]{2}(-[A-Z]{2})?$~', (string) ($lang ?? '')) ? (string) $lang : 'ru';
|
||||||
?>
|
?>
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="<?= htmlspecialchars($langHtml, ENT_QUOTES, 'UTF-8') ?>">
|
<html lang="<?php echo htmlspecialchars($langHtml, ENT_QUOTES, 'UTF-8') ?>">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title><?= htmlspecialchars($translations['seo_about_title'], ENT_QUOTES, 'UTF-8') ?></title>
|
<title><?php echo htmlspecialchars($translations['seo_about_title'], ENT_QUOTES, 'UTF-8') ?></title>
|
||||||
<meta name="description" content="<?= htmlspecialchars($translations['seo_about_desc'], ENT_QUOTES, 'UTF-8') ?>">
|
<meta name="description" content="<?php echo htmlspecialchars($translations['seo_about_desc'], ENT_QUOTES, 'UTF-8') ?>">
|
||||||
<meta name="keywords" content="<?= htmlspecialchars($translations['seo_about_keywords'], ENT_QUOTES, 'UTF-8') ?>">
|
<meta name="keywords" content="<?php echo htmlspecialchars($translations['seo_about_keywords'], ENT_QUOTES, 'UTF-8') ?>">
|
||||||
<meta name="author" content="Uslugi.fr">
|
<meta name="author" content="Uslugi.fr">
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="/css/bootstrap.min.css">
|
<link rel="stylesheet" href="/css/bootstrap.min.css">
|
||||||
|
|
||||||
<link rel="stylesheet" href="<?= asset('/includes/site_style.css') ?>">
|
<link rel="stylesheet" href="<?php echo asset('/includes/site_style.css') ?>">
|
||||||
<link rel="stylesheet" href="<?= asset('/includes/custom_style.css') ?>">
|
<link rel="stylesheet" href="<?php echo asset('/includes/custom_style.css') ?>">
|
||||||
<link rel="stylesheet" href="<?= asset('/includes/mobil_style.css') ?>">
|
<link rel="stylesheet" href="<?php echo asset('/includes/mobil_style.css') ?>">
|
||||||
<?php include_once __DIR__ . '/includes/tracking.php'; ?>
|
<?php include_once __DIR__ . '/includes/tracking.php'; ?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<?php if (is_client_logged_in()): ?>
|
<?php if (is_client_logged_in()): ?>
|
||||||
<?php
|
<?php
|
||||||
require_once __DIR__ . '/public/includes/init_pr_cl.php';
|
require_once __DIR__ . '/public/includes/init_pr_cl.php';
|
||||||
include_header_clean(__DIR__ . '/public/includes/header.php'); ?>
|
include_header_clean(__DIR__ . '/public/includes/header.php'); ?>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<header class="site-header">
|
<header class="site-header">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
@@ -88,8 +112,8 @@ $langHtml = preg_match('~^[a-z]{2}(-[A-Z]{2})?$~', (string)($lang ?? '')) ? (str
|
|||||||
</div>
|
</div>
|
||||||
<nav class="header-actions">
|
<nav class="header-actions">
|
||||||
<a class="btn-login" href="/connexion.php">
|
<a class="btn-login" href="/connexion.php">
|
||||||
<span class="d-sm-none"><?= htmlspecialchars($translations['btn_se_connecter'] ?? 'Connexion', ENT_QUOTES, 'UTF-8') ?></span>
|
<span class="d-sm-none"><?php echo htmlspecialchars($translations['btn_se_connecter'] ?? 'Connexion', ENT_QUOTES, 'UTF-8') ?></span>
|
||||||
<span class="d-none d-sm-inline"><?= htmlspecialchars($translations['ja_spec'] ?? 'Je suis spécialiste', ENT_QUOTES, 'UTF-8') ?></span>
|
<span class="d-none d-sm-inline"><?php echo htmlspecialchars($translations['ja_spec'] ?? 'Je suis spécialiste', ENT_QUOTES, 'UTF-8') ?></span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
@@ -99,15 +123,15 @@ $langHtml = preg_match('~^[a-z]{2}(-[A-Z]{2})?$~', (string)($lang ?? '')) ? (str
|
|||||||
data-bs-toggle="dropdown"
|
data-bs-toggle="dropdown"
|
||||||
data-bs-auto-close="true"
|
data-bs-auto-close="true"
|
||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
aria-label="<?= htmlspecialchars(t($translations, 'about_help_aria', 'Help'), ENT_QUOTES, 'UTF-8') ?>">
|
aria-label="<?php echo htmlspecialchars(t($translations, 'about_help_aria', 'Help'), ENT_QUOTES, 'UTF-8') ?>">
|
||||||
?
|
?
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<ul class="dropdown-menu dropdown-menu-end shadow help-menu menu-panel">
|
<ul class="dropdown-menu dropdown-menu-end shadow help-menu menu-panel">
|
||||||
<li><a href="/how-it-work.php"><?= htmlspecialchars($translations['kak_rabotaet'] ?? 'Как это работает', ENT_QUOTES, 'UTF-8') ?></a></li>
|
<li><a href="/how-it-work.php"><?php echo htmlspecialchars($translations['kak_rabotaet'] ?? 'Как это работает', ENT_QUOTES, 'UTF-8') ?></a></li>
|
||||||
<li><a href="/about.php"><?= htmlspecialchars($translations['pro_nas'] ?? 'О нас', ENT_QUOTES, 'UTF-8') ?></a></li>
|
<li><a href="/about.php"><?php echo htmlspecialchars($translations['pro_nas'] ?? 'О нас', ENT_QUOTES, 'UTF-8') ?></a></li>
|
||||||
<li><a href="/faq.php"><?= htmlspecialchars($translations['faq'] ?? 'FAQ', ENT_QUOTES, 'UTF-8') ?></a></li>
|
<li><a href="/faq.php"><?php echo htmlspecialchars($translations['faq'] ?? 'FAQ', ENT_QUOTES, 'UTF-8') ?></a></li>
|
||||||
<li><a href="/contact.php"><?= htmlspecialchars($translations['nam_pisat'] ?? 'Написать нам', ENT_QUOTES, 'UTF-8') ?></a></li>
|
<li><a href="/contact.php"><?php echo htmlspecialchars($translations['nam_pisat'] ?? 'Написать нам', ENT_QUOTES, 'UTF-8') ?></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -138,52 +162,54 @@ $langHtml = preg_match('~^[a-z]{2}(-[A-Z]{2})?$~', (string)($lang ?? '')) ? (str
|
|||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|
||||||
<h1><?= $translations['spec_title'] ?></h1>
|
<h1><?php echo $translations['spec_title'] ?></h1>
|
||||||
<p><?= $translations['spec_subtitle'] ?></p>
|
<p><?php echo $translations['spec_subtitle'] ?></p>
|
||||||
|
|
||||||
<div class="toc">
|
<div class="toc">
|
||||||
<a href="#benefits"><?= $translations['spec_section_benefits_title'] ?></a>
|
<a href="#benefits"><?php echo $translations['spec_section_benefits_title'] ?></a>
|
||||||
<a href="#forwho"><?= $translations['spec_section_for_who_title'] ?></a>
|
<a href="#forwho"><?php echo $translations['spec_section_for_who_title'] ?></a>
|
||||||
<a href="#how"><?= $translations['spec_section_how_title'] ?></a>
|
<a href="#how"><?php echo $translations['spec_section_how_title'] ?></a>
|
||||||
<a href="#subscription"><?= $translations['spec_section_subscription_title'] ?></a>
|
<a href="#subscription"><?php echo $translations['spec_section_subscription_title'] ?></a>
|
||||||
<a href="#why"><?= $translations['spec_section_why_title'] ?></a>
|
<a href="#why"><?php echo $translations['spec_section_why_title'] ?></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2 id="benefits"><?= $translations['spec_section_benefits_title'] ?></h2>
|
<h2 id="benefits"><?php echo $translations['spec_section_benefits_title'] ?></h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li><?= $translations['spec_benefit_profile'] ?></li>
|
<li><?php echo $translations['spec_benefit_profile'] ?></li>
|
||||||
<li><?= $translations['spec_benefit_calendar'] ?></li>
|
<li><?php echo $translations['spec_benefit_calendar'] ?></li>
|
||||||
<li><?= $translations['spec_benefit_sync'] ?></li>
|
<li><?php echo $translations['spec_benefit_sync'] ?></li>
|
||||||
<li><?= $translations['spec_benefit_booking'] ?></li>
|
<li><?php echo $translations['spec_benefit_booking'] ?></li>
|
||||||
<li><?= $translations['spec_benefit_chat'] ?></li>
|
<li><?php echo $translations['spec_invite_secretaire'] ?></li>
|
||||||
<li><?= $translations['spec_benefit_online'] ?></li>
|
<li><?php echo $translations['spec_suivi_clients'] ?></li>
|
||||||
<li><?= $translations['spec_benefit_articles'] ?></li>
|
<li><?php echo $translations['spec_benefit_chat'] ?></li>
|
||||||
<li><?= $translations['spec_benefit_russian_clients'] ?></li>
|
<li><?php echo $translations['spec_benefit_online'] ?></li>
|
||||||
|
<li><?php echo $translations['spec_benefit_articles'] ?></li>
|
||||||
|
<li><?php echo $translations['spec_benefit_russian_clients'] ?></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2 id="forwho"><?= $translations['spec_section_for_who_title'] ?></h2>
|
<h2 id="forwho"><?php echo $translations['spec_section_for_who_title'] ?></h2>
|
||||||
<p><?= $translations['spec_for_who_text_1'] ?></p>
|
<p><?php echo $translations['spec_for_who_text_1'] ?></p>
|
||||||
<p><?= $translations['spec_for_who_text_2'] ?></p>
|
<p><?php echo $translations['spec_for_who_text_2'] ?></p>
|
||||||
|
|
||||||
<div class="callout">
|
<div class="callout">
|
||||||
<strong><?= $translations['spec_siret_required'] ?></strong>
|
<strong><?php echo $translations['spec_siret_required'] ?></strong>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2 id="how"><?= $translations['spec_section_how_title'] ?></h2>
|
<h2 id="how"><?php echo $translations['spec_section_how_title'] ?></h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li><?= $translations['spec_step_1'] ?></li>
|
<li><?php echo $translations['spec_step_1'] ?></li>
|
||||||
<li><?= $translations['spec_step_2'] ?></li>
|
<li><?php echo $translations['spec_step_2'] ?></li>
|
||||||
<li><?= $translations['spec_step_3'] ?></li>
|
<li><?php echo $translations['spec_step_3'] ?></li>
|
||||||
<li><?= $translations['spec_step_4'] ?></li>
|
<li><?php echo $translations['spec_step_4'] ?></li>
|
||||||
<li><?= $translations['spec_step_5'] ?></li>
|
<li><?php echo $translations['spec_step_5'] ?></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2 id="subscription"><?= $translations['spec_section_subscription_title'] ?></h2>
|
<h2 id="subscription"><?php echo $translations['spec_section_subscription_title'] ?></h2>
|
||||||
<p><?= $translations['spec_subscription_desc'] ?></p>
|
<p><?php echo $translations['spec_subscription_desc'] ?></p>
|
||||||
<p><strong><?= $translations['spec_subscription_price'] ?></strong></p>
|
<p><strong><?php echo $translations['spec_subscription_price'] ?></strong></p>
|
||||||
|
|
||||||
<h2 id="why"><?= $translations['spec_section_why_title'] ?></h2>
|
<h2 id="why"><?php echo $translations['spec_section_why_title'] ?></h2>
|
||||||
<p><?= $translations['spec_why_text'] ?></p>
|
<p><?php echo $translations['spec_why_text'] ?></p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -192,7 +218,7 @@ $langHtml = preg_match('~^[a-z]{2}(-[A-Z]{2})?$~', (string)($lang ?? '')) ? (str
|
|||||||
|
|
||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p><?= $translations['copyr'] ?></p>
|
<p><?php echo $translations['copyr'] ?></p>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user