An error occurred while processing the template.
The following has evaluated to null or missing: ==> OverviewInformation [in template "20115#20151#8693948" at line 87, 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 isDarkTheme && OverviewInformatio... [in template "20115#20151#8693948" at line 87, column 9] ----
1<@leonardo.articleInfo .vars "(T) News and Stories Detail"/>
2<#macro downloadIcon>
3 <svg xmlns="http://www.w3.org/2000/svg" width="14" height="18" viewBox="0 0 14 18">
4 <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"/>
5 </svg>
6</#macro>
7
8<#assign noOpacity = "${randomNamespace}opacity">
9
10<#if (HeroImage.disableOpacityFilter.data)?has_content && getterUtil.getBoolean(HeroImage.disableOpacityFilter.getData()) >
11 <style>
12 html.leo18.dark-theme body #wrapper.leonardocompany .hero .hero-slide.${noOpacity}::before{
13 background-color: rgba(0, 0, 0, 0);
14 }
15 </style>
16</#if>
17
18<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
19<#assign languageId = languageUtil.getLanguageId(locale) />
20<#assign InformationDate_DateObj = dateUtil.parseDate("EEE, dd MMM yyyy HH:mm:ss Z", .vars['reserved-article-display-date'].data, localeUtil.getDefault())>
21
22<#assign currentGroupExpandoBridge = themeDisplay.getScopeGroup().getExpandoBridge()>
23<#assign isDarkTheme = false>
24<#if currentGroupExpandoBridge.hasAttribute("dark-theme")>
25 <#assign isDarkTheme = currentGroupExpandoBridge.getAttribute("dark-theme", false)>
26</#if>
27
28<div class="newsandstories-detail">
29<#if HeroImage?has_content && HeroImage.getData()!="">
30 <div class="section-container section-container--fluid">
31 <#assign scalingDetails = {
32 "desktop": {"alternateImage": {}, "key": "w_1440"},
33 "tl": {"alternateImage": HeroImage.HeroImageTl!, "key": "h_703"},
34 "tp": {"alternateImage": HeroImage.HeroImageTp!, "key": "h_959"},
35 "mobile": {"alternateImage": HeroImage.HeroImageM!, "key": "h_602"}
36 }>
37 <#assign slideImg = leonardo.adaptImage(HeroImage!, scalingDetails )>
38 <!-- Image Banner -->
39 <div class="hero">
40 <div class="hero-slide slide1 ${noOpacity}"
41 data-img-url-d="${slideImg.desktop!}"
42 data-img-url-tl="${slideImg.tablet_landscape!}"
43 data-img-url-tp="${slideImg.tablet_portrait!}"
44 data-img-url-m="${slideImg.mobile!}"
45 style=''>
46 <noscript>
47 <img src="${slideImg.desktop!}" alt='${slideImg.alt_desktop!}'>
48 <img src="${slideImg.tablet_landscape!}" alt='${slideImg.alt_tablet_landscape!}'>
49 <img src="${slideImg.tablet_portrait!}" alt='${slideImg.alt_tablet_portrait!}'>
50 <img src="${slideImg.mobile!}" alt='${slideImg.alt_mobile!}'>
51 </noscript>
52 <div class="hero-slide--content">
53 <h1 class="hero-slide--content--title"><@leonardo.escapeTitle title=OverviewInformation.ContentTitle.getData()/></h1>
54 <div class="hero-slide--content--descriptions">
55 <div class="hero-slide--content--description">
56 <#if OverviewInformation?? && (OverviewInformation.InformationLocation.getData())?has_content>
57 <@leonardo.escapeTitle title=OverviewInformation.InformationLocation.getData()/>
58 </#if>
59 ${dateUtil.getDate(InformationDate_DateObj, "dd MMMM yyyy", locale)}
60 </div>
61 <#if (OverviewInformation.ContentSubtitle.getData())?has_content>
62 <div class="hero-slide--content--description"><@leonardo.escapeTitle title=OverviewInformation.ContentSubtitle.getData()/></div>
63 </#if>
64 </div>
65 </div>
66 <@leonardo.shareLinkHero/>
67 </div>
68 </div>
69 </div>
70 <#if isDarkTheme && OverviewInformation.Occhiello?? && (OverviewInformation.Occhiello?has_content) && (OverviewInformation.Occhiello.getData()!="")>
71 <div class="section-container section-container--fixed newsandstories news-stories--category">
72 <div class="internal-header">
73 ${OverviewInformation.Occhiello.getData()?trim}
74 </div>
75 </div>
76 </#if>
77 <#if (OverviewInformation.ContentTitle.getData())?has_content>
78 <div class="section-container section-container--fixed newsandstories">
79 <div class="internal-header">
80 <#if (OverviewInformation.Abstract.getData())?has_content && (OverviewInformation.Abstract.getData()!)?length gt 1>
81 <div class="internal-header--description">${OverviewInformation.Abstract.getData()}</div>
82 </#if>
83 </div>
84 </div>
85 </#if>
86<#else>
87 <#if isDarkTheme && OverviewInformation.Occhiello?? && (OverviewInformation.Occhiello?has_content) && (OverviewInformation.Occhiello.getData()!="")>
88 <div class="section-container section-container--fixed newsandstories news-stories--category">
89 <div class="internal-header">
90 ${OverviewInformation.Occhiello.getData()?trim}
91 </div>
92 </div>
93 </#if>
94 <#if (OverviewInformation.ContentTitle.getData())?has_content>
95 <div class="section-container section-container--fixed newsandstories">
96 <div class="internal-header">
97 <h1 class="internal-header--header"><@leonardo.escapeTitle title=OverviewInformation.ContentTitle.getData()/></h1>
98 <#if (OverviewInformation.ContentSubtitle.getData())?has_content>
99 <h2 class="internal-header--header--small"><@leonardo.escapeTitle title=OverviewInformation.ContentSubtitle.getData()/></h2>
100 </#if>
101 <#if (OverviewInformation.Abstract.getData())?has_content && (OverviewInformation.Abstract.getData()!)?length gt 1>
102 <div class="internal-header--description">${OverviewInformation.Abstract.getData()}</div>
103 </#if>
104 </div>
105 </div>
106 </#if>
107</#if>
108<#if (OverviewInformation.SeparatorContent)?has_content>
109 <#list OverviewInformation.SeparatorContent.getSiblings() as currentArea>
110 <#if currentArea.ContentHtml?? && currentArea.ContentHtml.getData() != "">
111 <div class="section-container section-container--fixed newsandstories">
112 <div class="section-content location-date">
113 <div class="section-content--content">
114 <#if currentArea?is_first>
115 <#if !(HeroImage?has_content) || HeroImage.getData()=="">
116 <p class="content-secondary">
117 <#if OverviewInformation?? && (OverviewInformation.InformationLocation.getData())?has_content>
118 <@leonardo.escapeTitle title=OverviewInformation.InformationLocation.getData()/>
119 </#if>
120 ${dateUtil.getDate(InformationDate_DateObj, "dd MMMM yyyy", locale)}
121 </p>
122 </#if>
123 </#if>
124 <#if (currentArea.TitleContent)?has_content && currentArea.TitleContent.getData()!="">
125 </div>
126 </div>
127 <div class="section-heading d-align-center tl-wider-side-padding">${currentArea.TitleContent.getData()!}</div>
128 <div class="section-content">
129 <div class="section-content--content">
130 </#if>
131 <#assign htmlFormatted = leonardo.expandElementsInPage(currentArea.ContentHtml.getData())>
132 <div class="check-html-content">${htmlFormatted}</div>
133 </div>
134 <#if currentArea?is_last>
135 <div class="section-content--action-items">
136 <#if AttachmentSeparator?has_content >
137 <#list AttachmentSeparator.getSiblings() as cur_Attach>
138 <#if cur_Attach.Attachment?? && cur_Attach.Attachment.getData() != "" >
139 <div class="section-content--action-items--download">
140 <#assign file_info = leonardo.findFileEntryInfo(cur_Attach.Attachment.getData()) >
141 <a class="section-content--action-items--download--link"
142 href="${file_info.downloadUrl}"
143 target="_blank"
144 title="${(file_info.title)!cur_Attach.AttachmentTitle.getData()!}">
145 <@downloadIcon />
146 <span class="section-content--action-items--download--link--filename">
147 ${cur_Attach.AttachmentTitle.getData()!(file_info.title)!}
148 <#if (file_info.fileSize)?has_content>
149 (${file_info.mimeType!}, ${file_info.fileSize!} KB)
150 </#if>
151 </span>
152 </a>
153 </div>
154 </#if>
155 </#list>
156 </#if>
157 <#if LinkToPageSeparator?has_content >
158 <#list LinkToPageSeparator.getSiblings() as cur_Link>
159 <#assign targetUrl=leonardo.getTargetUrl(cur_Link.GenericLink, cur_Link.LinkToPage)!>
160 <#if targetUrl?has_content>
161 <#assign target=leonardo.getTarget(cur_Link.LinkTarget!)!>
162 <div class="section-content--action-items--navigate">
163 <a class="section-content--action-items--navigate--link"
164 href="${targetUrl}"
165 target = "${target}"
166 title="${cur_Link.LinkTitle.data!}">
167 ${cur_Link.LinkTitle.data!}
168 <span class="icon--navigate"></span>
169 </a>
170 </div>
171 </#if>
172 </#list>
173 </#if>
174 </div>
175 </#if>
176 </div>
177 <#if currentArea?is_first>
178 <#if !(HeroImage?has_content) || HeroImage.getData()=="">
179 <@leonardo.shareLink/>
180 </#if>
181 </#if>
182 </div>
183 </#if>
184 <#if currentArea.WebContentdpkw?? && currentArea.WebContentdpkw.getData() != "">
185 <#assign data = currentArea.WebContentdpkw.getData()/>
186 <#assign json = jsonFactoryUtil.createJSONObject(data) />
187 <#assign classPK = json.getLong("classPK") />
188 <#if (classPK >0) >
189 <#assign ja = journalArticleLocalService.getLatestArticle(classPK) />
190 <#assign jad = journalArticleLocalService.getArticleDisplay(ja, ja.getTemplateId(), "", languageId, 1, null, themeDisplay) />
191 ${jad.getContent()}
192 </#if>
193 </#if>
194 </#list>
195</#if>
196</div>
197
198<#if HeroImage?has_content && HeroImage.getData()!="">
199 <script type="text/javascript">
200 $(document).ready(function() {
201 $('.header.header--opaque').removeClass('header--opaque');
202 $('.breadcrumbs--container').parent().addClass('breadcrumbs--on-hero')
203 });
204 </script>
205</#if>
206
207
208<!-- Meta Title and Meta Description -->
209<#assign
210 title = ''
211 metaTitle = ''
212 abstract = ''
213 metaDescription = ''
214 shareTitle = ''
215 shareDescription = ''
216 imageFileName = ''
217 ogType='article'
218>
219
220<#if OverviewInformation.ContentTitle?? && (OverviewInformation.ContentTitle.getData())?has_content>
221 <#assign title = OverviewInformation.ContentTitle.getData()>
222</#if>
223<#if OverviewInformation.MetaTitle?? && (OverviewInformation.MetaTitle.getData())?has_content>
224 <#assign metaTitle = OverviewInformation.MetaTitle.getData()>
225<#else>
226 <#assign metaTitle = title >
227</#if>
228
229<#if OverviewInformation.Abstract?? && (OverviewInformation.Abstract.getData())?has_content>
230 <#assign abstract = OverviewInformation.Abstract.getData()>
231</#if>
232
233<#if (.vars['reserved-article-description'].data)?? && (.vars['reserved-article-description'].data)?has_content>
234 <#assign metaDescription = (.vars['reserved-article-description'].data)>
235<#else>
236 <#assign metaDescription = abstract>
237</#if>
238<#if metaTitle != "" >
239 <#assign metaTitle = metaTitle?replace('<[^>]+>','','r')?replace('"','\'')?replace('\n',' ') >
240 <#assign VOID = portalUtil.setPageTitle(metaTitle, themeDisplay.request) />
241</#if>
242
243<#if (metaDescription)?has_content && (metaDescription) != "" >
244 <#assign metaDescription = (metaDescription)?replace('<[^>]+>','','r')?replace('"','\'')>
245 <#assign VOID = portalUtil.setPageDescription(metaDescription, themeDisplay.request) />
246</#if>
247
248<!-- Social Sharing -->
249<#if title != "" >
250 <#assign shareTitle = title?replace('<[^>]+>','','r')?replace('"','\'')?replace('<br>','\'')?replace('\n',' ')>
251</#if>
252<#assign shareDescription = metaDescription >
253<#if (PrimaryImage.getData())?has_content>
254 <#assign imageFileName = PrimaryImage.getData() >
255<#elseif (PrimaryImageAssoc.getData())?has_content >
256 <#assign imageFileName = PrimaryImageAssoc.getData() >
257</#if>
258<@leonardo.socialShareMetaAndLinks shareTitle=shareTitle shareDescription=shareDescription imageFileName=imageFileName ogType=ogType />
259
260<#-- markup -->
261<#macro printMarkup logoURL>
262 <#assign journalArticleId = .vars['reserved-article-id'].data>
263 <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
264 <#assign jArticle = journalArticleLocalService.getArticle(groupId, journalArticleId) >
265 <#-- Detail URL -->
266 <#assign virtualHostURL = portalUtil.getVirtualHostname (themeDisplay.getLayout().getLayoutSet())>
267 <#assign absolutePageUrl = "">
268 <#if (virtualHostURL?has_content && virtualHostURL != "")>
269 <#assign absolutePageUrl = "https://" + virtualHostURL >
270 <#else>
271 <#assign absolutePageUrl = portalUtil.getPortalURL(themeDisplay.getLayout(), themeDisplay)>
272 </#if>
273 <#assign articleUrlTitle = jArticle.getUrlTitle()>
274 <#assign detailUrl = absolutePageUrl+(themeDisplay.i18nPath!"")+"/news-and-stories-detail/-/detail/"+articleUrlTitle >
275 <#assign Modified_DateObj = dateUtil.parseDate("EEE, dd MMM yyyy HH:mm:ss Z", .vars['reserved-article-modified-date'].data, localeUtil.getDefault())>
276
277 <script type="application/ld+json">
278 { "@context": "http://schema.org",
279 "@type": "Article",
280 "url":"${detailUrl}",
281 "name": "${shareTitle}",
282 "image": "${(imageFileName?has_content)?then(absolutePageUrl + imageFileName,'')}",
283 "headline": "${shareTitle}",
284 "datePublished": "${dateUtil.getDate(InformationDate_DateObj, 'yyyy-MM-dd', locale)}T${dateUtil.getDate(InformationDate_DateObj, 'HH:mm:ss',locale)}+0000",
285 "dateModified": "${dateUtil.getDate(Modified_DateObj, 'yyyy-MM-dd', locale)}T${dateUtil.getDate(Modified_DateObj, 'HH:mm:ss',locale)}+0000",
286 "author": { "@type": "Organization",
287 "name": "Leonardo S.p.A." },
288 "publisher": {
289 "@type": "Organization",
290 "name": " Leonardo S.p.A.",
291 "logo": { "@type": "ImageObject",
292 "url": "${logoURL}"} } }
293 </script>
294</#macro>
295
296<#if (themeDisplay.scopeGroup.friendlyURL)?keep_after_last("/") == 'guest'
297 || (themeDisplay.scopeGroup.friendlyURL)?keep_after_last("/") == 'corporate'
298 || (themeDisplay.scopeGroup.friendlyURL)?keep_after_last("/") == 'helicopters'
299 || (themeDisplay.scopeGroup.friendlyURL)?keep_after_last("/") == 'aircraft'
300 || (themeDisplay.scopeGroup.friendlyURL)?keep_after_last("/") == 'cyber-security'
301 || (themeDisplay.scopeGroup.friendlyURL)?keep_after_last("/") == 'electronics'
302 || (themeDisplay.scopeGroup.friendlyURL)?keep_after_last("/") == 'space'
303 || (themeDisplay.scopeGroup.friendlyURL)?keep_after_last("/") == 'unmanned'
304 >
305 <#if isDarkTheme>
306 <#assign logoImageURL = "https://www.leonardo.com/o/leonardocompany-theme/images/logo-with-text-header-switch.png">
307 <#else>
308 <#assign logoImageURL = "https://www.leonardo.com/o/leonardocompany-theme/images/logo-with-text-resized.png">
309 </#if>
310
311 <@printMarkup logoURL=logoImageURL!/>
312 </#if>
313
314 <script>
315 $( document ).ready(function() {
316 $('meta[name=description]').removeAttr('lang');
317 });
318 </script>
Other news & stories
Receive the latest updates from Leonardo
Register for the News Alert service