AR

اختر لغتك

بحث

Royal Air Maroc

مدينة الألوان والعطور والسحر الخالد

ابدأ الآن

لم يتم العثور على رحلات جوية!

                                   
حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> cur_CarouselSection.ImageDesktopFieldSetFieldSet.Schedule  [in template "64899143380625#20119#8206410" at line 38, column 40]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign scheduleStr = cur_CarouselSec...  [in template "64899143380625#20119#8206410" at line 38, column 17]
----
1<#-- 
2 Add elements from the sidebar to define your template. Type "${" to use the 
3 autocomplete feature. 
4  
5 #set($serviceContext = $portal.getClass().forName("com.liferay.portal.service.ServiceContextThreadLocal").getServiceContext()) 
6 #set($layoutLocalServiceUtil = $serviceLocator.findService("com.liferay.portal.service.LayoutLocalService")) 
7 #set($themeDisplay = $serviceContext.getThemeDisplay()) 
8 #set($journalTool = $serviceLocator.findService("ram-single-site-portlet", "es.indra.velocity.tools.JournalTool")) 
9 #set($httpRequest = $themeDisplay.getRequest()) 
10 #set($isMobile = $journalTool.isMobile($httpRequest)) 
11 --> 
12 
13 <div class="offersUpdate flex-c flex-g-16 f-mb-64"> 
14   <h2 class="whyram__title f-heading-l f-fw-l"><@liferay.language key='offers-updates-title' /></h2> 
15   <div class="js-offersUpdateContainer offersUpdate__container"> 
16     <div class="swiper swiper-offersUpdate"> 
17       <div class="swiper-wrapper"> 
18          
19 				<#assign currentDateMillis = .now?datetime> 
20 				<#assign array = []>		 
21				 
22				 
23				 
24 				<#if ImageDesktopFieldSet.getSiblings()?has_content> 
25 						<#list ImageDesktopFieldSet.getSiblings() as cur_CarouselSection> 
26 						 
27						 
28						 
29					 
30						 
31						 
32						 
33 								<#assign isActive = getterUtil.getBoolean(cur_CarouselSection.ImageDesktopFieldSetFieldSet.Active.getData())> 
34 								<#-- assign scheduleDateMillis = cur_CarouselSection.ImageDesktopFieldSetFieldSet.Schedule.getData() --> 
35								 
36                 
37                <#-- Recupera y parsea la fecha programada (yyyy-MM-dd) --> 
38                <#assign scheduleStr = cur_CarouselSection.ImageDesktopFieldSetFieldSet.Schedule.getData()> 
39                <#if scheduleStr?? && scheduleStr?has_content> 
40                      <#assign scheduleDate = scheduleStr?date("yyyy-MM-dd")> 
41                     <#-- Convierte a milisegundos (00:00:00 de esa fecha en la zona configurada) --> 
42                     <#assign scheduleDateMillis = scheduleDate?long> 
43 										<#assign isPast = (currentDateMillis?long gt scheduleDateMillis)> 
44																				 
45                     <#if isActive == true && isPast> 
46 														<#assign item = { 
47 															"data": cur_CarouselSection, 
48 															"order": cur_CarouselSection.ImageDesktopFieldSetFieldSet.order.getData() 
49 														}> 
50 													 <#assign array = array + [item]> 
51 										</#if> 
52                      
53                 <#else> 
54                      <#if isActive> 
55 										 <#assign item = { 
56 												"data": cur_CarouselSection, 
57 												"order": cur_CarouselSection.ImageDesktopFieldSetFieldSet.order.getData() 
58 											}> 
59 										 <#assign array = array + [item]> 
60                      </#if> 
61                </#if> 
62             </#list> 
63             
64             <#if array?size != 0> 
65     					<#assign sortedArray = array?sort_by("order")> 
66         	    <#list sortedArray as cur_ImageDesktop> 
67 							 
68 							<div class="swiper-slide ${cur_ImageDesktop.order}"> 
69 
70 							<#assign link = ""> 
71							 
72							 
73							 
74 							<#if cur_ImageDesktop.data.ImageDesktopFieldSetFieldSet.Link_to_Page5551.getFriendlyUrl() != ""> 
75 								<#assign link = cur_ImageDesktop.data.ImageDesktopFieldSetFieldSet.Link_to_Page5551.getFriendlyUrl()> 
76     				  <#else> 
77 								<#assign link = cur_ImageDesktop.data.ImageDesktopFieldSetFieldSet.linkUrl.getData()> 
78     				  </#if> 
79                      
80               <a href="${link}" class="offersUpdate__card js-offersUpdateCard"> 
81 					 
82 									<img class="offersUpdate__img-mobile" src="${cur_ImageDesktop.data.ImageDesktopFieldSetFieldSet.ImageMobileFieldSet.ImageMobile.getData()}" alt="${cur_ImageDesktop.data.ImageDesktopFieldSetFieldSet.ImageMobileFieldSet.ImageMobileFieldSetFieldSet.altMobile.getData()}"> 
83 									<img class="offersUpdate__img" src="${cur_ImageDesktop.data.ImageDesktop.getData()}" alt="${cur_ImageDesktop.data.ImageDesktopFieldSetFieldSet.altDesktop.getData()}" /> 
84 
85 								<div class="offersUpdate__footer"> 
86 										<span  class="ram-btn-f2"> 
87 												${cur_ImageDesktop.data.ImageDesktopFieldSetFieldSet.Button_textFieldSet.Button_text.getData()} 
88 										</span> 
89 								</div> 
90               </a> 
91             </div> 
92                 </#list> 
93             </#if> 
94 				</#if> 
95       </div> 
96     </div> 
97     <button class="offersUpdate__arrow ram-btn-f2 swiper-button-prev" tabindex="-1"></button> 
98     <button class="offersUpdate__arrow ram-btn-f2 swiper-button-next" tabindex="-1"></button> 
99   </div> 
100   <div class="swiper-pagination offersUpdate__pagination"></div> 
101 </div> 
102 <script> 
103 document.addEventListener("DOMContentLoaded", () => { 
104   const swiperOffersUpdateWrapper = document.querySelector('.js-offersUpdateContainer'), 
105         swiper = document.querySelector('.swiper-offersUpdate'); 
106  
107   var swiperOffersUpdate = new Swiper(".swiper-offersUpdate", { 
108     uniqueNavElements: true, 
109     loop: true, 
110     centeredSlides: true, 
111     disableOnInteraction: true, 
112     keyboard: { 
113       enabled: true, 
114     }, 
115     autoplay: { 
116       delay: 5000, 
117       disableOnInteraction: true, 
118     }, 
119     slidesPerView: 1, 
120     navigation: { 
121       nextEl: ".offersUpdate .swiper-button-next", 
122       prevEl: ".offersUpdate .swiper-button-prev", 
123     }, 
124     pagination: { 
125       el: ".swiper-pagination", 
126       clickable: true, 
127     }, 
128     on: { 
129       init: function () { 
130         let params = swiper.swiper.params; 
131         const slides = document.querySelectorAll('.swiper-offersUpdate .swiper-slide'); 
132          
133         if (slides.length <= 3) { 
134           params.loop = false; 
135           params.rewind = true; 
136
137       }, 
138     }, 
139   }); 
140    
141   if (swiperOffersUpdateWrapper) { 
142     swiperOffersUpdateWrapper.addEventListener('mouseover', () => { 
143       swiperOffersUpdateWrapper.classList.add('offersUpdate--hover'); 
144     }); 
145  
146     swiperOffersUpdateWrapper.addEventListener('mouseout', () => { 
147       swiperOffersUpdateWrapper.classList.remove('offersUpdate--hover'); 
148     }); 
149      
150     swiper.addEventListener('mouseover', () => { 
151         swiperOffersUpdate.autoplay.stop(); 
152       }); 
153      
154       swiper.addEventListener('mouseleave', () => { 
155         swiperOffersUpdate.autoplay.start(); 
156       }); 
157
158  
159    
160 }); 
161 </script> 

مرحباً بك في برنامج الولاء "سفر فلاير" الخاص بنا

  • اكسب الأميال على كل رحلة أو نشاط من خلال شركائنا من شركات الطيران وغير شركات الطيران

  • استردّ أميالكَ للحصول على مكافآت حصرية

  • Image Alternative Text
    انضم الآن

    حمّل تطبيقنا

    اكتشف عالماً من الراحة مع تطبيقنا! سواء كنت تبحث عن عروض مخصصة، دعم عملاء سريع، أو تجربة مستخدم مثالية. لا تفوّت الفرصة!