templates/offre-emploi/list.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title -%}
  3. {% autoescape false -%}
  4.     {%- apply spaceless -%}
  5.         {% if etablissement -%}
  6.             Offre Emploi
  7.             {% if form.vars.value.libelle is defined and form.vars.value.libelle is not empty %} - {{ form.vars.value.libelle }}
  8.             {% endif %} - {{ etablissement.denomination|striptags }}
  9.             {% set quoi = etablissement.categoriePrimaire|categorie2quoi %}
  10.             {%- if quoi %} - {{ quoi.rubrique.libelle }}
  11.             {% endif -%}
  12.             {%- if etablissement.ville %} - {{ etablissement.ville|lieuLibelle }}
  13.                 {%- if etablissement.ville.departement %} - {{ etablissement.ville.departement|lieuLibelle }}
  14.                 {% endif %}
  15.             {%- endif %} - enseignement-prive.info
  16.         {%- else -%}
  17.             {{- block('h1') }} - Annuaire Enseignement-Privé
  18.         {%- endif -%}
  19.     {%- endapply -%}
  20. {%- endautoescape -%}    
  21. {%- endblock -%}
  22. {% block description %}Enseignement-prive.info met à votre disposition une liste d'offres d'emplois spécialisés dans l'enseignement privé
  23. {% endblock %}
  24. {% block body %}
  25. <section class="container page-offres">
  26.     <div id="breadcrumb">
  27.         {% include 'offre-emploi/_includes/breadcrumb.html.twig' with {
  28.             'lieu' : lieu,
  29.         }
  30.             only %}
  31.     </div>
  32.     <div class="title mb-4">
  33.         {%- apply spaceless -%}
  34.             {%- autoescape false -%}
  35.                 <h1>
  36.                     {%- block h1 -%}
  37.                         {%- if offres is defined -%}
  38.                             {{offres.getTotalItemCount > 1 ? offres.getTotalItemCount ~ ' offres d\'emploi' : 'Offres d\'emploi' -}}
  39.                         {%- else -%}
  40.                             Offres d'emploi
  41.                         {%- endif -%}
  42.                     {%- endblock -%}
  43.                 </h1>
  44.                 <div class="triangle-defaut"></div>
  45.             {%- endautoescape -%}
  46.         {%- endapply -%}
  47.     </div>
  48.     <div class="w-100 d-md-block d-lg-none pb-4">
  49.         {% include 'actualite-etablissement/_includes/search-options.html.twig' with { type: 'mobile'} %}
  50.     </div>
  51.     <div class="wrap">
  52.         <section>
  53.             {% if offres|length %}
  54.                 {% for offre in offres %}
  55.                 {% set imgAlt = [
  56.                 offre.etablissement.codePostal,
  57.                 (offre.etablissement.ville ? offre.etablissement.ville.libelle : ''),
  58.                 offre.etablissement.denomination,
  59.                 ]|join(' - ')|trim(' -') %}
  60.                     <article>
  61.                         <figure class="resize">
  62.                             {% if offre.etablissement.isClient and offre.etablissement.imagesDiaporama is not empty %}
  63.                                 {% set firstDiapo = offre.etablissement.imagesDiaporama | first %}
  64.                                 <img class="resp" src="{{ asset('images/jouve/photo/' ~ firstDiapo) | imagine_filter('diapo_list') }}" alt="{{ imgAlt }}" title="{{ imgAlt }}">
  65.                             {% else %}
  66.                                 <span class="no-logo"></span>
  67.                             {% endif %}
  68.                         </figure>
  69.                         <div class="content">
  70.                             <span class="date">
  71.                                 Posté {{ offre.dateActualisation | ago }}
  72.                             </span>
  73.                             <header>
  74.                                 {% if offre.etablissement.logo is not empty %}
  75.                                     <figure>
  76.                                         <img src="{{ vich_uploader_asset(offre.etablissement.logo, 'logoFile') | imagine_filter('etab_emploi_logo') }}" alt="{{ imgAlt }}" title="{{ imgAlt }}">
  77.                                     </figure>
  78.                                 {% endif %}
  79.                                 <div>
  80.                                     <p class="city">
  81.                                     {% if offre.contrat != "N/A" %}{{ offre.contrat }} | {% endif %}{{ offre.etablissement.ville.libelle }}
  82.                                     {% if offre.etablissement.departement %}
  83.                                          ({{ offre.etablissement.departement.id }})
  84.                                     {% endif %}
  85.                                     </p>
  86.                                 <h2>
  87.                                     <a href="{{ path('offre-emploi', {'id': offre.id}) }}" data-trace-action="{{ constant('App\\Entity\\Trace::EMPLOI') | e('html_attr') }}" data-trace-etab="{{ offre.etablissement.id | e('html_attr') }}">
  88.                                     {% if offre.profil == "N/A" %} {{ offre.libelle }} {%else%} {{ offre.profil }} {%endif%}
  89.                                     </a>
  90.                                 </h2>
  91.                                     <p>{{ offre.etablissement.denomination | u.truncate(50,  '…', true) }}</p>
  92.                                 </div>
  93.                             </header>
  94.                             <p>{{ offre.description|striptags|u.truncate(190, '…', true)|raw }}</p>
  95.                             {% if offre.etablissement is defined and offre.etablissement is not empty %}
  96.                                 <div class="w-100 d-flex">
  97.                                     <a class="see-more" href="{{ path('offre-emploi', {'id': offre.id}) }}" data-trace-action="{{ constant('App\\Entity\\Trace::EMPLOI') | e('html_attr') }}" data-trace-etab="{{ offre.etablissement.id | e('html_attr') }}">Voir & Postuler</a>
  98.                                 </div>
  99.                             {% endif %}
  100.                         </div>
  101.                     </article>
  102.                 {% endfor %}
  103.                 <div class="navigation">
  104.                     {{ knp_pagination_render(offres, 'partial/pagination.html.twig') }}
  105.                 </div>
  106.             {% else %}
  107.                 <p class="m-3 text-center">Aucune offre d'emploi ne correspond à votre requête.</p>
  108.             {% endif %}
  109.         </section>
  110.         <aside>
  111.             {% include 'actualite-etablissement/_includes/search-options.html.twig' with { type : 'aside'} %}
  112.         </aside>
  113.     </div>
  114. </section>
  115. {% endblock %}
  116. {% block data_layer %}
  117. <script>
  118. window.dataLayer = window.dataLayer || [];
  119. // 1. Contexte global de la page liste
  120. dataLayer.push({
  121.   event: "page_context",
  122.   page_type: "liste_offres_emploi",
  123.   liste_type: "emploi",
  124.   site_section: "emplois",
  125.   education_niveau: {{ (niveaux ? niveaux | join('_') : null) | json_encode(constant('JSON_UNESCAPED_UNICODE')) | raw }},
  126.   poste_type: {{ (profils ? profils | join('_') : null) | json_encode(constant('JSON_UNESCAPED_UNICODE')) | raw }},
  127.   region: null,
  128.   departement: null,
  129.   ville: null,
  130.   code_postal: null,
  131.   recherche_type: "emploi",
  132.   total_resultats: {{ offres is defined and offres ? offres.getTotalItemCount : 0 }},
  133.   numero_pagination: {{ app.request.query.get('page', 1) }}
  134. });
  135. // 2. Événement métier : affichage d’une liste d’offres d’emploi
  136. dataLayer.push({ ecommerce: null });
  137. {% set items = [] %}
  138. {% if offres is defined and offres|length %}
  139.     {% for offre in offres %}
  140.         {% set item = {
  141.             'item_id': offre.id,
  142.             'item_name': offre.profil != 'N/A' ? offre.profil.libelle : offre.libelle,
  143.             'item_category': 'offre_emploi',
  144.             'item_category2': offre.etablissement ? typeEtablissementSimple(offre.etablissement.type) : null,
  145.             'item_category3': offre.profil and offre.profil.slug ? (offre.profil.slug|lower|replace({'-': '_'}) ) : '',
  146.             'item_category4': offre.contrat != 'N/A' ? offre.contrat.libelle : null,
  147.             'location_id': offre.etablissement and offre.etablissement.ville ? offre.etablissement.ville.departement.id ~ "_" ~ offre.etablissement.codePostal ~ "_" ~ offre.etablissement.ville.slug | replace({'-': '_'}) : null,
  148.             'index': loop.index,
  149.             'etablissement_id': offre.etablissement ? offre.etablissement.id : null,
  150.             'etablissement_nom': offre.etablissement ? offre.etablissement.denomination : null,
  151.             'etablissement_segment': offre.etablissement and offre.etablissement.isClient ? 'client' : 'prospect'
  152.         } %}
  153.         {% set items = items|merge([item]) %}
  154.     {% endfor %}
  155. {% endif %}
  156. dataLayer.push({
  157.   event: "view_item_list",
  158.   ecommerce: {
  159.     item_list_id: "emplois_toutes_offres",
  160.     item_list_name: "Offres d'emploi",
  161.     items: {{ items|json_encode(constant('JSON_UNESCAPED_UNICODE'))|raw }}
  162.   }
  163. });
  164. console.log(dataLayer);
  165. </script>
  166. {% endblock %}