templates/livre/index.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Livre index{% endblock %}
  3. {% block body %}
  4. <style>
  5. .filter .form-group {
  6.     width: 33%;
  7.     display: inline-block;
  8. }
  9. .filter{
  10.     max-width: none;
  11. }
  12. .form-control{
  13.     border-radius: 2.25rem;
  14. }
  15. </style>
  16.     <div id="cover">
  17.         {{form_start(form,{attr:{class:'filter'}})}}
  18.         {{form_row(form.q,{attr:{class:''}})}}
  19.         {{form_row(form.categories,{attr:{class:''}})}}
  20.         {# {{form_row(form.ville,{attr:{class:''}})}} #}
  21.         <div class="form-group">
  22.         <button type="submit" class="btn form-control btn-primary" style="padding:0;">{% trans %}Search{% endtrans %}
  23.             <!--i class="fa fa-search" aria-hidden="true"></i-->
  24.         </button></div>
  25.         {{form_end(form, {'render_rest': false})}}
  26.     </div>
  27.     <hr style="display: inline-block;margin-top: 300px;">
  28.     <h1><b>{% trans %}New books{% endtrans %}</b></h1>
  29.     <div class="scrollmenu" id="scrollmenu">
  30.     {% for livre in lastbooks %}
  31.     <div class="card draggable">
  32.         <a class="" href="{{ path('app_livre_show', {'id': livre.id}) }}">
  33.             <img alt="" src="/uploads/{{ livre.photo }}" onerror="this.src='/img/book.avif'" class="height-grid-card" style="height:100%;">
  34.             <div class="card-body p-0">
  35.                 <h6 class="primary-color card-title font-weight-bold">{{ livre.titre }}</h6>
  36.             </div>
  37.         </a>
  38.         </div>
  39.     {% endfor %}
  40.     </div>
  41.     <h1><b>{% trans %}Available books{% endtrans %}</b></h1>
  42.     <div class="row">
  43.     <div class="grid box">
  44.     {% for livre in livres %}
  45.         <div class="card">
  46.         <a class="favori-icon" href="{{ path('addfavori', {'id': livre.id}) }}"> <i class="fa fa-heart" aria-hidden="true"></i> </a>
  47.         <a class="" href="{{ path('app_livre_show', {'id': livre.id}) }}">
  48.             <img alt="" src="/uploads/{{ livre.photo }}" onerror="this.src='/img/book.avif'" class="height-grid-card" style="height:100%;">
  49.             <div class="card-body p-2">
  50.                 <h2 class="primary-color card-title font-weight-bold">{{ livre.titre }}</h2>
  51.                 {# <span class="new-secondary text-secondary small-text">
  52.                         {{ livre.description|slice(0, 250) }}
  53.                         {% if livre.description|length > 250 %}
  54.                         <span id="dots_{{ loop.index }}">...</span>{% endif %}
  55.                         <span id="more_{{ loop.index }}" style="display: none;">{{ livre.description|slice(250) }}</span>
  56.                         {% if livre.description|length > 250 %}
  57.                     <a style="text-decoration: underline; cursor: pointer;color: #320258;" onclick="myFunction('{{ loop.index }}')" id="myBtn_{{ loop.index }}">Lire plus</a>
  58.                     {% endif %}
  59.                 </span> #}
  60.                 {% trans %}Author{% endtrans %} : {{ livre.auteur }}<br>
  61.                 {% trans %}Language{% endtrans %} : {{livre.language}}<br>
  62.                 {% trans %}Country{% endtrans %} : {{livre.user.country}}
  63.                 <div class="par">user : <a class="primary-color" href="{{ path('app_user_show', {'id': livre.user.id}) }}">{{ livre.user.username }}</a></div>
  64.             </div>
  65.             {# <div class="body2">
  66.                 <span class="card-title price float-left" > {{ livre.prix }} Dhs    / Séance</span> #}
  67.                 {# <button type="button" class="btn btn-success">Réserver une séance</button>
  68.                 <a class="btn btn-success"href="{{ path('app_livre_show', {'id': livre.id}) }}">
  69.                     See the book
  70.                 </a>
  71.                 <span class="text-center p-2"><span class="fa fa-star checked"></span>
  72.                     <span class="fa fa-star checked"></span>
  73.                     <span class="fa fa-star checked"></span>
  74.                     <span class="fa fa-star checked"></span>
  75.                     <span class="fa fa-star {{ random(['', 'checked']) }}"></span>
  76.                 </span>
  77.             </div> #}
  78.         </a>
  79.         </div>
  80.     {% endfor %}
  81.     </div>
  82.     </div>
  83.     {# <div class="side-bar card">
  84.         <button type="button" class="btn btn-success">Réserver le livre</button>
  85.         
  86.     </div> #}
  87.     {{knp_pagination_render(livres)}}
  88. <script>
  89. function myFunction(id) {
  90.     var dotsElement = document.getElementById('dots_' + id);
  91.     var moreTextElement = document.getElementById('more_' + id);
  92.     var btnTextElement = document.getElementById('myBtn_' + id);
  93.     if (dotsElement.style.display === 'none') {
  94.         dotsElement.style.display = 'inline';
  95.         btnTextElement.innerHTML = 'Lire plus';
  96.         moreTextElement.style.display = 'none';
  97.     } else {
  98.         dotsElement.style.display = 'none';
  99.         btnTextElement.innerHTML = 'Lire moins';
  100.         moreTextElement.style.display = 'inline';
  101.     }
  102. }
  103. </script>
  104. <script>
  105. var menu = document.getElementById("scrollmenu");
  106. var isDragging = false;
  107. var startX, scrollLeft;
  108. menu.addEventListener("mousedown", startDrag);
  109. menu.addEventListener("touchstart", startDrag);
  110. document.addEventListener("mouseup", stopDrag);
  111. document.addEventListener("touchend", stopDrag);
  112. menu.addEventListener("mousemove", dragMenu);
  113. menu.addEventListener("touchmove", dragMenu);
  114. function startDrag(e) {
  115.   isDragging = true;
  116.   startX = e.pageX || e.touches[0].pageX;
  117.   scrollLeft = menu.scrollLeft;
  118.   menu.style.cursor = "grabbing";
  119. }
  120. function stopDrag() {
  121.   isDragging = false;
  122.   menu.style.cursor = "grab";
  123. }
  124. function dragMenu(e) {
  125.   if (!isDragging) return;
  126.   e.preventDefault();
  127.   var x = e.pageX || e.touches[0].pageX;
  128.   menu.scrollLeft = scrollLeft - (x - startX) * 2; // Adjust scroll speed here
  129. }
  130. </script>
  131. {% endblock %}