Designing the Technology of Tomorrow - Company

Designing the Technology of Tomorrow

Who we are and what we do. Our people tell us about it

Leonardo,   25 July 2018

        

An error occurred while processing the template.
The following has evaluated to null or missing:
==> Links  [in template "20115#20151#8694053" at line 193, column 29]

----
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: #if Links.ExternalTargetURL.getData()...  [in template "20115#20151#8694053" at line 193, column 24]
----
1<#assign siteExpandoBridge = themeDisplay.getScopeGroup().getExpandoBridge() /> 
2<#assign new_restyle = (siteExpandoBridge.hasAttribute("new-restyle")?then(getterUtil.getBoolean(siteExpandoBridge.getAttribute("new-restyle", false)),false)) /> 
3<#if new_restyle?? && new_restyle> 
4    <@leonardo.articleInfo .vars "(I3) Video Launch"/> 
5 
6    <#macro videoBox yt canto video poster> 
7 
8        <div class="video-full-width-container-rounded"> 
9                <button 
10                        class="video-full-width" 
11                        title="play report video" 
12                        onclick="playSingleVideo(this)" 
13                        data-video="${video}" 
14
15                <div class="cover rounded-20"> 
16                    <#if VideoInfo.Image.getData()?? && VideoInfo.Image.getData() != ""> 
17                        <#assign scalingDetails = { 
18                        "desktop": {"alternateImage": {}, "key": "w_768"}, 
19                        "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
20                        "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_720"}, 
21                        "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_596"} }> 
22                        <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
23                        <picture> 
24                            <source 
25                                    srcset="${posterImg.mobile!}" 
26                                    media="(max-width: 576px)" 
27                            /> 
28                            <source 
29                                    srcset="${posterImg.tablet_portrait!}" 
30                                    media="(max-width: 768px)" 
31
32                            <source 
33                                    srcset="${posterImg.tablet_landscape!}" 
34                                    media="(max-width: 1024px)" 
35
36                            <img class="img-fluid" alt="${posterImg.alt_desktop!}" src="${posterImg.desktop!}" /> 
37                        </picture> 
38                    </#if> 
39 
40                    <div class="btn-play"> 
41                        <img 
42                                class="icon" 
43                                src="${themeDisplay.getPathThemeImages()}/img/generic/button-play.svg" 
44                                alt="play" 
45                        /> 
46                        <img 
47                                class="icon-hover" 
48                                src="${themeDisplay.getPathThemeImages()}/img/generic/button-play-hover.svg" 
49                                alt="play" 
50                        /> 
51                    </div> 
52                </div> 
53                </button> 
54        </div> 
55    </#macro> 
56 
57    <#if VideoInfo.Video.getData() != "" ||  VideoInfo.YoutubeId.getData() != "" ||  VideoInfo.CantoUrl.getData() != "" > 
58 
59        <#assign scalingDetails = { 
60        "desktop": {"alternateImage": {}, "key": "w_768"}, 
61        "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
62        "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_720"}, 
63        "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_596"} }> 
64        <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
65 
66        <#assign isYt = (VideoInfo.YoutubeId.getData() != "") > 
67        <#assign isCanto = (VideoInfo.CantoUrl.getData())?has_content && (VideoInfo.CantoUrl.getData() != "") > 
68 
69        <#if (VideoInfo.CantoUrl.getData())?has_content && VideoInfo.CantoUrl.getData() != ""> 
70            <#assign videoStr = VideoInfo.CantoUrl.getData()> 
71        <#elseif VideoInfo.YoutubeId.getData() != ""> 
72            <#assign videoStr = VideoInfo.YoutubeId.getData()> 
73        <#elseif VideoInfo.Video.getSiblings()?has_content> 
74            <#assign videoStr = ""> 
75            <#list VideoInfo.Video.getSiblings() as cur_Video> 
76                <#assign videoFile = cur_Video.getData()> 
77                <#assign videoFileType = cur_Video.VideoType.getData()> 
78                <#if videoStr?? && videoStr != ""> 
79                    <#assign videoStr = videoStr + ","> 
80                </#if> 
81                <#assign videoStr = videoStr + "${themeDisplay.getPortalURL()}" + videoFile> 
82            </#list> 
83        </#if> 
84 
85        <!--Start Module: Plan Highlights--> 
86        <div class="container-full-width padding-bottom padding-top"> 
87            <div class="container"> 
88                <div class="flex-grid-plus-cards video"> 
89                    <div class="left <#if VideoInfo.ImagePosition.getData() == "right">order-lg-2</#if>"> 
90                        <#if VideoInfo.YoutubeId.getData() != ""> 
91                            <div class="video-full-width-container-rounded"> 
92                                <#assign videoId = VideoInfo.YoutubeId.getData()> 
93                                <button 
94                                        type="button" 
95                                        class="video-full-width video-yt" 
96                                        title="play report video" 
97                                        data-video="${videoId}" 
98                                        id="button-video-${videoId}" 
99
100                                    <div class="cover rounded-20"> 
101                                        <#if VideoInfo.Image.getData()?? && VideoInfo.Image.getData() != ""> 
102                                            <#assign scalingDetails = { 
103                                            "desktop": {"alternateImage": {}, "key": "w_768"}, 
104                                            "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
105                                            "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_720"}, 
106                                            "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_596"} }> 
107                                            <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
108                                            <picture> 
109                                                <source 
110                                                        srcset="${posterImg.mobile!}" 
111                                                        media="(max-width: 576px)" 
112                                                /> 
113                                                <source 
114                                                        srcset="${posterImg.tablet_portrait!}" 
115                                                        media="(max-width: 768px)" 
116
117                                                <source 
118                                                        srcset="${posterImg.tablet_landscape!}" 
119                                                        media="(max-width: 1024px)" 
120
121                                                <img class="img-fluid" alt="${posterImg.alt_desktop!}" src="${posterImg.desktop!}" /> 
122                                            </picture> 
123                                        </#if> 
124 
125                                        <div class="btn-play"> 
126                                            <img 
127                                                    class="icon" 
128                                                    src="${themeDisplay.getPathThemeImages()}/img/generic/button-play.svg" 
129                                                    alt="play" 
130                                            /> 
131                                            <img 
132                                                    class="icon-hover" 
133                                                    src="${themeDisplay.getPathThemeImages()}/img/generic/button-play-hover.svg" 
134                                                    alt="play" 
135                                            /> 
136                                        </div> 
137                                    </div> 
138                                </button> 
139                                <div id="video-${videoId}" class="embed-responsive embed-responsive-16by9" style="display:none;"> 
140                                    <iframe 
141                                            id="youtube-player-${videoId}" 
142                                            width="100%" 
143                                            height="100%" 
144                                            frameborder="0" 
145                                            allow="autoplay; fullscreen; encrypted-media" 
146                                            allowfullscreen 
147                                            playsinline 
148                                    ></iframe> 
149                                </div> 
150                            </div> 
151                            <script> 
152                                (function() { 
153                                    const button = document.getElementById("button-video-${videoId}"); 
154                                    const overlay = document.getElementById("video-${videoId}"); 
155                                    const iframe = document.getElementById("youtube-player-${videoId}"); 
156 
157                                    button.addEventListener("click", function() { 
158                                        const videoId = button.dataset.video; 
159 
160                                        iframe.src = "https://www.youtube.com/embed/" + videoId + "?autoplay=1&rel=0"; 
161                                        overlay.style.display = "block"; 
162                                        button.style.display = "none"; 
163                                    }); 
164                                })(); 
165                            </script> 
166                        <#else> 
167                            <@videoBox yt=isYt canto=isCanto video=videoStr poster=posterImg /> 
168                        </#if> 
169                    </div> 
170                    <div class="right component-with-title"> 
171                        <!--Start Module: Highlights Pitch--> 
172                        <div> 
173                            <#if TextInfo.Title.getData() != "" > 
174                                <p class="title title-regular"><@leonardo.escapeTitle title=TextInfo.Title.getData()/></p> 
175                            </#if> 
176                            <#if TextInfo.Title.Description?? && TextInfo.Title.Description.getData() != "" > 
177                                <p class="description body-small"><@leonardo.escapeTitle title=TextInfo.Title.Description.getData()/></p> 
178                            </#if> 
179                        </div> 
180                        <#if TextInfo.Title.Attach.getData() !=''> 
181                            <div class="card-interview centered download"> 
182                                <#list TextInfo.Title.Attach.getSiblings() as node> 
183                                    <#if TextInfo.Title.Attach?? && TextInfo.Title.Attach.getData() != "" && TextInfo.Title.Attach.Label.getData() != ""> 
184                                        <div class="card"> 
185                                            <a href="${TextInfo.Title.Attach.getData()}" target="_blank" class="label-regular" title="${TextInfo.Title.Attach.Label.getData()}" download> 
186                                                <span>${TextInfo.Title.Attach.Label.getData()}</span> 
187                                            </a> 
188                                        </div> 
189                                    </#if> 
190                                </#list> 
191                            </div> 
192                        </#if> 
193                       <#if Links.ExternalTargetURL.getData() !='' || Links.LinkTargetPage.getFriendlyUrl() !=''> 
194                        <div class="flex flex-col gap-4"> 
195                            <#list Links.getSiblings() as node> 
196                     
197                                <#assign externalUrl = node.ExternalTargetURL.getData()!"" /> 
198                                <#assign internalUrl = node.LinkTargetPage.getFriendlyUrl()!"" /> 
199                                <#assign linkText = node.LinkText.getData()!"" /> 
200                     
201                                <#if linkText?has_content && (externalUrl?has_content || internalUrl?has_content)> 
202                     
203                                    <#assign url = externalUrl?has_content?then(externalUrl, internalUrl) /> 
204                     
205                                    <a href="${url}" 
206                                       target="${node.LinkTargetOpenIn.getData()!}" 
207                                       title="${linkText}" 
208                                       class="card-text-arrow"> 
209                                        <p class="body-medium">${linkText}</p> 
210                                    </a> 
211                     
212                                </#if> 
213                            </#list> 
214                        </div> 
215                    </#if> 
216                        <!--End Module: Highlights Pitch--> 
217                    </div> 
218                </div> 
219            </div> 
220        </div> 
221        <!--End Module: Plan Highlights--> 
222    <#else> 
223        <!-- No video selected --> 
224    </#if> 
225<#else> 
226    <#assign siteExpandoBridge = themeDisplay.getScopeGroup().getExpandoBridge() /> 
227    <#assign new_restyle = (siteExpandoBridge.hasAttribute("new-restyle")?then(getterUtil.getBoolean(siteExpandoBridge.getAttribute("new-restyle", false)),false)) /> 
228    <#if new_restyle?? && new_restyle> 
229        <@leonardo.articleInfo .vars "(I3) Video Launch"/> 
230     
231        <#macro videoBox yt canto video poster> 
232     
233            <div class="video-full-width-container-rounded"> 
234                <button 
235                        class="video-full-width" 
236                        title="play report video" 
237                        onclick="playSingleVideo(this)" 
238                        data-video="${video}" 
239
240                    <div class="cover rounded-20"> 
241                        <#if VideoInfo.Image.getData()?? && VideoInfo.Image.getData() != ""> 
242                            <#assign scalingDetails = { 
243                            "desktop": {"alternateImage": {}, "key": "w_768"}, 
244                            "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
245                            "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_720"}, 
246                            "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_596"} }> 
247                            <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
248                            <picture> 
249                                <source 
250                                        srcset="${posterImg.mobile!}" 
251                                        media="(max-width: 576px)" 
252                                /> 
253                                <source 
254                                        srcset="${posterImg.tablet_portrait!}" 
255                                        media="(max-width: 768px)" 
256
257                                <source 
258                                        srcset="${posterImg.tablet_landscape!}" 
259                                        media="(max-width: 1024px)" 
260
261                                <img class="img-fluid" alt="${posterImg.alt_desktop!}" src="${posterImg.desktop!}" /> 
262                            </picture> 
263                        </#if> 
264     
265                        <div class="btn-play"> 
266                            <img 
267                                    class="icon" 
268                                    src="${themeDisplay.getPathThemeImages()}/img/generic/button-play.svg" 
269                                    alt="play" 
270                            /> 
271                            <img 
272                                    class="icon-hover" 
273                                    src="${themeDisplay.getPathThemeImages()}/img/generic/button-play-hover.svg" 
274                                    alt="play" 
275                            /> 
276                        </div> 
277                    </div> 
278                </button> 
279            </div> 
280        </#macro> 
281     
282        <#if VideoInfo.Video.getData() != "" ||  VideoInfo.YoutubeId.getData() != "" ||  VideoInfo.CantoUrl.getData() != "" > 
283     
284            <#assign scalingDetails = { 
285            "desktop": {"alternateImage": {}, "key": "w_768"}, 
286            "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
287            "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_720"}, 
288            "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_596"} }> 
289            <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
290            <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
291     
292            <#assign isYt = (VideoInfo.YoutubeId.getData() != "") > 
293            <#assign isCanto = (VideoInfo.CantoUrl.getData())?has_content && (VideoInfo.CantoUrl.getData() != "") > 
294     
295            <#if (VideoInfo.CantoUrl.getData())?has_content && VideoInfo.CantoUrl.getData() != ""> 
296                <#assign videoStr = VideoInfo.CantoUrl.getData()> 
297            <#elseif VideoInfo.YoutubeId.getData() != ""> 
298                <#assign videoStr = VideoInfo.YoutubeId.getData()> 
299            <#elseif VideoInfo.Video.getSiblings()?has_content> 
300                <#assign videoStr = ""> 
301                <#list VideoInfo.Video.getSiblings() as cur_Video> 
302                    <#assign videoFile = cur_Video.getData()> 
303                    <#assign videoFileType = cur_Video.VideoType.getData()> 
304                    <#if videoStr?? && videoStr != ""> 
305                        <#assign videoStr = videoStr + ","> 
306                    </#if> 
307                    <#assign videoStr = videoStr + "${themeDisplay.getPortalURL()}" + videoFile> 
308                </#list> 
309            </#if> 
310     
311            <!--Start Module: Plan Highlights--> 
312            <div class="container-full-width padding-bottom padding-top"> 
313                <div class="container"> 
314                    <div class="flex-grid-plus-cards video"> 
315                        <div class="left <#if VideoInfo.ImagePosition.getData() == "right">order-2</#if>"> 
316                            <#if VideoInfo.YoutubeId.getData() != ""> 
317                                <div class="video-full-width-container-rounded"> 
318                                    <#assign videoId = VideoInfo.YoutubeId.getData()> 
319                                    <button 
320                                            type="button" 
321                                            class="video-full-width video-yt" 
322                                            title="play report video" 
323                                            data-video="${videoId}" 
324                                            id="button-video-${videoId}" 
325
326                                        <div class="cover rounded-20"> 
327                                            <#if VideoInfo.Image.getData()?? && VideoInfo.Image.getData() != ""> 
328                                                <#assign scalingDetails = { 
329                                                "desktop": {"alternateImage": {}, "key": "w_768"}, 
330                                                "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
331                                                "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_720"}, 
332                                                "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_596"} }> 
333                                                <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
334                                                <picture> 
335                                                    <source 
336                                                            srcset="${posterImg.mobile!}" 
337                                                            media="(max-width: 576px)" 
338                                                    /> 
339                                                    <source 
340                                                            srcset="${posterImg.tablet_portrait!}" 
341                                                            media="(max-width: 768px)" 
342
343                                                    <source 
344                                                            srcset="${posterImg.tablet_landscape!}" 
345                                                            media="(max-width: 1024px)" 
346
347                                                    <img class="img-fluid" alt="${posterImg.alt_desktop!}" src="${posterImg.desktop!}" /> 
348                                                </picture> 
349                                            </#if> 
350     
351                                            <div class="btn-play"> 
352                                                <img 
353                                                        class="icon" 
354                                                        src="${themeDisplay.getPathThemeImages()}/img/generic/button-play.svg" 
355                                                        alt="play" 
356                                                /> 
357                                                <img 
358                                                        class="icon-hover" 
359                                                        src="${themeDisplay.getPathThemeImages()}/img/generic/button-play-hover.svg" 
360                                                        alt="play" 
361                                                /> 
362                                            </div> 
363                                        </div> 
364                                    </button> 
365                                    <div id="video-${videoId}" class="embed-responsive embed-responsive-16by9" style="display:none;"> 
366                                        <iframe 
367                                                id="youtube-player-${videoId}" 
368                                                width="100%" 
369                                                height="100%" 
370                                                frameborder="0" 
371                                                allow="autoplay; fullscreen; encrypted-media" 
372                                                allowfullscreen 
373                                                playsinline 
374                                        ></iframe> 
375                                    </div> 
376                                </div> 
377                                <script> 
378                                    (function() { 
379                                        const button = document.getElementById("button-video-${videoId}"); 
380                                        const overlay = document.getElementById("video-${videoId}"); 
381                                        const iframe = document.getElementById("youtube-player-${videoId}"); 
382     
383                                        button.addEventListener("click", function() { 
384                                            const videoId = button.dataset.video; 
385     
386                                            iframe.src = "https://www.youtube.com/embed/" + videoId + "?autoplay=1&rel=0"; 
387                                            overlay.style.display = "block"; 
388                                            button.style.display = "none"; 
389                                        }); 
390                                    })(); 
391                                </script> 
392                            <#else> 
393                                <@videoBox yt=isYt canto=isCanto video=videoStr poster=posterImg /> 
394                            </#if> 
395                        </div> 
396                        <div class="right component-with-title"> 
397                            <!--Start Module: Highlights Pitch--> 
398                            <div> 
399                                <#if TextInfo.Title.getData() != "" > 
400                                    <p class="title title-regular"><@leonardo.escapeTitle title=TextInfo.Title.getData()/></p> 
401                                </#if> 
402                                <#if TextInfo.Title.Description?? && TextInfo.Title.Description.getData() != "" > 
403                                    <p class="description body-small"><@leonardo.escapeTitle title=TextInfo.Title.Description.getData()/></p> 
404                                </#if> 
405                            </div> 
406                            <#if TextInfo.Title.Attach.getData() !=''> 
407                                <div class="card-interview centered download"> 
408                                    <#list TextInfo.Title.Attach.getSiblings() as node> 
409                                        <#if TextInfo.Title.Attach?? && TextInfo.Title.Attach.getData() != "" && TextInfo.Title.Attach.Label.getData() != ""> 
410                                            <div class="card"> 
411                                                <a href="${TextInfo.Title.Attach.getData()}" target="_blank" class="label-regular" title="${TextInfo.Title.Attach.Label.getData()}" download> 
412                                                    <span>${TextInfo.Title.Attach.Label.getData()}</span> 
413                                                </a> 
414                                            </div> 
415                                        </#if> 
416                                    </#list> 
417                                </div> 
418                            </#if> 
419                            <#if Links.ExternalTargetURL.getData() !='' || Links.LinkTargetPage.getFriendlyUrl() !=''> 
420                                <div class="flex flex-col gap-4"> 
421                                    <#list Links.getSiblings() as node> 
422                                        <#if node.ExternalTargetURL.getData() !='' && node.LinkText.getData() !=''> 
423                                            <#assign url = node.ExternalTargetURL.getData() /> 
424                                        </#if> 
425                                        <#if node.LinkTargetPage.getFriendlyUrl() !='' && node.LinkText.getData() !=''> 
426                                            <#assign url = node.LinkTargetPage.getFriendlyUrl() /> 
427                                        </#if> 
428                                        <a href="${url}" target ="${node.LinkTargetOpenIn.getData()}" title="${node.LinkText.getData()}" class="card-text-arrow"> 
429                                            <p class="body-medium">${node.LinkText.getData()}</p> 
430                                        </a> 
431                                    </#list> 
432                                </div> 
433                            </#if> 
434                            <!--End Module: Highlights Pitch--> 
435                        </div> 
436                    </div> 
437                </div> 
438            </div> 
439            <!--End Module: Plan Highlights--> 
440        <#else> 
441            <!-- No video selected --> 
442        </#if> 
443    <#else> 
444        <@leonardo.articleInfo .vars "(I3) Video Launch"/> 
445        <#assign rndNamespace = randomNamespace> 
446        <#assign currentLayoutFriendlyURL = themeDisplay.getLayout().getFriendlyURL()?remove_beginning("/") /> 
447     
448        <#if currentLayoutFriendlyURL == "home"> 
449            <#assign cssForTitle = "plan-highlights"> 
450        <#else> 
451            <#assign cssForTitle = "plan-highlights--investors"> 
452        </#if> 
453     
454        <#macro downloadIcon> 
455            <svg xmlns="http://www.w3.org/2000/svg" width="14" height="18" viewBox="0 0 14 18"> 
456                <path fill="#000" fill-rule="nonzero" d="M6.61 12.763l-2.145-2.24a.58.58 0 0 1 0-.796c.211-.22.551-.22.762 0l1.235 1.29V6.75c0-.31.24-.563.538-.563.297 0 .538.252.538.563v4.267l1.235-1.29c.21-.22.551-.22.762 0a.58.58 0 0 1 0 .796l-2.145 2.24a.526.526 0 0 1-.78 0zM12.62 18H1.383C.62 18 0 17.368 0 16.592V5.037c0-.49.19-.968.52-1.314L3.565.544A1.728 1.728 0 0 1 4.82 0h7.797C13.38 0 14 .631 14 1.407v15.186C14 17.37 13.38 18 12.619 18zM4.82 1.125a.682.682 0 0 0-.496.214L1.282 4.52a.755.755 0 0 0-.205.518v11.555c0 .156.137.283.306.283h11.235c.168 0 .305-.127.305-.282V1.407c0-.155-.137-.282-.305-.282H4.821zm-.783 4.5H2.154a.551.551 0 0 1-.539-.563c0-.31.242-.562.539-.562h1.884c.15 0 .27-.126.27-.281V2.25c0-.31.24-.563.538-.563.297 0 .539.252.539.563v1.969c0 .775-.605 1.406-1.347 1.406zm6.193 9.563H3.769a.55.55 0 0 1-.538-.563.55.55 0 0 1 .538-.563h6.462a.55.55 0 0 1 .538.563.55.55 0 0 1-.538.563z"/> 
457            </svg> 
458        </#macro> 
459        <#macro videoBox yt canto video poster> 
460            <div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"> 
461                <div class="plan-highlights--wrapper"> 
462                    <#if canto> 
463                        <div class="leo-video canto-video" 
464                             data-video-data='{ 
465    						&quot;showControls&quot;:true, 
466    						&quot;videoSources&quot;:[ 
467    							"${video}" 
468    						], 
469    						&quot;posters&quot;:{ 
470    							&quot;desktop&quot;:&quot;${poster.desktop!}&quot;, 
471    							&quot;tabletLandscape&quot;:&quot;${poster.tablet_landscape!}&quot;, 
472    							&quot;tabletPortrait&quot;:&quot;${poster.tablet_portrait!}&quot;, 
473    							&quot;mobile&quot;:&quot;${poster.mobile!}&quot; 
474    						}}' 
475                             data-img-url-d="${poster.desktop!}" 
476                             data-img-url-tl="${poster.tablet_landscape!}" 
477                             data-img-url-tp="${poster.tablet_portrait!}" 
478                             data-img-url-m="${poster.mobile!}"> 
479                        </div> 
480                    <#elseif yt> 
481                        <div class="youtube-player-container " 
482                             data-video-id="${video}" 
483                             data-div-id = "${randomNamespace}${video}" 
484                             data-img-url-d="${poster.desktop!}" 
485                             data-img-url-tl="${poster.tablet_landscape!}" 
486                             data-img-url-tp="${poster.tablet_portrait!}" 
487                             data-img-url-m="${poster.mobile!}" 
488                             data-use-no-cookie-domain="true" 
489                             data-play-fullscreen="true" 
490                             data-video-controls="true" 
491                             tabindex="1"> 
492                            <div class="youtube-player" id="${randomNamespace}${video}"></div> 
493                        </div> 
494                    <#else> 
495                        <div class="leo-video" 
496                             data-video-data="{ 
497    						&quot;showControls&quot;:true, 
498    						&quot;videoSources&quot;:[ 
499    							${video} 
500    						], 
501    						&quot;posters&quot;:{ 
502    							&quot;desktop&quot;:&quot;${poster.desktop!}&quot;, 
503    							&quot;tabletLandscape&quot;:&quot;${poster.tablet_landscape!}&quot;, 
504    							&quot;tabletPortrait&quot;:&quot;${poster.tablet_portrait!}&quot;, 
505    							&quot;mobile&quot;:&quot;${poster.mobile!}&quot; 
506    						}}" 
507                             data-img-url-d="${poster.desktop!}" 
508                             data-img-url-tl="${poster.tablet_landscape!}" 
509                             data-img-url-tp="${poster.tablet_portrait!}" 
510                             data-img-url-m="${poster.mobile!}"> 
511                        </div> 
512                    </#if> 
513                </div> 
514            </div> 
515        </#macro> 
516     
517        <#if VideoInfo.Video.getData() != "" ||  VideoInfo.YoutubeId.getData() != "" ||  VideoInfo.CantoUrl.getData() != "" > 
518     
519            <#assign isLeft = (VideoInfo.ImagePosition?? && VideoInfo.ImagePosition.getData() != "" && !(VideoInfo.ImagePosition.getData())?contains("right")) > 
520     
521            <#assign scalingDetails = { 
522            "desktop": {"alternateImage": {}, "key": "w_720"}, 
523            "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_695"}, 
524            "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_768"}, 
525            "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_375"} 
526            }> 
527            <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
528     
529            <noscript> 
530                <img src="${posterImg.desktop!}" alt='${posterImg.alt_desktop!}'> 
531                <img src="${posterImg.tablet_landscape!}" alt='${posterImg.alt_tablet_landscape!}'> 
532                <img src="${posterImg.tablet_portrait!}" alt='${posterImg.alt_tablet_portrait!}'> 
533                <img src="${posterImg.mobile!}" alt='${posterImg.alt_mobile!}'> 
534            </noscript> 
535     
536            <#assign isYt = (VideoInfo.YoutubeId.getData() != "") > 
537            <#assign isCanto = (VideoInfo.CantoUrl.getData())?has_content && (VideoInfo.CantoUrl.getData() != "") > 
538     
539            <#if (VideoInfo.CantoUrl.getData())?has_content && VideoInfo.CantoUrl.getData() != ""> 
540                <#assign videoStr = VideoInfo.CantoUrl.getData()> 
541            <#elseif VideoInfo.YoutubeId.getData() != ""> 
542                <#assign videoStr = VideoInfo.YoutubeId.getData()> 
543            <#elseif VideoInfo.Video.getSiblings()?has_content> 
544                <#assign videoStr = ""> 
545                <#list VideoInfo.Video.getSiblings() as cur_Video> 
546                    <#assign videoFile = cur_Video.getData()> 
547                    <#assign videoFileType = cur_Video.VideoType.getData()> 
548                    <#if videoStr?? && videoStr != ""> 
549                        <#assign videoStr = videoStr + ","> 
550                    </#if> 
551                    <#assign videoStr = videoStr + "{&quot;src&quot;:&quot;" + videoFile + "&quot;,&quot;type&quot;:&quot;" + videoFileType + "&quot;}"> 
552                </#list> 
553            </#if> 
554     
555            <!--Start Module: Plan Highlights--> 
556            <div class="section-container section-container--fixed"> 
557                <#if TextInfo.Title.isAnchorEnabled?? && getterUtil.getBoolean(TextInfo.Title.isAnchorEnabled.getData())> 
558                    <#assign labelIsLeft = ((TextInfo.Title.isAnchorEnabled.AnchorText.LabelPosition.getData())!"left") == "left"> 
559                    <div class="section-grid layout--tp-col layout--m-col"> 
560                        <#if !labelIsLeft > 
561                            <div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"></div> 
562                        </#if> 
563                        <div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"> 
564                            <!--Start Module: Goto--> 
565                            <#if TextInfo.Title.isAnchorEnabled.AnchorText.getData() != "" > 
566                                <a class='goto ${(!labelIsLeft)?then("goto--icon-left","")}' href="javascript:void(0)" title="Scroll to next section">${TextInfo.Title.isAnchorEnabled.AnchorText.getData()}<span class="icon--goto"></span></a> 
567                            </#if> 
568                            <!--End Module: Goto--> 
569                        </div> 
570                        <#if labelIsLeft> 
571                            <div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"></div> 
572                        </#if> 
573                    </div> 
574                </#if> 
575                <div class="${cssForTitle}"> 
576                    <div class="section-grid ${(!isLeft)?then('layout--tp-col-reverse layout--m-col-reverse','layout--tp-col layout--m-col')}"> 
577                        <#if isLeft > 
578                            <@videoBox yt=isYt canto=isCanto video=videoStr poster=posterImg /> 
579                        </#if> 
580                        <div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"> 
581                            <!--Start Module: Highlights Pitch--> 
582                            <div class="highlights-pitch"> 
583                                <#if TextInfo.Title.getData() != "" > 
584                                    <#if TextInfo.Title.isH1?? && getterUtil.getBoolean(TextInfo.Title.isH1.getData())> 
585                                        <h1 class="highlights-pitch--title"><@leonardo.escapeTitle title=TextInfo.Title.getData()/></h1> 
586                                    <#else> 
587                                        <h2 class="highlights-pitch--title"><@leonardo.escapeTitle title=TextInfo.Title.getData()/></h2> 
588                                    </#if> 
589                                    <#if TextInfo.Title.Description?? && TextInfo.Title.Description.getData() != "" > 
590                                        <p class="highlights-pitch--description"><@leonardo.escapeTitle title=TextInfo.Title.Description.getData()/></p> 
591                                    </#if> 
592                                </#if> 
593                                <#if TextInfo.Title.Attach?? && TextInfo.Title.Attach.getData() != ""> 
594                                    <div class="highlights-pitch--file-downloads"> 
595                                        <#list TextInfo.Title.Attach.getSiblings() as cur_file> 
596                                            <#assign file_info = leonardo.findFileEntryInfo(cur_file.getData()) > 
597                                            <div class="highlights-pitch--file"> 
598                                                <a class="file" 
599                                                   href="${file_info.downloadUrl}" 
600                                                   target="_blank"> 
601                                                    <@downloadIcon /> 
602                                                    <span class="highlights-pitch--file--filename"> 
603    										${(cur_file.Label.getData())!(file_info.title)!} 
604    										</span> 
605                                                </a> 
606                                            </div> 
607                                        </#list> 
608                                    </div> 
609                                </#if> 
610                                <#assign opened = false> 
611                                <#if Links?has_content> 
612                                    <#list Links.getSiblings() as cur_Link> 
613                                        <#assign targetUrl=leonardo.getTargetUrl(cur_Link.ExternalTargetURL, cur_Link.LinkTargetPage)!> 
614                                        <#if targetUrl?has_content> 
615                                            <#assign target=leonardo.getTarget(cur_Link.LinkTargetOpenIn!)!> 
616                                            <#if opened = false> 
617                                                <div class="section-hero-card--targets" > 
618                                                <#assign opened = true> 
619                                            </#if> 
620                                            <div class="section-hero-card--target"> 
621                                                <a class="section-hero-card--target--link" 
622                                                   href="${targetUrl}" 
623                                                   target = "${target}" 
624                                                   title="${cur_Link.LinkText.data!}" > 
625                                                    ${cur_Link.LinkText.data!} 
626                                                    <span class="icon--read-more"></span> 
627                                                </a> 
628                                            </div> 
629                                        </#if> 
630                                    </#list> 
631                                    <#if opened> 
632                                        </div> 
633                                    </#if> 
634                                </#if> 
635                            </div> 
636                            <!--End Module: Highlights Pitch--> 
637                        </div> 
638                        <#if !isLeft > 
639                            <@videoBox yt=isYt canto=isCanto video=videoStr poster=posterImg /> 
640                        </#if> 
641                    </div> 
642                </div> 
643            </div> 
644            <!--End Module: Plan Highlights--> 
645        <#else> 
646            <!-- No video selected --> 
647        </#if> 
648    </#if> 
649</#if> 
OGR_OGR_P1104778

Receive the latest
updates from leonardo

Register
Search overlay background

Mobile navigation menu