{% set url = app.request.server.get('REQUEST_SCHEME') ~ '://' ~ app.request.server.get('SERVER_NAME') ~ app.request.server.get('REQUEST_URI') %}{% set cruise = cruise|default(app.request.get('croisiere') ? getCruiseById(app.request.get('croisiere')) : null) %}{% set cabinDatasTree = cabinDatasTree|default(cruise ? getCabinDatasTreeForCruise(cruise) : []) %}{% set cabinDatasTreeJson = cabinDatasTreeJson|default(cruise ? getCabinDatasTreeJsonForCruise(cruise) : []) %}{% set hasAtmospheres = hasAtmospheres|default(cruise ? cruiseHasAtmospheres(cruise) : false) %}{% block stylesheets %}<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" crossorigin=""/>{% endblock %}{% block content %}{% set countries = [] %}{% set drinks_packages = [] %}{% set segments = (cruise.itinerary.itinerarySegments|default([])) %}{% set atmospheres = [] %}{% set pathImage = '/img/photos-temporaires/cruise/' %}{# Utiliser cruise depuis le controller #}{% set nb_days = cruise.itinerary.numberOfDays|default(1) %}{# Calcul des dates de départ et d'arrivée #}{% set departure_date = cruise.date|default('') %}{% set arrival_date = '' %}{% set departurePort = get_departure_port(cruise.itinerary).name|default('') %}{% set arrivalPort = get_arrival_port(cruise.itinerary).name|default(departurePort) %}<div id="loader-wrapper" class="loader-container"><div class="loader"></div></div>{% set services = [] %}{% set dddI18n = {step_names: {'1': 'ddd.step.type'|trans,'2': 'ddd.step.atmosphere'|trans,'3': 'ddd.step.cabin'|trans,'4': 'ddd.step.quote'|trans,'5': 'ddd.js.step_confirmation'|trans,},step_title: {type: 'ddd.step_title.type'|trans,atmosphere: 'ddd.step_title.atmosphere'|trans,selection: 'ddd.step_title.selection'|trans,quote: 'ddd.step_title.quote'|trans,},choose_cabin_type: 'ddd.choose_cabin_type'|trans,choose_atmosphere: 'ddd.choose_atmosphere'|trans,atmosphere_no_available: 'ddd.atmosphere.no_available'|trans,atmosphere_title_short: 'ddd.atmosphere.title_short'|trans,validate_choice: 'ddd.validate_choice'|trans,accessibility: {step_1: 'ddd.accessibility.step_1'|trans,step_2: 'ddd.accessibility.step_2'|trans,step_3: 'ddd.accessibility.step_3'|trans,step_4: 'ddd.accessibility.step_4'|trans,confirmation: 'ddd.accessibility.confirmation'|trans,reservation_progress: 'ddd.accessibility.reservation_progress'|trans,},js: {unknown: 'ddd.js.unknown'|trans,cabin_fallback: 'ddd.js.cabin_fallback'|trans,atmosphere_fallback: 'ddd.js.atmosphere_fallback'|trans,parent_benefits_single: 'ddd.js.parent_benefits_single'|trans,parent_benefits_multiple: 'ddd.js.parent_benefits_multiple'|trans,quote_error: 'ddd.js.quote_error'|trans,copy_file_error: 'ddd.js.copy_file_error'|trans,copy_file_manual: 'ddd.js.copy_file_manual'|trans,copy_error_manual: 'ddd.js.copy_error_manual'|trans,copy_success: 'ddd.js.copy_success'|trans,pdf_no_data: 'ddd.js.pdf_no_data'|trans,cabin_details_title: 'ddd.js.cabin_details_title'|trans,step_fallback: 'ddd.js.step_fallback'|trans,surface_label: 'ddd.cabin_characteristics.surface_label'|trans,deck_label: 'ddd.cabin_characteristics.decks'|trans,},} %}<divclass="content container-fluid cruise-container"data-ddd-i18n="{{ dddI18n|json_encode|e('html_attr') }}"data-ddd-lazy="1"data-cruise-id="{{ cruise.id|default('') }}"data-has-atmospheres="{{ hasAtmospheres ? '1' : '0' }}"data-cabin-datas-tree='{{ cabinDatasTreeJson|json_encode(constant('JSON_UNESCAPED_UNICODE'))|e('html_attr') }}'><div class="col-right"><h1 class="text-xl-bd color-secondary-dark">{{ 'ddd.trip_summary'|trans }}</h1><div class="ddd-aside">{% include 'pages/_includes/ddd/_summary.html.twig' with {cruise: cruise,itinerary: cruise.itinerary,company: company|default(null),hasAtmospheres: hasAtmospheres,companyLogoUrl: companyLogoUrl|default(null),shipMainImageUrl: shipMainImageUrl|default(null),} %}</div></div><divclass="col-left">{# ---------- Fil du parcours ---------- #}<div class="thread">{# Retour desktop uniquement — mobile : #mobile-back-btn #}<button id="btn-back" type="button" class="btn medium style2 transparent-white text-md-sbd thread-back-desktop"><div class="icon">{{ getLucidIcon('arrow-left') }}</div><span>{{ 'common.back'|trans }}</span></button><div class="mobile-thread"><div class="mobile-thread-nav"><button type="button" class="mobile-back-btn" id="mobile-back-btn" aria-label="{{ 'common.back'|trans }}"><div class="icon">{{ getLucidIcon('arrow-left') }}</div></button><div class="step-name" id="mobile-step-name">{{ 'ddd.step.type'|trans }}</div><div class="step-number" id="mobile-step-number">1/{{ hasAtmospheres ? 4 : 3 }}</div></div><button type="button" class="mobile-recap-btn" id="mobile-recap-btn">{{ 'ddd.mobile.recap_full'|trans }}</button></div><div id="reservation-thread" class="" data-visible-steps="{{ hasAtmospheres ? 4 : 3 }}"><div id="reservation-step-1" class="current" data-logical-step="1"><div class="icon br2">{{ getLucidIcon('ratio') }}</div><div class="step step br1 text-xs-md color-secondary-dark">{{ 'ddd.step.type'|trans }}</div></div>{% if hasAtmospheres %}<div id="reservation-step-2" class="" data-logical-step="2"><div class="icon br2">{{ getLucidIcon('sparkle') }}</div><div class="step br1 text-xs-md color-secondary-dark">{{ 'ddd.step.atmosphere'|trans }}</div></div>{% endif %}<div id="reservation-step-3" class="" data-logical-step="3"><div class="icon br2">{{ getLucidIcon('bed-double') }}</div><div class="step br1 text-xs-md color-secondary-dark">{{ 'ddd.step.cabin'|trans }}</div></div><div id="reservation-step-4" class="" data-logical-step="4"><div class="icon br2">{{ getLucidIcon('file-text') }}</div><div class="step br1 text-xs-md color-secondary-dark">{{ 'ddd.step.quote'|trans }}</div></div></div></div><div id="ddd-step-title-icons" hidden aria-hidden="true"><span data-step="1">{{ getLucidIcon('ratio') }}</span><span data-step="2">{{ getLucidIcon('sparkle') }}</span><span data-step="3">{{ getLucidIcon('bed-double') }}</span><span data-step="4">{{ getLucidIcon('file-text') }}</span></div><h2 id="step-title" class="step-title text-xl-bd color-secondary-dark"><span class="step-title__leading" aria-hidden="true">{{ getLucidIcon('ratio') }}</span><span class="step-title__text">{{ 'ddd.step_title.type'|trans }} </span><select name="select_cabin_type" class="select-cabin-type"><option disabled selected value="">{{ 'ddd.choose_cabin_type'|trans|default('Choisissez un type de cabine') }}</option>{% for cabinTypeNode in cabinDatasTree %}{% for subTypeNode in cabinTypeNode.cabinSubTypes|default([]) %}<option value="{{ subTypeNode.cabinSubType.id }}">{{ subTypeNode.cabinSubType.name }}</option>{% endfor %}{% endfor %}</select><select name="select_atmosphere" class="select-atmosphere"{% if not hasAtmospheres %} hidden{% endif %}><option disabled selected value="">{{ 'ddd.choose_atmosphere'|trans }}</option></select></h2><div class="ddd-main">{# ---------- Étape 1 : choix du type de cabine ---------- #}<div id="step-type" class="ddd-step-panel is-active"><div class="ddd-step-loader text-sm-md color-grey-text" aria-live="polite">{{ 'common.loading'|trans|default('Chargement...') }}</div></div>{# ---------- Étape 2 : choix de l'ambiance (si applicable) ---------- #}{% if hasAtmospheres %}<div id="step-atmosphere" class="ddd-step-panel"><div class="ddd-step-loader text-sm-md color-grey-text" aria-live="polite">{{ 'common.loading'|trans|default('Chargement...') }}</div></div>{% endif %}{# ---------- Étape 3 : choix de la cabine ---------- #}<div id="step-subtype" class="ddd-step-panel"><div class="ddd-step-loader text-sm-md color-grey-text" aria-live="polite">{{ 'common.loading'|trans|default('Chargement...') }}</div></div>{# ---------- Étape 4 : formulaire de demande de devis ---------- #}<div id="step-quote-form" class="ddd-step-panel"><div class="ddd-step-loader text-sm-md color-grey-text" aria-live="polite">{{ 'common.loading'|trans|default('Chargement...') }}</div></div>{# ---------- Confirmation après envoi du devis ---------- #}<div id="step-quote-summary" style="display: none;">{% include 'pages/_includes/ddd/_quote_summary.html.twig' %}</div></div></div></div>{# <div class="validation" style=""><div class="floa">{{ 'ddd.pay_in_installments'|trans }}<img src="https://www.croisiland.com/_imgs/floa/4X-bleu.svg?1710340929" alt="FLOA"/></div><div class="total-amount"><div class="final-price amount"><span></span>{{ 'common.per_person_short'|trans }}</div><button class="btn medium style5 disabled" disabled>{{ 'ddd.validate_choice'|trans }}</button></div></div> #}{% endblock %}