Extra Red e il DevOps con Red Hat OpenShift
Maria Giulia Cecchini
modificato 1 Anno fa.
Si è verificato un errore nell'elaborarazione del modello.
The string doesn't match the expected date/time/date-time format. The string to parse was: "gio, 12 nov 2020 16:13:00 +0000". The expected format was: "EEE, dd MMM yyyy HH:mm:ss zzz". The nested reason given follows: Unparseable date: "gio, 12 nov 2020 16:13:00 +0000" ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign date = data_pubblicazione?dat... [in template "20097#20123#43369" at line 169, column 25] ----
1<#-- Articolo Template -->
2<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
3<#assign journalArticleLocalService = serviceLocator.findService('com.liferay.journal.service.JournalArticleLocalService')/>
4<#assign journalArticleResourceLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") />
5<#assign journalArticleId = .vars['reserved-article-id'].data/>
6<#assign articleResourcePrimaryKey = journalArticleResourceLocalService.getArticleResourcePrimKey(themeDisplay.getScopeGroupId(), journalArticleId)/>
7<#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", articleResourcePrimaryKey)/>
8<#assign article = journalArticleLocalService.getArticle(groupId, journalArticleId)>
9<#assign assetLinkLocalService=serviceLocator.findService("com.liferay.asset.link.service.AssetLinkLocalService")>
10<#assign currentArticleAssetEntryId = assetEntry.getEntryId() />
11<#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) />
12<#assign assetCategoryPropertyLocalService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") />
13<#assign customColor = getterUtil.getString(themeDisplay.getThemeSetting("color-setting"))/>
14<#assign categoryService = serviceLocator.findService("it.extrared.redweb.commons.service.CategoryService") />
15
16<#assign dlFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') />
17
18<#assign goToVideo = languageUtil.get(locale, "go-to-video") />
19<#assign watchWebinar = languageUtil.get(locale, "watch-webinar") />
20
21<#-- Controllo contenuto link bottone -->
22<#assign linkInterno = "" />
23<#assign linkEsterno = "" />
24<#assign linkDocumento = "" />
25<#if GruppoCampi66802617.getSiblings()?has_content>
26 <#list GruppoCampi66802617.getSiblings() as cur_LinkBottone>
27
28 <#-- Controllo testo bottone -->
29 <#assign textCTA = "" />
30 <#if cur_LinkBottone?? && cur_LinkBottone.Testo49250151.getData() != "" >
31 <#assign textCTA = cur_LinkBottone.Testo49250151.getData() />
32 </#if>
33
34 <#assign textButton = "" >
35 <#if (cur_LinkBottone.Testo18754671.getData())??>
36 <#assign textButton = GruppoCampi66802617.Testo18754671.getData() >
37 </#if>
38
39 <#if cur_LinkBottone?? && cur_LinkBottone.CollegamentoAllaPagina67614564.getFriendlyUrl() != "" >
40 <#assign linkInterno = cur_LinkBottone.CollegamentoAllaPagina67614564.getFriendlyUrl() />
41 </#if>
42 <#if cur_LinkBottone?? && cur_LinkBottone.Testo46501067.getData() != "" >
43 <#assign linkEsterno = cur_LinkBottone.Testo46501067.getData() />
44 </#if>
45 <#if cur_LinkBottone?? && cur_LinkBottone.caricare25086335.getData() != "" >
46 <#assign linkDocumento = cur_LinkBottone.caricare25086335.getData() />
47 </#if>
48 </#list>
49
50 <#-- Controllo icona -->
51 <#assign icon = "" />
52 <#if (GruppoCampi66802617.SelezionaDaElenco72955912.getData())??>
53 <#if GruppoCampi66802617.SelezionaDaElenco72955912.getData() == "opzione89943152">
54 <#assign icon = "article" />
55 <#elseif GruppoCampi66802617.SelezionaDaElenco72955912.getData() == "opzione97588657">
56 <#assign icon = "rocket_launch" />
57 <#elseif GruppoCampi66802617.SelezionaDaElenco72955912.getData() == "opzione89434224">
58 <#assign icon = "face_3" />
59 <#elseif GruppoCampi66802617.SelezionaDaElenco72955912.getData() == "opzione15924154">
60 <#assign icon = "explore" />
61 <#elseif GruppoCampi66802617.SelezionaDaElenco72955912.getData() == "opzione80901431">
62 <#assign icon = "favorite" />
63 <#elseif GruppoCampi66802617.SelezionaDaElenco72955912.getData() == "opzione01933059">
64 <#assign icon = "work" />
65 </#if>
66 </#if>
67</#if>
68
69<#assign title = .vars['reserved-article-title'].data />
70<#assign data_pubblicazione = .vars['reserved-article-display-date'].data>
71
72<#assign text = "">
73<#if (Rtf18010575.getData())?? && Rtf18010575.getData() != "" >
74 <#assign text = Rtf18010575.getData() >
75</#if>
76
77<#assign secTitle = "">
78<#if (Testo79379845.getData())?? && Testo79379845.getData() != "" >
79 <#assign secTitle = Testo79379845.getData()>
80</#if>
81
82<#assign secText = "">
83<#if (Rtf83023544.getData())?? && Rtf83023544.getData() != "" >
84 <#assign secText = Rtf83023544.getData() >
85</#if>
86
87<#assign otherText = "" >
88<#if (Rtf35350295.getData())?? && Rtf35350295.getData() != "" >
89 <#assign otherText = Rtf35350295.getData() >
90</#if>
91
92<#-- Webinar -->
93<#assign videoWebinar = "">
94<#assign dataWebinar = "">
95<#assign relatoreWebinar = "">
96
97<section class="container-fluid">
98 <#-- Controllo visualizza particellare -->
99 <#assign particellare = "" />
100 <#assign posizione = "" />
101 <#if getterUtil.getBoolean(GruppoCampi62968859.Booleano86255642.getData())>
102 <#assign particellare = "particelle" />
103
104 <#-- Controllo posizione particellare -->
105 <#if (GruppoCampi62968859.SelezionaDaElenco29280766.getData())?? && GruppoCampi62968859.SelezionaDaElenco29280766.getData()?has_content >
106 <#if GruppoCampi62968859.SelezionaDaElenco29280766.getData() == "opzione15134513">
107 <#assign posizione = "top-left" />
108 <lottie-player src="/o/redweb-theme/images/illustrazioni/part_${customColor}_${posizione}.json" background="transparent" speed="1" style="top: 0px; left: 0px; position: absolute; z-index: -1; width: 100%; height: auto;" loop autoplay></lottie-player>
109 <#elseif GruppoCampi62968859.SelezionaDaElenco29280766.getData() == "opzione21396753">
110 <#assign posizione = "bot-left" />
111 <lottie-player src="/o/redweb-theme/images/illustrazioni/part_${customColor}_${posizione}.json" background="transparent" speed="1" style="bottom: 0px; left: 0px; position: absolute; z-index: -1; width: 100%; height: auto;" loop autoplay></lottie-player>
112 <#elseif GruppoCampi62968859.SelezionaDaElenco29280766.getData() == "opzione33012210">
113 <#assign posizione = "top-right" />
114 <lottie-player src="/o/redweb-theme/images/illustrazioni/part_${customColor}_${posizione}.json" background="transparent" speed="1" style="top: 0px; right: 0px; position: absolute; z-index: -1; width: 100%; height: auto;" loop autoplay></lottie-player>
115 <#elseif GruppoCampi62968859.SelezionaDaElenco29280766.getData() == "opzione53250531">
116 <#assign posizione = "bot-right" />
117 <lottie-player src="/o/redweb-theme/images/illustrazioni/part_${customColor}_${posizione}.json" background="transparent" speed="1" style="bottom: 0px; right: 0px; position: absolute; z-index: -1; width: 100%; height: auto;" loop autoplay></lottie-player>
118 </#if>
119 </#if>
120 </#if>
121 <div class="container col-xxl-12 col-12">
122 <div class="row">
123 <div class="col-lg-6">
124 <div class="row">
125 <div class="col-lg-12">
126 <#-- Categoria -->
127 <#assign journalArticle = serviceLocator.findService('com.liferay.journal.service.JournalArticleLocalService') />
128 <#assign article = journalArticle.getArticle(groupId, .vars['reserved-article-id'].data)/>
129 <#assign assetEntry = serviceLocator.findService('com.liferay.asset.kernel.service.AssetEntryLocalService') />
130
131 <#assign entry = assetEntry.getEntry("com.liferay.journal.model.JournalArticle", article.resourcePrimKey) />
132 <#assign categories = entry.getCategories() />
133
134 <#assign categoriesList = "" />
135 <#list categories as c>
136 <#--
137 <#attempt>
138 <#assign typeProperty = assetCategoryPropertyLocalService.fetchCategoryProperty(c.categoryId?long, "type") />
139 <#recover>
140 <#if !categoriesList?has_content>
141 <#assign categoriesList = c.getTitle(locale)?upper_case />
142 <#else>
143 <#assign categoriesList = categoriesList + ", " + c.getTitle(locale)?upper_case />
144 </#if>
145 </#attempt>
146 -->
147 <#assign hasProperty = categoryService.hasCategoryProperty(c.getCategoryId(), "type") />
148 <#if !hasProperty>
149 <#if !categoriesList?has_content>
150 <#assign categoriesList = c.getTitle(locale)?upper_case />
151 <#else>
152 <#assign categoriesList = categoriesList + ", " + c.getTitle(locale)?upper_case />
153 </#if>
154 </#if>
155 </#list>
156
157 <p class="mb-4 text-muted">${categoriesList}</p>
158 <#--
159 <p class="mb-4 text-muted">
160 <#list category as c>
161 ${c.getTitle(locale)?upper_case}
162 <#if c?has_next >, </#if>
163 </#list>
164 </p>
165 -->
166
167 <h1>${title}</h1>
168
169 <#assign date = data_pubblicazione?date("EEE, dd MMM yyyy HH:mm:ss zzz")>
170 <#assign dateTimeFormat = languageUtil.get(locale, "dd MMMM yyyy")>
171 <#assign date = date?string(dateTimeFormat)>
172 <p class="mb-4 text-muted">
173 <i class="align-middle me-2 material-symbols-outlined">event</i>
174 ${date}
175 </p>
176
177 <#if (webinarItem.relatoreWebinar.getData())?? && webinarItem.relatoreWebinar.getData() != "">
178 <p class="mb-4 text-muted">
179 <#assign relatoreWebinar = webinarItem.relatoreWebinar.getData() >
180 <i class="align-middle me-2 material-symbols-outlined">face</i>
181 ${relatoreWebinar?upper_case}
182 </p>
183 </#if>
184 </div>
185
186 <div class="px-0 mb-5 d-lg-none">
187 <#-- Gestione del video Webinar -->
188 <#if (webinarItem.videoWebinar.getData())?? && webinarItem.videoWebinar.getData() != "">
189 <#assign videoWebinar = webinarItem.videoWebinar.getData() >
190 <video preload='metadata' controls class="w-100">
191 <source src="${videoWebinar}" type="video/mp4">
192 </video>
193 <#-- END Gestione del video Webinar -->
194 <#elseif (immaginePrincipale.getData())?? && immaginePrincipale.getData() != "">
195 <img alt="${immaginePrincipale.getAttribute("alt")}" data-fileentryid="${immaginePrincipale.getAttribute("fileEntryId")}" src="${immaginePrincipale.getData()}" width="100%" height="auto" class="mb-5" />
196 </#if>
197
198 <#-- Gallery -->
199 <#if GruppoCampi90160772.caricare52649326.getData()?has_content>
200 <div class="gallery-articolo">
201 <#list GruppoCampi90160772.getSiblings() as cur_contMultimediale>
202 <#assign splitter = cur_contMultimediale.caricare52649326.getData()?split("/") />
203 <#if (cur_contMultimediale.caricare52649326.getData())?? && cur_contMultimediale.caricare52649326.getData() != "" >
204 <#--
205 <#if cur_contMultimediale?is_first>
206 <div class="col-lg-12 col-12 float-end mb-5">
207 <#else>
208 <div class="col-lg-6 col-6 float-end mb-5">
209 </#if>
210 -->
211 <div class="col-lg-6 col-6 float-end mb-5">
212 <a class="glightbox" href="${cur_contMultimediale.caricare52649326.getData()}" data-title=""
213 data-description="${cur_contMultimediale.Testo72330998.getData()}">
214 <#assign file = dlFileEntryService.getFileEntryByUuidAndGroupId(splitter[5]?split("?")[0], splitter[2]?number) />
215 <#assign mimeType = file.getMimeType() />
216 <#if mimeType?contains("video")>
217 <video src="${cur_contMultimediale.caricare52649326.getData()}" controls width="100%" height="auto" alt="${cur_contMultimediale.Testo72330998.getData()}" type="video/mp4"></video>
218 <#else>
219 <img src="${cur_contMultimediale.caricare52649326.getData()}" width="100%" height="auto" alt="${cur_contMultimediale.Testo72330998.getData()}"/>
220 </#if>
221 </a>
222 </div>
223 </#if>
224 </#list>
225 </div>
226 </#if>
227 </div>
228
229 <div class="col-lg-12">
230 <p class="pt-lg-3 pt-0">${text}</p>
231 </div>
232
233 <div class="pt-lg-3 pt-0 col-lg-12">
234 <#if secTitle?has_content>
235 <h2>${secTitle}</h2>
236 </#if>
237 <#if secText?has_content >
238 <p>${secText}</p>
239 </#if>
240 </div>
241
242 <div class="col-lg-12 pt-lg-3 pt-0 mb-5" >
243 <#-- CTA -->
244 <#assign titleCTA = "" >
245 <#if (GruppoCampi66802617.Testo49250151.getData())?? && GruppoCampi66802617.Testo49250151.getData() != "">
246 <#assign titleCTA = GruppoCampi66802617.Testo49250151.getData() >
247 <div class="ms-lg-n5 ms-n4 ms-ms-n4 col-lg-10 col-10 bg-red-red-cta-light p-4 p-lg-5">
248 <h2 class="fw-normal">${titleCTA}</h2>
249 <!-- Bottone CTA -->
250 <#if textButton?has_content>
251 <#if linkInterno?has_content>
252 <a class="pt-lg-2 pt-3" href="${linkInterno}">
253 <#elseif linkEsterno?has_content>
254 <a class="pt-lg-2 pt-3" href="${linkEsterno}" target="_blank">
255 <#elseif linkDocumento?has_content>
256 <a class="pt-lg-2 pt-3" href="${linkDocumento}" download>
257 </#if>
258 <#if (GruppoCampi66802617.SelezionaDaElenco72955912.getData())?? && GruppoCampi66802617.SelezionaDaElenco72955912.getData() != "">
259 <i class="me-2 align-middle material-symbols-outlined">${icon}</i>
260 </#if>
261 <span class="align-middle">${textButton}</span>
262 </a>
263 </#if>
264 </div>
265 </#if>
266 </div>
267
268 <div class="col-lg-12">
269 <#if otherText?has_content>
270 <p class="mb-lg-0">${otherText}</p>
271 </#if>
272 </div>
273 </div>
274 </div>
275 <div class="col-lg-6 d-lg-block d-none">
276 <#-- Gestione del video Webinar -->
277 <#if (webinarItem.videoWebinar.getData())?? && webinarItem.videoWebinar.getData() != "" || (webinarItem.videoWebinarEsterno.getData())?? && webinarItem.videoWebinarEsterno.getData() != "">
278 <#assign videoWebinar = webinarItem.videoWebinar.getData() >
279 <#assign videoWebinarEsterno = webinarItem.videoWebinarEsterno.getData() >
280 <#if (webinarItem.videoWebinar.getData())?? && webinarItem.videoWebinar.getData() != "" >
281 <video preload='metadata' controls class="w-100">
282 <source src="${videoWebinar}" type="video/mp4">
283 </video>
284 <#elseif (webinarItem.videoWebinarEsterno.getData())?? && webinarItem.videoWebinarEsterno.getData() != "">
285 <div class="float-lg-end float-end me-lg-n5 me-n4 me-ms-n4 col-lg-10 col-10 bg-red-red-cta-light p-4 p-lg-5">
286 <h2 class="fw-normal">${watchWebinar}</h2>
287 <a class="pt-lg-2 pt-3" href="${videoWebinarEsterno}" target="_blank">
288 <i class="me-2 align-middle material-symbols-outlined">explore</i>
289 <span class="align-middle">${goToVideo}</span>
290 </a>
291 </div>
292 </#if>
293 <#-- END Gestione del video Webinar -->
294 <#elseif (immaginePrincipale.getData())?? && immaginePrincipale.getData() != "">
295 <img alt="${immaginePrincipale.getAttribute("alt")}" data-fileentryid="${immaginePrincipale.getAttribute("fileEntryId")}" src="${immaginePrincipale.getData()}" width="100%" height="auto" class="mb-5" />
296 </#if>
297
298
299 <#-- Gallery -->
300 <#if GruppoCampi90160772.caricare52649326.getData()?has_content>
301 <#list GruppoCampi90160772.getSiblings() as cur_contMultimediale>
302 <#assign splitter = cur_contMultimediale.caricare52649326.getData()?split("/") />
303 <#if (cur_contMultimediale.caricare52649326.getData())?? && cur_contMultimediale.caricare52649326.getData() != "" >
304 <#--
305 <#if cur_contMultimediale?is_first>
306 <div class="col-lg-12 col-12 float-end mb-5">
307 <#else>
308 <div class="col-lg-6 col-6 float-end mb-5">
309 </#if>
310 -->
311 <div class="col-lg-6 col-6 float-end mb-5">
312 <a class="glightbox" href="${cur_contMultimediale.caricare52649326.getData()}" data-title=""
313 data-description="${cur_contMultimediale.Testo72330998.getData()}">
314 <#assign file = dlFileEntryService.getFileEntryByUuidAndGroupId(splitter[5]?split("?")[0], splitter[2]?number) />
315 <#assign mimeType = file.getMimeType() />
316 <#if mimeType?contains("video")>
317 <video src="${cur_contMultimediale.caricare52649326.getData()}" controls width="100%" height="auto" alt="${cur_contMultimediale.Testo72330998.getData()}" type="video/mp4"></video>
318 <#else>
319 <img src="${cur_contMultimediale.caricare52649326.getData()}" width="100%" height="auto" alt="${cur_contMultimediale.Testo72330998.getData()}"/>
320 </#if>
321 </a>
322 </div>
323 </#if>
324 </#list>
325 </#if>
326 </div>
327 </div>
328 </div>
329</section>
altri articoli sull'argomento
CLOUD & DEVOPS
Dynatrace: osservabilità e sicurezza unificate
CLOUD & DEVOPS
Red Hat Summit 2023 Boston
CLOUD & DEVOPS
Red Hat Advanced Cluster Management
CLOUD & DEVOPS
Quarkus & Couchbase: a simple REST example
MIDDLEWARE, CLOUD & DEVOPS
8 passi per sviluppare un'applicazione cloud native
CLOUD & DEVOPS
Qual è la differenza tra Virtualizzazione e Cloud Computing?
CLOUD & DEVOPS