vedere
see
Culture and TourismLoading ...
Uploading map in progress
cosa fare in questi giorni
An error occurred while processing the template.
The following has evaluated to null or missing:
==> startDates [in template "20097#20123#908103" at line 55, column 12]
----
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: #list startDates as sd [in template "20097#20123#908103" at line 55, column 5]
----
1<#assign eventiTemplateId = "TARANTO-TIMELINE-CAROUSEL-EVENTI-ITEM-TEMPLATE">
2<#if entries?has_content>
3<div id="tt-event-carousel">
4 <div class="container max-container-1410">
5
6 <div class="tt-event-carousel-content">
7
8 <#assign apDisplayContext = renderRequest.getAttribute("ASSET_PUBLISHER_DISPLAY_CONTEXT") />
9 <#assign order = apDisplayContext.getOrderByColumn1() />
10 <#assign startDates = [] />
11 <#assign priorities = [] />
12
13 <#list entries as curEntry>
14 <#assign
15 assetRenderer = curEntry.getAssetRenderer()
16 journalArticle = assetRenderer.getAssetObject()
17 priority = curEntry.getPriority()
18
19 />
20
21 <#assign
22 document = saxReaderUtil.read(journalArticle.getContent())
23 rootElement = document.getRootElement()
24 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='endDate']")
25 endDate = getterUtil.getString(xPathSelector.selectSingleNode(rootElement).getStringValue())
26 xPathSelector2 = saxReaderUtil.createXPath("dynamic-element[@name='startDate']")
27 startDate = getterUtil.getString(xPathSelector2.selectSingleNode(rootElement).getStringValue())
28 />
29
30 <#assign startDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", startDate, locale)>
31
32 <@liferay_journal["journal-article"]
33 articleId=journalArticle.getArticleId()
34 ddmTemplateKey=eventiTemplateId
35 groupId=journalArticle.getGroupId()
36 />
37
38 <#assign startDates = startDates + [startDate_DateObj?datetime?string('yyyy-MM-dd')] />
39 <#assign priorities = priorities + [priority] />
40
41 </#list>
42 </div><#-- /.tt-event-carousel-content -->
43
44 <div class="t-btn d-flex justify-content-end"><a class="b-arrow-cyan" href="/web${themeDisplay.getScopeGroup().getFriendlyURL()}/eventi" ><span><@liferay.language key="it.taranto.tic2.newsevents.vedi-tutti-gli-eventi"/></span></a></div>
45 </div><#-- /.container -->
46</div><#-- /#tt-event-carousel -->
47</#if>
48
49
50<script>
51
52 jQuery(document).ready(function() {
53
54 var startDatesJS = [];
55 <#list startDates as sd>
56 startDatesJS.push(new Date('${sd}'));
57 </#list>
58
59 var prioritiesJS = [];
60 <#list priorities as p>
61 prioritiesJS.push(${p});
62 </#list>
63
64 for(var i = 0; i < prioritiesJS.length; i++){
65 $('.tt-event-carousel-item').eq(i).addClass('priority' + prioritiesJS[i]);
66 }
67
68 var fixFocus = function(theTarget, currentSlide, nextSlide) {
69 if (nextSlide > currentSlide){
70 $(theTarget).find("button.slick-prev.slick-arrow").focus();
71 } else if (nextSlide < currentSlide) {
72 $(theTarget).find("button.slick-next.slick-arrow").focus();
73 }
74 }
75
76 var _previouSlide;
77
78 jQuery('#wrapper').css('overflow','hidden');
79
80 var fixIds = function() {
81 jQuery('.tt-event-carousel-content .slick-slide').removeClass('slick-active-01 slick-active-02 slick-active-03');
82 var activeSlides = $('.tt-event-carousel-content .slick-slide.slick-active');
83 activeSlides.each(function( index ) {
84 if (index>2){return false;}
85 jQuery(this).addClass('slick-active-0'+(index+1));
86 });
87 }
88
89 jQuery('.tt-event-carousel-content').on('init', function(event, slick) {
90 fixIds();
91 accFeature.fixSlickAcc("<@liferay.language key='previous'/>", "<@liferay.language key='next'/>");
92 _previouSlide = 0;
93 });
94
95 <#if order?contains("modifiedDate")>
96
97 var elem = $('.tt-event-carousel-content .journal-content-article').sort(sortMe);
98 $('.tt-event-carousel-content').prepend(elem);
99
100 function sortMe(a, b) {
101 var classA = $(a).find('.tt-event-carousel-item').attr('class').split("startDate-")[1];
102 var classB = $(b).find('.tt-event-carousel-item').attr('class').split("startDate-")[1];
103 var classPriorityA = $(a).find('.tt-event-carousel-item').attr('class').split("priority")[1];
104 var classPriorityB = $(b).find('.tt-event-carousel-item').attr('class').split("priority")[1];
105 var startA = classA.substring(0,10);
106 var startB = classB.substring(0,10);
107 var priorityA = classPriorityA.substring(0,1);
108 var priorityB = classPriorityB.substring(0,1);
109 var splitA = startA.split('-');
110 var splitB = startB.split('-');
111
112 var dateA = new Date(splitA[1] + '-' + splitA[0] + '-' + splitA[2]);
113 var dateB = new Date(splitB[1] + '-' + splitB[0] + '-' + splitB[2]);
114
115 if(priorityA < priorityB){
116 return 1;
117 }else if(priorityA > priorityB){
118 return -1;
119 }else if(priorityA === priorityB){
120 if(dateA < dateB){
121 return 1;
122 }else if(dateA > dateB){
123 return -1;
124 }else if(dateA.getTime() === dateB.getTime()){
125 return 0;
126 }
127 }
128 }
129
130 </#if>
131
132 var theSlick = jQuery('.tt-event-carousel-content').slick({
133 slidesToShow: 3,
134 slidesToScroll: 3,
135 autoplay: false,
136 dots: true,
137 arrows: true,
138 infinite: false,
139 responsive: [
140 {
141 breakpoint: 1025,
142 settings: {
143 slidesToShow: 2,
144 slidesToScroll: 2,
145 dots: false
146 }
147 },
148 {
149 breakpoint: 768,
150 settings: {
151 slidesToShow: 1,
152 slidesToScroll: 1,
153 dots: false
154 }
155 }
156 ]
157 });
158
159 theSlick.on("afterChange", function(event, slick, currentSlide) {
160 fixIds();
161 fixFocus(event.target, _previouSlide, currentSlide);
162 accFeature.fixSlickAcc("<@liferay.language key='previous'/>", "<@liferay.language key='next'/>");
163 });
164
165 theSlick.on('beforeChange', function (event, slick, currentSlide, nextSlide) {
166 _previouSlide = currentSlide;
167 });
168
169 });
170
171</script>