Home Page
imparare
Spazio alla Comunità
Accedi ai corsi di formazione e consulta i programmi di orientamento per i giovani! Vuoi ampliare i confini della tua conoscenza? Richiedi online il tesseramento alla Biblioteca Acclavio e partecipa agli eventi organizzati!
muoversi
Accessibilità e Connessione
Muoviti a Taranto in modo efficiente! Scopri i percorsi ciclabili, geolocalizza il monopattino più vicino o cerca il percorso più veloce per raggiungere la tua destinazione. Hai un’auto elettrica? Scopri dove ricaricarla!
vedere
Cultura e Turismo
Tutto il patrimonio storico e culturale a portata di click! Visita Taranto da un drone, scopri i tour virtuali ed i percorsi turistici, prenota online visite e biglietti per musei e teatri. Vuoi fare un salto nel passato? Scopri la magia delle ricostruzioni tridimensionali!
abitare
Cultura dell'Abitare
Sapere come evolve la città è importante! Scopri i progetti di riqualificazione, i bandi in concessione ed in locazione. Hai bisogno di richiedere il cambio di residenza o la tessera elettorale? Fallo dal tuo smartphone!
lavorare
Innovazione e Imprese
Cogli le opportunità di investimento consultando i bandi attivi! In questa sezione puoi scoprire le principali iniziative di innovazione e manifestare l'interesse a partecipare. Cosa aspetti? Fai un giro per saperne di più
cinque modi per vivere Taranto

Cultura e Turismo
Tutto il patrimonio storico e culturale a portata di click! Visita Taranto da un drone, scopri i tour virtuali ed i percorsi turistici, prenota online visite e biglietti per musei e teatri. Vuoi fare un salto nel passato? Scopri la magia delle ricostruzioni tridimensionali!

Accessibilità e Connessione
Muoviti a Taranto in modo efficiente! Scopri i percorsi ciclabili, geolocalizza il monopattino più vicino o cerca il percorso più veloce per raggiungere la tua destinazione. Hai un’auto elettrica? Scopri dove ricaricarla!

Cultura dell'Abitare
Sapere come evolve la città è importante! Scopri i progetti di riqualificazione, i bandi in concessione ed in locazione. Hai bisogno di richiedere il cambio di residenza o la tessera elettorale? Fallo dal tuo smartphone!

Innovazione e Imprese
Cogli le opportunità di investimento consultando i bandi attivi! In questa sezione puoi scoprire le principali iniziative di innovazione e manifestare l'interesse a partecipare. Cosa aspetti? Fai un giro per saperne di più

