{% extends 'base.html.twig' %}
{% block title -%}
{% autoescape false -%}
{%- apply spaceless -%}
{% if etablissement -%}
Offre Emploi
{% if form.vars.value.libelle is defined and form.vars.value.libelle is not empty %} - {{ form.vars.value.libelle }}
{% endif %} - {{ etablissement.denomination|striptags }}
{% set quoi = etablissement.categoriePrimaire|categorie2quoi %}
{%- if quoi %} - {{ quoi.rubrique.libelle }}
{% endif -%}
{%- if etablissement.ville %} - {{ etablissement.ville|lieuLibelle }}
{%- if etablissement.ville.departement %} - {{ etablissement.ville.departement|lieuLibelle }}
{% endif %}
{%- endif %} - enseignement-prive.info
{%- else -%}
{{- block('h1') }} - Annuaire Enseignement-Privé
{%- endif -%}
{%- endapply -%}
{%- endautoescape -%}
{%- endblock -%}
{% block description %}Enseignement-prive.info met à votre disposition une liste d'offres d'emplois spécialisés dans l'enseignement privé
{% endblock %}
{% block body %}
<section class="container page-offres">
<div id="breadcrumb">
{% include 'offre-emploi/_includes/breadcrumb.html.twig' with {
'lieu' : lieu,
}
only %}
</div>
<div class="title mb-4">
{%- apply spaceless -%}
{%- autoescape false -%}
<h1>
{%- block h1 -%}
{%- if offres is defined -%}
{{offres.getTotalItemCount > 1 ? offres.getTotalItemCount ~ ' offres d\'emploi' : 'Offres d\'emploi' -}}
{%- else -%}
Offres d'emploi
{%- endif -%}
{%- endblock -%}
</h1>
<div class="triangle-defaut"></div>
{%- endautoescape -%}
{%- endapply -%}
</div>
<div class="w-100 d-md-block d-lg-none pb-4">
{% include 'actualite-etablissement/_includes/search-options.html.twig' with { type: 'mobile'} %}
</div>
<div class="wrap">
<section>
{% if offres|length %}
{% for offre in offres %}
{% set imgAlt = [
offre.etablissement.codePostal,
(offre.etablissement.ville ? offre.etablissement.ville.libelle : ''),
offre.etablissement.denomination,
]|join(' - ')|trim(' -') %}
<article>
<figure class="resize">
{% if offre.etablissement.isClient and offre.etablissement.imagesDiaporama is not empty %}
{% set firstDiapo = offre.etablissement.imagesDiaporama | first %}
<img class="resp" src="{{ asset('images/jouve/photo/' ~ firstDiapo) | imagine_filter('diapo_list') }}" alt="{{ imgAlt }}" title="{{ imgAlt }}">
{% else %}
<span class="no-logo"></span>
{% endif %}
</figure>
<div class="content">
<span class="date">
Posté {{ offre.dateActualisation | ago }}
</span>
<header>
{% if offre.etablissement.logo is not empty %}
<figure>
<img src="{{ vich_uploader_asset(offre.etablissement.logo, 'logoFile') | imagine_filter('etab_emploi_logo') }}" alt="{{ imgAlt }}" title="{{ imgAlt }}">
</figure>
{% endif %}
<div>
<p class="city">
{% if offre.contrat != "N/A" %}{{ offre.contrat }} | {% endif %}{{ offre.etablissement.ville.libelle }}
{% if offre.etablissement.departement %}
({{ offre.etablissement.departement.id }})
{% endif %}
</p>
<h2>
<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') }}">
{% if offre.profil == "N/A" %} {{ offre.libelle }} {%else%} {{ offre.profil }} {%endif%}
</a>
</h2>
<p>{{ offre.etablissement.denomination | u.truncate(50, '…', true) }}</p>
</div>
</header>
<p>{{ offre.description|striptags|u.truncate(190, '…', true)|raw }}</p>
{% if offre.etablissement is defined and offre.etablissement is not empty %}
<div class="w-100 d-flex">
<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>
</div>
{% endif %}
</div>
</article>
{% endfor %}
<div class="navigation">
{{ knp_pagination_render(offres, 'partial/pagination.html.twig') }}
</div>
{% else %}
<p class="m-3 text-center">Aucune offre d'emploi ne correspond à votre requête.</p>
{% endif %}
</section>
<aside>
{% include 'actualite-etablissement/_includes/search-options.html.twig' with { type : 'aside'} %}
</aside>
</div>
</section>
{% endblock %}
{% block data_layer %}
<script>
window.dataLayer = window.dataLayer || [];
// 1. Contexte global de la page liste
dataLayer.push({
event: "page_context",
page_type: "liste_offres_emploi",
liste_type: "emploi",
site_section: "emplois",
education_niveau: {{ (niveaux ? niveaux | join('_') : null) | json_encode(constant('JSON_UNESCAPED_UNICODE')) | raw }},
poste_type: {{ (profils ? profils | join('_') : null) | json_encode(constant('JSON_UNESCAPED_UNICODE')) | raw }},
region: null,
departement: null,
ville: null,
code_postal: null,
recherche_type: "emploi",
total_resultats: {{ offres is defined and offres ? offres.getTotalItemCount : 0 }},
numero_pagination: {{ app.request.query.get('page', 1) }}
});
// 2. Événement métier : affichage d’une liste d’offres d’emploi
dataLayer.push({ ecommerce: null });
{% set items = [] %}
{% if offres is defined and offres|length %}
{% for offre in offres %}
{% set item = {
'item_id': offre.id,
'item_name': offre.profil != 'N/A' ? offre.profil.libelle : offre.libelle,
'item_category': 'offre_emploi',
'item_category2': offre.etablissement ? typeEtablissementSimple(offre.etablissement.type) : null,
'item_category3': offre.profil and offre.profil.slug ? (offre.profil.slug|lower|replace({'-': '_'}) ) : '',
'item_category4': offre.contrat != 'N/A' ? offre.contrat.libelle : null,
'location_id': offre.etablissement and offre.etablissement.ville ? offre.etablissement.ville.departement.id ~ "_" ~ offre.etablissement.codePostal ~ "_" ~ offre.etablissement.ville.slug | replace({'-': '_'}) : null,
'index': loop.index,
'etablissement_id': offre.etablissement ? offre.etablissement.id : null,
'etablissement_nom': offre.etablissement ? offre.etablissement.denomination : null,
'etablissement_segment': offre.etablissement and offre.etablissement.isClient ? 'client' : 'prospect'
} %}
{% set items = items|merge([item]) %}
{% endfor %}
{% endif %}
dataLayer.push({
event: "view_item_list",
ecommerce: {
item_list_id: "emplois_toutes_offres",
item_list_name: "Offres d'emploi",
items: {{ items|json_encode(constant('JSON_UNESCAPED_UNICODE'))|raw }}
}
});
console.log(dataLayer);
</script>
{% endblock %}