Si è verificato un errore nell'elaborarazione del modello.
Can't convert this string to number: "10;00"
The blamed expression:
==> sValue?number  [in template "20099#20135#131031611" at line 235, column 115]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign podcastStartHH = sValue?number  [in template "20099#20135#131031611" at line 235, column 89]
----
1<#assign instanceid = themeDisplay.getPortletDisplay().getId()?keep_after("INSTANCE_") /> 
2 
3<#-- Ricavo servizi utili in seguito --> 
4<#-- Servizio utile per ricavare le categorie --> 
5<#assign catLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
6 
7<#-- Servizi utili pe ricavare le immagini dalla D&M --> 
8<#assign dlFileEntryLocalService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryLocalService') /> 
9<#assign dlUtil = serviceLocator.findService('com.liferay.document.library.kernel.util.DLUtil') /> 
10<#assign dlAppService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLAppService') /> 
11 
12<#-- Se il carattere indicato è il prefisso della categoria, indica che la stessa non deve essere mostrata a video, ma viene solo usata per scopi funzionali --> 
13<#assign PREFIX_SERVICE_CATEGORY = "_" /> 
14<#-- Funzioni utilita --> 
15<#-- Ripulisco stringa da caratteri speciali --> 
16<#function escapeExtraChar text> 
17    <#return text?replace("\"","&quot;", "r")?replace("'","&rsquo;", "r")> 
18</#function> 
19 
20<#-- Verifico se il primo elemento di una lista esiste --> 
21<#function firstOfListNotEmpty list> 
22    <#assign result = false /> 
23	<#if list?? && list?has_content && list.getSiblings()?has_content && list.getSiblings()?first.getData()?has_content> 
24    	<#assign result = true />  
25    </#if> 
26    <#return result> 
27</#function> 
28 
29<#-- Ricavo tutte le categorie associate ad un articolo a meno di quelle che hanno un prefisso "_" --> 
30<#function getCategoryByArticlePrimKey articlePrimKey> 
31    <#assign tmp = "" />	 
32    <#assign articleCatNames = catLocalService.getCategories("com.liferay.journal.model.JournalArticle", getterUtil.getLong(articlePrimKey)) /> 
33	<#if (articleCatNames?size > 0)> 
34		<#list articleCatNames as category>	 
35			<#if category.name?substring(0,1) != PREFIX_SERVICE_CATEGORY > 
36				<#assign tmp = tmp + category.name + ", " />	 
37			</#if> 
38		</#list> 
39		<#assign tmp = tmp?keep_before_last(",") />				 
40	</#if>  
41    <#return tmp> 
42</#function> 
43<#-- Verifico che la lista di elementi dell'asset siano journal article --> 
44<#function isJournalArticle renderer> 
45	<#return ("com.liferay.journal.model.JournalArticle" == renderer.getClassName() ) > 
46</#function> 
47<#function getElements renderer> 
48	<#assign journalArticle = renderer.getArticle() /> 
49	<#assign document = saxReaderUtil.read(journalArticle.getContent()) /> 
50	<#assign rootElement = document.getRootElement() /> 
51	<#return rootElement.elements() > 
52</#function> 
53 
54<#assign userTimeZone = themeDisplay.getUser().getTimeZone() /> 
55<#assign today = dateUtil.getCurrentDate("dd-MM-yyyy", locale) /> 
56<#assign now = dateUtil.getCurrentDate("HH:mm", locale) /> 
57<#assign hour = dateUtil.getCurrentDate("HH", locale, userTimeZone) /> 
58<#assign minute = dateUtil.getCurrentDate("mm", locale, userTimeZone) /> 
59 
60<script src="https://www-cdn.comune.milano.it/o/cdm-theme/js/jquery.selectric.min.js"></script> 
61<link rel="stylesheet" href="/documents/91069258/0/custom_radio.css/6b70391a-376d-d014-7354-7efe3767da68"> 
62 
63<script> 
64	function filtra() { 
65		var listaAudio = $("#palinsesto .item-audio"); 
66		listaAudio.show();  
67		 
68		var listaVideo = $("#palinsesto .item-video"); 
69		listaVideo.show();  
70		 
71		var tagTextSelected = $("#tipologia input[type='radio']:checked").val(); 
72		 
73		if(tagTextSelected == "video") { 
74			listaAudio.hide(); 
75		} else if (tagTextSelected == "audio") { 
76			listaVideo.hide(); 
77
78
79	 
80	var height = "0px"; 
81 
82	function closePlayer() { 
83		$("#player").css({"height":height,"min-height":0}); 
84		height = "0px"; 
85		$("#player-content").hide(); 
86		$("#close-button").hide(); 
87		$("#player").animate({"height":height}, 300).fadeOut(); 
88		$(".item").css('color', '#555'); 
89		$(".play-icon").css('color', '#555'); 
90
91	 
92	function openPlayer(title, diffDate, desc, type, url) { 
93		if (height === "0px") { 
94			height = "150px"; 
95			$("#player").animate({"height":height}, 150).show(); 
96
97		if (type == "audio") { 
98			$("#video-content").hide(); 
99			$("#audio-content").attr('src', url).show(); 
100			$("#audio-download").attr('href', url); 
101			$("#audio-download-text").show(); 
102		} else { 
103			$("#audio-download-text").hide(); 
104			$("#audio-content").hide(); 
105			$("#video-content").attr('src', url).show(); 
106
107		$("#player-content-title").html(title); 
108		$("#player-content-date").html(diffDate); 
109		$("#player-content-description").html(desc); 
110		$("#player-content").show(); 
111		$("#close-button").show(); 
112		$("html, body").animate({scrollTop: $("#player").offset().top -250 }, "slow"); 
113		height = ($("#player-content").height()+10) + "px"; 
114		$("#player").animate({"height":height}, 300).show(); 
115
116	 
117	function colorChange(elemId1, elemId2) { 
118		$(".item").css('color', '#555'); 
119		$(".play-icon").css('color', '#555'); 
120		$("#"+elemId1).css('color', '#d6012e'); 
121		$("#"+elemId2).css('color', '#d6012e'); 
122
123</script> 
124 
125<h2>Archivio</h2> 
126 
127<div id="player" style="height: 0px; background: rgb(238, 238, 238); border-radius: 2em; display:none;"> 
128	<div class="row px-4 pt-2" id="player-content" style=""> 
129		<div class="col-10 align-self-center"> 
130			<p class="font-weight-bold" id="player-content-title" style="font-size: 1.2em; color: #d6012e;">&nbsp;</p> 
131		</div> 
132 
133		<div class="col-2 text-right"> 
134			<p id="close-button" style="font-size: 2em; color: rgb(214, 1, 46);"><a href="javascript: closePlayer();"><i aria-hidden="true" class="fa fa-times" style="color: #d6012e;"></i> </a></p> 
135		</div> 
136 
137		<div class="col-12 col-lg-4 pl-3 text-center"> 
138			<audio controls="" id="audio-content" src="" style=" 
139				-moz-box-shadow: 0px 0px 5px 1.5px #adadad; 
140				-webkit-box-shadow: 0px 0px 5px 1.5px #adadad; 
141				box-shadow: 0px 0px 5px 1.5px #adadad; 
142				-moz-border-radius: 30px; 
143				-webkit-border-radius: 30px; 
144				border-radius: 30px;width: 100%;"> Player non supportato.</audio> 
145 
146			<p class="font-weight-bold pt-1" id="audio-download-text"><i aria-hidden="true" class="fa fa-download"></i>&nbsp;<a href="" id="audio-download">Salva il podcast</a></p> 
147 
148			<p><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="200" id="video-content" src="" style="display: none; 
149				-moz-box-shadow: 4px 4px 3px 1px #adadad; 
150				-webkit-box-shadow: 4px 4px 3px 1px #adadad; 
151				box-shadow: 4px 4px 3px 1px #adadad;" width="100%"></iframe></p> 
152		</div> 
153 
154		<div class="col-12 col-lg-8 pr-3"> 
155			<p style="font-size: 1.1em;"><i aria-hidden="true" class="fa fa-calendar"></i>&nbsp; <span id="player-content-date"></span></p> 
156 
157			<p style="font-size: 1.1em; overflow: auto;"><span id="player-content-description"></span></p> 
158		</div> 
159	</div> 
160</div> 
161 
162 
163<#if entries?has_content> 
164	<#assign count = 0 /> 
165	 
166	<section id="palinsesto"> 
167		<div class="row"> 
168			<div class="col mt-4"> 
169				<form id="tipologia" class="ricercacontestuale" onclick="filtra()"> 
170					<fieldset class="filtri"> 
171						<legend>Filtra per tipologia</legend> 
172						<p class="form-check form-check-inline custom_radio"> 
173							<input class="form-check-input" type="radio" id="tutte" name="inlineRadiobox" value="tutte" checked> 
174							<label class="form-check-label" for="tutte">Tutti</label> 
175						</p>					 
176						<p class="form-check form-check-inline custom_radio"> 
177							<input class="form-check-input" type="radio" id="audio" name="inlineRadiobox" value="audio"> 
178							<label class="form-check-label" for="audio">Audio</label> 
179						</p> 
180						<p class="form-check form-check-inline custom_radio"> 
181							<input class="form-check-input" type="radio" id="video" name="inlineRadiobox" value="video"> 
182							<label class="form-check-label" for="video">Video</label> 
183						</p> 
184					</fieldset> 
185				</form> 
186			</div>	 
187		</div>	 
188			 
189		<#assign currentDate = "01/01/2000" /> 
190		<div class="row mt-2" style="padding-left: 0.8em; padding-bottom: 1em;"> 
191			<#list entries as curEntry> 
192				<#assign entryIndex = curEntry?index /> 
193					<#assign renderer = curEntry.getAssetRenderer() /> 
194					 
195					<#-- verifico che sia un journal article --> 
196					<#if isJournalArticle(renderer)> 
197		 
198						<#-- ricavo il primekey --> 
199						<#assign articlePrimKey = renderer.getArticle().getResourcePrimKey() /> 
200						 
201						<#-- ricavo il titolo --> 
202						<#assign titolo = escapeExtraChar(curEntry.getTitle(locale)) /> 
203						 
204						<#-- ricavo la view url --> 
205						<#assign viewUrl = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry) /> 
206						<#if assetLinkBehavior != "showFullContent"> 
207							<#assign viewUrl = renderer.getURLViewInContext(renderRequest, renderResponse, viewUrl) />			 
208						</#if> 
209						 
210						<#-- inizializzo le variabili che uso --> 
211						<#assign categoria = "", podcastTitle = "", description = "", image = "", podcastFile = "#", youtube_link = "#", past = "false", podcastStartHH = 0, podcastStartMM = 0, podcastEndHH = 0, podcastEndMM = 0/> 
212			 
213						<#-- recupero l'elenco delle categorie da visualizzare --> 
214						<#assign categoria = getCategoryByArticlePrimKey( articlePrimKey ) /> 
215					 
216						<#-- recupero i dati dalla struttura dell'articolo --> 
217						<#list getElements(renderer) as dynamicElement>	 
218							<#if "podcastTitle" == dynamicElement.attributeValue("name")> 
219								<#assign podcastTitle = escapeExtraChar(dynamicElement.element("dynamic-content").getData()) /> 
220							<#elseif "checkbox_podcast" == dynamicElement.attributeValue("name")> 
221								<#assign checkbox_podcast = dynamicElement.element("dynamic-content").getText() /> 
222							<#elseif "checkbox_archive" == dynamicElement.attributeValue("name")> 
223								<#assign checkbox_archive = dynamicElement.element("dynamic-content").getText() /> 
224							<#elseif "podcastDate" == dynamicElement.attributeValue("name")> 
225								<#assign podcastDate = dynamicElement.element("dynamic-content").getText() /> 
226								<#assign podcastDate = podcastDate?trim /> 
227								<#assign podcastDate =	htmlUtil.extractText(podcastDate) /> 
228								<#assign podcastDateObj = dateUtil.parseDate("yyyy-MM-dd", podcastDate, locale)> 
229							<#elseif "podcastOrarioInizio" == dynamicElement.attributeValue("name")> 
230								<#assign podcastStart = dynamicElement.element("dynamic-content").getData() /> 
231								<#assign c = 0/> 
232								<#list podcastStart?split(":") as sValue> 
233									<#if sValue != ""> 
234										<#if (c % 2 == 0)> 
235											<#assign podcastStartHH = sValue?number/> 
236										<#else> 
237											<#assign podcastStartMM = sValue?number/> 
238										</#if> 
239										<#assign c = c+1/> 
240									</#if> 
241								</#list> 
242								<#if podcastStart != ""> 
243									<#assign podcastStart = " alle ore <strong>" + podcastStart + "</strong>"/> 
244								<#else> 
245									<#assign podcastStart = "&nbsp;"/> 
246								</#if> 
247							<#elseif "podcastOrarioFine" == dynamicElement.attributeValue("name")> 
248								<#assign podcastEnd = dynamicElement.element("dynamic-content").getData() /> 
249								<#assign c = 0/> 
250								<#list podcastEnd?split(":") as sValue> 
251									<#if sValue != ""> 
252										<#if (c % 2 == 0)> 
253											<#assign podcastEndHH = sValue?number/> 
254										<#else> 
255											<#assign podcastEndMM = sValue?number/> 
256										</#if> 
257										<#assign c = c+1/> 
258									</#if> 
259								</#list> 
260							<#elseif "podcastDesc" == dynamicElement.attributeValue("name")> 
261								<#assign podcastDesc = escapeExtraChar(dynamicElement.element("dynamic-content").getText()) /> 
262							<#elseif "youtube_link" == dynamicElement.attributeValue("name")> 
263								<#assign youtube_link = dynamicElement.element("dynamic-content").getText() /> 
264							<#elseif "podcastTipologia" == dynamicElement.attributeValue("name")> 
265								<#assign podcastTipologia = dynamicElement.element("dynamic-content").getData() />	 
266								<#if podcastTipologia == "audio"> 
267								    <#assign icona = "<i class='fas fa-podcast'></i>"> 
268								<#else> 
269							    	<#assign icona = "<i class='fas fa-video'></i>"> 
270								</#if> 
271							<#elseif "podcastFile" == dynamicElement.attributeValue("name")> 
272								<#assign podcastJString = dynamicElement.element("dynamic-content").getText() />	 
273								<#if podcastJString?? && podcastJString?has_content> 
274								    <#assign fileJson = podcastJString?eval /> 
275                                    <#assign dlFileEntry = dlFileEntryLocalService.getFileEntryByUuidAndGroupId(fileJson.uuid, fileJson.groupId?number) /> 
276                                    <#assign fileEntry = dlAppService.getFileEntry(dlFileEntry.fileEntryId) /> 
277                                    <#assign dlFile = dlUtil.getPreviewURL(fileEntry, fileEntry.getFileVersion(), themeDisplay, "") /> 
278                                    <#assign podcastFile = dlFile /> 
279                                </#if> 
280							<#elseif "podcastImage" == dynamicElement.attributeValue("name")> 
281							    <#assign imageJString = dynamicElement.element("dynamic-content").getText() /> 
282                                 <#if imageJString?? && imageJString?has_content> 
283                                     <#assign imageJson = imageJString?eval /> 
284                                     <#assign dlFileEntry = dlFileEntryLocalService.getFileEntryByUuidAndGroupId(imageJson.uuid, imageJson.groupId?number) /> 
285                                     <#assign fileEntry = dlAppService.getFileEntry(dlFileEntry.fileEntryId) /> 
286                                     <#assign dlFile = dlUtil.getPreviewURL(fileEntry, fileEntry.getFileVersion(), themeDisplay, "") /> 
287                                     <#assign podcastImage = dlFile /> 
288                                 </#if> 
289							</#if>						 
290						</#list> 
291						 
292						<#if podcastTipologia == "audio"> 
293							<#assign link = podcastFile /> 
294						<#else> 
295							<#assign link = youtube_link /> 
296						</#if> 
297						 
298						<#-- CONTROLLO DIRETTA --> 
299						<#if (checkbox_podcast != "true")> 
300							<#if (dateUtil.getDaysBetween(dateUtil.newDate(), podcastDateObj) == 0)> 
301								<#-- oggi --> 
302								<#if (stringUtil.equals(podcastDateObj?date?string('MMM dd, yyyy'), dateUtil.newDate()?string('MMM dd, yyyy'))) == true>  
303									<#-- oggi --> 
304									<#assign startTime = podcastStartHH*60 + podcastStartMM/> 
305									<#assign endTime = podcastEndHH*60 + podcastEndMM/> 
306									<#assign currentTime = hour?number*60 + minute?number/> 
307									<#if (startTime < currentTime) && (currentTime < endTime)> 
308										<#-- diretta --> 
309										<#assign on_air = "on_air"/> 
310										<#assign icona_info = "<i class='far fa-play-circle ${on_air}'></i>"/> 
311									<#else> 
312										<#-- evento passato o futuro --> 
313										<#if (startTime > currentTime)> 
314											<#-- evento futuro --> 
315											<#assign past = "false"/> 
316										<#else> 
317											<#if (currentTime > endTime)> 
318												<#-- evento già  passato --> 
319												<#assign past = "true"/> 
320											</#if> 
321										</#if> 
322									</#if> 
323								<#else> 
324									<#-- evento futuro --> 
325									<#assign past = "false"/> 
326								</#if> 
327							<#else> 
328								<#-- evento passato o futuro --> 
329								<#if (dateUtil.compareTo(dateUtil.newDate(), podcastDateObj) < 0)> 
330									<#-- evento futuro --> 
331									<#assign past = "false"/> 
332								<#else> 
333									<#-- evento già  passato --> 
334									<#assign past = "true"/> 
335								</#if> 
336							</#if> 
337						<#else> 
338							<#-- evento podcast - da non inserire --> 
339						</#if> 
340								 
341						<#-- HTML --> 
342						<#assign count = count+1/> 
343						<#assign textDate = dateUtil.getDate(podcastDateObj, "dd/MM/yyyy", locale) /> 
344							 
345						<#if checkbox_archive == "true" && past == "true"> 
346							<div class="col-12 col-md-4 mb-1 item-${podcastTipologia}" style="margin-bottom: 10px !important;"> 
347								<div class="row rounded-top" style="background: #d6012e; margin-right: 0em; color: white; border-bottom: #d6012e 2px solid;"> 
348									<div class="col-10"> 
349										<p class="text-truncate" style="max-width:100%; font-weight: bold; font-size: 1.2em; padding: 5px; margin-bottom: 0;">${podcastTitle}</p> 
350									</div> 
351									<div class="col-2"> 
352										<p class="text-right" style="font-weight: bold; font-size: 1.2em; padding-top:5px; margin-bottom: 0;"> ${icona}</p> 
353									</div> 
354								</div> 
355								<div class="row rounded" style=" background: #eee; margin-right: 0;"> 
356									<div class="col-2 pl-3 p-0 align-self-center text-center"> 
357										<a title="${podcastTitle}" href="javascript:void(0);" onclick="javascript:openPlayer('${podcastTitle?js_string}','Andato in onda il ${textDate} ${podcastStart}', '${podcastDesc?js_string}', '${podcastTipologia}', '${link}');colorChange('play-icon-${count}');"> 
358											<i id="play-icon-${count}" class="play-icon far fa-play-circle" style="font-size: 2em;"></i> 
359										</a> 
360									</div> 
361									<div class="col-10 pt-3 align-self-center"> 
362										<p>In onda il <strong>${textDate}</strong><br/> 
363										${podcastStart}</p> 
364									</div> 
365								</div> 
366							</div> 
367						</#if> 
368														 
369					</#if> 
370			</#list> 
371		</div> 
372		<#if count==0> 
373			<div style="margin-bottom: 30px;"> 
374				<p>Non ci sono eventi</p> 
375			</div> 
376		</#if> 
377	</section> 
378<#else> 
379	<div style="margin-bottom: 30px;"> 
380		<p>Non ci sono eventi</p> 
381	</div> 
382</#if>