Calendario
Uno spazio in costante aggiornamento per raccontare l'impegno dei componenti del Consiglio Nazionale Geometri e Geometri Laureati: audizioni parlamentari, incontri istituzionali, tavoli tecnici, presentazioni e attività svolte nei contesti di riferimento della professione, da UNI alla Rete Professioni Tecniche.
Virhe tapahtui prosessoidessa esitysmallia.
Java method "jdk.proxy183.$Proxy1326.getArticle(long, String)" threw an exception when invoked on jdk.proxy183.$Proxy1326 object "com.liferay.journal.service.impl.JournalArticleServiceImpl@9b773a1"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign article = journalArticleLocal... [in template "20115#20151#303091" at line 50, column 41]
----
1<!-- DETTAGLIO NEWS SINGOLA -->
2
3<#-- RECUPERO DATI -->
4
5 <#-- assign dataPub = .vars['reserved-article-display-date'].data / Fix. il campo non esiste piu -->
6
7 <#-- Save the original page locale for later -->
8 <#assign originalLocale = .locale>
9 <#-- Set the page locale to the portals default locale -->
10 <#setting locale = localeUtil.getDefault()>
11
12 <#-- Parse the date to a date object -->
13 <#-- assign dataPub = dataPub?datetime("EEE, d MMM yyyy HH:mm:ss Z") -->
14
15 <#-- Set the page locale back to the original page locale -->
16 <#-- Set the page locale back to the original page locale -->
17 <#setting locale = originalLocale>
18 <#assign currentUrl = themeDisplay.getURLCurrent()/>
19 <#assign splitUrl = currentUrl?split("?") />
20 <#assign cleanedUrl = splitUrl[0] />
21 <#assign portalUrl = themeDisplay.getPortalURL() />
22
23
24<#-- FINE RECUPERO DATI -->
25
26
27
28<main class="cng">
29 <section class="section mt-5">
30 <div class="container">
31
32<#assign DataNotizia_Data = getterUtil.getString(Ttiolo.DataNotizia.getData())>
33
34
35 <div class="customTab col-lg-8" style="margin-top:0; padding-top: 0"> <!-- prima colonna -->
36 <div class="subtitle mb-3" style="display: flex; justify-content: space-between; flex-wrap: wrap;">
37
38 <!--
39 <p class="mb-3">
40 -->
41
42
43 <!-- DA PROVARE DOPO RIAVVIO -->
44 <#assign AssetEntryLocalServiceUtil = objectUtil("com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil") />
45
46 <#-- assign assetService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetTagLocalService") -->
47
48 <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleService") />
49
50 <#assign article = journalArticleLocalService.getArticle(getterUtil.getLong(scopeGroupId), .vars['reserved-article-id'].data)>
51
52<#assign resourcePrimKey = article.getResourcePrimKey() />
53
54 <#assign entry = AssetEntryLocalServiceUtil.getEntry("com.liferay.journal.model.JournalArticle", resourcePrimKey) />
55
56<#assign tagName = "" />
57<#if entry?? && entry.getTags()?size != 0 >
58<#assign tags = entry.getTags() />
59 <#list tags as tag>
60
61 <#assign tagName = tag.getName() />
62
63
64
65</#list>
66</#if>
67
68
69
70
71
72
73 <#if NomeTag??>
74 ${NomeTag.getData()}
75 <#else>
76
77 <#if tagName?upper_case == "NEWS">
78
79
80 <a href="/notizie" style="text-decoration: none;" class="btn-secondary tag-news mr-2">NOTIZIE
81
82 <#else>
83
84 <#if tagName?upper_case == "VIDEO">
85
86 <a href="/video-gallery" style="text-decoration: none;" class="btn-secondary tag-news mr-2">VIDEO GALLERY
87
88 <#else>
89 <#if tagName?upper_case == "COMUNICATI STAMPA">
90 <a href="/comunicati-stampa" style="text-decoration: none;" class="btn-secondary tag-news mr-2"> COMUNICATI STAMPA
91 </#if>
92
93 </#if>
94
95 </#if>
96 </#if>
97
98 </a>
99
100<!--
101 </p>
102 -->
103
104
105 <#if validator.isNotNull(DataNotizia_Data)>
106 <#assign DataNotizia_DateObj = dateUtil.parseDate("yyyy-MM-dd", DataNotizia_Data, locale)>
107
108 ${dateUtil.getDate(DataNotizia_DateObj, "dd/MM/yyyy", locale)}
109
110
111 <#-- #else>
112 ${dataPub?string["dd/MM/yyyy"]} -->
113 </#if>
114
115 <div class="social-icons float-right">
116 <a href="https://www.facebook.com/sharer/sharer.php?u=${portalUrl}${currentUrl}" target="_blank" >
117 <!-- i class="fab fa-facebook-square"></i -->
118 <@clay["icon"] symbol="social-facebook" />
119 </a>
120 <a href="https://twitter.com/intent/tweet?url=${portalUrl}${cleanedUrl}&text=${Ttiolo.getData()}" target="_blank">
121 <!-- i class="fab fa-twitter-square"></i -->
122 <@clay["icon"] symbol="twitter-x" />
123 </a>
124</div>
125
126
127 <!-- condividi toolbar -->
128 <!-- div class="addthis_inline_share_toolbox float-right" -->
129
130 <!-- PEZZOTTO AL MOMENTO COPIO IL TESTO DEL DIV CHE DOVREBBE ESSERE CREATO RUN_TIME
131
132 <div id="atstbx" class="at-resp-share-element at-style-responsive addthis-smartlayers addthis-animated at4-show"
133 aria-labelledby="at-c8f47a8a-9dac-43c9-b98c-ba4e0c3b5b20" role="region">
134 <span id="at-c8f47a8a-9dac-43c9-b98c-ba4e0c3b5b20" class="at4-visually-hidden">AddThis Sharing Buttons</span>
135 <div class="at-share-btn-elements">
136 <a role="button" tabindex="0" class="at-icon-wrapper at-share-btn at-svc-facebook" style="background-color: orange; border-radius: 4px;"><span class="at4-visually-hidden">Share to Facebook</span><span class="at-icon-wrapper" style="line-height: 16px; height: 16px; width: 16px;"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" version="1.1" role="img" aria-labelledby="at-svg-facebook-1" class="at-icon at-icon-facebook" style="fill: rgb(255, 255, 255); width: 16px; height: 16px;"><title id="at-svg-facebook-1">Facebook</title><g><path d="M22 5.16c-.406-.054-1.806-.16-3.43-.16-3.4 0-5.733 1.825-5.733 5.17v2.882H9v3.913h3.837V27h4.604V16.965h3.823l.587-3.913h-4.41v-2.5c0-1.123.347-1.903 2.198-1.903H22V5.16z" fill-rule="evenodd"></path></g></svg></span></a>
137 <a role="button" tabindex="0" class="at-icon-wrapper at-share-btn at-svc-twitter" style="background-color: orange; border-radius: 4px;"><span class="at4-visually-hidden">Share to Twitter</span><span class="at-icon-wrapper" style="line-height: 16px; height: 16px; width: 16px;"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" version="1.1" role="img" aria-labelledby="at-svg-twitter-2" class="at-icon at-icon-twitter" style="fill: rgb(255, 255, 255); width: 16px; height: 16px;"><title id="at-svg-twitter-2">Twitter</title><g><path d="M27.996 10.116c-.81.36-1.68.602-2.592.71a4.526 4.526 0 0 0 1.984-2.496 9.037 9.037 0 0 1-2.866 1.095 4.513 4.513 0 0 0-7.69 4.116 12.81 12.81 0 0 1-9.3-4.715 4.49 4.49 0 0 0-.612 2.27 4.51 4.51 0 0 0 2.008 3.755 4.495 4.495 0 0 1-2.044-.564v.057a4.515 4.515 0 0 0 3.62 4.425 4.52 4.52 0 0 1-2.04.077 4.517 4.517 0 0 0 4.217 3.134 9.055 9.055 0 0 1-5.604 1.93A9.18 9.18 0 0 1 6 23.85a12.773 12.773 0 0 0 6.918 2.027c8.3 0 12.84-6.876 12.84-12.84 0-.195-.005-.39-.014-.583a9.172 9.172 0 0 0 2.252-2.336" fill-rule="evenodd"></path></g></svg></span></a>
138 <a role="button" tabindex="0" class="at-icon-wrapper at-share-btn at-svc-compact" style="background-color: orange; border-radius: 4px;"><span class="at4-visually-hidden">Share to Più...</span><span class="at-icon-wrapper" style="line-height: 16px; height: 16px; width: 16px;"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" version="1.1" role="img" aria-labelledby="at-svg-addthis-3" class="at-icon at-icon-addthis" style="fill: rgb(255, 255, 255); width: 16px; height: 16px;"><title id="at-svg-addthis-3">AddThis</title><g><path d="M18 14V8h-4v6H8v4h6v6h4v-6h6v-4h-6z" fill-rule="evenodd"></path></g></svg></span></a>
139 </div>
140 </div>
141
142 FINE PEZZOTTO -->
143
144 <!-- /div -->
145
146</div>
147
148
149 <h1 class="title" >${Ttiolo.getData()}</h1>
150
151
152
153
154 <#if tagName?? && tagName?upper_case != "VIDEO">
155 <#if Ttiolo.Foto.getData()?? && Ttiolo.Foto.getData() != "">
156 <img class="mb-4 img-fluid" data-fileentryid="${Ttiolo.Foto.getAttribute("fileEntryId")}" alt="${Ttiolo.Foto.getAttribute("alt")}" src="${Ttiolo.Foto.getData()}" style="width: 100% !important; border-radius: 8px;width: inherit" />
157
158 </#if>
159</#if>
160
161<#if Ttiolo.LinkVideo?? && Ttiolo.LinkVideo.getData() != "">
162 <p class="text-center">
163 <iframe src="${Ttiolo.LinkVideo.getData()}" width="700px" height="394px" frameborder="0"
164 allowfullscreen></iframe>
165 </p>
166
167</#if>
168
169
170
171${Ttiolo.Contenuto.getData()}
172
173
174 </div> <!-- chiusura prima colonna -->
175
176
177 </div>
178 </section>
179
180 </main>
181
182
183
184
185<#-- CSS PER NASCONDERE IL TITOLO DEL WEB CONTENT -->
186<style type="text/css">
187.header-title{display: none;}
188.asset-title.d-inline{ display: none !important; }
189
190/* modifico */
191
192.asset-full-content {
193 display: block;
194 /*border: 1px solid red;*/
195}
196
197.mainHeader {
198 padding: 120px 0 80px;
199}
200
201
202<#-- DIV PER IL BANNER SOPRA -->
203 <div class="mainHeader header05">
204 <div class="container">
205 <div class="mainHeader-inner">
206 <h3>News & Media</h3>
207 <h1>Notizie ed eventi</h1>
208 </div>
209 </div>
210 </div>
211<#-- FINE DIV PER BANNER -->
212
213
214<#-- =================== PARTI GENERICHE ======================== -->
215
216<#--
217<textarea style="height: 800px; width: 500px;">
218${docTotale}
219
220</textarea>
221-->
222
223<#-- =================== PER RECUPERARE IL JSON DELLA STRUTTURA ===================
224<#assign structureKey = DDMStructureLocalService.getStructure(134816) />
225
226 <h1>${structureKey}</h1> -->
227
228
229<#-- =================== FINE PARTI GENERICHE =================== -->
230
231
232<#-- =================== INIZIO PARTE NEWS LOOP =================== -->
233
234 <main class="">
235 <section class="section">
236 <div class="container">
237
238<#if entries?has_content>
239
240 <#assign idxLoop = 0 />
241
242 <#list entries as curEntry> <#-- INIZIO LOOP (indici 0-based)-->
243
244
245<#assign idxLoop = curEntry?index />
246
247<#if idxLoop % 4 == 0 >
248
249<#if idxLoop != 0> <#-- se non è il primo gruppo di 4 elementi chiudo il precedente -->
250</div>
251</#if>
252
253<#-- inizio il nuovo gruppo -->
254<div class="row mb-5">
255</#if>
256
257
258<#-- A GRUPPI DI 4 ELEMENTI DELLA LISTA DEVO GENERARE LA STRUTTURA <div class="row mb-5"> -->
259
260<#assign newsTitle = curEntry.getTitle(locale) />
261<#assign newsSummary = curEntry.getSummary(locale) />
262<#assign dataPub = curEntry.getModifiedDate() /> <#-- getPublishDate non esiste -->
263
264
265
266<#assign renderer = curEntry.getAssetRenderer() />
267<#assign Article = renderer.getArticle() />
268<#assign smallImageID = Article.getSmallImageId() />
269<#if smallImageID??>
270<#assign smallImageURL = "/image/image_gallery?img_id=${smallImageID}" />
271<#else>
272<#assign smallImageURL = Article.getSmallImageURL() />
273</#if>
274
275<#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry) />
276<#assign viewURLAsset = renderer.getURLViewInContext(renderRequest, renderResponse, viewURL) />
277
278
279
280<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
281<#assign DDMStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService") >
282<#assign article = journalArticleLocalService.getLatestArticle(Article.resourcePrimKey) />
283<#assign docTotale = article.getContentByLocale(localeUtil.toLanguageId(localeUtil.getDefault())) />
284<#assign doc = saxReaderUtil.read(article.getContentByLocale(localeUtil.toLanguageId(localeUtil.getDefault()))) />
285
286<#-- INIZIO LETTURA CAMPI -->
287<#assign rootElement = doc.getRootElement() />
288<#assign news = rootElement.selectNodes("/Ttiolo") />
289
290<#assign titoloNodePath = saxReaderUtil.createXPath("dynamic-element[@name='Ttiolo']") />
291<#assign titoloNode = titoloNodePath.selectSingleNode(rootElement) />
292
293<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content") />
294<#assign titoloVal = xPathSelector.selectSingleNode(titoloNode).getStringValue() />
295
296<#assign xPathData = saxReaderUtil.createXPath("dynamic-element[@name='DataNotizia']/dynamic-content") />
297<#assign dataNotizia = xPathData.selectSingleNode(titoloNode).getStringValue() />
298
299<#assign xPathAbstract = saxReaderUtil.createXPath("dynamic-element[@name='Abstract']/dynamic-content") />
300<#assign abstract = xPathAbstract.selectSingleNode(titoloNode).getStringValue() />
301
302<#assign xPathFoto = saxReaderUtil.createXPath("dynamic-element[@name='Foto']/dynamic-content") />
303<#assign fotoLink = xPathFoto.selectSingleNode(titoloNode).getStringValue() />
304
305
306<#-- ========== COSTRUZIONE HTML SINGOLA NEWS ==================== -->
307
308<!--
309<h2 style="color:red">${viewURL}</h2>
310<h2 style="color:green">${viewURLAsset}</h2>
311
312?replace('wm9stv169C42','WBh1QsINxArE')
313-->
314
315
316
317
318 <div class="col-lg-3 col-12">
319 <a href="${viewURLAsset}" class="news-card card">
320 <div class="img-box">
321
322 <#if fotoLink?? && fotoLink != "">
323 <img src="${fotoLink}" alt="">
324 </#if>
325
326 </div>
327
328 </a>
329
330
331 <#if fotoLink?? && fotoLink != "">
332 <h5 class="titolinews mt-4">${titoloVal}</h5>
333 <#else>
334 <a href="${viewURLAsset}" class="news-card card"><h5 class="titolinews mt-4">${titoloVal}</h5> </a>
335 </#if>
336
337 <#if dataNotizia?? && dataNotizia?has_content>
338 <#assign someDate = dataNotizia?date.xs>
339 <p class="subtitle" style="color: dimgray">${someDate?string["dd/MM/yyyy"]}</p>
340 </#if>
341
342
343
344 </div>
345
346
347
348
349
350<#-- =================== FINE COSTRUZIONE SINGOLA News ======================= -->
351
352
353<#-- FINE -->
354
355
356
357
358
359
360
361 </#list> <#-- FINE LOOP -->
362
363<#-- se l'ultimo indice generato è mod 4 allora vuol dire che il penultimo,quello del ciclo non è multiplo di quattro
364per cui va chiuso l'ultimo div aperto -->
365<#if idxLoop %4 == 0>
366</div>
367</#if>
368
369
370
371
372</#if>
373<#-- FINE NEWS LOOP -->
374
375 </div> <#-- chiusura div.container -->
376 </section>
377 </main>
378
379
380
381
382
383<#-- CSS PER NASCONDERE IL TITOLO DEL WEB CONTENT -->
384<style type="text/css">
385
386.tag-news:hover{
387 text-decoration: none;
388}
389
390.cng h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
391 font-weight: 500;
392}
393
394
395.portlet-title-text{display: none;}
396
397
398.news-card {
399 display:flow-root;
400 font-size: 22px;
401 background: transparent;
402 text-align: center;
403 font-weight: 700;
404 line-height: 1.1;
405 padding: 0;
406 color: var(--black);
407 -webkit-transition: background 200ms;
408 -moz-transition: background 200ms;
409 -ms-transition: background 200ms;
410 -o-transition: background 200ms;
411 transition: background 200ms;
412}
413
414.news-card:hover {
415 background: #fff;
416 text-decoration: none;
417 color: var(--black);
418 -webkit-transition: background 200ms;
419 -moz-transition: background 200ms;
420 -ms-transition: background 200ms;
421 -o-transition: background 200ms;
422 transition: background 200ms;
423}
424
425.news-card .card-img {
426 width: 70px;
427 height: 70px;
428 margin: 0;
429 display: flex;
430 align-items: center;
431 justify-content: center;
432 float: left;
433}
434
435.news-card img {
436 border-radius: 8px;
437}
438
439.news-card p {
440 margin-bottom: 0;
441 margin-top: 1rem;
442 font-size: 1.1rem;
443
444}
445
446.titolinews
447{
448 font-size: 1.0rem;
449 font-weight: 600;
450
451}
452
453
454.tag-news
455{
456border-radius: 5px;
457padding: 5px;
458background-color: var(--blue);
459font-size: 12px;
460text-decoration: none;
461}
462
463
464/***** END CARD NEWS *****/
465
466h2, section{
467margin-top: 0;
468}
469
470
471
472span.header-back-to, a.header-back-to {
473 display: none !important;
474}
475
476
477 <#if themeDisplay.isSignedIn() >
478
479.h2{
480display: inline;
481z-index: 300000;
482}
483<#else>
484
485/* per nascondere pulsante di ritorno all'elenco delle news/video */
486.h2{
487display: none;
488display: inline;
489}
490
491
492</#if>
493
494
495</style>
496<#assign js_folder = themeDisplay.getPathThemeImages() + "/../js" />
497
498<div id="testDiv"></div>
499<script>
500
501Liferay.Portlet.ready(
502
503 /*
504 This function gets loaded after each and every portlet on the page.
505
506 portletId: the current portlet's id
507 node: the Alloy Node object of the current portlet
508 */
509
510 function(portletId, node) {
511
512 //alert('portlet id: ' + portletId + ' node: ' + node);
513
514 }
515);
516
517
518</script>
519
520
521 <!-- script type="text/javascript"
522src = "https://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5faeb58eadfcda74"
523> </script -->