Spazio alla Comunità
Accedi ai corsi di formazione e consulta i programmi di orientamento per i giovani! Vuoi ampliare i confini della tua conoscenza? Richiedi online il tesseramento alla Biblioteca Acclavio e partecipa agli eventi organizzati!
cosa fare in questi giorni
The following has evaluated to null or missing:
==> startDates [in template "20097#20123#886009" at line 54, 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#886009" at line 54, column 5]
----
1<#assign eventiTemplateId = "TARANTO-TIMELINE-CAROUSEL-EVENTI-ITEM-TEMPLATE">
2
3<#if entries?has_content>
4<div id="tt-event-carousel">
5 <div class="container max-container-1410">
6
7 <div id="tt-event-carousel-content-evh" class="tt-event-carousel-content">
8
9 <#assign apDisplayContext = renderRequest.getAttribute("ASSET_PUBLISHER_DISPLAY_CONTEXT") />
10 <#assign order = apDisplayContext.getOrderByColumn1() />
11 <#assign startDates = [] />
12 <#assign priorities = [] />
13
14 <#list entries as curEntry>
15 <#assign
16 assetRenderer = curEntry.getAssetRenderer()
17 journalArticle = assetRenderer.getAssetObject()
18 priority = curEntry.getPriority()
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-evh -->
43
44 </div><#-- /.container -->
45</div><#-- /#tt-event-carousel -->
46</#if>
47
48<script>
49
50
51 jQuery(document).ready(function() {
52
53 var startDatesJS = [];
54 <#list startDates as sd>
55 startDatesJS.push(new Date('${sd}'));
56 </#list>
57
58 var prioritiesJS = [];
59 <#list priorities as p>
60 prioritiesJS.push(${p});
61 </#list>
62
63 for(var i = 0; i < prioritiesJS.length; i++){
64 $('.tt-event-carousel-item').eq(i).addClass('priority' + prioritiesJS[i]);
65 }
66
67 jQuery('#wrapper').css('overflow','hidden');
68
69 var fixIds = function() {
70 jQuery('#tt-event-carousel-content-evh .slick-slide').removeClass('slick-active-01 slick-active-02 slick-active-03');
71 var activeSlides = $('#tt-event-carousel-content-evh .slick-slide.slick-active');
72 activeSlides.each(function( index ) {
73 if (index>2){return false;}
74 jQuery(this).addClass('slick-active-0'+(index+1));
75 });
76 }
77
78 var fixFocus = function(theTarget, currentSlide, nextSlide) {
79 if (nextSlide > currentSlide){
80 $(theTarget).find("button.slick-prev.slick-arrow").focus();
81 } else if (nextSlide < currentSlide) {
82 $(theTarget).find("button.slick-next.slick-arrow").focus();
83 }
84 }
85
86 var _previouSlide;
87
88 jQuery('#tt-event-carousel-content-evh').on('init', function(event, slick) {
89 fixIds();
90 _previouSlide = 0;
91 accFeature.fixSlickAcc("<@liferay.language key='previous'/>", "<@liferay.language key='next'/>");
92 });
93
94 <#if order?contains("modifiedDate")>
95
96 var elem = $('#tt-event-carousel-content-evh .journal-content-article').sort(sortMe);
97 $('#tt-event-carousel-content-evh').prepend(elem);
98
99 function sortMe(a, b) {
100 var classA = $(a).find('.tt-event-carousel-item').attr('class').split("startDate-")[1];
101 var classB = $(b).find('.tt-event-carousel-item').attr('class').split("startDate-")[1];
102 var classPriorityA = $(a).find('.tt-event-carousel-item').attr('class').split("priority")[1];
103 var classPriorityB = $(b).find('.tt-event-carousel-item').attr('class').split("priority")[1];
104 var startA = classA.substring(0,10);
105 var startB = classB.substring(0,10);
106 var priorityA = classPriorityA.substring(0,1);
107 var priorityB = classPriorityB.substring(0,1);
108 var splitA = startA.split('-');
109 var splitB = startB.split('-');
110
111 var dateA = new Date(splitA[1] + '-' + splitA[0] + '-' + splitA[2]);
112 var dateB = new Date(splitB[1] + '-' + splitB[0] + '-' + splitB[2]);
113
114 if(priorityA < priorityB){
115 return 1;
116 }else if(priorityA > priorityB){
117 return -1;
118 }else if(priorityA === priorityB){
119 if(dateA < dateB){
120 return 1;
121 }else if(dateA > dateB){
122 return -1;
123 }else if(dateA.getTime() === dateB.getTime()){
124 return 0;
125 }
126 }
127 }
128
129 </#if>
130
131 var theSlick = jQuery('#tt-event-carousel-content-evh').slick({
132 slidesToShow: 3,
133 slidesToScroll: 3,
134 autoplay: false,
135 dots: true,
136 arrows: true,
137 infinite: false,
138 responsive: [
139 {
140 breakpoint: 1200,
141 settings: {
142 slidesToShow: 2,
143 slidesToScroll: 2,
144 dots: false
145 }
146 },
147 {
148 breakpoint: 768,
149 settings: {
150 slidesToShow: 1,
151 slidesToScroll: 1,
152 dots: false
153 }
154 }
155 ]
156 });
157
158 theSlick.on("afterChange", function(event, slick, currentSlide) {
159 fixIds();
160 fixFocus(event.target, _previouSlide, currentSlide);
161 accFeature.fixSlickAcc("<@liferay.language key='previous'/>", "<@liferay.language key='next'/>");
162 });
163
164 theSlick.on('beforeChange', function (event, slick, currentSlide, nextSlide) {
165 _previouSlide = currentSlide;
166 });
167
168
169 });
170
171</script>
in evidenza
-
Benvenuto
Benvenuto su Ecosistema Taranto! Il Portale turistico del Comune di Taranto dedicato a tutti gli utenti che desiderano conoscere meglio la città sotto molteplici prospettive. Non sei di queste parti?
Info point Scopri i percorsi turisticiInteragisci
In questa sezione hai accesso allo sportello telematico polifunzionale del Comune di Taranto. Scopri i servizi online dedicati ai cittadini e alle imprese o semplicemente fissa un appuntamento virtuale (da remoto) con il Comune.
accedi ai Servizi anagrafici accedi a tutti i Servizi Online