templates/bundles/FOSUserBundle/layout.html.twig line 1

Open in your IDE?
  1. {# LG 20221003 passé + bas {% include "@Paa/Default/post_imports.html.twig" %} #}
  2. <!DOCTYPE html>
  3. <html lang="fr">
  4.     <head>
  5. {# LG 20221003 début
  6.         <meta charset="UTF-8" />
  7.         <meta name="author" content="Limoog">
  8.         <meta name="viewport" content="width=device-width" initial-scale="1">
  9.         {% if not estDemo() %}
  10.             <meta name="robots" content="noindex"/>
  11.             <title>Logiciel planning médico-social et Alternance gratuit</title>
  12.         {% else %}
  13.             <title>PAA</title>
  14.         {% endif %}
  15.         <link rel="icon" type="image/x-icon" href="{{ asset_version('Images/PAA.ICO') }}" />
  16.         <link rel="stylesheet" type="text/css" href="{{asset_version('Limoog/Partages/css/Emma.css')}}">
  17.         <link rel="stylesheet" type="text/css" href="{{asset_version('vendor/bootstrap/4.5.0/css/bootstrap.min.css')}}">
  18. #}
  19.         {% include "@Paa/Default/pre_imports.html.twig" %}
  20.         <meta name="description" content="PAA, le logiciel de planning médico-social (IME, IMPro, ...) et formation en alternance est gratuit en version limitée">
  21.         {% include "@Paa/Default/post_imports.html.twig" %}
  22. {# LG 20221003 fin #}
  23.     </head>
  24.     <body>
  25. <!--PAADemo-->      {#Ne pas enlever ce commentaire : utilisé en JavaScript pour enlever ce contenu inutile dans le popup#}
  26.     {% if estDemo() %}
  27.         <div id="background">
  28.             <div id="screen-splitter">
  29.                 <div id="card-wrapper">
  30.                     <div id="cards">
  31.                         <div class="alert alert-light text-center" style="font-size: .80vw; color: black;">
  32.                             <h1>Créer et présenter les emplois du temps</H1>
  33.                         </div>
  34.                         <img src="{{ asset_version("Images/Captures/Planning.png") }}" class="rounded" alt="Construisez vos plannings d'activité et de présences en toute simplicité">
  35.                     </div>
  36.                     <div id="cards">
  37.                         <div class="alert alert-light text-center" style="font-size: .80vw; color: black;">
  38.                             <h1>Gérer le personnel, les usagers, les équipements</h1>
  39.                         </div>
  40.                         <img src="{{ asset_version("Images/Captures/SaisieIntervenants-Général.png") }} " class="rounded" alt="Gérez le personnel, ses activités, ses contrats et ses horaires">
  41.                     </div>
  42.                     <div id="cards">
  43.                         <div class="alert alert-light text-center" style="font-size: .80vw; color: black;">
  44.                             <h1>Combiner activités collectives et individuelles</h1>
  45.                         </div>
  46.                         <img src="{{ asset_version("Images/Captures/ChoixParticipantsUsagers.png") }}" class="rounded" alt="Définissez simplement les participants de chaque séance">
  47.                     </div>
  48.                 </div>
  49.             </div>
  50.             <div id="screen-splitter"></div>
  51.             <div id="screen-splitter">
  52.                 <div id="card-wrapper">
  53.                     <div id="cards">
  54.                         <div class="alert alert-light text-center" style="font-size: .80vw; color: black;">
  55.                             <h1>Gérer des bilans d'activités, présence, absences ...</h1>
  56.                         </div>
  57.                         <img src="{{ asset_version("Images/Captures/EditionsRapports.png") }}" class="rounded" alt="Editez les plannings générés dans une multitude de formats">
  58.                     </div>
  59.                     <div id="cards">
  60.                         <div class="alert alert-light text-center" style="font-size: .80vw; color: black;">
  61.                             <h1>Gérer les données des usagers</h1>
  62.                         </div>
  63.                         <img src="{{ asset_version("Images/Captures/Usagers_Statuts.png") }}" class="rounded" alt="Gérez les données des usagers an plus de leur planning">
  64.                     </div>
  65.                     <div id="cards">
  66.                         <div class="alert alert-light text-center" style="font-size: .80vw; color: black;">
  67.                             <h1>Automatiser la construction des emplois du temps</h1>
  68.                         </div>
  69.                         <img src="{{ asset_version("Images/Captures/CréerUneSemaine.png") }}" class="rounded" alt="Simplifiez les emplois du temps en utilisant des modèles évolutifs">
  70.                     </div>
  71.                 </div>
  72.             </div>
  73.         </div>
  74.    <style>
  75.         body, html {
  76.             overflow: hidden;
  77.         }
  78.         ::-webkit-scrollbar {
  79.             display:none;
  80.         }
  81.         #background {
  82.             display: flex;
  83.             position: fixed;
  84.             transition: opacity .4s;
  85.             background: rgb(230, 230, 230);
  86.             width: 100%;
  87.             height: 100%;
  88.             z-index: -1;
  89.             overflow: hidden;
  90.         }
  91.         #screen-splitter {
  92.             flex: 1;
  93.             flex-direction: column;
  94.         }
  95.         #card-wrapper {
  96.             flex: 1;
  97.             display: flex;
  98.             height: 90%;
  99.             margin-top: 10%;
  100.             width: 100%;
  101.             flex-direction: column;
  102.             justify-content: space-around;
  103.         }
  104.         #card-wrapper * {
  105.             width: 90%;
  106.             display: flex;
  107.             align-self: center;
  108.             justify-content: center;
  109.         }
  110.         #cards {
  111.             display: flex;
  112.             flex: 1;
  113.             flex-direction: column;
  114.         }
  115.         #cards :nth-child(2) {
  116.             margin-bottom: 5%;
  117.         }
  118.         
  119.         @media (max-width: 1100px) {
  120.             #background {
  121.                 opacity: 0;
  122.                 transition: opacity .4s;
  123.             }
  124.         }
  125.         #card-title {
  126.             display: flex;
  127.             align-self: center;
  128.             justify-content: center;
  129.             background-color: gray;
  130.         }
  131.         #card-title p {
  132.             padding: 15px;
  133.         }
  134.         @keyframes fade-in {
  135.             0% {
  136.                 opacity: 0;
  137.                 transform: translateY(-50vh);
  138.             }
  139.             60% {
  140.                 opacity: 0;
  141.             }
  142.         }
  143.         #wrapper {
  144.             display: flex;
  145.             align-items: center;
  146.             justify-content: space-around;
  147.         }
  148.         {# #login_container {
  149.             padding-top: 1.5rem;
  150.             padding-bottom: 1.5rem;
  151.             padding-right: 1.5rem;
  152.         } #}
  153.         #sinscrire{
  154.             display: block !important ;
  155.         }
  156.         h1{
  157.             font-size: .80vw;
  158.             font-weight: bolder;
  159.         }
  160.     </style>
  161.     {% endif %}
  162. <!--PAADemo-->      {#Ne pas enlever ce commentaire : utilisé en JavaScript pour enlever ce contenu inutile dans le popup#}
  163. <!--PAALoginForm--> {#Ne pas enlever ce commentaire : utilisé en JavaScript pour savoir que c'est une demande de login#}
  164.     <style>
  165.         #login_container {
  166.             animation: fade-in 1s;
  167.             display: block;
  168.             box-shadow: 5px 5px 16px -5px rgba(0,0,0,0.3);
  169.             {# padding-top: 1.5rem;
  170.             padding-left: 1.5rem; #}
  171.         }
  172.         #login_container label[for="username"]
  173.                 , #login_container label[for="fos_user_change_password_form_current_password"]
  174.                 , #login_container label[for="fos_user_resetting_form_plainPassword_first"] {
  175.             padding: 0 40px 0 0;
  176.             margin: 0 0 0 5%;
  177.         }
  178.         #login_container label[for="password"]
  179.                 , #login_container label[for="fos_user_change_password_form_plainPassword_first"]
  180.                 , #login_container label[for="fos_user_change_password_form_plainPassword_second"]
  181.                 , #login_container label[for="fos_user_resetting_form_plainPassword_second"] {
  182.             padding: 15px 40px 0 0;
  183.             margin: 0 0 0 5%;
  184.         }
  185.         #login_container input[type="text"], #login_container input[type="password"], #login_container input[type="submit"] {
  186.             width: 90%;
  187.             margin-left: 5%;
  188.         }
  189.         #login_container input[type="checkbox"] {
  190.             width: 50px;
  191.             margin-top: 10px;
  192.         }
  193.         #login_container input[name='_remember_me'], #login_container label[for='remember_me'] {
  194.             margin-top: 15px;
  195.             margin-bottom: 15px;
  196.         }
  197.         label {
  198.             font-size: inherit;
  199.         }
  200.         a {
  201.             color: mediumseagreen;
  202.         }
  203.         p {
  204. /* LG 20230112 déac : perturbe l'affichage de la page par-dessus laquelle le popup arrive (changelog notemment)            font-size: 12px;
  205.             text-align: center; */
  206.         }
  207.         .btn-block {
  208.             background-color: #DCEAD7;
  209.         }
  210.         #login-alert {
  211.             margin-top: 15px;
  212.             margin-bottom: 15px;
  213.             background: #9BBC8A;
  214.             border-radius: 5px;
  215.             text-align: center;
  216.         }
  217.         .login-div{
  218.             width: 90%;
  219.             margin-left: 5%;
  220.             margin-bottom: 15px;
  221.         }
  222.         .login-error{
  223.             color: red ;;
  224.         }
  225.         #sinscrire{
  226.             display: none ;
  227.         }
  228.     </style>
  229.     {# <div style="height: 100%;"> #}
  230. {#         <div>
  231.             {{ dump(csrf_token('authenticate')) }} = valeur csrf token, qui est un hash de la session actuelle
  232.         </div>
  233.  #}
  234.         <div class = "flex-column d-flex justify-content-center align-items-center h-100">
  235.             <div id="login_container" class = "bg-white p-4" style="width: 400px;">
  236.                 <div class="login-div" style="margin-top: 0px; margin-bottom: 40px; margin-left: -17px;">
  237.                     <a href = "http://www.limoog.net" tabIndex = "-1">      {# LG 20220914 tabIndex = "-1" permet de rendre non focusable le lien, et d'éviter qu'il apparaisse avec un cadre rouge sur certains navigateurs #}
  238.                         <img src="{{ asset_version("Images/logoPAA.png") }} " alt = "Planning Accueil Accompagnement" class = "logo resizeTel" style="width:360px">
  239.                     </a>
  240.                 </div>
  241. {# LG 20231009 old                {% if is_granted("IS_AUTHENTICATED_REMEMBERED") %} #}
  242.                 {% if is_granted("IS_AUTHENTICATED_FULLY") %}
  243.                 <div id="login-alert" class="login-div">
  244.                         {#Affiche "Connecté en tant que ... Déconnexion"#}
  245.                         Vous êtes actuellement connecté en tant que {{ app.user.username }}
  246.                 </div>
  247.                 <div style="display: flex;" class="login-div">
  248.                     <div style="flex: 1;">
  249.                         <a href="{{ path('fos_user_security_logout') }}">
  250.                             {{ 'layout.logout'|trans({}, 'FOSUserBundle') }}
  251.                         </a>
  252.                     </div>
  253.                     <div>
  254.                         <a href="{{ path('index') }}">
  255.                             Aller à l'accueil
  256.                         </a>
  257.                     </div>
  258.                 </div>
  259. {# LG 20231009 déplacé de login.html.twig début #}
  260.                 <div style="m" class="login-div">
  261.                     Vous pouvez aussi vous reconnecter avec une autre identité
  262.                 </div>
  263. {# LG 20231009 déplacé de login.html.twig fin #}
  264.                 {% endif %}
  265.                 {% block pre_fos_user_content %}{% endblock pre_fos_user_content %}
  266.                 {% block fos_user_content %}{% endblock fos_user_content %}
  267.                 {% block post_fos_user_content %}{% endblock post_fos_user_content %}
  268. {# LG 20221007 : déplacé dans Login.html.twig
  269.                 <div id="sinscrire" class="login-div" style="margin-top: 15px">
  270.                 {% if estDemo() %}
  271.                    <a href="https://www.limoog.net/inscription/" target="_blank">Obtenir un accès gratuit</a>
  272.                 {% endif%}
  273.                 </div>
  274. #}
  275.             </div>
  276.         {# </div> #}
  277.         <script>
  278.             // custom-control-label control-label m-0 mr-3
  279. {# LG 20220914 début : quand le form login est appellé dans un popup plusieurs fois, il y a une erreur "Redéclaration de Let usernameTb" #}
  280. {#          let usernameTb = document.getElementById("username");
  281.             let passwdTb = document.getElementById("password");
  282.             let btnSubmit = document.getElementById("_submit")
  283.             usernameTb.classList.add("shadow-form-control", "border-0", "form-control");
  284.             passwdTb.classList.add("shadow-form-control", "border-0", "form-control");
  285.             btnSubmit.classList.add("btn-menu-planning", "btn", "btn-block", "shadow-form-control"); #}
  286.             {# AV 20221007 old document.getElementById("username").classList.add("shadow-form-control", "border-0", "form-control");
  287.             document.getElementById("password").classList.add("shadow-form-control", "border-0", "form-control");
  288.             document.getElementById("_submit").classList.add("btn-menu-planning", "btn", "btn-block", "shadow-form-control"); #}
  289.             // AV 20221007 début les id doivent correspondre en fonction des différents éléments des form: changer le mdp, réinitialiser le mdp et connexion
  290.             if(document.getElementById("username") !== null) {
  291.                 document.getElementById("username").classList.add("shadow-form-control", "border-0", "form-control");
  292. {# //LG 20221008 début : pour préécrire le login de l'utilisateur actuel, quand on peut le connaitre #}
  293.                 {% if psLogin is not defined %}
  294.                     {% set psLogin = '' %}
  295. // LG 20231009 début
  296.                 {% elseif is_granted("IS_AUTHENTICATED_REMEMBERED") %}
  297.                     {% set psLogin = app.user.username %}
  298. // LG 20231009 fin
  299.                 {% endif %}
  300.                 if ("{{ psLogin }}") {
  301.                     {# // Un login a été fourni au twig #}
  302.                     $("#username").val("{{psLogin}}") ;
  303.                 } else if (window.currentUser) {
  304.                     {# // La page actuelle dispose de l'information #}
  305.                     $("#username").val(window.currentUser) ;
  306.                 }
  307. {# //LG 20221008 fin #}
  308.             }
  309.             if(document.getElementById("password") !== null) {
  310.                 document.getElementById("password").classList.add("shadow-form-control", "border-0", "form-control");
  311.             }
  312.             if(document.getElementById("_submit") !== null) {
  313.                 document.getElementById("_submit").classList.add("btn-menu-planning", "btn", "btn-block", "shadow-form-control");
  314.             }
  315.             if($("input[type=submit]").length) {
  316.                 $("input[type=submit]")[0].classList.add("btn-menu-planning", "btn", "btn-block", "shadow-form-control");
  317.                 $("input[type=submit]").css("margin-top", "15px");
  318.             }
  319.             if(document.getElementById("fos_user_change_password_form_current_password") !== null) {
  320.                 document.getElementById("fos_user_change_password_form_current_password").classList.add("shadow-form-control", "border-0", "form-control");
  321.             }
  322.             if(document.getElementById("fos_user_change_password_form_plainPassword_first") !== null) {
  323.                 document.getElementById("fos_user_change_password_form_plainPassword_first").classList.add("shadow-form-control", "border-0", "form-control");
  324.             }
  325.             if(document.getElementById("fos_user_change_password_form_plainPassword_second") !== null) {
  326.                 document.getElementById("fos_user_change_password_form_plainPassword_second").classList.add("shadow-form-control", "border-0", "form-control");
  327.             }
  328.             if(document.getElementById("fos_user_resetting_form_plainPassword_first") !== null) {
  329.                 document.getElementById("fos_user_resetting_form_plainPassword_first").classList.add("shadow-form-control", "border-0", "form-control");
  330.             }
  331.             if(document.getElementById("fos_user_resetting_form_plainPassword_second") !== null) {
  332.                 document.getElementById("fos_user_resetting_form_plainPassword_second").classList.add("shadow-form-control", "border-0", "form-control");
  333.             }
  334.             if(document.getElementById("fos_user_change_password_form__token") !== null) {
  335.                 document.getElementById("fos_user_change_password_form__token").classList.add("btn-menu-planning", "btn", "btn-block", "shadow-form-control");
  336.             }
  337.             // AV 20221007 fin
  338. {# LG 20220927 old            var loNext = $("#flashbag").next()[0] ; #}
  339.             var loNext = $("#aide").next()[0] ;
  340.             if (loNext && loNext.tagName == "DIV" ) {
  341.                 // L'élément flashbag a derierre lui une div : elle a été ajoutée dans vendor/friendsofsymfony/user-bundle/Resources/views/Security/login_content.html.twig
  342.                 // pour afficher l'erreur d'authentification
  343.                 // Lui affecter la classe login-div
  344.                 loNext.classList.add("login-div", "login-error") ;
  345.                 {% if estDemo() %}
  346.                     if ($(loNext).html() == "Identifiants invalides.") {
  347.                         $(loNext).html("Identifiants invalides.<br>Si vous doutez de votre nom d'utilisateur, utilisez plutôt l'adresse mail que vous avez fournie lors de votre inscription.") ;
  348.                     }
  349.                 {% endif %}
  350.             }
  351.         </script>
  352. <!--PAALoginForm--> {#Ne pas enlever ce commentaire : utilisé en JavaScript pour savoir que c'est une demande de login#}
  353.     </body>
  354. </html>