templates/application/whileresume/application/jobs/_card-content.html.twig line 1

Open in your IDE?
  1. {# ═══════════════════════════════════════════════════════════════════
  2.    PARTIAL : Contenu interne de la card d'offre
  3.    Utilisé pour le rendu initial. Ensuite, ce contenu est remplacé
  4.    en AJAX (via JS buildJobHtml() dans show.html.twig).
  5. ═══════════════════════════════════════════════════════════════════ #}
  6. <div class="job-card-head">
  7.     <h1 class="job-card-title">{{ job.jobTitle }}</h1>
  8.     <div class="job-card-meta">
  9.         {% if job.online == 1 %}
  10.         <span class="job-card-meta-item job-card-meta-active">
  11.             <span class="job-card-active-dot"></span>
  12.             {{ 'job.show.activeOffer'|trans({}, 'whr-public') }}
  13.         </span>
  14.         {% endif %}
  15.         {% if job.websearch == 1 %}
  16.             <span class="job-card-meta-item job-card-meta-external">⚡ {{ 'job.show.externalSource'|trans({}, 'whr-public') }}</span>
  17.         {% endif %}
  18.             {% if job.city is not empty %}
  19.                 <span class="job-card-meta-item">
  20.                     <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg>
  21.                     {{ job.city }}
  22.                 </span>
  23.             {% endif %}
  24.             {% if job.country is not empty %}
  25.             <span class="job-card-meta-item">
  26.                 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg>
  27.                 {{ job.country }}
  28.             </span>
  29.             {% endif %}
  30.         {% if job.employmentType is not empty %}
  31.             <span class="job-card-meta-item">
  32.                 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="7" width="20" height="14" rx="2"/><path d="M16 7V5a4 4 0 00-8 0v2"/></svg>
  33.                 {{ job.employmentType }}
  34.             </span>
  35.         {% endif %}
  36.         {% if job.remoteWork is not empty %}
  37.             <span class="job-card-meta-item">
  38.                 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8M12 17v4"/></svg>
  39.                 {{ job.remoteWork }}
  40.             </span>
  41.         {% endif %}
  42.         {% if job.experienceLevel is not empty %}
  43.             <span class="job-card-meta-item">
  44.                 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 11-5.93-9.14"/><path d="M22 4L12 14.01l-3-3"/></svg>
  45.                 {{ job.experienceLevel }}
  46.             </span>
  47.         {% endif %}
  48.         {% if job.salaryPeriod is not null %}
  49.             <span class="job-card-meta-item job-card-meta-salary">
  50.                 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 000 7h5a3.5 3.5 0 010 7H6"/></svg>
  51.                 {{ job.salaryMin }}–{{ job.salaryMax }} {{ job.devise }}/{{ job.salaryPeriod }}
  52.             </span>
  53.         {% endif %}
  54.     </div>
  55. </div>
  56. {% if job.jobSummary is not null %}
  57.     <div class="job-card-section" id="section-presentation">
  58.         <div class="job-card-section-title">
  59.             <span class="job-card-section-icon">
  60.                 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="9" y1="13" x2="15" y2="13"/><line x1="9" y1="17" x2="15" y2="17"/></svg>
  61.             </span>
  62.             <span>{{ 'job.show.sectionPresentation'|trans({}, 'whr-public') }}</span>
  63.         </div>
  64.         <p class="job-card-section-text">{{ job.jobSummary|raw }}</p>
  65.     </div>
  66. {% endif %}
  67. {% if isCandidateUser %}
  68.     {% if job.keyResponsabilities is not null %}
  69.         <div class="job-card-section" id="section-missions">
  70.             <div class="job-card-section-title">
  71.                 <span class="job-card-section-icon">
  72.                     <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 11 12 14 22 4"/><path d="M21 12v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h11"/></svg>
  73.                 </span>
  74.                 <span>{{ 'job.show.sectionMissions'|trans({}, 'whr-public') }}</span>
  75.             </div>
  76.             <p class="job-card-section-text">{{ job.keyResponsabilities|raw }}</p>
  77.         </div>
  78.     {% endif %}
  79.     {% if job.requirements is not null %}
  80.         <div class="job-card-section" id="section-profile">
  81.             <div class="job-card-section-title">
  82.                 <span class="job-card-section-icon">
  83.                     <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
  84.                 </span>
  85.                 <span>{{ 'job.show.sectionProfile'|trans({}, 'whr-public') }}</span>
  86.             </div>
  87.             <p class="job-card-section-text">{{ job.requirements|raw }}</p>
  88.         </div>
  89.     {% endif %}
  90.     {% if job.benefits is not null %}
  91.         <div class="job-card-section" id="section-benefits">
  92.             <div class="job-card-section-title">
  93.                 <span class="job-card-section-icon">
  94.                     <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>
  95.                 </span>
  96.                 <span>{{ 'job.show.sectionBenefits'|trans({}, 'whr-public') }}</span>
  97.             </div>
  98.             <p class="job-card-section-text">{{ job.benefits|raw }}</p>
  99.         </div>
  100.     {% endif %}
  101.     <div class="job-card-actions">
  102.         <a href="{% if app.request.locale == 'en' %}{{ path('cvs_application_job_like',{'slug':job.slug}) }}{% else %}{{ path('locale_cvs_application_job_like',{'_locale':app.request.locale,'slug':job.slug}) }}{% endif %}"
  103.            class="job-action-btn job-action-btn-primary job-action-like{% if isLiked|default(false) %} is-liked{% endif %}"
  104.            id="cardLikeBtn"
  105.            data-liked="{{ isLiked|default(false) ? '1' : '0' }}"
  106.            data-job-slug="{{ job.slug }}">
  107.             <svg class="job-action-like-icon" viewBox="0 0 24 24" fill="currentColor"><path d="M20.84 4.61a5.5 5.5 0 00-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 00-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 000-7.78z"/></svg>
  108.             <span class="job-action-like-label">
  109.                 {% if isLiked|default(false) %}{{ 'job.show.interested'|trans({}, 'whr-public') }}{% else %}{{ 'job.show.imInterested'|trans({}, 'whr-public') }}{% endif %}
  110.             </span>
  111.         </a>
  112.         {% if job.websearch == 1 %}
  113.             <a href="{{ job.website|strip_query }}" target="_blank" rel="noopener" class="job-action-btn">
  114.                 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg>
  115.                 {{ 'job.show.apply'|trans({}, 'whr-public') }}
  116.             </a>
  117.         {% endif %}
  118.     </div>
  119. {% else %}
  120.     <div class="job-card-locked">
  121.         <div class="job-card-locked-icon">
  122.             <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0110 0v4"/></svg>
  123.         </div>
  124.         <div class="job-card-locked-title">{{ 'job.show.unlockTitle'|trans({}, 'whr-public') }}</div>
  125.         <div class="job-card-locked-text">{{ 'job.show.unlockText'|trans({}, 'whr-public') }}</div>
  126.         <div class="job-card-locked-buttons">
  127.             <a href="{% if app.request.locale == 'en' %}{{ path('whileresume_resume_en') }}{% else %}{{ path('whileresume_resume_fr') }}{% endif %}" class="job-card-locked-btn job-card-locked-btn-primary">
  128.                 {{ 'job.show.createProfileFree'|trans({}, 'whr-public') }}
  129.             </a>
  130.             <a href="{% if app.request.locale == 'en' %}{{ path('app_login') }}{% else %}{{ path('locale_app_login',{'_locale':app.request.locale}) }}{% endif %}" class="job-card-locked-btn job-card-locked-btn-secondary">
  131.                 {{ 'job.show.signIn'|trans({}, 'whr-public') }}
  132.             </a>
  133.         </div>
  134.     </div>
  135.     <div class="job-card-actions">
  136.         <button class="job-action-btn job-action-btn-primary job-action-btn-locked" id="cardLikeBtn" type="button" data-locked="1">
  137.             <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0110 0v4"/></svg>
  138.             {{ 'job.show.imInterestedLocked'|trans({}, 'whr-public') }}
  139.         </button>
  140.     </div>
  141. {% endif %}