templates/home/index.html.twig line 1

Open in your IDE?
  1. {# templates/blog/index.html.twig #}
  2. {% extends "base.html.twig" %}
  3. {% block stylesheets %}
  4.     {{ encore_entry_link_tags('app') }}
  5. {% endblock %}
  6. {% block title %}Accueil |
  7.     {{ parent() }}
  8. {% endblock %}
  9. {% block content %}
  10.     <div class="screen">
  11.         <div class="entete">
  12.             <div class="text">
  13.                 <h1>LUNE</h1>
  14.                 <h3>portaiL des Usages du Numérique Éducatif</h3>
  15.                 <p class="accroche">LUNE est un portail qui intègre de l'intelligence artificielle
  16.                  pour faciliter l'accès au personnel de l'éducation nationale à
  17.                  des ressources pédagogiques. Grâce à LUNE, trouvez depuis
  18.                  un seul endroit vos ressources pédagogiques pour les usages du 
  19.                  numérique.</p>
  20.             </div>
  21.             <div class="img_logo">
  22.                 <img class="img_text" src="{{ asset('build/images/ICONE-Turquoise.png') }}"/>
  23.             </div>
  24.         </div>
  25.     
  26.         <!--Telescope-->
  27.         <div class="telescope">
  28.             <h2><img class="img_titre" src="{{ asset('build/images/TELESCOPE_blue.png') }}"/>Le téléscope</h2>
  29.             <p>Vous cherchez quelque chose ? Le télécsope est là pour vous aider ! Pensez, écrivez et laissez le chercher! Le téléscope vous emmènera découvrir de nombreuses
  30.             ressources issues de sites internets d'intérêts. Vous pouvez également vous laisser guider dans votre recherhe en sélectionnant des thématiques.</p>
  31.         
  32.             <div class="ContainerTelescope">
  33.                 <div class="SousTitre-Telescope">Je recherche:</div>
  34.                 <div class="ChoixContainer">
  35.                     {% set i = 1 %}
  36.                     {% for chx in choix %}
  37.                         <button class="Btn_second ChoixTelescope" onclick="rechercheGuideeChx('{{i}}')">{{chx.nom}}</button>
  38.                         {% set i = i + 1 %}
  39.                     {% endfor %}
  40.                 </div>
  41.                 {% set j = 2 %}
  42.                 <div class="RequeteContainer">
  43.                     {% for chx in choix %}
  44.                         <div style="inline" class='Requete'>
  45.                             {% for req in requete %}
  46.                                 {% if req.choix == chx %}
  47.                                     <button class="Btn_second RequeteTelescope" onclick="rechercheGuideeReq('{{req.nom}}', '{{j}}')">{{req.nom}}</button>
  48.                                 {% endif %}
  49.                             {% endfor %}
  50.                         </div>
  51.                         {% set j = j + 1 %}
  52.                     {% endfor %}
  53.                 </div>
  54.                 <form method="get" action="/search">
  55.                     <div class="RechercheContainer">
  56.                         <input class="form-control je-recherche-une-sq" id="searchbar" type="text" style="" placeholder="Recherche" name="q" required>
  57.                     </div>
  58.                     <div class="BtnRechercheContainer">
  59.                         <button class="Btn_primary BtnRecherche" type="submit">Lancer la Recherche</button>
  60.                     </div>
  61.                 </form>
  62.             </div>
  63.         </div>
  64.             
  65.         <div class="recommandationContainer">
  66.             <h2 class="parcours-recommand h2"><img class="img_titre" src="{{ asset('build/images/TRAJECTOIRE_blue.png') }}"/>Trajectoires recommandées!</h2>
  67.             <p class="lorem-ipsum-dolor-si">
  68.                 Ces parcours de navigation vous sont proposés sur la base de votre utilisation de LUNE. N'hésitez pas à les suivres. Ils pourraient vous intéresser! Ils se construisent 
  69.                 au fur et à mesure de vos recherches et de votre navigation. Grâce à ces trajectoires, visitez des ressources auxquelles nous n'auriez pas pensés !
  70.             </p>
  71.             {{ render(controller('App\\Controller\\RecoController::index')) }}
  72.         </div>
  73.         <h2>Les dernières découvertes!</h2>
  74.         <p>
  75.             Toutes les nouvelles ressources sont disponibles ici ! Voyagez à travers ces découvertes pour découvertes pour découvrir des nouveautés !
  76.         </p>
  77.         <div id="newArticlesContainer"></div>
  78.         {% if is_mobile() %}
  79.             <div style="display: flex; justify-content: center; margin-top: 1em">
  80.                 <a class="prev" onclick="plusArticle(-1)">&#10094;</a>
  81.                 <a class="next" onclick="plusArticle(1)">&#10095;</a>
  82.             </div>
  83.         {% endif %}
  84.         <div id="verif_container" class="popup">
  85.             <div class="popup-box">
  86.                 <h5 class="popup-title">Voulez-vous vraiment supprimer ?</h5>
  87.                 <p class="popup-content">Il ne sera pas possible de revenir en arrière.</p>
  88.                 <!--initialisation du bouton supprimer et retour pour annuler l'opération-->
  89.                 <div class="popup-bottom">
  90.                     <button id="supr" type="button" class="popup-button">
  91.                         <strong>Supprimer</strong>
  92.                     </button>
  93.                     <button id="retour" type="button" class="popup-button" data-bs-dismiss="modal">retour</button>
  94.                 </div>
  95.             </div>
  96.         </div>
  97.     </div>
  98.     {% include "footer/index.html.twig" %}
  99.     {% include "includes/volet.html.twig" %}
  100.     <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
  101.     <script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script>
  102.     <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
  103. <script>
  104.     let articleIndex = 0;
  105.     function plusArticle(n) {
  106.         showArticle(articleIndex += n);
  107.     }
  108.     function showArticle(n) {
  109.         let articles = $('#newArticlesContainer .article');
  110.         if (n >= articles.length) {
  111.             articleIndex = 0
  112.         }
  113.         if (n < 0) {
  114.             articleIndex = articles.length - 1
  115.         }
  116.         for (i = 0; i < articles.length; i ++) {
  117.             articles[i].style.display = "none";
  118.         }
  119.         articles[articleIndex].style.display = "block";
  120.     }
  121. </script>
  122. <script type="module">
  123.     import ui_article from "/assets/js/ui/ui_article.js";
  124.     import gestionVue from "/assets/js/gestionVue.js";
  125.     import gestionSignal from "/assets/js/gestionSignal.js";
  126.     import gestionIndicateur from "/assets/js/gestion_indicateurs.js";
  127.     import article from "/assets/js/article.js";
  128.     import favoris from "/assets/js/favoris.js";
  129.     import affichage from "/assets/js/affichage.js";
  130.     $(document).ready(function () {
  131.     loadNewArticles();
  132.     // ------------ Functions
  133.     function loadNewArticles() {
  134.         $('#newArticlesContainer').append(affichage.preloader())
  135.         $.ajax({
  136.             url: '/search/ajaxNews',
  137.             type: 'POST',
  138.             dataType: 'json',
  139.             async: true,
  140.             success: function (data, status) {
  141.                 showNewArticles(data);
  142.             },
  143.             error: function (xhr, textStatus, errorThrown) {
  144.                 showErrorMessage();
  145.             }
  146.         });
  147.     }
  148.     function showNewArticles(data) {
  149.     let articlesContainer = $('#newArticlesContainer');
  150.     let string = '';
  151.     let connecte = false 
  152.     {% if app.user != null %}
  153.     connecte = true
  154.     {% endif %}
  155.     let favs = {{ favs|serialize(format='json') }}
  156.     {% if is_mobile() %}
  157.     for (let i = 0; i < 3; i++) {
  158.     if (i > 0) {
  159.     string += '<div id="new-article" class="article" style="display: none">';
  160.     } else {
  161.     string += '<div id="new-article" class="article">';
  162.     } data[i]['date'] = data[i]['date']['date'];
  163.     string += ui_article.creerCarteArticle(data[i], connecte, favs);
  164.     string += '</div>'
  165.     }
  166.     {% else %}
  167.     for (let i = 0; i < 3; i++) {
  168.     data[i]['date'] = data[i]['date']['date'];
  169.     string += '<div class="article">';
  170.     string += ui_article.creerCarteArticle(data[i], connecte, favs);
  171.     string += '</div>'
  172.     }
  173.     {% endif %}
  174.     // remove loading
  175.     $('#loading').remove();
  176.     // add articles
  177.     articlesContainer.append(string);
  178.     article.init();
  179.     favoris.initAddFavoriteEvents();
  180.     gestionVue.initialisation();
  181.     gestionSignal.initialisation();
  182.     gestionIndicateur.initialisation();
  183.     }
  184.     function showErrorMessage() {
  185.     $('#loading').remove();
  186.     $('#newArticlesContainer').append(`<div class="center-align" id="loading" style="margin-bottom: 1.5em">
  187.                                     Erreur lors du chargement
  188.                                     <br/>
  189.                                     <a class="btn" style="margin-top: 0.5em">Réessayer</a>
  190.                                 </div>`);
  191.     $('#loading').on('click', event => {
  192.     $('#loading').remove();
  193.     loadNewArticles();
  194.     })
  195.     }
  196.     });
  197. </script>
  198. <script>
  199.     function CacherRequete(cls) {
  200.         let block = document.getElementsByClassName(cls);
  201.         let i = 0;
  202.         for (requete in block) {
  203.             if (block[i] != undefined) {
  204.                 block[i].style.display = "none";
  205.             }
  206.             i = i + 1;
  207.         }
  208.     }
  209.     function AfficherRequete(cls, id) {
  210.         let block = document.getElementsByClassName(cls);
  211.         let i = id;
  212.         i=i-1;
  213.         if (block[i] != undefined) {
  214.             block[i].style.display = "inline";
  215.         }
  216.     }
  217.     function rechercheGuideeChx(id1) {
  218.         CacherRequete('Requete');
  219.         AfficherRequete('Requete',id1);
  220.     }
  221.     function rechercheGuideeReq(msg, id1) {
  222.         document.getElementById("searchbar").value = document.getElementById("searchbar").value + " " + msg;
  223.         CacherRequete('Requete');
  224.         AfficherRequete('Requete',id1);
  225.     }
  226.     function reinitRechercheGuidee() {
  227.         document.getElementById("searchbar").value = "";
  228.         CacherRequete('Requete');
  229.         AfficherRequete('Requete', '1');
  230.     } 
  231.     </script>
  232. {% endblock %}