CA 36/2023 - FISIOTERAPISTA PAREYSON
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 &gt; 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 &gt; 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 &gt; 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 &gt; 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>