newdesigngestionnaire/Vue/portail.php
2026-04-09 07:54:22 +00:00

188 lines
7.6 KiB
PHP
Executable File

<?php
defined('APP_VERSION') || define('APP_VERSION', date('YmdHi'));
// Initialisation de la langue par défaut si non définie
$_SESSION['lang'] = isset($_SESSION['lang']) ? $_SESSION['lang'] : 'fr_FR';
// Raccourci booléen réutilisable dans ce fichier
$isEn = ($_SESSION['lang'] === 'en_US');
?>
<!doctype html>
<html lang="<?= $isEn ? 'en' : 'fr' ?>">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<base href="<?= $racineWeb ?>">
<link rel="icon" href="Bootstrap_new/images/favicon.ico" />
<!-- Bootstrap -->
<link rel="stylesheet" href="Bootstrap_new/login/vendor/bootstrap/css/bootstrap.min.css">
<!-- Font Awesome 5 -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<!-- SweetAlert2 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@11.14.1/dist/sweetalert2.min.css">
<!-- Portail — feuille de styles centralisée -->
<link rel="stylesheet" href="Bootstrap_new/css/style-portail.css?ver=<?= APP_VERSION ?>">
<title><?= $titre ?></title>
</head>
<body>
<div class="portail-wrapper">
<!-- ======================================================
PANNEAU GAUCHE — Carrousel
====================================================== -->
<div class="slide-container">
<div class="slides">
<img src="assets/img/slides/image01.jpg" alt="slide 1" class="slide active" />
<img src="assets/img/slides/image02.jpg" alt="slide 2" class="slide" />
<img src="assets/img/slides/image03.jpg" alt="slide 3" class="slide" />
<img src="assets/img/slides/image04.jpg" alt="slide 4" class="slide" />
<img src="assets/img/slides/image05.jpg" alt="slide 5" class="slide" />
<img src="assets/img/slides/image06.jpg" alt="slide 6" class="slide" />
<img src="assets/img/slides/image07.jpg" alt="slide 7" class="slide" />
<img src="assets/img/slides/image08.jpg" alt="slide 8" class="slide" />
<img src="assets/img/slides/image09.jpeg" alt="slide 9" class="slide" />
</div>
<button class="slide-btn prev" aria-label="<?= $isEn ? 'Previous' : 'Précédent' ?>">
<i class="fas fa-chevron-left"></i>
</button>
<button class="slide-btn next" aria-label="<?= $isEn ? 'Next' : 'Suivant' ?>">
<i class="fas fa-chevron-right"></i>
</button>
<div class="dotsContainer">
<div class="dot active" attr="0" onclick="switchImage(this)"></div>
<div class="dot" attr="1" onclick="switchImage(this)"></div>
<div class="dot" attr="2" onclick="switchImage(this)"></div>
<div class="dot" attr="3" onclick="switchImage(this)"></div>
<div class="dot" attr="4" onclick="switchImage(this)"></div>
<div class="dot" attr="5" onclick="switchImage(this)"></div>
<div class="dot" attr="6" onclick="switchImage(this)"></div>
<div class="dot" attr="7" onclick="switchImage(this)"></div>
<div class="dot" attr="8" onclick="switchImage(this)"></div>
</div>
<!-- Badge marque + caption bilingue synchronisé avec le carrousel -->
<div class="slide-brand">
<h2>INTER SANTE &copy; — v2026</h2>
<p class="slide-subtitle">
ERP SaaS &mdash;
<span id="description">Solution de Gestion Santé Intégrée</span>
</p>
<p class="slide-caption" id="slideCaption"></p>
</div>
</div><!-- /Carrousel -->
<!-- ======================================================
PANNEAU DROIT — Formulaire de connexion
====================================================== -->
<div class="form-panel">
<!-- Champ technique racineWeb (lu par les scripts JS existants) -->
<input class="sr-only" type="text" id="racineWeb" name="racineWeb" value="<?= $racineWeb ?>">
<!-- Logo -->
<img src="assets/img/logo_portail_gestionnaire.png"
alt="Logo INTER SANTE"
class="form-logo">
<!-- Contenu injecté par le contrôleur (index.php → french.php / english.php) -->
<?= $contenu ?>
</div><!-- /Formulaire -->
</div><!-- /portail-wrapper -->
<!-- ======================================================
SCRIPTS
====================================================== -->
<script src="Bootstrap_new/login/vendor/jquery/jquery-3.2.1.min.js"></script>
<script src="Bootstrap_new/login/vendor/bootstrap/js/popper.js"></script>
<script src="Bootstrap_new/login/vendor/bootstrap/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.14.1/dist/sweetalert2.all.min.js"></script>
<script>
/* ----------------------------------------------------------
Protection clic droit
---------------------------------------------------------- */
if (document.addEventListener) {
document.addEventListener('contextmenu', function (e) { e.preventDefault(); }, false);
} else {
document.attachEvent('oncontextmenu', function () { window.event.returnValue = false; });
}
/* ----------------------------------------------------------
Carrousel
---------------------------------------------------------- */
var slideImages = document.querySelectorAll('.slide');
var nextBtn = document.querySelector('.next');
var prevBtn = document.querySelector('.prev');
var dots = document.querySelectorAll('.dot');
var counter = 0;
var deletInterval;
// Affiche le caption de la première slide au chargement
updateCaption(0);
nextBtn.addEventListener('click', slideNext);
prevBtn.addEventListener('click', slidePrev);
function slideNext() {
slideImages[counter].style.animation = 'next1 0.5s ease-in forwards';
counter = (counter >= slideImages.length - 1) ? 0 : counter + 1;
slideImages[counter].style.animation = 'next2 0.5s ease-in forwards';
indicators();
updateCaption(counter);
}
function slidePrev() {
slideImages[counter].style.animation = 'prev1 0.5s ease-in forwards';
counter = (counter === 0) ? slideImages.length - 1 : counter - 1;
slideImages[counter].style.animation = 'prev2 0.5s ease-in forwards';
indicators();
updateCaption(counter);
}
function autoSliding() {
deletInterval = setInterval(function () { slideNext(); }, 3000);
}
autoSliding();
var sliderEl = document.querySelector('.slide-container');
sliderEl.addEventListener('mouseover', function () { clearInterval(deletInterval); });
sliderEl.addEventListener('mouseout', autoSliding);
function indicators() {
dots.forEach(function (d) { d.classList.remove('active'); });
dots[counter].classList.add('active');
}
function switchImage(el) {
var id = parseInt(el.getAttribute('attr'));
if (id === counter) return;
if (id > counter) {
slideImages[counter].style.animation = 'next1 0.5s ease-in forwards';
counter = id;
slideImages[counter].style.animation = 'next2 0.5s ease-in forwards';
} else {
slideImages[counter].style.animation = 'prev1 0.5s ease-in forwards';
counter = id;
slideImages[counter].style.animation = 'prev2 0.5s ease-in forwards';
}
indicators();
updateCaption(counter);
}
</script>
</body>
</html>