search-landing-page
CA 26/2023 - Incarichi di Collaborazione Professionale in regime di P.IVA nell’ambito del progetto “Gestione integrata del Parkinsonismo Atipico: modello di assistenza sanitaria incentrata sul paziente a domicilio basato sul Telenursing. Studio IMPACT”, nell’ambito dei progetti del PIANO NAZIONALE DI RIPRESA E RESILIENZA (PNRR), Missione 6 – Componente 2 – Investimento 2.1: “Valorizzazione e potenziamento della ricerca biomedica del SSN”, da svolgersi presso la SC Neurologia 1 – Malattia di Parkinson e Disturbi del Movimento
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing: ==> parts[2] [in template "447293#447327#146516" at line 414, column 22] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to be 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: #assign groupId = parts[2]?number [in template "447293#447327#146516" in function "getDlFileEntry" at line 414, column 5] - Reached through: #assign doc = getDlFileEntry(node.get... [in template "447293#447327#146516" at line 256, column 37] ----
1<#assign groupService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")>
2<#-- Get themeDisplay -->
3<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() />
4<#assign themeDisplay = serviceContext.getThemeDisplay() />
5<#assign dLFileLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
6<#assign textFormatter = staticUtil["com.liferay.portal.kernel.util.TextFormatter"]>
7
8<#-- Data format -->
9<#setting time_zone = languageUtil.get(locale, "template-timezone") />
10<#assign originalLocale = locale />
11<#setting locale = localeUtil.getDefault() />
12<#assign displayDate = .vars['reserved-article-modified-date'].data />
13<#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z") />
14<#setting locale = originalLocale />
15<#assign displayDateDay = displayDate?string("dd") />
16<#assign displayDateMonth = displayDate?string("MM") />
17<#assign displayDateYear = displayDate?string("YYYY") />
18
19<#-- Get Tag -->
20<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
21<#assign assetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")>
22
23<#-- Get Related Asset -->
24 <#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") />
25 <#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
26<#assign currentArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) />
27 <#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey() />
28 <#assign tagList=assetTagLocalService.getTags("com.liferay.journal.model.JournalArticle",currentArticleResourcePrimKey) >
29 <#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) />
30 <#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() />
31<#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) />
32
33<#assign countNota = 0 />
34<#assign countDocumento = 0 />
35<#assign countMedia = 0 />
36<#list currentArticleRelatedLinks as related_entry>
37 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(related_entry.getEntryId2()) />
38 <#assign relatedArticle = journalArticleLocalService.getLatestArticle(relatedAssetEntry.getClassPK()) />
39 <#assign relatedArticleStructureName = relatedArticle.getDDMStructure().getName(locale) />
40 <#if relatedArticleStructureName == 'Asset Nota'>
41 <#assign countNota = countNota + 1 />
42 </#if>
43 <#if relatedArticleStructureName == 'Asset Documento'>
44 <#assign countDocumento = countDocumento + 1 />
45 </#if>
46 <#if relatedArticleStructureName == 'Asset Media'>
47 <#assign countMedia = countMedia + 1 />
48 </#if>
49</#list>
50
51<#-- Get Category -->
52<#assign vocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
53<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
54<#assign categoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
55<#assign catpropertyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryPropertyLocalService") />
56<#assign vocabularyContratto = vocabularyService.getGroupVocabulary(groupId, "Tipo Contratto") />
57<#assign vocabularyTarget = vocabularyService.getGroupVocabulary(groupId, "Tipo Target") />
58<#assign vocabularyStatoIncarico = vocabularyService.getGroupVocabulary(groupId, "Tipo Stato Incarico") />
59<#assign vocabularyHoncode = vocabularyService.getGroupVocabulary(groupId, "Honcode") />
60<#assign currentArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) />
61 <#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey() />
62<#assign categoryList=categoryService.getCategories("com.liferay.journal.model.JournalArticle",currentArticleResourcePrimKey) >
63
64<#assign arcaLocalService = serviceLocator.findService("it.arca.service.service.ArcaLocalService") />
65<#assign classeColore = arcaLocalService.getSelettoreCss(.vars['reserved-article-id'].data,'0') />
66<#assign arcaSezioniBackgroundcolorCss = 'arca-sezioni-backgroundcolor-' + classeColore />
67<#assign arcaSezioniColorCss = 'arca-sezioni-color-' + classeColore />
68<#assign arcaSezioniBorderColorCss = 'arca-sezioni-bordercolor-' + classeColore />
69<#assign arcaSezioniHrcolor = 'arca-sezioni-hrcolor-' + classeColore />
70
71<div class="detail">
72 <div class="row">
73 <div class="col-md-10 col-md-offset-1">
74 <div class="row">
75 <div class="col-md-11 col-md-offset-1">
76 <#if titolo.getData() !=''>
77 <h1 class="hr text-center ${arcaSezioniColorCss} ${arcaSezioniHrcolor}">
78 ${titolo.getData()}
79 </h1>
80 </#if>
81 <#if categoryList?has_content>
82 <h2 class="type text-center">
83 <#list categoryList as categoryList>
84 <#if categoryList.vocabularyId == vocabularyContratto.vocabularyId>
85 <span class="category">${categoryList.getName()}</span>
86 </#if>
87 </#list>
88 </h2>
89 </#if>
90 </div>
91 </div>
92 <div class="well">
93 <#if categoryList?has_content>
94 <p><strong>Categoria: </strong>
95 <#list categoryList as categoryList>
96 <#if categoryList.vocabularyId == vocabularyTarget.vocabularyId>
97 <span class="category">${categoryList.getName()}</span>
98 </#if>
99 </#list>
100 </p>
101 </#if>
102 <#if settoreDiRiferimentoIncarico.getData() !=''>
103 <p><strong>Settore di riferimento: </strong>
104 ${settoreDiRiferimentoIncarico.getData()}
105 </p>
106 </#if>
107 <#if categoryList?has_content>
108 <p><strong>Stato: </strong>
109 <#list categoryList as categoryList>
110 <#if categoryList.vocabularyId == vocabularyStatoIncarico.vocabularyId>
111 <span class="state">${categoryList.getName()}</span>
112 </#if>
113 </#list>
114 </p>
115 </#if>
116 <#if dataEmissioneIncarico.getData() !=''>
117 <p><strong>Data Emissione: </strong>
118 <#assign dataEmissioneIncarico_Data = getterUtil.getString(dataEmissioneIncarico.getData())>
119
120 <#if validator.isNotNull(dataEmissioneIncarico_Data)>
121 <#assign dataEmissioneIncarico_DateObj = dateUtil.parseDate("yyyy-MM-dd", dataEmissioneIncarico_Data, locale)>
122
123 ${dateUtil.getDate(dataEmissioneIncarico_DateObj, "dd/MM/yyyy", locale)}
124 </#if>
125 </p>
126 </#if>
127 <#if dataScadenzaIncarico.getData() !=''>
128 <p><strong>Data Scadenza: </strong>
129 <#assign dataScadenzaIncarico_Data = getterUtil.getString(dataScadenzaIncarico.getData())>
130
131 <#if validator.isNotNull(dataScadenzaIncarico_Data)>
132 <#assign dataScadenzaIncarico_DateObj = dateUtil.parseDate("yyyy-MM-dd", dataScadenzaIncarico_Data, locale)>
133
134 ${dateUtil.getDate(dataScadenzaIncarico_DateObj, "dd/MM/yyyy", locale)}
135 </#if>
136 </p>
137 </#if>
138 <#if dataAggiudicazioneDefinitivaIncarico.getData() !=''>
139 <p><strong>Data Assegnazione: </strong>
140 <#assign dataAggiudicazioneDefinitivaIncarico_Data = getterUtil.getString(dataAggiudicazioneDefinitivaIncarico.getData())>
141
142 <#if validator.isNotNull(dataAggiudicazioneDefinitivaIncarico_Data)>
143 <#assign dataAggiudicazioneDefinitivaIncarico_DateObj = dateUtil.parseDate("yyyy-MM-dd", dataAggiudicazioneDefinitivaIncarico_Data, locale)>
144
145 ${dateUtil.getDate(dataAggiudicazioneDefinitivaIncarico_DateObj, "dd/MM/yyyy", locale)}
146 </#if>
147 </p>
148 </#if>
149 </div>
150
151 <#if countNota > 0 >
152 <div class="related-info">
153 <#list currentArticleRelatedLinks as related_entry>
154 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(related_entry.getEntryId2()) />
155 <#assign relatedArticle = journalArticleLocalService.getLatestArticle(relatedAssetEntry.getClassPK()) />
156 <#assign relatedArticleStructureName = relatedArticle.getDDMStructure().getName(locale) />
157 <#assign doc = saxReaderUtil.read(relatedArticle.getContentByLocale(localeUtil.toLanguageId(localeUtil.getDefault()))) />
158 <#assign rootElement = doc.getRootElement() />
159 <#if relatedArticleStructureName == 'Asset Nota'>
160 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='titolo']") />
161 <#assign titoloNota = xPathSelector.selectSingleNode(rootElement).getStringValue() />
162 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='descrizione']/dynamic-content") />
163 <#assign testoNota = xPathSelector.selectSingleNode(rootElement).getStringValue() />
164
165 <p><strong>${titoloNota}:</strong></p>
166 <p>${testoNota}</p>
167 </#if>
168 </#list>
169 </div>
170 </#if>
171
172
173 <#if descrizione.getData() !=''>
174 <#if getterUtil.getBoolean(descrizione.flAccordionDescrizione.getData() == "true") >
175 <#assign descrLength = descrizione.getData()?length />
176
177
178 <div class="eus-read-more module">
179 <div role="heading" class="collapse" id="${themeDisplay.getPortletDisplay().getId()}_collapseExample" aria-expanded="false">
180 <div id="${themeDisplay.getPortletDisplay().getId()}_id-arca-shadow" class="arca-shadow"></div>
181 <p>${descrizione.getData()}</p>
182 </div>
183 <a role="button" class="${arcaSezioniColorCss} collapsed ${themeDisplay.getPortletDisplay().getId()}_lastLink lastLink" data-toggle="collapse" href="#${themeDisplay.getPortletDisplay().getId()}_collapseExample" aria-expanded="false" aria-controls="${themeDisplay.getPortletDisplay().getId()}_collapseExample"></a>
184 </div>
185
186
187 <#else>
188 <div class="eus-read-more">
189 <p>${descrizione.getData()}</p>
190 </div>
191 </#if>
192 </#if>
193
194
195 <#if tagList??>
196 <div class="tags">
197 <#list tagList as tagList>
198 <span class="tag">${tagList.getName()}</span>
199 </#list>
200 </div>
201 </#if>
202 </div>
203 </div>
204 <#if countMedia > 0 >
205 <div class="row" style="margin-top:50px;">
206 <#list currentArticleRelatedLinks as related_entry>
207 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(related_entry.getEntryId2()) />
208 <#assign relatedArticle = journalArticleLocalService.getLatestArticle(relatedAssetEntry.getClassPK()) />
209 <#assign relatedArticleStructureName = relatedArticle.getDDMStructure().getName(locale) />
210 <#assign doc = saxReaderUtil.read(relatedArticle.getContentByLocale(localeUtil.toLanguageId(localeUtil.getDefault()))) />
211 <#assign rootElement = doc.getRootElement() />
212 <#if relatedArticleStructureName == 'Asset Media'>
213 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='media']") />
214 <#assign image = xPathSelector.selectNodes(rootElement) />
215 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='VideoMedia']") />
216 <#assign video = xPathSelector.selectNodes(rootElement) />
217 <div class="media">
218 <article class="owl-carousel owl-theme" id="${themeDisplay.getPortletDisplay().getId()}_owl-carousel">
219 <#list image as node>
220 <#assign file=getDlFileEntry(node.getStringValue()) />
221 <div class="content-slide">
222 <div class="slide" style="background-image:url(${node.getStringValue()})"></div>
223 <#if file.getDescription() !=''>
224 <div class="title">
225 <p>${file.getDescription()}</p>
226 </div>
227 </#if>
228 </div>
229 </#list>
230 <#list video as nodeVideo>
231 <div class="item-video">
232 <a class="slide owl-video" href="${nodeVideo.getStringValue()}"></a>
233 </div>
234 </#list>
235 </article>
236 </div>
237 </#if>
238 </#list>
239 </div>
240 </#if>
241 <div class="row">
242 <div class="col-md-10 col-md-offset-1">
243 <#if HTMLebnr.getData() !='' || countDocumento > 0 || documentoAllegato.getData() !=''>
244 <div id="${themeDisplay.getPortletDisplay().getId()}_infoToggler" class="infoToggler">
245 <#if HTMLebnr.getData() !=''>
246 <div class="header toggler-header-collapsed">Note</div>
247 <div class="content toggler-content-collapsed">
248 ${HTMLebnr.getData()}
249 </div>
250 </#if>
251 <#if countDocumento > 0 || documentoAllegato.getData() !=''>
252 <div class="header toggler-header-collapsed">Allegati</div>
253 <div class="content toggler-content-collapsed">
254 <ul class="download">
255 <#list documentoAllegato.getSiblings() as node>
256 <#assign doc=getDlFileEntry(node.getData()) />
257 <li>
258 <a href="${node.getData()}">${doc.getTitle()}</a>
259 <span> - ${doc.getExtension()} ${textFormatter.formatStorageSize(doc.size, locale)}</span>
260 </li>
261 </#list>
262
263 <#list currentArticleRelatedLinks as related_entry>
264 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(related_entry.getEntryId2()) />
265 <#assign relatedArticle = journalArticleLocalService.getLatestArticle(relatedAssetEntry.getClassPK()) />
266 <#assign relatedArticleStructureName = relatedArticle.getDDMStructure().getName(locale) />
267 <#assign doc = saxReaderUtil.read(relatedArticle.getContentByLocale(localeUtil.toLanguageId(localeUtil.getDefault()))) />
268 <#assign rootElement = doc.getRootElement() />
269 <#if relatedArticleStructureName == 'Asset Documento'>
270 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='documentoAllegato']") />
271 <#assign allegatoDocumento = xPathSelector.selectNodes(rootElement) />
272 <#list allegatoDocumento as nodeDoc>
273 <#assign file=getDlFileEntry(nodeDoc.getStringValue()) />
274 <#if validator.isNotNull(file)>
275 <li>
276 <a href="${nodeDoc.getStringValue()}">
277 ${file.getTitle()}
278 </a>
279 <span> - ${file.getExtension()} ${textFormatter.formatStorageSize(file.size, locale)}</span>
280 </li>
281 </#if>
282 </#list>
283 </#if>
284 </#list>
285 </ul>
286 </div>
287 </#if>
288 </div>
289 <script>
290 //$(document).ready(function() {
291 //try
292 //{
293 AUI().use(
294 'aui-toggler',
295 function(A) {
296 new A.TogglerDelegate(
297 {
298 animated: true,
299 closeAllOnExpand: true,
300 container: '#${themeDisplay.getPortletDisplay().getId()}_infoToggler',
301 content: '.content',
302 header: '.header',
303 transition: {
304 duration: .5,
305 easing: 'cubic-bezier'
306 }
307 }
308 )
309 }
310 );
311 //}catch (e)
312 //{
313 // console.log(e);
314 //}
315 //});
316 </script>
317 </#if>
318 </div>
319 </div>
320 <div class="row">
321 <div class="honcode col-md-10 col-md-offset-1">
322 <div class="row">
323 <div class="col-md-7">
324 <#list categoryList as categoryList>
325 <#if categoryList.vocabularyId == vocabularyHoncode.vocabularyId>
326 Responsabile della pubblicazione: ${categoryList.getName()}
327 </#if>
328 </#list>
329 </div>
330 <div class="col-md-5 text-right">
331 Ultimo aggiornamento: ${displayDateDay}/${displayDateMonth}/${displayDateYear}
332 </div>
333 </div>
334 <#if Separatorefvnw.noteHONcode.getData() !=''>
335 <div class="row note">
336 <div class="col-md-12">
337 <p><strong>NOTE: </strong>${Separatorefvnw.noteHONcode.getData()}</p>
338 </div>
339 </div>
340 </#if>
341 </div>
342 </div>
343</div>
344<script type="text/javascript">
345 AUI().use('aui-base', function(A) {
346 if(A.one('.text .accordion')){
347
348 var allps = A.one('.text .accordion').all('p');
349 var pHeight = 0;
350
351 if(allps){
352
353 allps.each(function(p){
354 pHeight = pHeight + p.height();
355 });
356
357 if(pHeight > 170){
358 A.one(".text .icon-angle-down").show();
359 }else{
360 A.one(".text .icon-angle-down").hide();
361 }
362 }
363
364 A.one(".text .icon-angle-down").on('click', function(event) {
365 A.one(".accordion").setStyle('height', 'auto');
366 A.one(".text .icon-angle-down").hide();
367 A.one(".text .icon-angle-up").show();
368 A.one(".text .gradient").hide();
369 });
370 A.one(".text .icon-angle-up").on('click', function(event) {
371 A.one(".accordion").setStyle('height', '190px');
372 A.one(".text .icon-angle-down").show();
373 A.one(".text .icon-angle-up").hide();
374 A.one(".text .gradient").show();
375 });
376
377 }
378 });
379</script>
380<script>
381 $(document).ready(function() {
382 var owl = $('#${themeDisplay.getPortletDisplay().getId()}_owl-carousel');
383 owl.owlCarousel({
384 items:1,
385 loop:true,
386 dots:true,
387 autoplay:false,
388 autoplayTimeout:4000,
389 autoplayHoverPause:true,
390 video:true
391 });
392
393 var idCollapseExample = '#${themeDisplay.getPortletDisplay().getId()}_collapseExample';
394 var idArcaShadow = '#${themeDisplay.getPortletDisplay().getId()}_id-arca-shadow';
395 var lastLink = '.${themeDisplay.getPortletDisplay().getId()}_lastLink';
396
397 if ($(idCollapseExample) && $(idCollapseExample)[0] && $(idCollapseExample)[0].scrollHeight && $(idCollapseExample).innerHeight() )
398 {
399 if ($(idCollapseExample)[0].scrollHeight > $(idCollapseExample).innerHeight()) {
400 //$('#id-arca-shadow').show();
401 //$('#lastLink').show();
402 }
403 else
404 {
405 $(idArcaShadow).hide();
406 $(lastLink).hide();
407 $(idCollapseExample).removeClass("collapse");
408 }
409 }
410 })
411</script>
412<#function getDlFileEntry url>
413 <#assign parts=url?string?split("/") />
414 <#assign groupId=parts[2]?number />
415 <#assign uuid=parts[5]?string?split("?")[0] />
416 <#assign dlFileEntry=dLFileLocalService.fetchDLFileEntryByUuidAndGroupId(uuid, groupId)! />
417 <#return dlFileEntry />
418</#function>
419<#function getRelatedAsset related>
420 <#assign parts=url?string?split("/") />
421 <#assign groupId=parts[2]?number />
422 <#assign uuid=parts[5]?string?split("?")[0] />
423 <#assign dlFileEntry=dLFileLocalService.fetchDLFileEntryByUuidAndGroupId(uuid, groupId)! />
424 <#return dlFileEntry />
425</#function>