templates/Nordinfo/Main/actus.html.twig line 1

Open in your IDE?
  1. {% extends 'Nordinfo/Main/base.html.twig' %}
  2. {% block title %}{{ title }} - Nord Info{% endblock %}
  3. {% block body %}
  4.   {{ include('Lenord/Main/parts/epingles.html.twig') }}
  5.   <main role="main" id="mainContent" tabindex="-1" class="mBXL" style="position:relative;">
  6.     {% include 'Nordinfo/Main/parts/add_tags_bar.html.twig' %}
  7.     {% if show_date_bar is defined and show_date_bar == 1 and posts is not empty %}
  8.       {% include 'Nordinfo/Main/parts/date_bar.html.twig' %}
  9.     {% endif %}
  10.     <div style="position:relative;">
  11.       <div class="gradientPosts"></div>
  12.     </div>
  13.     <h1 class="sr-only">{{ title }}</h1>
  14.     <div class="container _masonry">
  15.       {% if posts|length == 0 and latest_epingle_1 is null and latest_two_epingles_2|length == 0 %}
  16.         <p class="messageEmptyFeed">
  17.           Créez votre Une personnalisée en sélectionnant
  18.           <a href="{{ path('vos_lieux') }}">
  19.             <span>vos lieux de vie</span>
  20.           </a>
  21.           et/ou
  22.           <a href="{{ path('topics') }}">
  23.             <span>vos centres d'intérêts</span>
  24.           </a>
  25.           préférés à l’aide des filtres en haut de ce fil
  26.         </p>
  27.         <div class="gridMasonry" id="gridMasonry">
  28.           <div class="grid-sizer"></div>
  29.           <div class="colArticleItem col-item">
  30.             <div class="articleItem _empty"></div>
  31.           </div>
  32.           <div class="colArticleItem col-item">
  33.             <div class="articleItem _empty"></div>
  34.           </div>
  35.           <div class="colArticleItem col-item">
  36.             <div class="articleItem _empty"></div>
  37.           </div>
  38.           <div class="colArticleItem col-item d-none d-lg-block">
  39.             <div class="articleItem _empty"></div>
  40.           </div>
  41.           <div class="colArticleItem col-item d-none d-lg-block">
  42.             <div class="articleItem _empty"></div>
  43.           </div>
  44.           <div class="colArticleItem col-item d-none d-lg-block">
  45.             <div class="articleItem _empty"></div>
  46.           </div>
  47.         </div>
  48.       {% else %}
  49.         <div class="pb-5"></div>
  50.         {% if latest_epingle_1 %}
  51.           {% set date = "" %}
  52.           {% if latest_epingle_1.dateDebut is defined and latest_epingle_1.dateDebut is not null %}
  53.             {% set date_segments = latest_epingle_1.dateDebut | split('/') %}
  54.             {% set date = date_segments[1] ~ '/' ~ date_segments[0] ~ '/' ~ date_segments[2] %}
  55.           {% endif %}
  56.           {% set date_fin = "" %}
  57.           {% if latest_epingle_1.dateFin is defined and latest_epingle_1.dateFin != null %}
  58.             {% set date_segmentss = latest_epingle_1.dateFin | split('/') %}
  59.             {% set date_fin = date_segmentss[1] ~ '/' ~ date_segmentss[0] ~ '/' ~ date_segmentss[2] %}
  60.           {% endif %}
  61.           <div class="containerArticleBig">
  62.             <p class="sr-only"
  63.                style="position:absolute;left:0;width:100%;height:30px;visibility:hidden;opacity:0;"
  64.                id="list-item-{{ latest_epingle_1.id }}"
  65.                data-date-bar-scroll-point>{{ date|format_datetime(locale='fr', pattern="d MMMM Y") }}</p>
  66.             <a
  67.               href="{{ path('post_detail', {"slug": latest_epingle_1.slug}) }}"
  68.               class="articleItem _big {% if latest_epingle_1.type.type == 'video' %}_video{% endif %} {% if latest_epingle_1.grandFormat == null or latest_epingle_1.grandFormat == false %}_short{% endif %}">
  69.               <div class="__inner">
  70.                 <div class="__col-img">
  71.                   <div
  72.                     class="__img placement{% if latest_epingle_1.positionImage.id is defined %}{{ latest_epingle_1.positionImage.id }}{% endif %} lozad"
  73.                     data-background-image="{% if latest_epingle_1.defautFil is defined and latest_epingle_1.defautFil is same as(true) %}{{ latest_epingle_1.illustrationfilName }}{% else %}{{ asset('upload/images/'~latest_epingle_1.illustrationfilName) | imagine_filter('thumb') }}{% endif %}"
  74.                   >
  75.                     {% if latest_epingle_1.type.type == 'video' %}
  76.                       <p class="__tag">
  77.                         VIDÉO &nbsp;&nbsp;
  78.                         <span>{{ latest_epingle_1.duree }}</span>
  79.                       </p>
  80.                     {% endif %}
  81.                   </div>
  82.                 </div>
  83.                 <div class="__col-info">
  84.                   <div class="__info-wrapper">
  85.                     <p class="__tag">à la une</p>
  86.                     <h2 class="__title">
  87.                       <span>{{ latest_epingle_1.title }}</span>
  88.                     </h2>
  89.                     {% if latest_epingle_1.shortDescription|length > 0 %}
  90.                       <p class="__desc">
  91.                         {{ latest_epingle_1.shortDescription }}
  92.                       </p>
  93.                     {% endif %}
  94.                   </div>
  95.                 </div>
  96.               </div>
  97.             </a>
  98.           </div>
  99.         {% endif %}
  100.         <div class="gridMasonry" id="gridMasonry">
  101.           <div class="grid-sizer"></div>
  102.           {% if latest_two_epingles_2|length > 0 %}
  103.             {% for post in latest_two_epingles_2 %}
  104.               {% set date = "" %}
  105.               {% if post.dateDebut is defined and post.dateDebut is not null %}
  106.                 {% set date_segments = post.dateDebut | split('/') %}
  107.                 {% set date = date_segments[1] ~ '/' ~ date_segments[0] ~ '/' ~ date_segments[2] %}
  108.               {% endif %}
  109.               {% set date_fin = "" %}
  110.               {% if post.dateFin is defined and post.dateFin != null %}
  111.                 {% set date_segmentss = post.dateFin | split('/') %}
  112.                 {% set date_fin = date_segmentss[1] ~ '/' ~ date_segmentss[0] ~ '/' ~ date_segmentss[2] %}
  113.               {% endif %}
  114.               <div class="colArticleItem col-item _epingle">
  115.                 <p class="sr-only"
  116.                    style="position:absolute;left:0;width:100%;height:30px;visibility:hidden;opacity:0;"
  117.                    id="list-item-{{ post.id }}"
  118.                    data-date-bar-scroll-point>{{ date|format_datetime(locale='fr', pattern="d MMMM Y") }}</p>
  119.                 <a
  120.                   href="{{ path('post_detail', {"slug": post.slug}) }}"
  121.                   class="articleItem _article _epingle {% if post.type.type == 'video' %}_video{% endif %} {% if post.grandFormat == null or post.grandFormat == false %}_short{% endif %}">
  122.                   <div class="__inner">
  123.                     <div class="__col-img">
  124.                       <div
  125.                         class="__img placement{% if post.positionImage.id is defined %}{{ post.positionImage.id }}{% endif %} lozad"
  126.                         data-background-image="{% if post.defautFil is defined and post.defautFil is same as(true) %}{{ post.illustrationfilName }}{% else %}{{ asset('upload/images/'~post.illustrationfilName) | imagine_filter('thumb') }}{% endif %}"
  127.                       >
  128.                         {% if post.type.type == 'video' %}
  129.                           <p class="__tag">
  130.                             VIDÉO &nbsp;&nbsp;
  131.                             <span>{{ post.duree }}</span>
  132.                           </p>
  133.                         {% endif %}
  134.                       </div>
  135.                     </div>
  136.                     <div class="__col-info">
  137.                       <div class="__info-wrapper">
  138.                         <h2 class="__title">
  139.                           <span>{{ post.title }}</span>
  140.                         </h2>
  141.                         {% if post.shortDescription|length > 0 %}
  142.                           <p class="__desc">
  143.                             {{ post.shortDescription }}
  144.                           </p>
  145.                         {% endif %}
  146.                       </div>
  147.                     </div>
  148.                   </div>
  149.                 </a>
  150.               </div>
  151.             {% endfor %}
  152.           {% endif %}
  153.           {% for post in posts %}
  154.             {% if post.type.type == 'event' and post.dateDebut >= date_day %}
  155.             {% else %}
  156.               {{ include('Nordinfo/Main/parts/item_list.html.twig') }}
  157.             {% endif %}
  158.           {% endfor %}
  159.         </div>
  160.         {% if items_total > initial_limit %}
  161.           {% include 'Nordinfo/Main/parts/loader_ajax.html.twig' %}
  162.         {% endif %}
  163.       {% endif %}
  164.     </div>
  165.     <script>
  166.       (() => {
  167.         const containerArticleBig = document.querySelector('.containerArticleBig');
  168.         const articleItemsEpingle = document.querySelectorAll('.colArticleItem._epingle');
  169.         const gradientPosts = document.querySelector('.gradientPosts');
  170.         function calculateHeights() {
  171.           let heightContainerArticleBig = 0;
  172.           let heightArticleItemsEpingle = 0;
  173.           if (document.body.contains(containerArticleBig)) {
  174.             const styles = window.getComputedStyle(containerArticleBig);
  175.             heightContainerArticleBig = containerArticleBig.offsetHeight +
  176.               parseFloat(styles.marginTop) +
  177.               parseFloat(styles.marginBottom);
  178.           }
  179.           // Check if screen is larger than 991px
  180.           const isLargeScreen = window.matchMedia('(min-width: 992px)').matches;
  181.           if (isLargeScreen) {
  182.             // For large screens, get only the tallest element
  183.             let maxHeight = 0;
  184.             articleItemsEpingle.forEach((item) => {
  185.               const styles = window.getComputedStyle(item);
  186.               const itemHeight = item.offsetHeight +
  187.                 parseFloat(styles.marginTop) +
  188.                 parseFloat(styles.marginBottom);
  189.               if (itemHeight > maxHeight) {
  190.                 maxHeight = itemHeight;
  191.               }
  192.             });
  193.             heightArticleItemsEpingle = maxHeight;
  194.           } else {
  195.             // For smaller screens, add all heights together
  196.             articleItemsEpingle.forEach((item) => {
  197.               const styles = window.getComputedStyle(item);
  198.               const itemHeight = item.offsetHeight +
  199.                 parseFloat(styles.marginTop) +
  200.                 parseFloat(styles.marginBottom);
  201.               heightArticleItemsEpingle += itemHeight;
  202.             });
  203.           }
  204.           const totalHeight = heightContainerArticleBig + heightArticleItemsEpingle;
  205.           if (document.body.contains(gradientPosts)) {
  206.             gradientPosts.style.height = totalHeight + 'px';
  207.           }
  208.         }
  209.         // Initial calculation
  210.         calculateHeights();
  211.         // Create ResizeObserver
  212.         const resizeObserver = new ResizeObserver(() => {
  213.           calculateHeights();
  214.         });
  215.         // Observe the container
  216.         if (containerArticleBig) {
  217.           resizeObserver.observe(containerArticleBig);
  218.         }
  219.         // Observe each article item
  220.         articleItemsEpingle.forEach(item => {
  221.           resizeObserver.observe(item);
  222.         });
  223.       })();
  224.     </script>
  225.   </main>
  226.   {{ include('Nordinfo/Main/parts/cookieManager.js.html.twig') }}
  227. {% endblock %}