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&lang=it_it&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>