Consapevolezza del dominio marittimo:
informazioni rapide sopra e sotto il mare
Reti di sorveglianza
Financial highlights
Ultima quotazione 59,20€
Variazione -2,31%
23/03/2026 - 17:36
data source: Investis Digital
Financial Results & Reports
Press releases
Overview
Integriamo soluzioni costiere, marittime, terrestri e spaziali in un'unica immagine, attraverso la fusione di informazioni marittime, radar, satellitari e data link.
Syntax error in template "20115#20151#14304350" in line 210, column 141:
Encountered ")", but was expecting one of:
"."
".."
<DOT_DOT_LESS>
"..*"
"?"
"??"
"!"
"["
"("
"}"
<TERMINATING_EXCLAM>
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
5 <@leonardo.articleInfo .vars "(G1, H) Images Wall (tabbed)"/>
6 <#assign ns = randomNamespace>
7 <#assign portletId = themeDisplay.getPortletDisplay().getId()>
8 <#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
9
10 <#if Selezionamahu?? && Selezionamahu.getData() !=''>
11 <#assign bg = "${Selezionamahu.getData()}" />
12 <#if Selezionamahu.getData() == 'white'>
13 <#assign margin = "margin-top margin-bottom" />
14 <#assign buttonColor = "black">
15 <#elseif Selezionamahu.getData() == 'black'>
16 <#assign buttonColor = "white">
17 <#assign margin = "" />
18 <#else>
19 <#assign buttonColor = "black">
20 <#assign margin = "" />
21 </#if>
22 <#else>
23 <#assign bg = "grey" />
24 <#assign margin = "" />
25 </#if>
26
27
28 <#if NASTab.getSiblings()?has_content>
29 <#assign sizeContent = NASTab.getSiblings()?size />
30 <#list NASTab.getSiblings() as tab>
31 <#if tab.NASTabBrick.getSiblings()?has_content>
32 <#list tab.NASTabBrick.getSiblings() as tabBrick>
33 <#assign w = tabBrick.NASTabBrickWidth.getData() />
34 <#assign abstract = tabBrick.NASTabBrickAbstract.getData() />
35 <#if w == "1">
36 <#assign width = "container tight">
37 <#elseif w == "1.5" && abstract ==''>
38 <#assign width = "container">
39 <#elseif w == "1.5" && abstract !=''>
40 <#assign width = "container tight">
41 <#elseif w == "2">
42 <#assign width = "container">
43 <#elseif w == "3">
44 <#assign width = "container-full-width">
45 <#elseif w == "4">
46 <#assign width = "container">
47 <#elseif w == "card">
48 <#assign width = "container">
49 <#elseif w == "empty">
50 <#assign width = "container-full-width">
51 <#else>
52 <#assign width = "container-full-width">
53 </#if>
54 </#list>
55 </#if>
56 </#list>
57 </#if>
58
59 <#if NASTab.getSiblings()?has_content>
60 <#if (sizeContent > 1) && NASTab.NASTabTag.getData() !=''>
61 <!--Tabs-->
62 <#assign articleId = .vars['reserved-article-id'].data />
63 <section class="container-full-width padding-top padding-bottom ${bg}">
64 <div class="container overflow-visible <#if NASTitle.getData()?? && NASTitle.getData() != ''> component-with-title</#if>">
65 <#if NASTitle.getData()?? && NASTitle.getData() != ''>
66 <h2 class="title-extralarge">
67 <@leonardo.escapeTitle title=NASTitle.getData()/>
68 </h2>
69 </#if>
70 <div class="tabs tabs-pillow automatic" role="tablist">
71 <#list NASTab.getSiblings() as tab>
72 <button
73 class="tab label-regular ${(tab?is_first)?then('active', '')}"
74 id="tab-${tab?index + 1}-${articleId}"
75 type="button"
76 role="tab"
77 aria-selected="true"
78 aria-controls="tabpanel-pillow-${tab?index + 1}-${articleId}"
79 >
80 ${tab.NASTabTag.getData()}
81 </button>
82 </#list>
83 </div>
84
85 <div class="tab-panel-container">
86 <#list NASTab.getSiblings() as tab>
87 <#if tab.NASTabBrick.getSiblings()?has_content>
88 <div
89 id="tabpanel-pillow-${tab?index + 1}-${articleId}"
90 role="tabpanel"
91 tabindex="0"
92 aria-labelledby="tab-${tab?index + 1}-${articleId}"
93 >
94 <#assign size = NASTab.NASTabBrick.getSiblings()?size />
95 <#if (size <= 3)>
96 <#assign css = "pb-lg-0" />
97 <#else>
98 <#assign css = "" />
99 </#if>
100 <!--Start Module: Products Cards-->
101 <div class="swiper macro-category-swiper ${css}">
102 <#if (size > 3)>
103 <div class="swiper-navigation red">
104 <button class="swiper-button-prev" aria-label="previous slide" tabindex="0">
105 <img src="${themeDisplay.getPathThemeImages()}/img/generic/arrow-left-red-icon.svg" alt="navigation left">
106 </button>
107 <button class="swiper-button-next" aria-label="next slide" tabindex="0">
108 <img src="${themeDisplay.getPathThemeImages()}/img/generic/arrow-right-red-icon.svg" alt="navigation right">
109 </button>
110 </div>
111 </#if>
112 <div class="swiper-wrapper">
113 <#list tab.NASTabBrick.getSiblings() as tabBrick>
114 <#assign scalingDetails = {
115 "desktop": {"alternateImage": {}, "key": "h_560"},
116 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_560"},
117 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_560"},
118 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_400"} }>
119 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
120 <div class="swiper-slide">
121 <section class="macro-category-single-arrow">
122 <div class="content">
123 <a href="${leonardo.getTargetUrl(tabBrick.ExternalTargetURL!, tabBrick.NasTabBrickLink!)}" title="${tabBrick.NASTabBrickTitle.getData()}" target="${leonardo.getTarget(tabBrick.LinkTargetOpenIn!)}">
124 <h2 class="body-medium">
125 ${tabBrick.NASTabBrickTitle.getData()}
126 </h2>
127 <div class="image-container">
128
129 <picture>
130 <source
131 srcset="${dataImage.mobile?replace(" ", "%20")!}"
132 media="(max-width: 576px)"
133 />
134 <source
135 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
136 media="(max-width: 768px)"
137 >
138 <source
139 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
140 media="(max-width: 1024px)"
141 >
142 <img
143 class="img-fluid"
144 src="${dataImage.desktop?replace(" ", "%20")!}"
145 alt="${dataImage.alt_desktop!}"
146 />
147 </picture>
148 </div>
149 </a>
150 </div>
151 </section>
152 </div>
153 </#list>
154 </div>
155 <div class="swiper-pagination ${buttonColor}"></div>
156 </div>
157 </div>
158 </#if>
159 </#list>
160 </div>
161 </div>
162 </section>
163 <#else>
164 <#list NASTab.getSiblings() as tab>
165 <#if tab.NASTabBrick.getSiblings()?has_content>
166 <#list tab.NASTabBrick.getSiblings() as tabBrick>
167 <#assign w = tabBrick.NASTabBrickWidth.getData() />
168 <#assign brick_index = tabBrick?index>
169 <#if w == "3">
170 <!--Card width full-->
171 <#if NASTab.NASTabBrick.NasTabBrickLink.getData() !='' || NASTab.NASTabBrick.ExternalTargetURL.getData() !=''>
172 <div class="container-full-width padding-top padding-bottom ${bg}">
173 <div class="component-newsletter ${margin} rounded-20">
174 <div class="container-full-width">
175 <div class="container">
176 <#if tabBrick.NASTabBrickImage.getData() !=''>
177 <div class="image-container">
178 <#assign scalingDetails = {
179 "desktop": {"alternateImage": {}, "key": "w_1440"},
180 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_460"},
181 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_325"},
182 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_460"} }>
183 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
184 <picture class="bg-picture">
185 <source
186 srcset="${dataImage.mobile?replace(" ", "%20")!}"
187 media="(max-width: 576px)"
188 />
189 <source
190 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
191 media="(max-width: 768px)"
192 >
193 <source
194 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
195 media="(max-width: 1024px)"
196 >
197 <img
198 class="img-fluid"
199 src="${dataImage.desktop?replace(" ", "%20")!}"
200 alt="${dataImage.alt_desktop!}"
201 />
202 </picture>
203 </div>
204 </#if>
205 <div class="content <#if tabBrick.NASTabBrickTitle.getData() =='' && tabBrick.NASTabBrickAbstract.getData() ==''>justify-content-end pb-5</#if>">
206 <#if tabBrick.NASTabBrickTitle.getData() !=''>
207 <p class="title title-banner">${tabBrick.NASTabBrickTitle.getData()}</p>
208 </#if>
209 <#if tabBrick.NASTabBrickAbstract.getData() !=''>
210 <p class="body-medium subtitle text-center">${tabBrick.NASTabBrickAbstract.getData())}</p>
211 </#if>
212 <#if tabBrick.ExternalTargetURL.getData() !=''>
213 <#assign linkUrl = tabBrick.ExternalTargetURL.getData() />
214 <#elseif tabBrick.NasTabBrickLink.getData() !=''>
215 <#assign linkUrl = tabBrick.NasTabBrickLink.getFriendlyUrl() />
216 </#if>
217 <#if tabBrick.LabelLink?? && tabBrick.LabelLink.getData() !=''>
218 <#assign linkLabel = tabBrick.LabelLink.getData() />
219 <#else>
220 <#assign linkLabel>
221 <@liferay.language key="discover-more" />
222 </#assign>
223 </#if>
224 <#assign linkTarget=leonardo.getTarget(tabBrick.LinkTargetOpenIn!)>
225 <a class="btn-primary-negative" href="${linkUrl}" target = "${linkTarget}" title ="${linkLabel}">${linkLabel}</a>
226 </div>
227 </div>
228 </div>
229 </div>
230 </div>
231 <#else>
232 <section class="component-with-title container-full-width ${bg} margin-top margin-bottom">
233 <#if NASTitle.getData()?? && NASTitle.getData() != ''>
234 <div class="container">
235 <h2 class="title-extralarge">
236 <@leonardo.escapeTitle title=NASTitle.getData()/>
237 </h2>
238 </div>
239 </#if>
240 <#list NASTab.getSiblings() as tab>
241 <#if tab.NASTabBrick.getSiblings()?has_content>
242 <#list tab.NASTabBrick.getSiblings() as tabBrick>
243 <div class="campaigns-section grid">
244 <#assign scalingDetails = {
245 "desktop": {"alternateImage": {}, "key": "h_959"},
246 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_959"},
247 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_959"},
248 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_959"} }>
249 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
250 <picture>
251 <source
252 srcset="${dataImage.mobile?replace(" ", "%20")!}"
253 media="(max-width: 576px)"
254 />
255 <source
256 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
257 media="(max-width: 768px)"
258 >
259 <source
260 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
261 media="(max-width: 1024px)"
262 >
263 <img
264 class="bg"
265 src="${dataImage.desktop?replace(" ", "%20")!}"
266 alt="${dataImage.alt_desktop!}"
267 />
268 </picture>
269 <div class="container padding">
270 <p class="title-hero-02 title">
271 <#if tabBrick.NASTabBrickTitle.getData() !=''>
272 ${tabBrick.NASTabBrickTitle.getData()}
273 </#if>
274 </p>
275 <#if tabBrick.linkList.linkItem.linkTitle.getData() !=''>
276 <div class="flex">
277 <#list tabBrick.linkList.linkItem.getSiblings() as linkItem>
278 <#assign linkUrl=leonardo.getTargetUrl(linkItem.externalUrl!, linkItem.link!)>
279 <#assign linkTarget=leonardo.getTarget(linkItem.linkTarget!)>
280 <a href="${linkUrl}" target = "${linkTarget}" title ="${linkItem.linkTitle.data!}" class="body-medium">${linkItem.linkTitle.data!}</a>
281 </#list>
282 </div>
283 </#if>
284 </div>
285 </div>
286 </#list>
287 </#if>
288 </#list>
289 </section>
290 </#if>
291 <#elseif w == "1">
292 <#assign outer_index = tabBrick?index>
293 <#if outer_index == 1>
294 <div class="container-full-width <#if brick_index != 1>padding-top </#if> ${bg} newsletter-grid padding-bottom">
295 <div class="container">
296 <div class="grid">
297 <!--Card width full in grid-->
298 <#if NASTab.NASTabBrick.NasTabBrickLink.getData() !='' || NASTab.NASTabBrick.ExternalTargetURL.getData() !=''>
299 <div class="component-newsletter ${margin} small">
300 <div class="container-full-width">
301 <div class="container">
302 <#if tabBrick.NASTabBrickImage.getData() !=''>
303 <div class="image-container">
304 <#assign scalingDetails = {
305 "desktop": {"alternateImage": {}, "key": "h_460"},
306 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_300"},
307 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_300"},
308 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_460"} }>
309 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
310 <picture>
311 <source
312 srcset="${dataImage.mobile?replace(" ", "%20")!}"
313 media="(max-width: 576px)"
314 />
315 <source
316 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
317 media="(max-width: 768px)"
318 >
319 <source
320 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
321 media="(max-width: 1024px)"
322 >
323 <img
324 class="img-fluid"
325 src="${dataImage.desktop?replace(" ", "%20")!}"
326 alt="${dataImage.alt_desktop!}"
327 />
328 </picture>
329 </div>
330 </#if>
331 <div class="content">
332 <#if tabBrick.NASTabBrickTitle.getData() !=''>
333 <p class="title title-regular">${tabBrick.NASTabBrickTitle.getData()}</p>
334 </#if>
335 <#if tabBrick.NASTabBrickAbstract.getData() !=''>
336 <p class="body-small subtitle text-center">${tabBrick.NASTabBrickAbstract.getData()}</p>
337 </#if>
338 <div class="flex">
339 <#if tabBrick.ExternalTargetURL.getData() !=''>
340 <#assign linkUrl = tabBrick.ExternalTargetURL.getData() />
341 <#elseif tabBrick.NasTabBrickLink.getData() !=''>
342 <#assign linkUrl = tabBrick.NasTabBrickLink.getFriendlyUrl() />
343 </#if>
344 <#if tabBrick.LabelLink?? && tabBrick.LabelLink.getData() !=''>
345 <#assign linkLabel = tabBrick.LabelLink.getData() />
346 <#else>
347 <#assign linkLabel>
348 <@liferay.language key="discover-more" />
349 </#assign>
350 </#if>
351 <#assign linkTarget=leonardo.getTarget(tabBrick.LinkTargetOpenIn!)>
352 <a class="btn-primary-negative" href="${linkUrl}" target = "${linkTarget}" title ="${linkLabel}">${linkLabel}</a>
353 </div>
354 </div>
355 </div>
356 </div>
357 </div>
358 </#if>
359 <#else>
360 <!--Card width full in grid-->
361 <#if NASTab.NASTabBrick.NasTabBrickLink.getData() !='' || NASTab.NASTabBrick.ExternalTargetURL.getData() !=''>
362 <div class="component-newsletter ${margin} small">
363 <div class="container-full-width">
364 <div class="container">
365 <#if tabBrick.NASTabBrickImage.getData() !=''>
366 <div class="image-container">
367 <#assign scalingDetails = {
368 "desktop": {"alternateImage": {}, "key": "h_460"},
369 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_300"},
370 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_300"},
371 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_460"} }>
372 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
373 <picture>
374 <source
375 srcset="${dataImage.mobile?replace(" ", "%20")!}"
376 media="(max-width: 576px)"
377 />
378 <source
379 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
380 media="(max-width: 768px)"
381 >
382 <source
383 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
384 media="(max-width: 1024px)"
385 >
386 <img
387 class="img-fluid"
388 src="${dataImage.desktop?replace(" ", "%20")!}"
389 alt="${dataImage.alt_desktop!}"
390 />
391 </picture>
392 </div>
393 </#if>
394 <div class="content">
395 <#if tabBrick.NASTabBrickTitle.getData() !=''>
396 <p class="title title-regular">${tabBrick.NASTabBrickTitle.getData()}</p>
397 </#if>
398 <#if tabBrick.NASTabBrickAbstract.getData() !=''>
399 <p class="body-small subtitle text-center">${tabBrick.NASTabBrickAbstract.data!?replace(r"<[^>]*>", "", "r")}</p>
400 </#if>
401 <div class="flex">
402 <#if tabBrick.ExternalTargetURL.getData() !=''>
403 <#assign linkUrl = tabBrick.ExternalTargetURL.getData() />
404 <#elseif tabBrick.NasTabBrickLink.getData() !=''>
405 <#assign linkUrl = tabBrick.NasTabBrickLink.getFriendlyUrl() />
406 </#if>
407 <#if tabBrick.LabelLink?? && tabBrick.LabelLink.getData() !=''>
408 <#assign linkLabel = tabBrick.LabelLink.getData() />
409 <#else>
410 <#assign linkLabel>
411 <@liferay.language key="discover-more" />
412 </#assign>
413 </#if>
414 <#assign linkTarget=leonardo.getTarget(tabBrick.LinkTargetOpenIn!)>
415 <a class="btn-primary-negative" href="${linkUrl}" target = "${linkTarget}" title ="${linkLabel}">${linkLabel}</a>
416 </div>
417 </div>
418 </div>
419 </div>
420 </div>
421 </#if>
422 </#if>
423 <#elseif w == "empty">
424 <!--Card width full without button-->
425 <div class="${width} padding-top padding-bottom ${bg}">
426 <#list NASTab.getSiblings() as tab>
427 <#if tab.NASTabBrick.getSiblings()?has_content>
428 <#list tab.NASTabBrick.getSiblings() as tabBrick>
429 <div class="component-newsletter ${margin} rounded-20">
430 <div class="container-full-width">
431 <#if tabBrick.LabelLink?? && tabBrick.LabelLink.getData() !=''>
432 <div class="container">
433 <#if tabBrick.NASTabBrickImage.getData() !=''>
434 <div class="image-container">
435 <#assign scalingDetails = {
436 "desktop": {"alternateImage": {}, "key": "h_460"},
437 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_300"},
438 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_300"},
439 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_460"} }>
440 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
441 <picture>
442 <source
443 srcset="${dataImage.mobile?replace(" ", "%20")!}"
444 media="(max-width: 576px)"
445 />
446 <source
447 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
448 media="(max-width: 768px)"
449 >
450 <source
451 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
452 media="(max-width: 1024px)"
453 >
454 <img
455 class="img-fluid"
456 src="${dataImage.desktop?replace(" ", "%20")!}"
457 alt="${dataImage.alt_desktop!}"
458 />
459 </picture>
460 </div>
461 </#if>
462 <div class="content">
463 <#if tabBrick.NASTabBrickTitle.getData() !=''>
464 <p class="title title-banner">${tabBrick.NASTabBrickTitle.getData()}</p>
465 </#if>
466 <#if tabBrick.NASTabBrickAbstract.getData() !=''>
467 <p class="body-medium subtitle text-center">${tabBrick.NASTabBrickAbstract.data!?replace(r"<[^>]*>", "", "r")}</p>
468 </#if>
469 <div class="flex">
470 <#if tabBrick.ExternalTargetURL.getData() !=''>
471 <#assign linkUrl = tabBrick.ExternalTargetURL.getData() />
472 <#elseif tabBrick.NasTabBrickLink.getData() !=''>
473 <#assign linkUrl = tabBrick.NasTabBrickLink.getFriendlyUrl() />
474 </#if>
475 <#if tabBrick.LabelLink?? && tabBrick.LabelLink.getData() !=''>
476 <#assign linkLabel = tabBrick.LabelLink.getData() />
477 <#else>
478 <#assign linkLabel = liferay.language key="discover-more" />
479 </#if>
480 <#assign linkTarget=leonardo.getTarget(tabBrick.LinkTargetOpenIn!)>
481 <a class="btn-primary-negative" href="${linkUrl}" target = "${linkTarget}" title ="${linkLabel}">${linkLabel}</a>
482 </div>
483 </div>
484 </div>
485 <#else>
486 <#if tabBrick.ExternalTargetURL.getData() !=''>
487 <#assign linkUrl = tabBrick.ExternalTargetURL.getData() />
488 <#elseif tabBrick.NasTabBrickLink.getData() !=''>
489 <#assign linkUrl = tabBrick.NasTabBrickLink.getFriendlyUrl() />
490 </#if>
491 <#assign linkTarget=leonardo.getTarget(tabBrick.LinkTargetOpenIn!)>
492 <a href="${linkUrl}" target = "${linkTarget}" class="container d-block">
493 <#if tabBrick.NASTabBrickImage.getData() !=''>
494 <div class="image-container">
495 <#assign scalingDetails = {
496 "desktop": {"alternateImage": {}, "key": "h_460"},
497 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_300"},
498 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_300"},
499 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_460"} }>
500 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
501 <picture>
502 <source
503 srcset="${dataImage.mobile?replace(" ", "%20")!}"
504 media="(max-width: 576px)"
505 />
506 <source
507 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
508 media="(max-width: 768px)"
509 >
510 <source
511 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
512 media="(max-width: 1024px)"
513 >
514 <img
515 class="img-fluid"
516 src="${dataImage.desktop?replace(" ", "%20")!}"
517 alt="${dataImage.alt_desktop!}"
518 />
519 </picture>
520 </div>
521 </#if>
522 <div class="content">
523 <#if tabBrick.NASTabBrickTitle.getData() !=''>
524 <p class="title title-banner">${tabBrick.NASTabBrickTitle.getData()}</p>
525 </#if>
526 </div>
527 </a>
528 </#if>
529 </div>
530 </div>
531 </#list>
532 </#if>
533 </#list>
534 </div>
535 <#else>
536 <#if w == "4">
537 <#assign cardCol = 'business-areas' />
538 <#assign titleCol = 'title' />
539 <#elseif w == "1.5" && abstract =='' || w == "2" && abstract ==''>
540 <#assign cardCol = 'macro-category double-row' />
541 <#assign titleCol = 'title body-medium' />
542 <#elseif w == "card">
543 <#assign cardCol = 'macro-category' />
544 <#assign titleCol = 'title body-medium' />
545 <#else>
546 <#assign cardCol = 'macro-category' />
547 <#assign titleCol = 'title body-medium' />
548 </#if>
549 <section class="sant-anna-school-swiper-wrapper ${cardCol} with-title padding-top padding-bottom ${bg}">
550 <div class="container-full-width">
551 <div class="${width} <#if NASTitle.getData()?? && NASTitle.getData() != ''>component-with-title</#if>">
552 <#if NASTitle.getData()?? && NASTitle.getData() != ''>
553 <h2 class="title-extralarge">
554 <@leonardo.escapeTitle title=NASTitle.getData()/>
555 </h2>
556 </#if>
557
558 <#if w == "1.5" && abstract !=''>
559 <!--Card two column con layer -->
560 <section class="sant-anna-school-carousel">
561 <#assign size = NASTab.NASTabBrick.getSiblings()?size />
562 <div class="swiper sant-anna-school-swiper <#if (size < 3)>pb-md-0</#if>">
563 <#if (size > 2)>
564 <div class="swiper-navigation red">
565 <button class="swiper-button-prev" aria-label="previous slide" tabindex="0">
566 <img src="${themeDisplay.getPathThemeImages()}/img/generic/arrow-left-red-icon.svg" alt="navigation left">
567 </button>
568 <button class="swiper-button-next" aria-label="next slide" tabindex="0">
569 <img src="${themeDisplay.getPathThemeImages()}/img/generic/arrow-right-red-icon.svg" alt="navigation right">
570 </button>
571 </div>
572 </#if>
573 <div class="swiper-wrapper">
574 <#list NASTab.getSiblings() as tab>
575 <#if tab.NASTabBrick.getSiblings()?has_content>
576 <#list tab.NASTabBrick.getSiblings() as tabBrick>
577 <#assign scalingDetails = {
578 "desktop": {"alternateImage": {}, "key": "h_530"},
579 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_530"},
580 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_530"},
581 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_460"} }>
582 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
583 <div class="swiper-slide">
584 <#if tabBrick.ExternalTargetURL.getData() !='' || tabBrick.NasTabBrickLink.getData() !=''>
585 <a href="${leonardo.getTargetUrl(tabBrick.ExternalTargetURL!, tabBrick.NasTabBrickLink!)}" class="sant-anna-school-card" target="${leonardo.getTarget(tabBrick.LinkTargetOpenIn!)}">
586 <#else>
587 <div class="sant-anna-school-card">
588 </#if>
589 <picture>
590 <source
591 srcset="${dataImage.mobile?replace(" ", "%20")!}"
592 media="(max-width: 576px)"
593 />
594 <source
595 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
596 media="(max-width: 768px)"
597 >
598 <source
599 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
600 media="(max-width: 1024px)"
601 >
602 <img
603 class="management-card-image"
604 src="${dataImage.desktop?replace(" ", "%20")!}"
605 alt="${dataImage.alt_desktop!}"
606 />
607 </picture>
608 <div class="sant-anna-school-card-title rounded-20">
609 <div class="sant-anna-school-card-title-content">
610 <#if tabBrick.NASTabBrickTitle.getData() !=''>
611 <span class="body-medium">${tabBrick.NASTabBrickTitle.getData()}
612 </span>
613 </#if>
614 <#if tabBrick.NASTabBrickTitle.getData() !=''>
615 <div class="body-small m-0">${tabBrick.NASTabBrickAbstract.getData()}
616 </div>
617 </#if>
618 </div>
619 </div>
620 <#if tabBrick.ExternalTargetURL.getData() !='' || tabBrick.NasTabBrickLink.getData() !=''>
621 </a>
622 <#else>
623 </div>
624 </#if>
625 </div>
626 </#list>
627 </#if>
628 </#list>
629 </div>
630 <div class="swiper-pagination ${buttonColor}"></div>
631 </div>
632 </section>
633 <#else>
634 <!--Card two column card grid -->
635 <#if w == "1.5" && abstract =='' || w == "2" && abstract ==''>
636 <div class="flex-container">
637 <#assign counter = 0>
638 <#list NASTab.getSiblings() as tab>
639 <#if tab.NASTabBrick.getSiblings()?has_content>
640 <#assign sizeSlide = tab.NASTabBrick.getSiblings()?size />
641 <#list tab.NASTabBrick.getSiblings() as tabBrick>
642 <#if tabBrick?index == 0>
643 <div class="content hover-resize-columns">
644 <#elseif tabBrick?index % 2 == 0>
645 </div>
646 <div class="content hover-resize-columns">
647 </#if>
648
649 <#if tabBrick.NASTabBrickTitle?? && tabBrick.NASTabBrickTitle.getData() !=''>
650 <a href="${leonardo.getTargetUrl(tabBrick.ExternalTargetURL!, tabBrick.NasTabBrickLink!)}" title="${tabBrick.NASTabBrickTitle.getData()}" target="${leonardo.getTarget(tabBrick.LinkTargetOpenIn!)}">
651 <#assign scalingDetails = {
652 "desktop": {"alternateImage": {}, "key": "h_480"},
653 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_325"},
654 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_325"},
655 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_325"} }>
656 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
657 <div class="image-container">
658 <picture>
659 <source
660 srcset="${dataImage.mobile?replace(" ", "%20")!}"
661 media="(max-width: 576px)"
662 />
663 <source
664 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
665 media="(max-width: 768px)"
666 >
667 <source
668 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
669 media="(max-width: 1024px)"
670 >
671 <img
672 class="img-fluid"
673 src="${dataImage.desktop?replace(" ", "%20")!}"
674 alt="${dataImage.alt_desktop!}"
675 />
676 </picture>
677 </div>
678 <div class="${titleCol}">${tabBrick.NASTabBrickTitle.getData()}</div>
679 </a>
680 </#if>
681 <#if tabBrick?index == sizeSlide - 1>
682 </div>
683 </#if>
684 </#list>
685 </#if>
686 </#list>
687 </div>
688 <#else>
689 <div class="content hover-resize-columns <#if w == "card">four-per-row</#if>">
690 <#list NASTab.getSiblings() as tab>
691 <#if tab.NASTabBrick.getSiblings()?has_content>
692 <#list tab.NASTabBrick.getSiblings() as tabBrick>
693 <#if tabBrick.NASTabBrickTitle?? && tabBrick.NASTabBrickTitle.getData() !=''>
694 <a href="${leonardo.getTargetUrl(tabBrick.ExternalTargetURL!, tabBrick.NasTabBrickLink!)}" title="${tabBrick.NASTabBrickTitle.getData()}" target="${leonardo.getTarget(tabBrick.LinkTargetOpenIn!)}">
695 <#if w == "4">
696 <#assign scalingDetails = {
697 "desktop": {"alternateImage": {}, "key": "h_325"},
698 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_325"},
699 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_325"},
700 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_325"} }>
701 <#else>
702 <#assign scalingDetails = {
703 "desktop": {"alternateImage": {}, "key": "h_480"},
704 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_325"},
705 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_325"},
706 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_325"} }>
707 </#if>
708 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
709 <div class="image-container">
710 <picture>
711 <source
712 srcset="${dataImage.mobile?replace(" ", "%20")!}"
713 media="(max-width: 576px)"
714 />
715 <source
716 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
717 media="(max-width: 768px)"
718 >
719 <source
720 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
721 media="(max-width: 1024px)"
722 >
723 <img
724 class="img-fluid"
725 src="${dataImage.desktop?replace(" ", "%20")!}"
726 alt="${dataImage.alt_desktop!}"
727 />
728 </picture>
729 </div>
730 <div class="${titleCol}">${tabBrick.NASTabBrickTitle.getData()}</div>
731 </a>
732 </#if>
733 </#list>
734 </#if>
735 </#list>
736 </div>
737 </#if>
738 </#if>
739 </div>
740 </div>
741 </section>
742 <#break />
743 </#if>
744 </#list>
745 </#if>
746 </#list>
747 </#if>
748 </#if>
749<#else>
750 <@leonardo.articleInfo .vars "(G1, H) Images Wall (tabbed)"/>
751 <#assign ns = randomNamespace>
752 <#assign portletId = themeDisplay.getPortletDisplay().getId()>
753
754 <#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
755 <#assign currentGroupExpandoBridge = themeDisplay.getScopeGroup().getExpandoBridge()>
756 <#assign isDarkTheme = false>
757
758 <#if currentGroupExpandoBridge.hasAttribute("dark-theme")>
759 <#assign isDarkTheme = currentGroupExpandoBridge.getAttribute("dark-theme", false)>
760 </#if>
761
762 <!--Start Module: Products Cards-->
763 <div class="section-container section-container--fixed">
764 <div class='products-cards-tabs ${((NASTab.getSiblings()?size) > 1)?then("","collapsedPadding")}'>
765 <#if NASTitle.getData()?? && NASTitle.getData() != ''>
766
767 ${(getterUtil.getBoolean(NASTitle.isH1Flag.getData()))?then('<h1','<h2')} class="products-cards-tabs--heading section-heading section-heading--center"
768 ${(getterUtil.getBoolean(isAnchorBarHide.getData())!)?then('','id="${portletId}"')}
769 >
770 <@leonardo.escapeTitle title=NASTitle.getData()/>
771 ${(getterUtil.getBoolean(NASTitle.isH1Flag.getData()))?then('</h1>','</h2>')}
772 </#if>
773 <div class="products-cards-tabs--content">
774 <#if NASTab.getSiblings()?has_content>
775 <#if ((NASTab.getSiblings()?size) > 1)>
776 <ul class="nav nav-tabs" role="tablist">
777 <#list NASTab.getSiblings() as tab>
778 <li class="${(tab?is_first)?then('active', '')}" role="presentation">
779 <a href="#${ns}_${tab?index}" aria-controls="${ns}_${tab?index}" role="tab" data-toggle="tab">${tab.NASTabTag.getData()}</a>
780 </li>
781 </#list>
782 </ul>
783 </#if>
784 <div class="tab-content">
785 <#list NASTab.getSiblings() as tab>
786 <div class="tab-pane ${(tab?is_first)?then('active', '')}" id="${ns}_${tab?index}" role="tabpanel">
787 <!--Start Module: Products Cards-->
788 <div class="section-container section-container--fixed">
789 <div class="products-cards">
790 <div class="products-cards--cards">
791 <#if tab.NASTabBrick.getSiblings()?has_content>
792 <#assign count = 0>
793 <#list tab.NASTabBrick.getSiblings() as tabBrick>
794 <#if count == 0>
795 <div class="section-grid layout--m-col">
796 </#if>
797 <#assign w = getterUtil.getFloat(tabBrick.NASTabBrickWidth.getData(), 0)>
798 <#assign count = count + w>
799 <#if w == 1>
800 <#assign width = "33">
801 <#elseif w == 1.5>
802 <#assign width = "50">
803 <#elseif w == 2>
804 <#assign width = "67">
805 <#else>
806 <#assign width = "100">
807 </#if>
808 <#if w == 1>
809 <#assign scalingDetails = {
810 "desktop": {"alternateImage": {}, "key": "w_480"},
811 "tl": {"alternateImage": (tabBrick.NASTabBrickImage.ImageTl)!, "key": "h_285"},
812 "tp": {"alternateImage": (tabBrick.NASTabBrickImage.ImageTp)!, "key": "h_335"},
813 "mobile": {"alternateImage": (tabBrick.NASTabBrickImage.ImageM)!, "key": "h_335"}
814 }>
815 <#elseif w == 1.5>
816 <#assign scalingDetails = {
817 "desktop": {"alternateImage": {}, "key": "w_720"},
818 "tl": {"alternateImage": (tabBrick.NASTabBrickImage.ImageTl)!, "key": "h_285"},
819 "tp": {"alternateImage": (tabBrick.NASTabBrickImage.ImageTp)!, "key": "h_335"},
820 "mobile": {"alternateImage": (tabBrick.NASTabBrickImage.ImageM)!, "key": "h_335"}
821 }>
822 <#else>
823 <#assign scalingDetails = {
824 "desktop": {"alternateImage": {}, "key": "w_1440"},
825 "tl": {"alternateImage": (tabBrick.NASTabBrickImage.ImageTl)!, "key": "h_285"},
826 "tp": {"alternateImage": (tabBrick.NASTabBrickImage.ImageTp)!, "key": "h_335"},
827 "mobile": {"alternateImage": (tabBrick.NASTabBrickImage.ImageM)!, "key": "h_335"}
828 }>
829 </#if>
830 <#assign brickImg=leonardo.adaptImage((tabBrick.NASTabBrickImage)!, scalingDetails)>
831 <div class="grid grid--m100p grid--d${width}p grid--tp${width}p">
832 <div class="products-cards--cards--card">
833 <!--Start Module: Service Offering Cards-->
834 <#if (isDarkTheme)&& (tabBrick.linkList??) &&
835 (tabBrick.linkList.linkItem.getSiblings()[0].linkTitle.getData()?has_content) &&
836 (leonardo.getTargetUrl(tabBrick.linkList.linkItem.getSiblings()[0].externalUrl!,tabBrick.linkList.linkItem.getSiblings()[0].link!)?has_content)
837 >
838 <!--Start linkListType -->
839 <div class="service-offerings-card"
840 data-img-url-d="${brickImg.desktop!}"
841 data-img-url-tl="${brickImg.tablet_landscape!}"
842 data-img-url-tp="${brickImg.tablet_portrait!}"
843 data-img-url-m="${brickImg.mobile!}"
844 title="${tabBrick.NASTabBrickTitle.getData()}">
845 <div class="service-offerings-card--overlay"></div>
846 <div class="service-offerings-card--content ${tabBrick.NASTabBrickTextLightOrDark.getData()} has-description multi-link-type">
847 <div class="service-offerings-card--content--heading">${tabBrick.NASTabBrickTitle.getData()}</div>
848 <div class="service-offerings-card--content--description">
849 ${tabBrick.NASTabBrickAbstract.getData()}
850 <#list tabBrick.linkList.linkItem.getSiblings() as linkItem>
851
852 <#assign linkUrl=leonardo.getTargetUrl(linkItem.externalUrl!, linkItem.link!)>
853 <#assign linkTarget=leonardo.getTarget(linkItem.linkTarget!)>
854
855 <div class="button-link">
856 <a class="link-arrow"
857 href="${linkUrl}"
858 target = "${linkTarget}"
859 title ="${linkItem.linkTitle.data!}"
860 >
861 ${linkItem.linkTitle.data!}
862 </a>
863 </div>
864 </#list>
865 </div>
866 </div>
867 </div>
868 <!--End linkListType -->
869 <#else>
870 <!--Start Single Link -->
871 <a class="service-offerings-card"
872 href="${leonardo.getTargetUrl(tabBrick.ExternalTargetURL!, tabBrick.NasTabBrickLink!)}"
873 target="${leonardo.getTarget(tabBrick.LinkTargetOpenIn!)}"
874 data-img-url-d="${brickImg.desktop!}"
875 data-img-url-tl="${brickImg.tablet_landscape!}"
876 data-img-url-tp="${brickImg.tablet_portrait!}"
877 data-img-url-m="${brickImg.mobile!}"
878 title="${tabBrick.NASTabBrickTitle.getData()}">
879 <div class="service-offerings-card--overlay"></div>
880 <div class="service-offerings-card--content ${tabBrick.NASTabBrickTextLightOrDark.getData()} has-description">
881 <div class="service-offerings-card--content--heading">${tabBrick.NASTabBrickTitle.getData()}</div>
882 <div class="service-offerings-card--content--description">${tabBrick.NASTabBrickAbstract.getData()}</div>
883 </div>
884 </a>
885 <noscript>
886 <img src="${brickImg.desktop!}" alt='${brickImg.alt_desktop!}'>
887 <img src="${brickImg.tablet_landscape!}" alt='${brickImg.alt_tablet_landscape!}'>
888 <img src="${brickImg.tablet_portrait!}" alt='${brickImg.alt_tablet_portrait!}'>
889 <img src="${brickImg.mobile!}" alt='${brickImg.alt_mobile!}'>
890 </noscript>
891 <!--End Single Link -->
892 </#if>
893 <!--End Module: Service Offering Cards-->
894 </div>
895 </div>
896 <#if ((count > 2) || tabBrick?is_last)>
897 <#assign count = 0>
898 </div>
899 </#if>
900 </#list>
901 </#if>
902 </div>
903 </div>
904 </div>
905 <!--End Module: Products Cards-->
906 </div>
907 </#list>
908 </div>
909 </#if>
910 </div>
911 </div>
912 </div>
913 <!--End Module: Products Cards-->
914
915 <!--Start Module: Free Area-->
916 <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
917 <#assign languageId = languageUtil.getLanguageId(locale) />
918
919 <#if AreaLibera?has_content>
920 <#list AreaLibera.getSiblings() as cur_AreaLibera>
921 <div class="section-container section-container--fixed wall-tab-free-area">
922 <#if (cur_AreaLibera.HTML.getData())?has_content>
923 ${cur_AreaLibera.HTML.getData()}
924 </#if>
925 <#if (cur_AreaLibera.WebContent.getData())?has_content>
926 <#assign data = cur_AreaLibera.WebContent.getData()/>
927 <#assign json = jsonFactoryUtil.createJSONObject(data) />
928 <#assign classPK = json.getLong("classPK") />
929 <#if (classPK >0) >
930 <#assign ja = journalArticleLocalService.getLatestArticle(classPK) />
931 <#assign jad = journalArticleLocalService.getArticleDisplay(ja,
932 ja.getTemplateId(), "", languageId,
933 1, null, themeDisplay) />
934 ${jad.getContent()}
935 </#if>
936 </#if>
937 </div>
938 </#list>
939 </#if>
940 <!--End Module: Free Area-->
941</#if>
2026-03-24T01:52:37Z
cookie_disclaimer:true
page_disclaimer :false