{# ═══════════════════════════════════════════════════════════════════ PARTIAL : Contenu interne de la card d'offre Utilisé pour le rendu initial. Ensuite, ce contenu est remplacé en AJAX (via JS buildJobHtml() dans show.html.twig).═══════════════════════════════════════════════════════════════════ #}<div class="job-card-head"> <h1 class="job-card-title">{{ job.jobTitle }}</h1> <div class="job-card-meta"> {% if job.online == 1 %} <span class="job-card-meta-item job-card-meta-active"> <span class="job-card-active-dot"></span> {{ 'job.show.activeOffer'|trans({}, 'whr-public') }} </span> {% endif %} {% if job.websearch == 1 %} <span class="job-card-meta-item job-card-meta-external">⚡ {{ 'job.show.externalSource'|trans({}, 'whr-public') }}</span> {% endif %} {% if job.city is not empty %} <span class="job-card-meta-item"> <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> {{ job.city }} </span> {% endif %} {% if job.country is not empty %} <span class="job-card-meta-item"> <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> {{ job.country }} </span> {% endif %} {% if job.employmentType is not empty %} <span class="job-card-meta-item"> <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> {{ job.employmentType }} </span> {% endif %} {% if job.remoteWork is not empty %} <span class="job-card-meta-item"> <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> {{ job.remoteWork }} </span> {% endif %} {% if job.experienceLevel is not empty %} <span class="job-card-meta-item"> <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> {{ job.experienceLevel }} </span> {% endif %} {% if job.salaryPeriod is not null %} <span class="job-card-meta-item job-card-meta-salary"> <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> {{ job.salaryMin }}–{{ job.salaryMax }} {{ job.devise }}/{{ job.salaryPeriod }} </span> {% endif %} </div></div>{% if job.jobSummary is not null %} <div class="job-card-section" id="section-presentation"> <div class="job-card-section-title"> <span class="job-card-section-icon"> <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> </span> <span>{{ 'job.show.sectionPresentation'|trans({}, 'whr-public') }}</span> </div> <p class="job-card-section-text">{{ job.jobSummary|raw }}</p> </div>{% endif %}{% if isCandidateUser %} {% if job.keyResponsabilities is not null %} <div class="job-card-section" id="section-missions"> <div class="job-card-section-title"> <span class="job-card-section-icon"> <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> </span> <span>{{ 'job.show.sectionMissions'|trans({}, 'whr-public') }}</span> </div> <p class="job-card-section-text">{{ job.keyResponsabilities|raw }}</p> </div> {% endif %} {% if job.requirements is not null %} <div class="job-card-section" id="section-profile"> <div class="job-card-section-title"> <span class="job-card-section-icon"> <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> </span> <span>{{ 'job.show.sectionProfile'|trans({}, 'whr-public') }}</span> </div> <p class="job-card-section-text">{{ job.requirements|raw }}</p> </div> {% endif %} {% if job.benefits is not null %} <div class="job-card-section" id="section-benefits"> <div class="job-card-section-title"> <span class="job-card-section-icon"> <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> </span> <span>{{ 'job.show.sectionBenefits'|trans({}, 'whr-public') }}</span> </div> <p class="job-card-section-text">{{ job.benefits|raw }}</p> </div> {% endif %} <div class="job-card-actions"> <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 %}" class="job-action-btn job-action-btn-primary job-action-like{% if isLiked|default(false) %} is-liked{% endif %}" id="cardLikeBtn" data-liked="{{ isLiked|default(false) ? '1' : '0' }}" data-job-slug="{{ job.slug }}"> <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> <span class="job-action-like-label"> {% if isLiked|default(false) %}{{ 'job.show.interested'|trans({}, 'whr-public') }}{% else %}{{ 'job.show.imInterested'|trans({}, 'whr-public') }}{% endif %} </span> </a> {% if job.websearch == 1 %} <a href="{{ job.website|strip_query }}" target="_blank" rel="noopener" class="job-action-btn"> <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> {{ 'job.show.apply'|trans({}, 'whr-public') }} </a> {% endif %} </div>{% else %} <div class="job-card-locked"> <div class="job-card-locked-icon"> <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> </div> <div class="job-card-locked-title">{{ 'job.show.unlockTitle'|trans({}, 'whr-public') }}</div> <div class="job-card-locked-text">{{ 'job.show.unlockText'|trans({}, 'whr-public') }}</div> <div class="job-card-locked-buttons"> <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"> {{ 'job.show.createProfileFree'|trans({}, 'whr-public') }} </a> <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"> {{ 'job.show.signIn'|trans({}, 'whr-public') }} </a> </div> </div> <div class="job-card-actions"> <button class="job-action-btn job-action-btn-primary job-action-btn-locked" id="cardLikeBtn" type="button" data-locked="1"> <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> {{ 'job.show.imInterestedLocked'|trans({}, 'whr-public') }} </button> </div>{% endif %}