Indietro Avviso pubblico acquisizione candidature componenti esperti esterni Commissioni esaminatrici dei Concorsi pubblici per assunzione di n. 209 unità di categoria D

Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> expandoBridge.getAttribute("dlFolderID")  [in template "33878" at line 197, column 28]

----
Tip: If the failing expression is known to 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: idFolder = expandoBridge.getAttribute...  [in template "33878" in macro "printMediaGallery" at line 197, column 17]
	- Reached through: @printMediaGallery items=parentStruct...  [in template "33201#33237#8586663" at line 336, column 21]
----
1<#-- Chiave del template globale "Utils" --> 
2<#assign pathNewsList = "bandi-avvisi-regionali"> 
3<#include "${templatesPath}/33878" /> 
4 
5<#macro printNewDocumentList documentList documentFileChildrenName documentTitleChildrenName printIcons documentDescriptionChildrenName> 
6<#assign imagesPath = themeDisplay.getPathThemeImages() /> 
7    <#if documentList.getSiblings()?has_content> 
8        <ul class="document-list generic-content-document-list"> 
9            <#list documentList.getSiblings() as cur_subContentsDoc> 
10                <#if groupItemHasContent(cur_subContentsDoc)> 
11                <li> 
12                    <#assign documentUrl = cur_subContentsDoc.getChild(documentFileChildrenName).getData()> 
13                    <div class="d-flex"> 
14						<#if printIcons> 
15							<@printMediaIcon documentUrl=documentUrl /> 
16						</#if> 
17						 
18						<#assign fileName = "" /> 
19						<#if cur_subContentsDoc.getChild(documentTitleChildrenName)?? && cur_subContentsDoc.getChild(documentTitleChildrenName).getData()?has_content> 
20							<#assign fileName = cur_subContentsDoc.getChild(documentTitleChildrenName).getData() /> 
21						<#else> 
22							<#assign file = getFileEntryFromDocumentUrl(documentUrl) /> 
23							<#assign fileName = file.fileName?keep_before_last(".") /> 
24						</#if> 
25						<a href="${documentUrl}" target="_blank"> ${fileName}</a> 
26					</div> 
27						<#if cur_subContentsDoc.getChild(documentDescriptionChildrenName)?? && cur_subContentsDoc.getChild(documentDescriptionChildrenName).getData()?has_content> 
28						<p class="document-description">${cur_subContentsDoc.getChild(documentDescriptionChildrenName).getData()}</p> 
29						</#if> 
30					<div class="d-flex align-items-center"> 
31						<#assign languageLabelTitleReadSpeaker = "Apri questo documento con ReadSpeaker docReader"/> 
32						<#assign languageLabelListen = "Ascolta"/> 
33 
34						<#if themeDisplay.getLanguageId()=="en_GB" || themeDisplay.getLanguageId()=="en_US"> 
35							<#assign languageLabelTitleReadSpeaker = "Open this document with ReadSpeaker docReader"/> 
36							<#assign languageLabelListen = "Listen"/> 
37 
38						</#if> 
39						 
40						<a rel="nofollow" href="//docreader.readspeaker.com/docreader/?cid=ccxos&amp;lang=it_it&amp;url=https://regione.puglia.it${documentUrl}" onclick="window.open(this.href, 'dcrwin'); return false;" title="${languageLabelTitleReadSpeaker}" > 
41						<img class="listen" src="${imagesPath}/docreader/rs-doc-icon.gif" style="border-style: none; vertical-align: text-bottom; margin-right: 5px; margin-bottom: 3px;" alt="ReadSpeaker">${languageLabelListen}</a> 
42					</div> 
43				</li> 
44                </#if> 
45            </#list> 
46        </ul> 
47    </#if> 
48</#macro> 
49 
50 
51<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
52<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
53<#assign vocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")> 
54<#assign AssetCategoryPropertyLocalService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService")> 
55<#assign currentArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) /> 
56<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticle.getResourcePrimKey()) /> 
57 
58 
59<!-- VERIFICATE --> 
60<#assign title = .vars['reserved-article-title'].data /> 
61<#assign urlTitle = .vars['reserved-article-url-title'].data /> 
62<#assign date = .vars['reserved-article-display-date'].data> 
63<#assign dateTimeFormat = "dd MMMM yyyy"> 
64<#assign articleURL = themeDisplay.getURLPortal() + themeDisplay.getScopeGroup().getPathFriendlyURL(false, themeDisplay) + themeDisplay.getScopeGroup().getFriendlyURL() + "/-/" + urlTitle /> 
65 
66<#setting locale = localeUtil.getDefault()> 
67<#assign notizieLandingPage = "#"> 
68<#if themeDisplay.getThemeSetting("notizie-landing-page")?has_content> 
69    <#assign notizieLandingPage = themeDisplay.getThemeSetting("notizie-landing-page")> 
70</#if> 
71 
72<#assign labelArray=["Graduatorie e scorrimenti", "Tracce delle prove", "Criteri di valutazione"]/> 
73<#assign accordions = { 
74    "Graduatorie": Graduatorie.GraduatorieAccordion, 
75    "Verbali": Verbali.VerbaliAccordion, 
76    "Criteri": Criteri.CriteriAccordion 
77}/> 
78 
79 
80<#assign showDocuments=false/> 
81 
82<div class="container come-fare-per ricerca"> 
83 
84 
85		<!-- Lista documenti per categorie--> 
86					<#if (request.getParameter("p_attachments")?has_content) && (accordions?keys?seq_contains(request.getParameter("p_attachments")?capitalize))> 
87					 
88						<h2 class="h1">${title}</h2> 
89						<#assign curParameter=request.getParameter("p_attachments")?capitalize/> 
90						<#assign showDocuments=true/> 
91						<a href="${articleURL}"><em class="fas fa-long-arrow-alt-left"></em>Torna indietro</a> 
92						 
93								<div class="row" style="margin-top: 20px;"> 
94									<div class="col-md-8"> 
95									<div class="row">  
96											<div class="col-md-12">  
97												<h2 class="titolo-notizie">Documenti</h2>  
98											</div>  
99										</div> 
100 
101										<div class="docsContainer "> 
102											<div class="lista-servizi-ricerca"> 
103											<p class="empty-results hide"=>Nessun risultato disponibile</p> 
104											 
105														<div class="loadingmask" style="position: relative; top: 10vh;"> 
106				 
107				<div class="loadingmask-message" style="left:auto;"> 
108					<div class="loadingmask-message-content">Loading…</div> 
109				</div> 
110			</div> 
111											 
112											 
113											 
114											<#assign currentAccordion = accordions[curParameter]> 
115											<#list currentAccordion.getSiblings() as attachments> 
116													<#assign ktm = attachments.getData() /> 
117													<#if ktm?? && attachments["Allegato${curParameter}"]?? && attachments["Allegato${curParameter}"].getData()??> 
118															<#assign ktm = attachments["Allegato${curParameter}"].getData() /> 
119													</#if> 
120													<#if validator.isNotNull(ktm) && (attachments["Titolo${curParameter}"].getData())??> 
121															<div class="card-servizio is-visible" style="display: none;">				 
122															<#assign timeIndex =  ktm?index_of("?t=")/> 
123															<#assign dateTimestamp=""/>		 
124															<#if timeIndex != -1> 
125																		<#assign timeIndex = timeIndex + 3 /> 
126    																<#assign dateTimestamp = (ktm?substring(timeIndex)?number) /> 
127															</#if>				 
128																	<div class="ml-4"> ${dateTimestamp?number_to_date?string(dateTimeFormat)}</div> 
129																	<div class="titolo news-document-block font-weight-bold"> 
130																			<a href="${ktm}"> 
131																					<@printMediaIcon documentUrl=ktm /> ${attachments["Titolo${curParameter}"].getData()} 
132																			</a> 
133																	</div> 
134																	<div class="descrizione-servizio ml-4"> 
135																			${attachments["Descrizione${curParameter}"].getData()} 
136																	</div> 
137															</div> 
138													</#if> 
139											</#list> 
140							 
141										 
142											</div> 
143										</div> 
144										 
145										<div id="paginatore" class="hide"> 
146										<ul class="pagination"> 
147											<li class="page-item"> 
148											<a class="page-link hide" id="pagina-precedente"> 
149												<span class=" lfr-portal-tooltip previous" title="Pagina Precedente"> 
150													<span class="c-inner" tabindex="-1" id="fcvj" style="align-items: center;" ><svg aria-hidden="true" class="lexicon-icon lexicon-icon-angle-left" focusable="false"><use href="http://rpu-isc-ws-l001.in.cloud.innova.puglia.it/o/third-level-portale-istituzionale-theme/images/clay/icons.svg#angle-left"></use></svg></span>	 
151												</span> 
152											</a> 
153											</li> 
154												 
155												<li class="current-page"></li> 
156												 
157												<li class="page-item "> 
158												<a class="page-link hide"  id="pagina-successiva"> 
159												<span class=" lfr-portal-tooltip following" title="Pagina Successiva"> 
160												<span class="c-inner" tabindex="-1" id="fcvj"  style="align-items: center;" ><svg aria-hidden="true" class="lexicon-icon lexicon-icon-angle-right" focusable="false"><use href="http://rpu-isc-ws-l001.in.cloud.innova.puglia.it/o/third-level-portale-istituzionale-theme/images/clay/icons.svg#angle-right"></use></svg></span> 
161												 
162												</span> 
163												</a> 
164												</li> 
165 
166												</ul> 
167										</div> 
168										 
169 
170									</div> 
171									<div class="col-md-4"> 
172										<form class="box-grey advanced-search" style="margin-top: 51px;">											 
173														<h3> Cerca tra i documenti </h3>																						 
174											<div class="form-group">												 
175												<#assign tipoFiltro = "text" /> 
176												<#if (TipologiaFiltro.getData())?? && (TipologiaFiltro.getData() =="select")> 
177														<#assign tipoFiltro = TipologiaFiltro.getData() />																		 
178														<#assign selectArray = (ValoriFiltro.getData()?split("|"))/> 
179														<select class="form-control filter-value"> 
180															<option value=""></option> 
181															<#list selectArray as filterOption> 
182																<option >${filterOption}</option>  							 
183															</#list>							 
184														</select> 
185												<#else> 
186														<input type="text" class="field form-control filter-value" /> 
187												</#if> 
188											</div>											 
189											<div class="form-group confirm-button"> 
190												<input type="submit" class="btn btn-outline-secondary btn-search" value="Cerca"> 
191											</div> 
192										</form> 
193									</div> 
194								</div> 
195						 
196				 
197					<#else><!--Fine Lista documenti--> 
198 
199	<div class="row notizia"> 
200	<!-- parte sinistra--> 
201		<div class="col-md-8"> 
202			<div class="row"> 
203				<div class="col"> 
204				<!--titolo--> 
205					<h2 class="h1">${title}</h2> 
206						<!--sottotitolo--> 
207						<#if parentStructure.Sottotitolo.getData()?has_content> 
208        				<h2>${parentStructure.Sottotitolo.getData()}</h2> 
209        		</#if> 
210						<!--date di apertura e chiusura del bando--> 
211						<#assign fromDate_Data = getterUtil.getString(BandoStructure.fromDateFieldSet.fromDate.getData())> 
212						<#assign toDate_Data = getterUtil.getString(BandoStructure.toDateFieldSet.toDate.getData())>						 
213						<#if validator.isNotNull(fromDate_Data) || validator.isNotNull(toDate_Data) > 
214            			<h3>Quando partecipare</h3> 
215            			<div class="date-bando"> 
216                			<#if validator.isNotNull(fromDate_Data)> 
217                			    <#assign fromDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", fromDate_Data, locale)>  
218                			    dal <strong>${fromDate_Data?datetime("yyyy-MM-dd")?string(dateTimeFormat)} 
219                			    <#assign fromDate_hour = BandoStructure.fromDateFieldSet.fromHour.getData() > 
220								<#assign fromDate_minute = BandoStructure.fromDateFieldSet.fromMinute.getData() > 
221								<#if fromDate_hour?has_content && fromDate_minute?has_content && fromDate_hour !="0" && fromDate_minute!="0"> 
222									<#if fromDate_hour == "0"> 
223										<#assign fromDate_hour = fromDate_hour + 0> 
224									</#if> 
225									<#if fromDate_hour?length == 1> 
226										<#assign fromDate_hour = 0 + fromDate_hour > 
227									</#if> 
228 
229									<#if fromDate_minute == "0"> 
230										<#assign fromDate_minute = fromDate_minute + 0> 
231									</#if> 
232									<#if fromDate_minute?length == 1> 
233										<#assign fromDate_minute = 0 + fromDate_minute > 
234									</#if> 
235                			        - ${fromDate_hour}:${fromDate_minute} 
236                			    </#if></strong> 
237            			    </#if> 
238            			    <br /> 
239                			<#if validator.isNotNull(toDate_Data)> 
240                			    <#assign toDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", toDate_Data, locale)> 
241								<#assign toDate_hour = BandoStructure.toDateFieldSet.toHour.getData() > 
242								<#assign toDate_minute = BandoStructure.toDateFieldSet.toMinute.getData() > 
243                			    al <strong>${toDate_Data?datetime("yyyy-MM-dd")?string(dateTimeFormat)}                			     
244								<#if toDate_hour?has_content && toDate_minute?has_content && toDate_hour !="0" && toDate_minute!="0">  
245									<#if toDate_hour == "0"> 
246										<#assign toDate_hour = toDate_hour + 0> 
247									</#if> 
248									<#if toDate_hour?length == 1> 
249										<#assign toDate_hour = 0 + toDate_hour > 
250									</#if> 
251 
252									<#if toDate_minute == "0"> 
253										<#assign toDate_minute = toDate_minute + 0> 
254									</#if> 
255									<#if toDate_minute?length == 1> 
256										<#assign toDate_minute = 0 + toDate_minute > 
257									</#if> 
258								    - ${toDate_hour}:${toDate_minute} 
259                			    </#if></strong> 
260            			    </#if> 
261        			    </div> 
262        	        </#if>						 
263					</div> 
264			</div>		 
265			<!--testo del bando-->	 
266			<#if parentStructure.TestoNotizia?has_content> 
267				<div class="row"> 
268					<div class="col"> 
269							<#if  
270									parentStructure.principalImage?? && 
271									parentStructure.principalImage.getData()?? && 
272									parentStructure.principalImage.getData()?has_content && 
273									parentStructure.principalImage.getData() != "" && 
274									parentStructure.showImage.getData()?? && 
275									parentStructure.showImage.getData()?has_content &&  
276									parentStructure.showImage.getData() != "hide"> 
277 
278									<#assign class = "full-width-img" /> 
279									<#if parentStructure.showImage.getData() == "float"> 
280											<#assign class = "float-img" /> 
281									</#if> 
282									<img alt="${parentStructure.principalImage.getAttribute("alt")}" src="${parentStructure.principalImage.getData()}" class="${class}" /> 
283							</#if> 
284						<!--Tipologia--> 
285						<#assign tipologia = tipologiaConcorso.getData()> 
286						<#if tipologia??> 
287						<div class="link-badge"> 
288							<span class="badge badge-grigio">${tipologia?substring(7)}</span> 
289						</div> 
290						</#if> 
291						<div class="news-description"> 
292								${parentStructure.TestoNotizia.getData()} 
293						</div> 
294					</div> 
295				</div> 
296			</#if> 
297		</div>  
298				<!--Fine parte sinistra-->	 
299				<!--Inizio parte Destra--> 
300				<div class="col-md-4 dettaglio-news-box"> 
301				<!--social--> 
302					<div class="row"> 
303						<div class="d-none d-md-block"> 
304											<@printSocialBlock title=title url=articleURL /> 
305						 </div> 
306					</div> 
307					<!--Fine social--> 
308				<!--Inizio Allegati--> 
309				<#if groupItemHasContent(parentStructure.newsAttachmentFieldSet.newsAttachment)> 
310					<div class="row"> 
311						<div class="col-12 documents-news"> 
312						  <div class="news-document-block"> 
313                            <h3 class="d-none d-md-block">Documenti</h3> 
314														 
315													<@printNewDocumentList 
316                                documentList=BandoStructure.parentStructure.newsAttachmentFieldSet 
317                                documentFileChildrenName="newsAttachment" 
318																documentTitleChildrenName="newsAttachmentTitle" 
319                                documentDescriptionChildrenName="newsAttachmentDescription" 
320                                printIcons = true /> 
321                        </div> 
322						</div> 
323					</div> 
324				</#if> 
325				<!--Fine Allegati-->	 
326				</div> 
327				<!--Fine parte destra-->	 
328	</div> 
329	<!--Fine Notizia-->	 
330	</#if> 
331	 
332	 
333	<#if showDocuments==false> 
334			<div class="row"> 
335	    <div class="col-md-8"> 
336		    <@printMediaGallery  
337			    items=parentStructure.sliderVideoContent 
338			    fieldImageName="sliderImageContent" 
339            /> 
340			</div> 
341    </div> 
342 
343	<!--Categorie--> 
344   <div class="row"> 
345		<div class="col-8"> 
346				<#list currentArticleAssetEntry.getCategories() as category> 
347						<#assign badgeClass = "grigio"> 
348						 
349							<#assign categoryVocabulary =  vocabularyService.getVocabulary(category['vocabularyId']?number)['name']> 
350								 
351							<#if categoryVocabulary=="Aree Tematiche"> 
352												 
353									<#assign badgeClass = AssetCategoryPropertyLocalService.getCategoryProperty(category['categoryId']?number, 'css_class')['value'] > 
354										 
355							</#if> 
356							<a class="link-badge" href="/${themeDisplay.getLocale()?substring(0, 2)}/web${themeDisplay.getScopeGroup()['friendlyURL']}/${pathNewsList}?p_r_p_categoryId=${category['categoryId']}"> 
357								<span class="badge badge-${badgeClass}"> 
358									${category.getTitle(locale)} 
359								</span> 
360							</a> 
361				</#list> 
362		</div> 
363	</div> 
364<!--Fine categorie--> 
365	 
366	<div class="row"> 
367   	<div class="col-12 data-news"> 
368   		<p>Pubblicato il ${date?datetime("EEE, d MMM yyyy HH:mm:ss Z")?string(dateTimeFormat)}</p> 
369   	</div> 
370	</div> 
371	</#if> 
372 
373	 
374</div> 
375 
376 
377 
378 
379<!--Bottoni--> 
380 
381 
382<div class="container page-section-button">			 
383 
384        <h2 id="allegati-header">Allegati del bando</h2> 
385	<div class="row" id="btn-container"> 
386			<#assign labelIndex= 0 /> 
387		<#list accordions?keys as key> 
388			<#if groupItemHasContent(accordions[key])> 
389					<#assign url ="?p_attachments=${key?lower_case}" /> 
390					<div class="col-12 col-md-6 col-lg-4 mb-3"> 
391								<div class="link-button url-internal"> 
392									<a class="button" href="${url}" title="${labelArray[labelIndex]}" > 
393									 
394									<span class = "d-flex align-items-center text-button">${labelArray[labelIndex]}</span> 
395									 
396									</a> 
397								 
398								</div> 
399							</div> 
400	</#if> 
401		<#assign labelIndex = labelIndex+1 /> 
402	</#list> 
403	 
404	</div> 
405</div> 
406 
407<!--Fine Bottoni--> 
408 
409<script> 
410 
411		 
412 
413    $(document).ready(function(){ 
414		 
415		$(".loadingmask").addClass("hide"); 
416		doPagination(); 
417 
418        $('.btn-search').click(function(e){ 
419						 $("html, body").scrollTop(0); 
420						$("#paginatore").addClass("hide"); 
421				 
422            e.preventDefault(); 
423            var valoreDiRicerca = $('.filter-value').val().toLowerCase(); 
424						var trueValue = 0; 
425						var emptyLabel =  $('.docsContainer').find('.empty-results');  
426						//console.log("True value before:",trueValue ); 
427            $('.docsContainer').find('.card-servizio').each(function(index, value){ 
428                if($(value).text().toLowerCase().includes(valoreDiRicerca)){ 
429										emptyLabel.addClass("hide"); 
430									 
431                    $(value).addClass("is-visible"); 
432										trueValue = trueValue + 1; 
433                } else { 
434                     $(value).removeClass("is-visible"); 
435										  $(value).hide(); 
436
437            }); 
438					 
439						//console.log("True value after:",trueValue ); 
440					if (trueValue ==0){ 
441					 $('.docsContainer').find('.empty-results').removeClass("hide"); 
442					 	 
443
444					var ricerca = true; 
445					doPagination(ricerca); 
446        }); 
447         
448        const rowContainer = $('#btn-container'); 
449        if (rowContainer.find('.button').length === 0) { 
450            $('#allegati-header').hide(); 
451
452    }); 
453		 
454		function doPagination (ricerca = false){     
455			var occorrenze = $(".card-servizio.is-visible"); 
456			var paginaCorrente = 1; 
457			var pageLimit = 10; 
458			var pageMax = Math.ceil(occorrenze.length / pageLimit); 
459			 
460			 
461		 	mostraPagina(paginaCorrente); 
462			 
463			if(ricerca){ 
464					$("#pagina-successiva").addClass("hide"); 
465					$("#pagina-precedente").addClass("hide"); 
466
467			 
468			if(occorrenze.length > pageLimit){ 
469				$("#paginatore").removeClass("hide"); 
470				$("#pagina-successiva").removeClass("hide"); 
471
472			 
473		 
474    
475   	 
476    $("#pagina-precedente").on("click", function(e) { 
477        if (paginaCorrente > 1) { 
478            paginaCorrente--; 
479            mostraPagina(paginaCorrente); 
480						$("#pagina-successiva").removeClass("hide"); 
481						if(paginaCorrente === 1){ 
482							$("#pagina-precedente").addClass("hide"); 
483
484
485				 
486				 $("html, body").scrollTop(0); 
487    }); 
488 
489    $("#pagina-successiva").on("click", function(e) {		 
490        if (paginaCorrente <= pageMax) { 
491            paginaCorrente++; 
492						$("#pagina-precedente").removeClass("hide"); 
493						if(paginaCorrente == pageMax){						 
494								$("#pagina-successiva").addClass("hide"); 
495						}else{ 
496							$("#pagina-successiva").removeClass("hide");							 
497						}						 
498						  mostraPagina(paginaCorrente); 
499
500				 $("html, body").scrollTop(0); 
501    }); 
502	  
503        
504 		function mostraPagina(pagina) {		 
505        occorrenze.hide().slice((pagina - 1) * pageLimit, pagina * pageLimit).show(); 
506				$(".current-page").html("Pagina "+ pagina + " di " + pageMax); 
507
508
509		 
510 
511 
512		 
513		 
514		 
515 
516</script> 
517 
518<style> 
519.page-link:active{ 
520	background-color:#e9ecef; 
521
522ul.pagination {  
523    display: flex; 
524    position: relative; 
525    flex-direction: row; 
526    justify-content: center; 
527		align-items: center; 
528
529 
530</style> 

Notizie e aggiornamenti bandi