<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* Parent/LoginParent.html.twig */
class __TwigTemplate_37bb9239606940e257554a0bc0386491 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
'LinksCss' => [$this, 'block_LinksCss'],
'Content' => [$this, 'block_Content'],
'javascript' => [$this, 'block_javascript'],
];
}
protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
{
// line 1
return "/Accueil/layoutAccueilParents.html.twig";
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "Parent/LoginParent.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "Parent/LoginParent.html.twig"));
$this->parent = $this->load("/Accueil/layoutAccueilParents.html.twig", 1);
yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 2
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_LinksCss(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "LinksCss"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "LinksCss"));
// line 3
yield " ";
yield from $this->yieldParentBlock("LinksCss", $context, $blocks);
yield "
<link rel=\"stylesheet\" href=\"";
// line 5
yield "/css/Parent/css/login.css";
yield "\" >
<link rel=\"stylesheet\" href=\"";
// line 6
yield "/css/Parent/css/premiercnx.css";
yield "\">
<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css\">
<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\">
<link href=\"";
// line 10
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("css/bootstrap-social.css"), "html", null, true);
yield "\" type=\"text/css\" rel=\"stylesheet\" >
<link rel=\"stylesheet\" href=\"";
// line 11
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("css/splide.min.css"), "html", null, true);
yield "\">
<style>
.titleProdbienvenu {
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
}
/* Style pour le bouton de retour en haut */
.scroll-top-btn {
position: fixed;
bottom: 20px;
right: 20px;
width: 40px;
height: 40px;
border-radius: 50%;
background-color:#f09e7a;
color: white;
border: none;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
z-index: 1000;
display: none;
cursor: pointer;
transition: all 0.3s ease;
}
.scroll-top-btn:hover {
background-color: #e8865e;
transform: translateY(-3px);
}
/* Styles pour le loader d'inscription */
.register-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.9);
z-index: 9999;
display: none;
justify-content: center;
align-items: center;
}
.loader-content {
text-align: center;
background-color: white;
padding: 30px;
border-radius: 10px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
max-width: 350px;
width: 90%;
}
.loader-message {
margin-top: 20px;
font-size: 18px;
font-weight: bold;
color: #41a2aa;
}
.loader-submessage {
margin-top: 10px;
font-size: 14px;
color: #666;
}
.spinner-border {
width: 3rem;
height: 3rem;
color: #f09e7a !important;
}
/* Styles pour le modal de confirmation */
.modal {
display: flex;
align-items: center;
justify-content: center;
}
.modal-dialog {
margin: 0 auto;
max-width: 500px;
width: 90%;
}
.modal-content {
border-radius: 10px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
margin: 0 auto;
}
.modal-body {
padding: 30px 20px;
}
.modal-footer {
justify-content: center;
padding: 15px;
}
.circleModal {
background-color: #f09e7a;
color: white;
border: none;
border-radius: 5px;
padding: 10px 30px;
font-weight: bold;
transition: all 0.3s ease;
}
.circleModal:hover {
background-color: #e8865e;
transform: translateY(-2px);
}
/* Animation pour le passage au champ suivant */
.field-complete {
transition: all 0.3s ease;
border-color: #41a2aa !important;
box-shadow: 0 0 5px rgba(65, 162, 170, 0.5) !important;
transform: translateY(-2px);
}
.form-control:focus {
border-color: #f09e7a !important;
box-shadow: 0 0 6px rgba(240, 158, 122, 0.5) !important;
transition: all 0.3s ease;
}
/* Position for password toggle icons */
.position-relative {
position: relative;
display: block;
width: 100%;
}
.field-icon {
position: absolute;
right: 10px;
top: 50%;
transform: translateY(-50%);
z-index: 10;
cursor: pointer;
color: #41a2aa;
font-size: 14px;
pointer-events: auto;
}
.field-icon:hover {
color: #f09e7a;
}
/* Adjust input padding to make room for the icon */
input[type=\"password\"] {
padding-right: 40px;
}
/* Updated styles for login forms */
.form-section {
background-color: #fff;
padding: 25px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
margin-bottom: 20px;
height: 100%;
}
.soutitle {
color: #333;
font-size: 24px;
font-weight: bold;
margin-bottom: 15px;
text-align: center;
}
.description2 {
color: #666;
text-align: center;
margin-bottom: 20px;
font-size: 14px;
line-height: 1.5;
}
.form-control {
border-radius: 4px;
padding: 12px 15px;
margin-bottom: 15px;
border: 1px solid #ddd;
transition: all 0.3s ease;
}
.form-control:focus {
border-color: #41a2aa !important;
}
.logButton {
width: 100%;
padding: 12px;
border-radius: 5px;
font-weight: bold;
font-size: 16px;
margin-top: 10px;
transition: all 0.3s ease;
border: none;
}
.logButton:hover {
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
.logButtonSocial {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
padding: 12px;
border-radius: 5px;
font-weight: bold;
margin-top: 15px;
text-decoration: none;
transition: all 0.3s ease;
}
.logButtonSocial:hover {
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
text-decoration: none;
}
.logButtonSocial img {
margin-right: 10px;
height: 20px;
}
.ou-container {
position: relative;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
min-height: 400px;
}
.ou-line {
position: absolute;
width: 1px;
height: 80%;
background-color: #ddd;
left: 50%;
transform: translateX(-50%);
}
.ou-text {
background-color: white;
padding: 10px;
position: relative;
z-index: 1;
color: #666;
font-weight: bold;
}
/* Desktop layout - both forms visible side by side */
@media screen and (min-width: 1025px) {
#connexionDiv, #inscriptionDiv {
display: block !important;
}
.circleCree {
display: none !important;
}
.ou-container {
display: flex !important;
}
/* Ensure proper column widths */
.col-lg-5 {
flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-lg-1 {
flex: 0 0 8.333333%;
max-width: 8.333333%;
}
}
/* Tablet and mobile - one form at a time */
@media screen and (max-width: 1024px) {
#connexionDiv, #inscriptionDiv {
width: 100% !important;
margin: 0 auto !important;
float: none !important;
}
/* Initially hide the connection form */
#connexionDiv {
display: none;
}
/* Make the inscription form visible */
#inscriptionDiv {
display: block;
}
/* Hide the OR separator */
.ou-container {
display: none !important;
}
/* Make the toggle buttons visible */
.circleCree {
display: block !important;
width: 100% !important;
margin: 15px auto !important;
padding: 10px !important;
background-color: #41a2aa !important;
color: white !important;
border-radius: 5px !important;
border: none !important;
cursor: pointer !important;
text-align: center !important;
font-weight: bold !important;
}
/* Full width columns on mobile */
.col-md-5, .col-sm-5 {
width: 100% !important;
max-width: 100% !important;
flex: 0 0 100% !important;
}
/* Hide the middle column with the separator */
.col-md-1.col-sm-1.col-lg-1.col-xs-1 {
display: none !important;
}
}
/* Forgot password link styling */
.description a {
color: #f09e7a;
text-decoration: none;
font-weight: bold;
}
.description a:hover {
text-decoration: underline;
}
/* Button container styling */
.button-container {
margin-top: 15px;
margin-bottom: 15px;
}
/* Social login buttons styling */
.mobilesocial {
margin-top: 10px;
}
</style>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
yield from [];
}
// line 377
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_Content(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "Content"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "Content"));
// line 378
yield "
<!-- Bouton pour remonter en haut de la page -->
<button id=\"scrollTopBtn\" class=\"scroll-top-btn\" title=\"Retour en haut\">
<i class=\"bi bi-arrow-up\"></i>
</button>
<!-- Loader pour l'inscription -->
<div id=\"registerLoader\" class=\"register-loader\">
<div class=\"loader-content\">
<div class=\"spinner-border text-primary\" role=\"status\">
<span class=\"sr-only\">Chargement...</span>
</div>
<p class=\"loader-message\">Création de votre compte en cours...</p>
<p class=\"loader-submessage\">Nous préparons votre espace parent 5sur5sejour, merci de patienter.</p>
</div>
</div>
<!-- Modal de confirmation -->
<div class=\"modal fade\" id=\"exampleModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\" style=\"display: none;\">
<div class=\"modal-dialog modal-dialog-centered\" role=\"document\">
<div class=\"modal-content\" style=\"border-radius: 10px;\">
<div class=\"modal-header border-0\">
<button onclick=\"location.reload();\" type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Fermer\" style=\"margin-left: auto;\">
<img src=\"";
// line 401
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("images/Groupe_526.svg"), "html", null, true);
yield "\" alt=\"Fermer\">
</button>
</div>
<div class=\"modal-body text-center\">
<!-- Logo -->
<img class=\"imageLogo2\" src=\"";
// line 406
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("Accueil/imagesAccueil/logoHeader.svg"), "html", null, true);
yield "\" alt=\"Logo 5sur5séjour\" style=\"max-height: 60px; margin-bottom: 20px;\">
<!-- Titre -->
<h4 class=\"modal-title font-weight-bold mb-3\" id=\"modalInscriptionLabel\">🎉 Bienvenue sur 5sur5séjour !</h4>
<!-- Texte -->
<p style=\"font-size: 16px; line-height: 1.5; margin-bottom: 15px;\">
Votre compte parent est presque prêt ! Encore une étape pour accéder à l'espace du séjour de votre enfant.
</p>
<p style=\"font-size: 15px; line-height: 1.5; margin-bottom: 15px;\">
📩 Un e-mail vous a été envoyé pour <strong>activer votre compte parent</strong> en toute sécurité.
</p>
<!-- Bouton -->
<div class=\"mt-4\">
<button onclick=\"location.reload();\" class=\"btn btn-primary\" style=\"background-color: #41a2aa; border: none; padding: 12px 30px; font-weight: bold; border-radius: 8px; font-size: 16px;\">
✅ Compris, je vais consulter mes e-mails
</button>
</div>
</div>
</div>
</div>
</div>
<div class=\"splide no-padding no-margin\" id=\"imageSlider\" style=\"background:white\">
<div class=\"splide__track\">
<ul class=\"splide__list\">
<!-- Slide 1 -->
<li class=\"splide__slide\">
<div class=\"slider-content\">
<div class=\"namePRD\" style=\"display: block;\">
<h4 class=\"titleProdbienvenu titleProdbienvenu1\" style=\"color: #41a2aa\">Offrez des souvenirs inoubliables à votre enfant </h4>
<h4 class=\"titleProdbienvenu titleProdbienvenu2\" style=\"color:#F09E7A\">avec des cadeaux personnalisés en toute simplicité !</h4>
</div>
<img src=\"";
// line 442
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/3.png"), "html", null, true);
yield "\" class=\"imgslider\" alt=\"Image 2\" />
</div>
</li>
<!-- Slide 2 -->
<li class=\"splide__slide\">
<div class=\"slider-content\">
<div class=\"namePRD\" style=\"display: block;\">
<h4 class=\"titleProdbienvenu titleProdbienvenu1\" style=\"color:#F09E7A\">Restez connecté au séjour de votre enfant 24h/24 </h4>
<h4 class=\"titleProdbienvenu titleProdbienvenu2\" style=\"color:#41a2aa\">grâce à des photos partagées en toute sécurité !</h4>
</div>
<img src=\"";
// line 452
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/2.png"), "html", null, true);
yield "\" class=\"imgslider\" alt=\"Image 1\" />
</div>
</li>
<!-- Slide 3 -->
<li class=\"splide__slide\">
<div class=\"slider-content\">
<div class=\"namePRD\" style=\"display: block;\">
<h4 class=\"titleProdbienvenu titleProdbienvenu1\" style=\"color: #41a2aa\">Accéder à une boite vocale en illimitée</h4>
<h4 class=\"titleProdbienvenu titleProdbienvenu2\" style=\"color:#F09E7A\">Pour écouter les messages laissés par les enfants et les accompagnateurs</h4>
</div>
<img src=\"";
// line 462
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/1.png"), "html", null, true);
yield "\" class=\"imgslider\" alt=\"Image 2\" />
</div>
</li>
</ul>
</div>
</div>
<div class='row no-margin' style=\"padding-top:4%\">
<div class=\"col-lg-1 col-md-1 col-sm-1 col-xs-1 no-padding SeparateurLeftAccom\"></div>
<div class=\"col-md-10 col-sm-10 col-lg-10 col-xs-12 \" >
<!-- Bouton caché qui déclenche le modal de confirmation -->
<button type=\"button\" id=\"showOkInscription\" class=\"d-none\" data-toggle=\"modal\" data-target=\"#exampleModal\">
En savoir plus
</button>
<div class=\"row no-margin\" style='margin-right: auto;margin-top:15px' id=\"formSection\">
<!-- Inscription Form -->
<div class=\"col-md-5 col-sm-12 col-lg-5 Inscription\" id='inscriptionDiv'>
<form class=\"form-section\" id=\"create\" onsubmit=\"return false;\">
<div class=\"soutitle\"> Créer un compte </div>
<div class=\"description2\" style=\"padding-top:0px\"> Vous vous connectez pour la 1ère fois et n'avez pas
<br> de compte Parent(s) « 5 sur 5 séjour » </div>
<button type=\"button\" align=\"center\" class=\"circleCree\" onclick=\"AffichDivConnexion();\">Vous avez déjà un compte Parent(s) ? </button>
<div class=\"form-group\">
<input type=\"text\" class=\"form-control\" id=\"nomparent\" placeholder=\"NOM * \" >
<input type=\"text\" class=\"form-control\" id=\"prenomparent\" placeholder=\"PRENOM *\">
<input type=\"text\" autocomplete=\"off\" class=\"form-control\" id=\"mail\" placeholder=\"ADRESSE MAIL\" required data-toggle=\"tooltip\" data-placement=\"right\" title=\"\">
<div class=\"position-relative\">
<input type=\"password\" autocomplete=\"off\" name=\"password\" id=\"Passworduser\" value=\"\" class=\"form-control\" placeholder=\"MOT DE PASSE * \">
<i class=\"bi bi-eye field-icon toggle-password\" toggle=\"#Passworduser\"></i>
</div>
<div class=\"position-relative\">
<input type=\"password\" autocomplete=\"off\" name=\"password\" id=\"Passworduser2\" class=\"form-control\" placeholder=\"CONFIRMER VOTRE MOT DE PASSE\">
<i class=\"bi bi-eye field-icon toggle-password\" toggle=\"#Passworduser2\"></i>
</div>
<p style=\"display: none; color:red; font-weight: bold; margin-top: 10px;\" id=\"eroor\">Cet email est déjà utilisé. <a href=\"";
// line 502
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("forgotPassparent");
yield "\" style=\"color:#f09e7a; text-decoration: underline;\">Mot de passe oublié ?</a></p>
<input type=\"text\" class=\"form-control\" id=\"num\" name=\"numero de téléphone\" placeholder=\"NUMERO DE TELEPHONE PORTABLE * \">
<div class=\"row no-margin \">
<div class=\"souTITRE\">Souhaitez-vous être averti lorsque l'organisateur dépose des images ou des messages du séjour ?</div>
</div>
<br>
<div class=\"row no-margin\">
<div class=\"box-1\" id=\"smsToggle\">
<input type='checkbox' name=\"sms\" id=\"smsInput\" />
<span class=\"toogle\"> </span>
</div>
<span class=\"sms\"> Par SMS </span>
<div class=\"box-1\">
<input type='checkbox' name=\"mail\" id=\"mailInput\" />
<span class=\"toogle\" > </span>
</div>
<span class=\"mail\"> Par Mail </span>
</div>
</div>
<div class=\"notification\" id=\"notification\" style=\"display: none;\">L'adresse e-mail est incorrecte.</div>
<div class=\"button-container\">
<button type=\"button\" onclick=\"cp();\" class=\"logButton\" style=\"color:#fff;border: 1px solid #f09e7a; position: relative; background-color: #f09e7a;margin-top:-5%;\" id=\"submitBtn\">
S'inscrire
</button></div>
<div class=\"button-container mobilesocial\">
<a href=\"";
// line 532
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("connect_google_start");
yield "\" style=\"color:#fff;background-color:#4F86EC;\" class=\"logButtonSocial\" onclick=\"_gaq.push(['_trackEvent', 'btn-social', 'click', 'btn-google']);\">
<img src=\"";
// line 533
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/icons-google.png"), "html", null, true);
yield "\" >Continuer avec Google
</a>
</div>
<div class=\"mobilesocial\">
<a href=\"";
// line 538
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("connect_facebook_start");
yield "\" class=\"logButtonSocial\" style=\"color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)\" >
<img src=\"";
// line 539
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/icons-facebook.png"), "html", null, true);
yield "\" > Continuer avec Facebook
</a>
</div>
</form>
</div>
<!-- OR Separator -->
<div class=\"col-md-1 col-sm-1 col-lg-1 col-xs-1\">
<div class=\"ou-container\">
<div class=\"ou-line\"></div>
<div class=\"ou-text\">OU</div>
</div>
</div>
<!-- Connexion Form -->
<div class=\"col-md-5 col-sm-12 col-lg-5 connexion\" id='connexionDiv'>
<div class=\"form-section\">
<div class=\"soutitle\"> Se connecter </div>
<div class=\"description2\" style=\"padding-top:0px\">Vous avez déja un compte Parent(s) « 5 sur 5 séjour » </div>
<button type=\"button\" align=\"center\" class=\"circleCree\" onclick=\"AffichDivInscri();\">Créer un compte ? </button>
<form method=\"post\" action=\"";
// line 560
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app_back_Parent");
yield "\" id=\"login-form\">
";
// line 561
if ((($tmp = (isset($context["error"]) || array_key_exists("error", $context) ? $context["error"] : (function () { throw new RuntimeError('Variable "error" does not exist.', 561, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 562
yield " <div class=\"alert alert-danger\">";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans(CoreExtension::getAttribute($this->env, $this->source, (isset($context["error"]) || array_key_exists("error", $context) ? $context["error"] : (function () { throw new RuntimeError('Variable "error" does not exist.', 562, $this->source); })()), "messageKey", [], "any", false, false, false, 562), CoreExtension::getAttribute($this->env, $this->source, (isset($context["error"]) || array_key_exists("error", $context) ? $context["error"] : (function () { throw new RuntimeError('Variable "error" does not exist.', 562, $this->source); })()), "messageData", [], "any", false, false, false, 562), "security"), "html", null, true);
yield "</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
Swal.fire({
icon: 'error',
title: 'Erreur de connexion',
text: 'Identifiant ou mot de passe incorrect.',
confirmButtonColor: '#41a2aa'
});
});
</script>
";
}
// line 574
yield " <div class=\"form-group\">
<input type=\"text\" name=\"email\" id=\"inputEmail\" value=\"";
// line 575
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["last_username"]) || array_key_exists("last_username", $context) ? $context["last_username"] : (function () { throw new RuntimeError('Variable "last_username" does not exist.', 575, $this->source); })()), "html", null, true);
yield "\" class=\"form-control\" placeholder=\"Mon identifiant * \" required>
<div class=\"position-relative\">
<input type=\"password\" name=\"password\" id=\"inputPassword\" class=\"form-control\" placeholder=\"Mon mot de passe *\" required>
<span toggle=\"#inputPassword\" class=\"bi bi-eye field-icon toggle-password\"></span>
</div>
<input type=\"hidden\" name=\"_csrf_token\" value=\"";
// line 581
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getRuntime('Symfony\Component\Form\FormRenderer')->renderCsrfToken("authenticate"), "html", null, true);
yield "\">
<div class=\"button-container\">
<button type=\"submit\" class=\"logButton\" style=\"color:#fff;background-color:#41a2aa;border-color:rgba(0,0,0,0.2)\" id=\"login-button\">
Se connecter
</button>
</div>
<div class=\"description\"> <a id=\"mdpobli\" href=\"";
// line 590
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("forgotPassparent");
yield "\" style=\"color:#f09e7a ; display: block\">Vous avez oublié votre mot de passe ? </a> </div>
<div class=\"button-container\">
<a href=\"";
// line 593
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("connect_google_start");
yield "\" style=\"color:#fff;background-color:#4F86EC;\" class=\"logButtonSocial\" onclick=\"_gaq.push(['_trackEvent', 'btn-social', 'click', 'btn-google']);\">
<img src=\"";
// line 594
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/icons-google.png"), "html", null, true);
yield "\" >Continuer avec Google
</a>
</div>
<div class=\"button-c\" style=\"display: flex; justify-content: center; align-items: center;\">
<a href=\"";
// line 599
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("connect_facebook_start");
yield "\" class=\"logButtonSocial\" style=\"color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)\" >
<img src=\"";
// line 600
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/icons-facebook.png"), "html", null, true);
yield "\" > Continuer avec Facebook
</a>
</div>
<br>
<br>
</div>
</form>
</div>
</div>
</div>
</div>
<div class=\"col-md-3\" style=\"margin-top: 21%;display:none\">
<a href=\"";
// line 615
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("connect_google_start");
yield "\" style=\"color:#fff;background-color:#4F86EC;border-color:rgba(0,0,0,0.2)\" class=\"btn btn-block btn-social btn-google\" onclick=\"_gaq.push(['_trackEvent', 'btn-social', 'click', 'btn-google']);\">
<span class=\"fa fa-google\"></span> S'inscrire avec Google
</a>
<br>
<br>
<a href=\"";
// line 622
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("connect_facebook_start");
yield "\" class=\"btn btn-block btn-social btn-facebook\" style=\"color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)\" >
<span class=\"fa fa-facebook\"></span> S'inscrire avec Facebook
</a></div>
</div>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
yield from [];
}
// line 629
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_javascript(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "javascript"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "javascript"));
// line 630
yield " ";
yield from $this->yieldParentBlock("javascript", $context, $blocks);
yield "
<script src=\"";
// line 631
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("js/splide.min.js"), "html", null, true);
yield "\"></script>
<script src=\"https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.all.min.js\"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
// S'assurer que le modal est caché au chargement de la page
\$('#exampleModal').modal('hide');
\$('#exampleModal').removeClass('show');
\$('#exampleModal').attr('aria-hidden', 'true');
\$('body').removeClass('modal-open');
\$('.modal-backdrop').remove();
// Basic form validation before submission
const loginForm = document.getElementById('login-form');
if (loginForm) {
loginForm.addEventListener('submit', function(e) {
const email = document.getElementById('inputEmail').value.trim();
const password = document.getElementById('inputPassword').value;
if (!email || !password) {
e.preventDefault();
Swal.fire({
icon: 'warning',
title: 'Champs requis',
text: 'Veuillez remplir tous les champs pour vous connecter.',
confirmButtonColor: '#41a2aa'
});
return false;
}
// If validation passes, form will submit normally to Symfony
});
}
// Gestion du bouton de retour en haut
const scrollTopBtn = document.getElementById('scrollTopBtn');
window.addEventListener('scroll', function() {
if (window.pageYOffset > 300) {
scrollTopBtn.style.display = 'block';
} else {
scrollTopBtn.style.display = 'none';
}
});
scrollTopBtn.addEventListener('click', function() {
window.scrollTo({
top: 0,
behavior: 'smooth'
});
});
// Initialisation du carrousel Splide
if (typeof Splide !== 'undefined') {
var splide = new Splide('#imageSlider', {
type: 'loop',
perPage: 1,
autoplay: true,
interval: 6000,
pauseOnHover: false,
pauseOnFocus: false,
pagination: false,
arrows: false
});
splide.mount();
}
// Auto-scroll vers les formulaires après 5 secondes
setTimeout(function() {
scrollToFormSection();
}, 5000);
// Configuration du modal de confirmation
\$('#exampleModal').modal({
backdrop: 'static',
keyboard: false,
show: false
});
\$('#exampleModal').on('show.bs.modal', function () {
\$(this).css('display', 'flex');
\$(this).css('align-items', 'center');
\$(this).find('.modal-dialog').css({
'display': 'flex',
'align-items': 'center',
'margin': '0 auto',
'max-height': '90vh'
});
});
function scrollToFormSection() {
const formSection = document.getElementById('formSection');
if (formSection) {
const formPosition = formSection.getBoundingClientRect().top + window.scrollY;
const headerOffset = 50;
const scrollPosition = formPosition - headerOffset;
window.scrollTo({
top: scrollPosition,
behavior: 'smooth'
});
}
}
// Handle responsive form display
handleResponsiveFormDisplay();
// Configuration pour le passage automatique au champ suivant
setupAutoNextField();
// Ajouter la validation en temps réel pour tous les champs
setupRealtimeValidation();
});
function cp() {
\$('#registerLoader').css('display', 'flex');
var loaderTimeout = setTimeout(function() {
\$('#registerLoader').css('display', 'none');
\$(\"#showOkInscription\").trigger('click');
}, 3000);
var nomparent = \"\";
var prenomparent = \"\";
var mail = \"\";
var num = \"5555\";
var confirmpassword = \$('#Passworduser2').val();
var parent_register = \"";
// line 757
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("parent_register");
yield "\";
var Passworduser = \"\";
\$testDeCreation = false;
\$testDeCreation2 = false;
\$testDeCreation3 = false;
\$testDeCreation4 = false;
\$testDeCreation5 = false;
if (\$('#nomparent').val() == \"\") {
\$('#nomparent').addClass('is-invalid');
\$('#nomparent').removeClass('is-valid');
\$('#nomparent').css('border', '1px solid red');
\$testDeCreation = false;
} else {
\$('#nomparent').removeClass('is-invalid');
\$('#nomparent').addClass('is-valid');
\$('#nomparent').css('border', '1px solid green');
nomparent = \$('#nomparent').val();
\$testDeCreation = true;
}
if (\$('#prenomparent').val() == \"\") {
\$('#prenomparent').addClass('is-invalid');
\$('#prenomparent').removeClass('is-valid');
\$('#prenomparent').css('border', '1px solid red');
\$testDeCreation1 = false;
} else {
\$('#prenomparent').removeClass('is-invalid');
\$('#prenomparent').addClass('is-valid');
\$('#prenomparent').css('border', '1px solid green');
prenomparent = \$('#prenomparent').val();
\$testDeCreation1 = true;
}
if (\$('#num').val() == \"\") {
\$('#num ').addClass('is-invalid');
\$('#num').removeClass('is-valid');
\$('#num').css('border', '1px solid red');
\$testDeCreation2 = false;
} else {
\$('#num').removeClass('is-invalid');
\$('#num').addClass('is-valid');
\$('#num').css('border', '1px solid green');
num = \$('#num').val();
\$testDeCreation2 = true;
}
if (\$('#mail').val() == \"\") {
\$('#mail').addClass('is-invalid');
\$('#mail').removeClass('is-valid');
\$('#mail').css('border', '1px solid red');
\$testDeCreation3 = false;
} else {
\$('#mail').removeClass('is-invalid');
\$('#mail').addClass('is-valid');
\$('#mail').css('border', '1px solid green');
mail = \$('#mail').val();
\$testDeCreation3 = true;
}
if (\$('#Passworduser').val() == \"\") {
\$('#Passworduser').addClass('is-invalid');
\$('#Passworduser').removeClass('is-valid');
\$('#Passworduser').css('border', '1px solid red');
\$testDeCreation4 = false;
} else {
\$('#Passworduser').removeClass('is-invalid');
\$('#Passworduser').addClass('is-valid');
\$('#Passworduser').css('border', '1px solid green');
Passworduser = \$('#Passworduser').val();
\$testDeCreation4 = true;
}
var sms = 0; var mailnotif = 0;
if (\$(\"#smsInput\").is(':checked')) {
var sms = 1;
}
if (\$(\"#mailInput\").is(':checked')){
var mailnotif = 1;
}
\$_data = {
'nomparent': nomparent,
'prenomparent': prenomparent,
'mailprent': mail,
'numtel': num,
'passwordparent': Passworduser,
'confirmpassword':confirmpassword,
'sms': sms,
'mailnotif': mailnotif
}
if (\$testDeCreation && \$testDeCreation1 && \$testDeCreation2 && \$testDeCreation3 && \$testDeCreation4 ) {
\$.ajax({
type: \"POST\",
url: parent_register,
data: \$_data,
success: function (\$response) {
\$('#registerLoader').css('display', 'none');
clearTimeout(loaderTimeout);
if (\$response == 'eror') {
\$('#mail').css('border-color', 'red');
\$('#eroor').css('display', 'block');
Swal.fire({
icon: 'error',
title: 'Email déjà utilisé',
text: 'Cette adresse email est déjà associée à un compte.',
footer: '<a href=\"";
// line 865
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("forgotPassparent");
yield "\" style=\"color:#f09e7a;\">Mot de passe oublié ?</a>',
showCancelButton: true,
confirmButtonText: 'Se connecter',
cancelButtonText: 'Modifier',
confirmButtonColor: '#41a2aa',
cancelButtonColor: '#f09e7a',
position: 'center'
}).then((result) => {
if (result.isConfirmed) {
AffichDivConnexion();
\$('#inputEmail').val(\$('#mail').val());
\$('#inputPassword').focus();
}
});
}
else if(\$response == 'erorpasswordconfirm') {
\$('#Passworduser2').css('border-color', 'red');
Swal.fire({
icon: 'error',
title: 'Oups..!',
text: 'Les mots de passe ne se correspondent pas.',
footer: '',
position: 'center'
})
}
else {
\$(\"#showOkInscription\").trigger('click');
resetForm();
\$('#exampleModal').on('shown.bs.modal', function () {
\$(this).find('.modal-dialog').css({
'margin-top': function () {
return (\$(window).height() - \$(this).height()) / 2;
}
});
});
var windowWidth = document.documentElement.clientWidth;
if (windowWidth <= 560) {
setTimeout(function(){
location.reload();
},500);
}
}
},
error: function() {
\$('#registerLoader').css('display', 'none');
clearTimeout(loaderTimeout);
Swal.fire({
icon: 'error',
title: 'Erreur de connexion',
text: 'Un problème est survenu lors de l\\'inscription. Veuillez réessayer.',
confirmButtonColor: '#f09e7a',
position: 'center'
});
}
})
} else {
\$('#registerLoader').css('display', 'none');
clearTimeout(loaderTimeout);
}
}
function AffichDivConnexion() {
\$(\"#inscriptionDiv\").css(\"display\", \"none\");
\$(\"#connexionDiv\").css(\"display\", \"block\");
}
function AffichDivInscri() {
\$(\"#inscriptionDiv\").css(\"display\", \"block\");
\$(\"#connexionDiv\").css(\"display\", \"none\");
}
function handleResponsiveFormDisplay() {
var windowWidth = \$(window).width();
if (windowWidth <= 1024) {
if (\$(\"#inscriptionDiv\").is(':visible')) {
\$(\"#connexionDiv\").css(\"display\", \"none\");
} else {
\$(\"#inscriptionDiv\").css(\"display\", \"none\");
\$(\"#connexionDiv\").css(\"display\", \"block\");
}
\$(\".circleCree\").css(\"display\", \"block\");
} else {
\$(\"#connexionDiv\").css(\"display\", \"block\");
\$(\"#inscriptionDiv\").css(\"display\", \"block\");
\$(\".circleCree\").css(\"display\", \"none\");
}
}
\$(window).resize(function() {
handleResponsiveFormDisplay();
});
function setupAutoNextField() {
const formFields = [
'nomparent',
'prenomparent',
'mail',
'Passworduser',
'Passworduser2',
'num'
];
formFields.forEach((field, index) => {
if (index < formFields.length - 1) {
const \$currentField = \$('#' + field);
let typingTimer;
const doneTypingInterval = 1500;
\$currentField.on('input', function() {
clearTimeout(typingTimer);
if (event && event.data === ' ' && isFieldValid(field, \$(this).val().trim())) {
event.preventDefault();
\$('#' + formFields[index + 1]).focus();
return;
}
if (\$(this).val()) {
typingTimer = setTimeout(function() {
if (isFieldValid(field, \$currentField.val().trim())) {
\$('#' + formFields[index + 1]).focus();
}
}, doneTypingInterval);
}
});
\$currentField.on('keydown', function(e) {
clearTimeout(typingTimer);
if (e.key === ' ' && isFieldValid(field, \$(this).val().trim())) {
e.preventDefault();
\$('#' + formFields[index + 1]).focus();
return;
}
if (e.key === 'Tab' && !e.shiftKey) {
return true;
}
if (e.key === 'Enter') {
e.preventDefault();
\$('#' + formFields[index + 1]).focus();
}
});
\$currentField.on('blur', function() {
clearTimeout(typingTimer);
});
}
});
\$('#' + formFields[formFields.length - 1]).on('keydown', function(e) {
if (e.key === 'Enter') {
e.preventDefault();
cp();
}
});
}
function isFieldValid(fieldId, value) {
switch(fieldId) {
case 'mail':
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\$/;
return emailRegex.test(value);
case 'Passworduser':
return value.length >= 6;
case 'Passworduser2':
return value === \$('#Passworduser').val() && value.length >= 6;
case 'num':
const phoneRegex = /^[0-9]{8,}\$/;
return phoneRegex.test(value.replace(/\\s+/g, ''));
case 'nomparent':
case 'prenomparent':
const nameRegex = /^[A-Za-zÀ-ÖØ-öø-ÿ\\s'-]{2,}\$/;
return nameRegex.test(value);
default:
return value.length >= 2;
}
}
function hideshow() {
document.getElementById(\"btnn\").disabled = true;
\$(\"#btnn\").css(\"background-color\", \"#ecf0f1\");
\$(\"#mdpobli\").css(\"display\", \"none\");
\$(\"#mdpoblier\").css(\"display\", \"block\");
}
</script>
<script>
\$(\".toggle-password\").click(function() {
\$(this).toggleClass(\"bi-eye bi-eye-slash\");
var input = \$(\$(this).attr(\"toggle\"));
if (input.attr(\"type\") == \"password\") {
input.attr(\"type\", \"text\");
} else {
input.attr(\"type\", \"password\");
}
});
\$(document).ready(function(){
\$('[data-toggle=\"tooltip\"]').tooltip({
trigger: 'manual',
html: true,
template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"arrow\"></div><div class=\"tooltip-inner\"></div></div>'
});
function validateEmail(email) {
const re = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\$/;
return re.test(String(email).toLowerCase());
}
\$('#mail').on('input', function() {
var emailInput = \$(this);
if (validateEmail(emailInput.val())) {
emailInput.removeClass('is-invalid');
emailInput.addClass('is-valid');
emailInput.tooltip('dispose');
\$('#notification').hide();
\$('#submitBtn').prop('disabled', false);
} else {
emailInput.removeClass('is-valid');
emailInput.addClass('is-invalid');
if (emailInput.val().length > 3) {
emailInput.attr('data-original-title', 'Votre adresse mail est incorrecte. Exemple: nom@domaine.com').tooltip('show');
if (emailInput.val().length > 0) {
\$('#notification').show();
}
} else {
\$('#notification').hide();
}
\$('#submitBtn').prop('disabled', false);
}
});
});
</script>
<script>
function setupRealtimeValidation() {
const formFields = [
'nomparent',
'prenomparent',
'mail',
'Passworduser',
'Passworduser2',
'num'
];
formFields.forEach(field => {
\$('#' + field).on('input', function() {
const value = \$(this).val();
if (value.length === 0) {
\$(this).removeClass('is-valid is-invalid');
\$(this).css('border', '1px solid #ced4da');
return;
}
if (isFieldValid(field, value)) {
\$(this).removeClass('is-invalid').addClass('is-valid');
\$(this).css('border', '1px solid #28a745');
} else {
\$(this).removeClass('is-valid').addClass('is-invalid');
\$(this).css('border', '1px solid #dc3545');
}
});
});
}
function resetForm() {
\$('#nomparent').css('border','1px solid #41a2aa');
\$('#nomparent').removeClass('is-valid');
\$('#nomparent').removeClass('is-invalid');
\$('#nomparent').val('');
\$('#prenomparent').css('border','1px solid #41a2aa');
\$('#prenomparent').removeClass('is-valid');
\$('#prenomparent').removeClass('is-invalid');
\$('#prenomparent').val('');
\$('#mail').css('border','1px solid #41a2aa');
\$('#mail').removeClass('is-valid');
\$('#mail').removeClass('is-invalid');
\$('#mail').val('');
\$('#eroor').css('display','none');
\$('#num').css('border','1px solid #41a2aa');
\$('#num').removeClass('is-valid');
\$('#num').removeClass('is-invalid');
\$('#num').val('');
\$('#Passworduser').css('border','1px solid #41a2aa');
\$('#Passworduser').removeClass('is-valid');
\$('#Passworduser').removeClass('is-invalid');
\$('#Passworduser').val('');
\$('#Passworduser2').css('border','1px solid #41a2aa');
\$('#Passworduser2').removeClass('is-valid');
\$('#Passworduser2').removeClass('is-invalid');
\$('#Passworduser2').val('');
\$(\"#smsInput\").prop(\"checked\",false);
\$(\"#mailInput\").prop(\"checked\",false);
}
</script>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "Parent/LoginParent.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 1071 => 865, 960 => 757, 831 => 631, 826 => 630, 813 => 629, 797 => 622, 787 => 615, 769 => 600, 765 => 599, 757 => 594, 753 => 593, 747 => 590, 735 => 581, 726 => 575, 723 => 574, 707 => 562, 705 => 561, 701 => 560, 677 => 539, 673 => 538, 665 => 533, 661 => 532, 628 => 502, 585 => 462, 572 => 452, 559 => 442, 520 => 406, 512 => 401, 487 => 378, 474 => 377, 99 => 11, 95 => 10, 88 => 6, 84 => 5, 78 => 3, 65 => 2, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("{% extends '/Accueil/layoutAccueilParents.html.twig' %}
{% block LinksCss %}
{{ parent() }}
<link rel=\"stylesheet\" href=\"{{'/css/Parent/css/login.css'}}\" >
<link rel=\"stylesheet\" href=\"{{'/css/Parent/css/premiercnx.css'}}\">
<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css\">
<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\">
<link href=\"{{ asset ('css/bootstrap-social.css')}}\" type=\"text/css\" rel=\"stylesheet\" >
<link rel=\"stylesheet\" href=\"{{ asset('css/splide.min.css') }}\">
<style>
.titleProdbienvenu {
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
}
/* Style pour le bouton de retour en haut */
.scroll-top-btn {
position: fixed;
bottom: 20px;
right: 20px;
width: 40px;
height: 40px;
border-radius: 50%;
background-color:#f09e7a;
color: white;
border: none;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
z-index: 1000;
display: none;
cursor: pointer;
transition: all 0.3s ease;
}
.scroll-top-btn:hover {
background-color: #e8865e;
transform: translateY(-3px);
}
/* Styles pour le loader d'inscription */
.register-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.9);
z-index: 9999;
display: none;
justify-content: center;
align-items: center;
}
.loader-content {
text-align: center;
background-color: white;
padding: 30px;
border-radius: 10px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
max-width: 350px;
width: 90%;
}
.loader-message {
margin-top: 20px;
font-size: 18px;
font-weight: bold;
color: #41a2aa;
}
.loader-submessage {
margin-top: 10px;
font-size: 14px;
color: #666;
}
.spinner-border {
width: 3rem;
height: 3rem;
color: #f09e7a !important;
}
/* Styles pour le modal de confirmation */
.modal {
display: flex;
align-items: center;
justify-content: center;
}
.modal-dialog {
margin: 0 auto;
max-width: 500px;
width: 90%;
}
.modal-content {
border-radius: 10px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
margin: 0 auto;
}
.modal-body {
padding: 30px 20px;
}
.modal-footer {
justify-content: center;
padding: 15px;
}
.circleModal {
background-color: #f09e7a;
color: white;
border: none;
border-radius: 5px;
padding: 10px 30px;
font-weight: bold;
transition: all 0.3s ease;
}
.circleModal:hover {
background-color: #e8865e;
transform: translateY(-2px);
}
/* Animation pour le passage au champ suivant */
.field-complete {
transition: all 0.3s ease;
border-color: #41a2aa !important;
box-shadow: 0 0 5px rgba(65, 162, 170, 0.5) !important;
transform: translateY(-2px);
}
.form-control:focus {
border-color: #f09e7a !important;
box-shadow: 0 0 6px rgba(240, 158, 122, 0.5) !important;
transition: all 0.3s ease;
}
/* Position for password toggle icons */
.position-relative {
position: relative;
display: block;
width: 100%;
}
.field-icon {
position: absolute;
right: 10px;
top: 50%;
transform: translateY(-50%);
z-index: 10;
cursor: pointer;
color: #41a2aa;
font-size: 14px;
pointer-events: auto;
}
.field-icon:hover {
color: #f09e7a;
}
/* Adjust input padding to make room for the icon */
input[type=\"password\"] {
padding-right: 40px;
}
/* Updated styles for login forms */
.form-section {
background-color: #fff;
padding: 25px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
margin-bottom: 20px;
height: 100%;
}
.soutitle {
color: #333;
font-size: 24px;
font-weight: bold;
margin-bottom: 15px;
text-align: center;
}
.description2 {
color: #666;
text-align: center;
margin-bottom: 20px;
font-size: 14px;
line-height: 1.5;
}
.form-control {
border-radius: 4px;
padding: 12px 15px;
margin-bottom: 15px;
border: 1px solid #ddd;
transition: all 0.3s ease;
}
.form-control:focus {
border-color: #41a2aa !important;
}
.logButton {
width: 100%;
padding: 12px;
border-radius: 5px;
font-weight: bold;
font-size: 16px;
margin-top: 10px;
transition: all 0.3s ease;
border: none;
}
.logButton:hover {
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
.logButtonSocial {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
padding: 12px;
border-radius: 5px;
font-weight: bold;
margin-top: 15px;
text-decoration: none;
transition: all 0.3s ease;
}
.logButtonSocial:hover {
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
text-decoration: none;
}
.logButtonSocial img {
margin-right: 10px;
height: 20px;
}
.ou-container {
position: relative;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
min-height: 400px;
}
.ou-line {
position: absolute;
width: 1px;
height: 80%;
background-color: #ddd;
left: 50%;
transform: translateX(-50%);
}
.ou-text {
background-color: white;
padding: 10px;
position: relative;
z-index: 1;
color: #666;
font-weight: bold;
}
/* Desktop layout - both forms visible side by side */
@media screen and (min-width: 1025px) {
#connexionDiv, #inscriptionDiv {
display: block !important;
}
.circleCree {
display: none !important;
}
.ou-container {
display: flex !important;
}
/* Ensure proper column widths */
.col-lg-5 {
flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-lg-1 {
flex: 0 0 8.333333%;
max-width: 8.333333%;
}
}
/* Tablet and mobile - one form at a time */
@media screen and (max-width: 1024px) {
#connexionDiv, #inscriptionDiv {
width: 100% !important;
margin: 0 auto !important;
float: none !important;
}
/* Initially hide the connection form */
#connexionDiv {
display: none;
}
/* Make the inscription form visible */
#inscriptionDiv {
display: block;
}
/* Hide the OR separator */
.ou-container {
display: none !important;
}
/* Make the toggle buttons visible */
.circleCree {
display: block !important;
width: 100% !important;
margin: 15px auto !important;
padding: 10px !important;
background-color: #41a2aa !important;
color: white !important;
border-radius: 5px !important;
border: none !important;
cursor: pointer !important;
text-align: center !important;
font-weight: bold !important;
}
/* Full width columns on mobile */
.col-md-5, .col-sm-5 {
width: 100% !important;
max-width: 100% !important;
flex: 0 0 100% !important;
}
/* Hide the middle column with the separator */
.col-md-1.col-sm-1.col-lg-1.col-xs-1 {
display: none !important;
}
}
/* Forgot password link styling */
.description a {
color: #f09e7a;
text-decoration: none;
font-weight: bold;
}
.description a:hover {
text-decoration: underline;
}
/* Button container styling */
.button-container {
margin-top: 15px;
margin-bottom: 15px;
}
/* Social login buttons styling */
.mobilesocial {
margin-top: 10px;
}
</style>
{% endblock %}
{% block Content %}
<!-- Bouton pour remonter en haut de la page -->
<button id=\"scrollTopBtn\" class=\"scroll-top-btn\" title=\"Retour en haut\">
<i class=\"bi bi-arrow-up\"></i>
</button>
<!-- Loader pour l'inscription -->
<div id=\"registerLoader\" class=\"register-loader\">
<div class=\"loader-content\">
<div class=\"spinner-border text-primary\" role=\"status\">
<span class=\"sr-only\">Chargement...</span>
</div>
<p class=\"loader-message\">Création de votre compte en cours...</p>
<p class=\"loader-submessage\">Nous préparons votre espace parent 5sur5sejour, merci de patienter.</p>
</div>
</div>
<!-- Modal de confirmation -->
<div class=\"modal fade\" id=\"exampleModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\" style=\"display: none;\">
<div class=\"modal-dialog modal-dialog-centered\" role=\"document\">
<div class=\"modal-content\" style=\"border-radius: 10px;\">
<div class=\"modal-header border-0\">
<button onclick=\"location.reload();\" type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Fermer\" style=\"margin-left: auto;\">
<img src=\"{{ asset('images/Groupe_526.svg') }}\" alt=\"Fermer\">
</button>
</div>
<div class=\"modal-body text-center\">
<!-- Logo -->
<img class=\"imageLogo2\" src=\"{{ asset('Accueil/imagesAccueil/logoHeader.svg') }}\" alt=\"Logo 5sur5séjour\" style=\"max-height: 60px; margin-bottom: 20px;\">
<!-- Titre -->
<h4 class=\"modal-title font-weight-bold mb-3\" id=\"modalInscriptionLabel\">🎉 Bienvenue sur 5sur5séjour !</h4>
<!-- Texte -->
<p style=\"font-size: 16px; line-height: 1.5; margin-bottom: 15px;\">
Votre compte parent est presque prêt ! Encore une étape pour accéder à l'espace du séjour de votre enfant.
</p>
<p style=\"font-size: 15px; line-height: 1.5; margin-bottom: 15px;\">
📩 Un e-mail vous a été envoyé pour <strong>activer votre compte parent</strong> en toute sécurité.
</p>
<!-- Bouton -->
<div class=\"mt-4\">
<button onclick=\"location.reload();\" class=\"btn btn-primary\" style=\"background-color: #41a2aa; border: none; padding: 12px 30px; font-weight: bold; border-radius: 8px; font-size: 16px;\">
✅ Compris, je vais consulter mes e-mails
</button>
</div>
</div>
</div>
</div>
</div>
<div class=\"splide no-padding no-margin\" id=\"imageSlider\" style=\"background:white\">
<div class=\"splide__track\">
<ul class=\"splide__list\">
<!-- Slide 1 -->
<li class=\"splide__slide\">
<div class=\"slider-content\">
<div class=\"namePRD\" style=\"display: block;\">
<h4 class=\"titleProdbienvenu titleProdbienvenu1\" style=\"color: #41a2aa\">Offrez des souvenirs inoubliables à votre enfant </h4>
<h4 class=\"titleProdbienvenu titleProdbienvenu2\" style=\"color:#F09E7A\">avec des cadeaux personnalisés en toute simplicité !</h4>
</div>
<img src=\"{{ asset('/images/3.png') }}\" class=\"imgslider\" alt=\"Image 2\" />
</div>
</li>
<!-- Slide 2 -->
<li class=\"splide__slide\">
<div class=\"slider-content\">
<div class=\"namePRD\" style=\"display: block;\">
<h4 class=\"titleProdbienvenu titleProdbienvenu1\" style=\"color:#F09E7A\">Restez connecté au séjour de votre enfant 24h/24 </h4>
<h4 class=\"titleProdbienvenu titleProdbienvenu2\" style=\"color:#41a2aa\">grâce à des photos partagées en toute sécurité !</h4>
</div>
<img src=\"{{ asset('/images/2.png') }}\" class=\"imgslider\" alt=\"Image 1\" />
</div>
</li>
<!-- Slide 3 -->
<li class=\"splide__slide\">
<div class=\"slider-content\">
<div class=\"namePRD\" style=\"display: block;\">
<h4 class=\"titleProdbienvenu titleProdbienvenu1\" style=\"color: #41a2aa\">Accéder à une boite vocale en illimitée</h4>
<h4 class=\"titleProdbienvenu titleProdbienvenu2\" style=\"color:#F09E7A\">Pour écouter les messages laissés par les enfants et les accompagnateurs</h4>
</div>
<img src=\"{{ asset('/images/1.png') }}\" class=\"imgslider\" alt=\"Image 2\" />
</div>
</li>
</ul>
</div>
</div>
<div class='row no-margin' style=\"padding-top:4%\">
<div class=\"col-lg-1 col-md-1 col-sm-1 col-xs-1 no-padding SeparateurLeftAccom\"></div>
<div class=\"col-md-10 col-sm-10 col-lg-10 col-xs-12 \" >
<!-- Bouton caché qui déclenche le modal de confirmation -->
<button type=\"button\" id=\"showOkInscription\" class=\"d-none\" data-toggle=\"modal\" data-target=\"#exampleModal\">
En savoir plus
</button>
<div class=\"row no-margin\" style='margin-right: auto;margin-top:15px' id=\"formSection\">
<!-- Inscription Form -->
<div class=\"col-md-5 col-sm-12 col-lg-5 Inscription\" id='inscriptionDiv'>
<form class=\"form-section\" id=\"create\" onsubmit=\"return false;\">
<div class=\"soutitle\"> Créer un compte </div>
<div class=\"description2\" style=\"padding-top:0px\"> Vous vous connectez pour la 1ère fois et n'avez pas
<br> de compte Parent(s) « 5 sur 5 séjour » </div>
<button type=\"button\" align=\"center\" class=\"circleCree\" onclick=\"AffichDivConnexion();\">Vous avez déjà un compte Parent(s) ? </button>
<div class=\"form-group\">
<input type=\"text\" class=\"form-control\" id=\"nomparent\" placeholder=\"NOM * \" >
<input type=\"text\" class=\"form-control\" id=\"prenomparent\" placeholder=\"PRENOM *\">
<input type=\"text\" autocomplete=\"off\" class=\"form-control\" id=\"mail\" placeholder=\"ADRESSE MAIL\" required data-toggle=\"tooltip\" data-placement=\"right\" title=\"\">
<div class=\"position-relative\">
<input type=\"password\" autocomplete=\"off\" name=\"password\" id=\"Passworduser\" value=\"\" class=\"form-control\" placeholder=\"MOT DE PASSE * \">
<i class=\"bi bi-eye field-icon toggle-password\" toggle=\"#Passworduser\"></i>
</div>
<div class=\"position-relative\">
<input type=\"password\" autocomplete=\"off\" name=\"password\" id=\"Passworduser2\" class=\"form-control\" placeholder=\"CONFIRMER VOTRE MOT DE PASSE\">
<i class=\"bi bi-eye field-icon toggle-password\" toggle=\"#Passworduser2\"></i>
</div>
<p style=\"display: none; color:red; font-weight: bold; margin-top: 10px;\" id=\"eroor\">Cet email est déjà utilisé. <a href=\"{{ path(\"forgotPassparent\") }}\" style=\"color:#f09e7a; text-decoration: underline;\">Mot de passe oublié ?</a></p>
<input type=\"text\" class=\"form-control\" id=\"num\" name=\"numero de téléphone\" placeholder=\"NUMERO DE TELEPHONE PORTABLE * \">
<div class=\"row no-margin \">
<div class=\"souTITRE\">Souhaitez-vous être averti lorsque l'organisateur dépose des images ou des messages du séjour ?</div>
</div>
<br>
<div class=\"row no-margin\">
<div class=\"box-1\" id=\"smsToggle\">
<input type='checkbox' name=\"sms\" id=\"smsInput\" />
<span class=\"toogle\"> </span>
</div>
<span class=\"sms\"> Par SMS </span>
<div class=\"box-1\">
<input type='checkbox' name=\"mail\" id=\"mailInput\" />
<span class=\"toogle\" > </span>
</div>
<span class=\"mail\"> Par Mail </span>
</div>
</div>
<div class=\"notification\" id=\"notification\" style=\"display: none;\">L'adresse e-mail est incorrecte.</div>
<div class=\"button-container\">
<button type=\"button\" onclick=\"cp();\" class=\"logButton\" style=\"color:#fff;border: 1px solid #f09e7a; position: relative; background-color: #f09e7a;margin-top:-5%;\" id=\"submitBtn\">
S'inscrire
</button></div>
<div class=\"button-container mobilesocial\">
<a href=\"{{ path('connect_google_start') }}\" style=\"color:#fff;background-color:#4F86EC;\" class=\"logButtonSocial\" onclick=\"_gaq.push(['_trackEvent', 'btn-social', 'click', 'btn-google']);\">
<img src=\"{{ asset('/images/icons-google.png') }}\" >Continuer avec Google
</a>
</div>
<div class=\"mobilesocial\">
<a href=\"{{ path('connect_facebook_start') }}\" class=\"logButtonSocial\" style=\"color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)\" >
<img src=\"{{ asset('/images/icons-facebook.png') }}\" > Continuer avec Facebook
</a>
</div>
</form>
</div>
<!-- OR Separator -->
<div class=\"col-md-1 col-sm-1 col-lg-1 col-xs-1\">
<div class=\"ou-container\">
<div class=\"ou-line\"></div>
<div class=\"ou-text\">OU</div>
</div>
</div>
<!-- Connexion Form -->
<div class=\"col-md-5 col-sm-12 col-lg-5 connexion\" id='connexionDiv'>
<div class=\"form-section\">
<div class=\"soutitle\"> Se connecter </div>
<div class=\"description2\" style=\"padding-top:0px\">Vous avez déja un compte Parent(s) « 5 sur 5 séjour » </div>
<button type=\"button\" align=\"center\" class=\"circleCree\" onclick=\"AffichDivInscri();\">Créer un compte ? </button>
<form method=\"post\" action=\"{{ path('app_back_Parent') }}\" id=\"login-form\">
{% if error %}
<div class=\"alert alert-danger\">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
Swal.fire({
icon: 'error',
title: 'Erreur de connexion',
text: 'Identifiant ou mot de passe incorrect.',
confirmButtonColor: '#41a2aa'
});
});
</script>
{% endif %}
<div class=\"form-group\">
<input type=\"text\" name=\"email\" id=\"inputEmail\" value=\"{{ last_username }}\" class=\"form-control\" placeholder=\"Mon identifiant * \" required>
<div class=\"position-relative\">
<input type=\"password\" name=\"password\" id=\"inputPassword\" class=\"form-control\" placeholder=\"Mon mot de passe *\" required>
<span toggle=\"#inputPassword\" class=\"bi bi-eye field-icon toggle-password\"></span>
</div>
<input type=\"hidden\" name=\"_csrf_token\" value=\"{{ csrf_token('authenticate') }}\">
<div class=\"button-container\">
<button type=\"submit\" class=\"logButton\" style=\"color:#fff;background-color:#41a2aa;border-color:rgba(0,0,0,0.2)\" id=\"login-button\">
Se connecter
</button>
</div>
<div class=\"description\"> <a id=\"mdpobli\" href=\"{{ path(\"forgotPassparent\") }}\" style=\"color:#f09e7a ; display: block\">Vous avez oublié votre mot de passe ? </a> </div>
<div class=\"button-container\">
<a href=\"{{ path('connect_google_start') }}\" style=\"color:#fff;background-color:#4F86EC;\" class=\"logButtonSocial\" onclick=\"_gaq.push(['_trackEvent', 'btn-social', 'click', 'btn-google']);\">
<img src=\"{{ asset('/images/icons-google.png') }}\" >Continuer avec Google
</a>
</div>
<div class=\"button-c\" style=\"display: flex; justify-content: center; align-items: center;\">
<a href=\"{{ path('connect_facebook_start') }}\" class=\"logButtonSocial\" style=\"color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)\" >
<img src=\"{{ asset('/images/icons-facebook.png') }}\" > Continuer avec Facebook
</a>
</div>
<br>
<br>
</div>
</form>
</div>
</div>
</div>
</div>
<div class=\"col-md-3\" style=\"margin-top: 21%;display:none\">
<a href=\"{{ path('connect_google_start') }}\" style=\"color:#fff;background-color:#4F86EC;border-color:rgba(0,0,0,0.2)\" class=\"btn btn-block btn-social btn-google\" onclick=\"_gaq.push(['_trackEvent', 'btn-social', 'click', 'btn-google']);\">
<span class=\"fa fa-google\"></span> S'inscrire avec Google
</a>
<br>
<br>
<a href=\"{{ path('connect_facebook_start') }}\" class=\"btn btn-block btn-social btn-facebook\" style=\"color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)\" >
<span class=\"fa fa-facebook\"></span> S'inscrire avec Facebook
</a></div>
</div>
{% endblock %}
{% block javascript %}
{{ parent() }}
<script src=\"{{ asset('js/splide.min.js') }}\"></script>
<script src=\"https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.all.min.js\"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
// S'assurer que le modal est caché au chargement de la page
\$('#exampleModal').modal('hide');
\$('#exampleModal').removeClass('show');
\$('#exampleModal').attr('aria-hidden', 'true');
\$('body').removeClass('modal-open');
\$('.modal-backdrop').remove();
// Basic form validation before submission
const loginForm = document.getElementById('login-form');
if (loginForm) {
loginForm.addEventListener('submit', function(e) {
const email = document.getElementById('inputEmail').value.trim();
const password = document.getElementById('inputPassword').value;
if (!email || !password) {
e.preventDefault();
Swal.fire({
icon: 'warning',
title: 'Champs requis',
text: 'Veuillez remplir tous les champs pour vous connecter.',
confirmButtonColor: '#41a2aa'
});
return false;
}
// If validation passes, form will submit normally to Symfony
});
}
// Gestion du bouton de retour en haut
const scrollTopBtn = document.getElementById('scrollTopBtn');
window.addEventListener('scroll', function() {
if (window.pageYOffset > 300) {
scrollTopBtn.style.display = 'block';
} else {
scrollTopBtn.style.display = 'none';
}
});
scrollTopBtn.addEventListener('click', function() {
window.scrollTo({
top: 0,
behavior: 'smooth'
});
});
// Initialisation du carrousel Splide
if (typeof Splide !== 'undefined') {
var splide = new Splide('#imageSlider', {
type: 'loop',
perPage: 1,
autoplay: true,
interval: 6000,
pauseOnHover: false,
pauseOnFocus: false,
pagination: false,
arrows: false
});
splide.mount();
}
// Auto-scroll vers les formulaires après 5 secondes
setTimeout(function() {
scrollToFormSection();
}, 5000);
// Configuration du modal de confirmation
\$('#exampleModal').modal({
backdrop: 'static',
keyboard: false,
show: false
});
\$('#exampleModal').on('show.bs.modal', function () {
\$(this).css('display', 'flex');
\$(this).css('align-items', 'center');
\$(this).find('.modal-dialog').css({
'display': 'flex',
'align-items': 'center',
'margin': '0 auto',
'max-height': '90vh'
});
});
function scrollToFormSection() {
const formSection = document.getElementById('formSection');
if (formSection) {
const formPosition = formSection.getBoundingClientRect().top + window.scrollY;
const headerOffset = 50;
const scrollPosition = formPosition - headerOffset;
window.scrollTo({
top: scrollPosition,
behavior: 'smooth'
});
}
}
// Handle responsive form display
handleResponsiveFormDisplay();
// Configuration pour le passage automatique au champ suivant
setupAutoNextField();
// Ajouter la validation en temps réel pour tous les champs
setupRealtimeValidation();
});
function cp() {
\$('#registerLoader').css('display', 'flex');
var loaderTimeout = setTimeout(function() {
\$('#registerLoader').css('display', 'none');
\$(\"#showOkInscription\").trigger('click');
}, 3000);
var nomparent = \"\";
var prenomparent = \"\";
var mail = \"\";
var num = \"5555\";
var confirmpassword = \$('#Passworduser2').val();
var parent_register = \"{{ path('parent_register') }}\";
var Passworduser = \"\";
\$testDeCreation = false;
\$testDeCreation2 = false;
\$testDeCreation3 = false;
\$testDeCreation4 = false;
\$testDeCreation5 = false;
if (\$('#nomparent').val() == \"\") {
\$('#nomparent').addClass('is-invalid');
\$('#nomparent').removeClass('is-valid');
\$('#nomparent').css('border', '1px solid red');
\$testDeCreation = false;
} else {
\$('#nomparent').removeClass('is-invalid');
\$('#nomparent').addClass('is-valid');
\$('#nomparent').css('border', '1px solid green');
nomparent = \$('#nomparent').val();
\$testDeCreation = true;
}
if (\$('#prenomparent').val() == \"\") {
\$('#prenomparent').addClass('is-invalid');
\$('#prenomparent').removeClass('is-valid');
\$('#prenomparent').css('border', '1px solid red');
\$testDeCreation1 = false;
} else {
\$('#prenomparent').removeClass('is-invalid');
\$('#prenomparent').addClass('is-valid');
\$('#prenomparent').css('border', '1px solid green');
prenomparent = \$('#prenomparent').val();
\$testDeCreation1 = true;
}
if (\$('#num').val() == \"\") {
\$('#num ').addClass('is-invalid');
\$('#num').removeClass('is-valid');
\$('#num').css('border', '1px solid red');
\$testDeCreation2 = false;
} else {
\$('#num').removeClass('is-invalid');
\$('#num').addClass('is-valid');
\$('#num').css('border', '1px solid green');
num = \$('#num').val();
\$testDeCreation2 = true;
}
if (\$('#mail').val() == \"\") {
\$('#mail').addClass('is-invalid');
\$('#mail').removeClass('is-valid');
\$('#mail').css('border', '1px solid red');
\$testDeCreation3 = false;
} else {
\$('#mail').removeClass('is-invalid');
\$('#mail').addClass('is-valid');
\$('#mail').css('border', '1px solid green');
mail = \$('#mail').val();
\$testDeCreation3 = true;
}
if (\$('#Passworduser').val() == \"\") {
\$('#Passworduser').addClass('is-invalid');
\$('#Passworduser').removeClass('is-valid');
\$('#Passworduser').css('border', '1px solid red');
\$testDeCreation4 = false;
} else {
\$('#Passworduser').removeClass('is-invalid');
\$('#Passworduser').addClass('is-valid');
\$('#Passworduser').css('border', '1px solid green');
Passworduser = \$('#Passworduser').val();
\$testDeCreation4 = true;
}
var sms = 0; var mailnotif = 0;
if (\$(\"#smsInput\").is(':checked')) {
var sms = 1;
}
if (\$(\"#mailInput\").is(':checked')){
var mailnotif = 1;
}
\$_data = {
'nomparent': nomparent,
'prenomparent': prenomparent,
'mailprent': mail,
'numtel': num,
'passwordparent': Passworduser,
'confirmpassword':confirmpassword,
'sms': sms,
'mailnotif': mailnotif
}
if (\$testDeCreation && \$testDeCreation1 && \$testDeCreation2 && \$testDeCreation3 && \$testDeCreation4 ) {
\$.ajax({
type: \"POST\",
url: parent_register,
data: \$_data,
success: function (\$response) {
\$('#registerLoader').css('display', 'none');
clearTimeout(loaderTimeout);
if (\$response == 'eror') {
\$('#mail').css('border-color', 'red');
\$('#eroor').css('display', 'block');
Swal.fire({
icon: 'error',
title: 'Email déjà utilisé',
text: 'Cette adresse email est déjà associée à un compte.',
footer: '<a href=\"{{ path(\"forgotPassparent\") }}\" style=\"color:#f09e7a;\">Mot de passe oublié ?</a>',
showCancelButton: true,
confirmButtonText: 'Se connecter',
cancelButtonText: 'Modifier',
confirmButtonColor: '#41a2aa',
cancelButtonColor: '#f09e7a',
position: 'center'
}).then((result) => {
if (result.isConfirmed) {
AffichDivConnexion();
\$('#inputEmail').val(\$('#mail').val());
\$('#inputPassword').focus();
}
});
}
else if(\$response == 'erorpasswordconfirm') {
\$('#Passworduser2').css('border-color', 'red');
Swal.fire({
icon: 'error',
title: 'Oups..!',
text: 'Les mots de passe ne se correspondent pas.',
footer: '',
position: 'center'
})
}
else {
\$(\"#showOkInscription\").trigger('click');
resetForm();
\$('#exampleModal').on('shown.bs.modal', function () {
\$(this).find('.modal-dialog').css({
'margin-top': function () {
return (\$(window).height() - \$(this).height()) / 2;
}
});
});
var windowWidth = document.documentElement.clientWidth;
if (windowWidth <= 560) {
setTimeout(function(){
location.reload();
},500);
}
}
},
error: function() {
\$('#registerLoader').css('display', 'none');
clearTimeout(loaderTimeout);
Swal.fire({
icon: 'error',
title: 'Erreur de connexion',
text: 'Un problème est survenu lors de l\\'inscription. Veuillez réessayer.',
confirmButtonColor: '#f09e7a',
position: 'center'
});
}
})
} else {
\$('#registerLoader').css('display', 'none');
clearTimeout(loaderTimeout);
}
}
function AffichDivConnexion() {
\$(\"#inscriptionDiv\").css(\"display\", \"none\");
\$(\"#connexionDiv\").css(\"display\", \"block\");
}
function AffichDivInscri() {
\$(\"#inscriptionDiv\").css(\"display\", \"block\");
\$(\"#connexionDiv\").css(\"display\", \"none\");
}
function handleResponsiveFormDisplay() {
var windowWidth = \$(window).width();
if (windowWidth <= 1024) {
if (\$(\"#inscriptionDiv\").is(':visible')) {
\$(\"#connexionDiv\").css(\"display\", \"none\");
} else {
\$(\"#inscriptionDiv\").css(\"display\", \"none\");
\$(\"#connexionDiv\").css(\"display\", \"block\");
}
\$(\".circleCree\").css(\"display\", \"block\");
} else {
\$(\"#connexionDiv\").css(\"display\", \"block\");
\$(\"#inscriptionDiv\").css(\"display\", \"block\");
\$(\".circleCree\").css(\"display\", \"none\");
}
}
\$(window).resize(function() {
handleResponsiveFormDisplay();
});
function setupAutoNextField() {
const formFields = [
'nomparent',
'prenomparent',
'mail',
'Passworduser',
'Passworduser2',
'num'
];
formFields.forEach((field, index) => {
if (index < formFields.length - 1) {
const \$currentField = \$('#' + field);
let typingTimer;
const doneTypingInterval = 1500;
\$currentField.on('input', function() {
clearTimeout(typingTimer);
if (event && event.data === ' ' && isFieldValid(field, \$(this).val().trim())) {
event.preventDefault();
\$('#' + formFields[index + 1]).focus();
return;
}
if (\$(this).val()) {
typingTimer = setTimeout(function() {
if (isFieldValid(field, \$currentField.val().trim())) {
\$('#' + formFields[index + 1]).focus();
}
}, doneTypingInterval);
}
});
\$currentField.on('keydown', function(e) {
clearTimeout(typingTimer);
if (e.key === ' ' && isFieldValid(field, \$(this).val().trim())) {
e.preventDefault();
\$('#' + formFields[index + 1]).focus();
return;
}
if (e.key === 'Tab' && !e.shiftKey) {
return true;
}
if (e.key === 'Enter') {
e.preventDefault();
\$('#' + formFields[index + 1]).focus();
}
});
\$currentField.on('blur', function() {
clearTimeout(typingTimer);
});
}
});
\$('#' + formFields[formFields.length - 1]).on('keydown', function(e) {
if (e.key === 'Enter') {
e.preventDefault();
cp();
}
});
}
function isFieldValid(fieldId, value) {
switch(fieldId) {
case 'mail':
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\$/;
return emailRegex.test(value);
case 'Passworduser':
return value.length >= 6;
case 'Passworduser2':
return value === \$('#Passworduser').val() && value.length >= 6;
case 'num':
const phoneRegex = /^[0-9]{8,}\$/;
return phoneRegex.test(value.replace(/\\s+/g, ''));
case 'nomparent':
case 'prenomparent':
const nameRegex = /^[A-Za-zÀ-ÖØ-öø-ÿ\\s'-]{2,}\$/;
return nameRegex.test(value);
default:
return value.length >= 2;
}
}
function hideshow() {
document.getElementById(\"btnn\").disabled = true;
\$(\"#btnn\").css(\"background-color\", \"#ecf0f1\");
\$(\"#mdpobli\").css(\"display\", \"none\");
\$(\"#mdpoblier\").css(\"display\", \"block\");
}
</script>
<script>
\$(\".toggle-password\").click(function() {
\$(this).toggleClass(\"bi-eye bi-eye-slash\");
var input = \$(\$(this).attr(\"toggle\"));
if (input.attr(\"type\") == \"password\") {
input.attr(\"type\", \"text\");
} else {
input.attr(\"type\", \"password\");
}
});
\$(document).ready(function(){
\$('[data-toggle=\"tooltip\"]').tooltip({
trigger: 'manual',
html: true,
template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"arrow\"></div><div class=\"tooltip-inner\"></div></div>'
});
function validateEmail(email) {
const re = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\$/;
return re.test(String(email).toLowerCase());
}
\$('#mail').on('input', function() {
var emailInput = \$(this);
if (validateEmail(emailInput.val())) {
emailInput.removeClass('is-invalid');
emailInput.addClass('is-valid');
emailInput.tooltip('dispose');
\$('#notification').hide();
\$('#submitBtn').prop('disabled', false);
} else {
emailInput.removeClass('is-valid');
emailInput.addClass('is-invalid');
if (emailInput.val().length > 3) {
emailInput.attr('data-original-title', 'Votre adresse mail est incorrecte. Exemple: nom@domaine.com').tooltip('show');
if (emailInput.val().length > 0) {
\$('#notification').show();
}
} else {
\$('#notification').hide();
}
\$('#submitBtn').prop('disabled', false);
}
});
});
</script>
<script>
function setupRealtimeValidation() {
const formFields = [
'nomparent',
'prenomparent',
'mail',
'Passworduser',
'Passworduser2',
'num'
];
formFields.forEach(field => {
\$('#' + field).on('input', function() {
const value = \$(this).val();
if (value.length === 0) {
\$(this).removeClass('is-valid is-invalid');
\$(this).css('border', '1px solid #ced4da');
return;
}
if (isFieldValid(field, value)) {
\$(this).removeClass('is-invalid').addClass('is-valid');
\$(this).css('border', '1px solid #28a745');
} else {
\$(this).removeClass('is-valid').addClass('is-invalid');
\$(this).css('border', '1px solid #dc3545');
}
});
});
}
function resetForm() {
\$('#nomparent').css('border','1px solid #41a2aa');
\$('#nomparent').removeClass('is-valid');
\$('#nomparent').removeClass('is-invalid');
\$('#nomparent').val('');
\$('#prenomparent').css('border','1px solid #41a2aa');
\$('#prenomparent').removeClass('is-valid');
\$('#prenomparent').removeClass('is-invalid');
\$('#prenomparent').val('');
\$('#mail').css('border','1px solid #41a2aa');
\$('#mail').removeClass('is-valid');
\$('#mail').removeClass('is-invalid');
\$('#mail').val('');
\$('#eroor').css('display','none');
\$('#num').css('border','1px solid #41a2aa');
\$('#num').removeClass('is-valid');
\$('#num').removeClass('is-invalid');
\$('#num').val('');
\$('#Passworduser').css('border','1px solid #41a2aa');
\$('#Passworduser').removeClass('is-valid');
\$('#Passworduser').removeClass('is-invalid');
\$('#Passworduser').val('');
\$('#Passworduser2').css('border','1px solid #41a2aa');
\$('#Passworduser2').removeClass('is-valid');
\$('#Passworduser2').removeClass('is-invalid');
\$('#Passworduser2').val('');
\$(\"#smsInput\").prop(\"checked\",false);
\$(\"#mailInput\").prop(\"checked\",false);
}
</script>
{% endblock %}
", "Parent/LoginParent.html.twig", "/var/www/5sur5sejour/templates/Parent/LoginParent.html.twig");
}
}