New safety video

An immersive journey into moroccan craftsmanship

An error occurred while processing the template.
The following has evaluated to null or missing:
==> ramUtils.getCurrentMarket(httpServletRequest)  [in template "64899143380625#20119#26025" at line 108, column 27]

----
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 market = ramUtils.getCurrentM...  [in template "64899143380625#20119#26025" at line 108, column 9]
----
1<#assign startTag = "img_id=" /> 
2<#assign endTag = "&" /> 
3<#assign imageUrl = ImageFieldSet.Image.getData() /> 
4<#assign result = ""  /> 
5 
6 
7<#if (imageUrl?contains(startTag))> 
8	<#assign startIndex = imageUrl?indexOf(startTag + startTag?length)  /> 
9	<#assign endIndex = imageUrl?indexOf(endTag + startIndex)  /> 
10 
11	<#if (endIndex > startIndex)> 
12	    <#assign result = imageUrl?substring(startIndex, endIndex)  /> 
13    <#else> 
14        <#assign result = imageUrl?substring(startIndex)  /> 
15	</#if> 
16<#else> 
17   <#assign result = "default"  /> 
18</#if> 
19 
20 
21 
22 
23<style> 
24.youtube-popup > div { 
25  position: absolute; 
26  width: 100%; /* equal to the iframe width */ 
27  height: 100%; /* equal to the iframe height */ 
28  top: 0; 
29  z-index: 100; 
30
31 
32#div-image-$result { 
33    background-image: url($Image.getData()); 
34    background-size: cover;  
35    width: 65%; 
36
37  
38</style> 
39 
40<#if getterUtil.getBoolean(Mirror.getData())> 
41 
42	<section id="our-crew-flightattendances"> 
43    <div class="container"> 
44      <div class="figure-text-overlapped"> 
45			<#if VideoLink.getData() != "" && VideoLink.getData() != "null"> 
46	            <div class="figure-overlapped"> 
47					<#assign videoId = (VideoLink.getData()?split("="))[1]!"" /> 
48			        <iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" src="https://www.youtube.com/embed/${videoId}?controls=0&rel=0" ></iframe> 
49                </div> 
50	        <#else> 
51			   <div class="figure-overlapped-reverse"> 
52			       <div id="div-image-${result}" class="image-background"> 
53				        <img alt="${ImageFieldSet.Image.getAttribute("alt")}" src="${ImageFieldSet.Image.getData()}" > 
54			       </div> 
55                </div> 
56			</#if> 
57			 
58			<div class="text-overlapped"> 
59          <h2 class="text-overlapped-title">${Intro.getData()}</h2> 
60          <h3 class="text-overlapped-heading">${Subtitle.getData()}</h3> 
61          <div class="text-overlapped-description">${Description.getData()}</div> 
62          <#if (Select6393.getData()=="button")> 
63            <div class="text-overlapped-button"> 
64                <a href="${LinkUrLFieldSet.LinkUrLFieldSetFieldSet.page_url.getData()}"> 
65                    <button class="btn btn-danger"> ${LinkUrLFieldSet.LinkUrLFieldSetFieldSet.Link_texte.getData()}</button> 
66                </a>     
67            </div> 
68          <#elseIf (Select6393.getData()=="link")> 
69            <a href="${LinkUrLFieldSet.LinkUrLFieldSetFieldSet.page_url.getData()}">${LinkUrLFieldSet.LinkUrLFieldSetFieldSet.Link_texte.getData()}</a> 
70          </#if> 
71        </div> 
72      </div> 
73    </div> 
74</section> 
75<#else> 
76 
77<section id="our-crew-flightattendances"> 
78	<div class="container"> 
79		<div class="figure-text-overlapped figure-text-overlapped-reversed"> 
80			<#if VideoLink.getData() != "" && VideoLink.getData()??> 
81	       <div class="figure-overlapped"> 
82					  <#assign videoId = (VideoLink.getData()?split("="))[1]!"" /> 
83			      <iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" src="https://www.youtube.com/embed/${videoId}?controls=0&rel=0" ></iframe> 
84          </div> 
85	    <#else> 
86			   <div class="figure-overlapped"> 
87			       <div id="div-image-${result}" class="image-background"> 
88				        <img alt="${ImageFieldSet.Image.getAttribute("alt")}" src="${ImageFieldSet.Image.getData()}" > 
89			       </div> 
90          </div> 
91			</#if> 
92		 
93			 
94			<div class="text-overlapped"> 
95          <h2 class="text-overlapped-title">${Intro.getData()}</h2> 
96          <h3 class="text-overlapped-heading">${Subtitle.getData()}</h3> 
97          <div class="text-overlapped-description">${Description.getData()}</div> 
98					<#-- 
99				<#if (Description.getData()?length < 400)> 
100					<div class="text-overlapped-description">${Description.getData()}</div> 
101				<#else> 
102					<#assign desc = Description.getData()?substring(0, 400) /> 
103					<div class="text-overlapped-description">${desc}</div> 
104				</#if> 
105			-->	 
106								 
107				<#assign httpServletRequest = themeDisplay.getRequest()> 
108        <#assign market = ramUtils.getCurrentMarket(httpServletRequest)/> 
109				<#assign locale = themeDisplay.getLocale().getLanguage() /> 
110				 
111<#if (LinkUrLFieldSet.LinkUrLFieldSetFieldSet.Link_texte.getData())??> 
112	${LinkUrLFieldSet.LinkUrLFieldSetFieldSet.Link_texte.getData()} 
113</#if> 
114 
115				<#assign href = "/"+market+"-"+locale+LinkUrLFieldSet.LinkUrL.getData() /> 
116				<#if (Select6393.getData()=="button")> 
117          <div class="text-overlapped-button"> 
118					<#if (LinkUrLFieldSet.LinkUrLFieldSetFieldSet.Link_texte.getData()?length > 1)> 
119					    <a href="${LinkUrLFieldSet.LinkUrLFieldSetFieldSet.Link_texte.getData()}"> 
120                <button class="btn btn-danger"> ${LinkUrLFieldSet.LinkUrLFieldSetFieldSet.Link_texte.getData()}</button> 
121              </a>   
122					<#else> 
123					     <a href="${href}"> 
124                <button class="btn btn-danger"> ${LinkUrLFieldSet.LinkUrLFieldSetFieldSet.Link_texte.getData()}</button> 
125            </a>   
126					</#if> 
127					</div> 
128        <#elseIf (Select6393.getData()=="link")> 
129            <a class="red red-link" href="${href}"> ${LinkUrLFieldSet.LinkUrLFieldSetFieldSet.Link_texte.getData()} </a> 
130 
131        </#if> 
132				 
133 
134				 
135			</div> 
136		</div> 
137	</div> 
138</section> 
139 
140 
141 
142</#if> 

A vibrant tribute to Morocco and its craftsmanship

Using Moroccan handicraft as a focus, the film pays tribute to a unique and ancestral know-how, shaped by centuries of tradition and history. Each scene testifies to the authenticity and cultural richness of our Kingdom, highlighting the values that make Royal Air Maroc a true ambassador for Morocco and Africa.
Bold in its colors; aesthetics and originality, this video is a living tribute to the tradition and authenticity of our kingdom, which elevates the safety demonstration into an immersive, sensorial journey that transforms the flight experience.

A sensorial journey through Morocco’s iconic cities

This video is much more than a simple set of safety instructions, it's an invitation to travel. It takes us on a journey through the landscapes, colors and traditions that make Morocco unique, highlighting some of its most emblematic cities - Rabat, the majestic capital, Dakhla, the gem of the Sahara, Fez and its imperial treasures, and many others - transporting us to the heart of the Kingdom's soul. Each stop reveals an artistic expression unique to its region: the art of zellige, the finesse of carpet-weaving, the beauty of finely-worked leather... all treasures that trace the richness of our identity. This film celebrates the diversity and authenticity of our crafts, while inviting our passengers to immerse themselves in the very essence of Morocco.

A people-driven story

Beyond the landscapes and meticulous design, this project is, above all, a human adventure. It is our flight crew who have put their faces and their passion into this project. Their involvement reflects the soul of Royal Air Maroc: a united company, driven by the desire to share the best of Morocco and Africa with the world. This film is an ode to our heritage, but also to the future. It's a new way of telling our story, of showcasing Morocco, and of accompanying our passengers on a unique experience that is both cultural and emotional.

Open in a new window