Une erreur s'est produite en traitant le calibre.
Error on line 14, column 1 in 1882933#1882971#2016813 serviceLocator.findService("suggesto-gui-portlet","eu.suggesto.suggestogui.service.suggestoGuiLocalService") is undefined. It cannot be assigned to suggestoAPI
1<#--
2 ATL_ARTICOLO_BASE.ftl
3 eCTRLSolutions
4 2018
5-->
6
7
8<#assign journalServiceAPI = serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService") />
9<#assign JSONFactoryUtil = staticUtil["com.liferay.portal.kernel.json.JSONFactoryUtil"]>
10<#assign pathpage="">
11
12<#assign dlService = serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService")>
13<#assign fileEntry = staticUtil["com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil"]>
14<#assign suggestoAPI = serviceLocator.findService("suggesto-gui-portlet","eu.suggesto.suggestogui.service.suggestoGuiLocalService")>
15<#assign SuggestoMarketspaceAPI = serviceLocator.findService("suggesto-mksp-portlet","eu.suggesto.marketspace.service.MkspDomainLocalService")>
16<#assign domainName = "domainLiferay" >
17<#assign defLng = "it_IT" >
18<#assign homeName = i18n("home")>
19<#assign articleId = .vars['reserved-article-id'].data>
20
21<#assign mapviewLabel= suggestoAPI.msg(companyId,groupId,"vedi-su-mappa",locale,"it",localeUtil.fromLanguageId("it_IT"))>
22<#assign webLabel= suggestoAPI.msg(companyId,groupId,"sito-web",locale,"it",localeUtil.fromLanguageId("it_IT"))>
23<#assign contattiLabel= suggestoAPI.msg(companyId,groupId,"contatti",locale,"it",localeUtil.fromLanguageId("it_IT"))>
24<#assign chiediinfoLabel= suggestoAPI.msg(companyId,groupId,"richiedi-info",locale,"it",localeUtil.fromLanguageId("it_IT"))>
25<#assign privacPolicy= suggestoAPI.msg(companyId,groupId,"privacy-policy",locale,"it",localeUtil.fromLanguageId("it_IT"))>
26
27
28
29
30<#assign szname = "">
31<#if name ??>
32 <#if name.getData()?has_content && name.getData() != "modello-atl-articolo-base-non-cancellare">
33
34 <#assign szname=name.getData()>
35
36 <#elseif locale.language != "it">
37 <#assign journalArticle = journalServiceAPI.getLatestArticle(groupId?number,articleId)/>
38 <#assign document = saxReaderUtil.read(journalArticle.getContent())>
39 <#assign rootElement = document.getRootElement()>
40 <#assign szname = getLiferayDocSingleField(rootElement,"name","it_IT")>
41 </#if>
42</#if>
43
44<#assign szclaimText = "">
45<#if claimText ??>
46<#if claimText.getData()?has_content>
47 <#assign szclaimText=claimText.getData()>
48</#if>
49</#if>
50
51<#if request['theme-display'] ??>
52 <#assign themeDisplay = request['theme-display']>
53</#if>
54
55<#assign cdnHost = "">
56<#if request['theme-display'] ??>
57 <#assign cdnHost = request['theme-display']['cdn-host'] >
58</#if>
59
60<#assign noImageflag = "false">
61<#if noImages??>
62 <#if noImages.getData()?has_content>
63 <#if noImages.getData() == "true">
64 <#assign noImageflag = "true">
65 </#if>
66 </#if>
67</#if>
68
69<#assign thereareLink="false">
70<#if titleLink?? >
71 <#if titleLink.getSiblings()?has_content>
72 <#list titleLink.getSiblings() as cur_i>
73 <#if cur_i.getData()?has_content>
74 <#assign thereareLink="true">
75 </#if>
76 </#list>
77 </#if>
78</#if>
79<#assign thereareDownload="false">
80<#if download?? >
81 <#if download.getSiblings()?has_content>
82 <#list download.getSiblings() as cur_i>
83 <#if cur_i.getData()?has_content>
84 <#assign thereareDownload="true">
85 </#if>
86 </#list>
87 </#if>
88</#if>
89<#assign geoRefValue = "">
90<#assign lat = "">
91<#assign lng = "">
92<#if geoRef ??>
93 <#if geoRef.getData()?has_content >
94 <#assign ldata = geoRef.getData() !>
95 <#assign adata=ldata?split(",")>
96 <#assign lat=adata[0] >
97 <#assign lng=adata[1] >
98 <#assign geoRefValue = lat+","+lng>
99 </#if>
100</#if>
101
102<#assign dateFormat = "dd MMM yyyy" articoloDateStr = "">
103<#if articoloDate??>
104 <#if articoloDate.getData()?has_content>
105 <#assign articoloDate_DateObj = dateUtil.newDate(getterUtil.getLong(articoloDate.getData()))>
106 <#if articoloDate_DateObj??>
107 <#assign articoloDateStr = dateUtil.getDate(articoloDate_DateObj, dateFormat, locale)>
108 </#if>
109 </#if>
110</#if>
111
112
113<#assign
114 serviceContext = staticUtil["com.liferay.portal.service.ServiceContextThreadLocal"].getServiceContext()
115 browserSniffer = staticUtil["com.liferay.portal.kernel.servlet.BrowserSnifferUtil"]
116 themeDisplay = serviceContext.getThemeDisplay()
117 request = serviceContext.getRequest()
118 curURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()
119 siteUrl = themeDisplay.getURLPortal()?replace("://", ".")
120 baseUrl = "https://doiw017p65fbl.cloudfront.net/o/d40/img/"
121/>
122
123
124<#if browserSniffer.isMobile(request)>
125 <#assign width = 600>
126 <#assign height = 400>
127<#else>
128 <#assign width = 700>
129 <#assign height = 450>
130</#if>
131
132<#assign prefix = baseUrl + "w_" + width + ",h_" + height + "/" + siteUrl>
133
134<style>
135 #detail p font strong{
136 color: #d21a4c;
137 }
138</style>
139
140
141
142
143<#assign contactEmailStr = "">
144<#if contactEmail??>
145 <#if contactEmail.getData()?has_content>
146 <#assign contactEmailStr = contactEmail.getData()>
147 </#if>
148</#if>
149
150<#-- ADDITIONALJSONPARAM invio a referente offerta e in copia a atlbiella -->
151<#if contactEmailStr != "">
152 <#assign emailTo = contactEmailStr>
153<#else>
154 <#assign emailTo = "infobiella@terrealtopiemonte.it">
155</#if>
156
157<div class="d-none">emailTo ${emailTo}</div>
158
159<#assign emailCC= "infobiella@terrealtopiemonte.it">
160
161<script>
162 var additionalJsonParam={"emailTo":"${emailTo}", "emailCC":"${emailCC}"};
163 var destinatario="${emailTo}";
164</script>
165
166
167
168<!-- HTML DETTAGLIO ARTICOLO-->
169<section id="detail">
170 <div class="container-fluid-big py-5">
171 <h1 class="text-uppercase slim mt-0 mt-md-5 mb-3">
172 <#if szclaimText != "" >${szclaimText}<br/></#if><span class="bold-dark">${szname}</span>
173 </h1>
174 <#-- Breadcrumb -->
175 <#include "${templatesPath}/2118663">
176 <div class="dropdown-divider my-2 pb-4"></div>
177
178 <div class="row">
179 <#-- sidebar -->
180 <div class="col-12 col-lg-3 back-gray h-25 mb-5 mb-lg-0" data-aos='fade'>
181
182 <!-- sezione navigazione sottopagine -->
183 <#include "${templatesPath}/1932613">
184
185 <a href="/info-e-contatti" class="btn btn-dark btn-block small text-left text-uppercase rounded-0 font-weight-bold my-4">${chiediinfoLabel}</a>
186 <div class="informations">
187
188
189 <#assign thereIsLocation="false">
190 <@testingLocation/>
191 <#if thereIsLocation == "true">
192 <div>
193 <#if locationName ?? >
194 <#if locationName.getData()?has_content >
195 <p class="mb-0">${locationName.getData()} </p>
196 </#if>
197 </#if>
198 <#if locationAddress ??>
199 <#if locationAddress.getData()?has_content >
200 <p class="mb-0">${locationAddress.getData()}</p>
201 </#if>
202 </#if>
203 <#if locationCAP ?? || locationPlace ??>
204 <p class="mb-0">
205 <#if locationCAP ??>
206 <#if locationCAP.getData()?has_content >
207 ${locationCAP.getData()}
208 </#if>
209 </#if>
210 <#if locationPlace ??>
211 <#if locationPlace.getData()?has_content >
212 ${locationPlace.getData()}
213 <#if locationSign ??>
214 <#if locationSign.getData()?has_content >
215 (${locationSign.getData()})
216 </#if>
217 </#if>
218 </#if>
219 </#if>
220 </p>
221 </#if>
222 </div>
223 </#if>
224 </div>
225 <#-- mappa -->
226 <#if geoRefValue != "">
227 <script>
228 //Google maps
229 function initMap(){
230 var coords = {lat: ${lat}, lng: ${lng}};
231
232 var map = new google.maps.Map(document.getElementById('map-container'), {
233 zoom: 12,
234 center: coords,
235 zoomControl: true,
236 disableDefaultUI: true
237 });
238
239 var marker = new google.maps.Marker({
240 position: coords,
241 map: map,
242 title: "${szname?js_string}"
243 });
244 }
245 </script>
246 <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC6bquYa2AzdUrts2olPvErVqO6V5efSd0&callback=initMap" async defer></script>
247 <div id="map-container">
248 </div>
249 </#if>
250 <#-- end mappa -->
251
252
253 <#if geoRefValue != "">
254 <#-- bottone vedi su mappa -->
255 <form action="http://maps.google.com/maps" method="get" target="_blank" rel="noopener" id="linktomap">
256 <input type="hidden" name="daddr" value="${geoRefValue}">
257 <span class="fa-stack fa-lg text-white float-left"> <i class="fa fa-square fa-stack-2x text-dark"></i> <i class="fa fa-compass fa-stack-1x"></i> </span>
258 <button type="submit" value="vedi su mappa">${mapviewLabel}</button>
259 </form>
260 <#-- end bottone vedi su mappa -->
261 </#if>
262
263 <@infosection />
264
265 <!-- sidebar boxes-->
266 <#include "${templatesPath}/1934586" >
267
268 <@linklist />
269
270 <@downloadlist />
271
272 <!-- se pagine della sezione trakking aggiunge il link alla rete sentieristica -->
273 <#if curURL?contains("/trekking")>
274 <div class="insights">
275 <p class="text-uppercase font-weight-bold border-bottom border-dark mt-5"><a class="attachfancybox fancybox.iframe" href="http://cdn.atl.biella.it/misura313/mappa.html" style="color: #666" target="_blank">rete sentieristica</a></p>
276 <div class="content_block_sidebar">
277 <a href="http://cdn.atl.biella.it/misura313/mappa.html" target="_blank" class="attachfancybox fancybox.iframe btn btn-purple btn-block small text-left text-uppercase rounded-0 font-weight-bold mt-4">Itinerari Trekking</a>
278
279 <div class="highlights ">
280 <a class="attachfancybox fancybox.iframe" href="http://cdn.atl.biella.it/misura313/mappa.html" style="color: #666" target="_blank">
281 <img class="img-fluid" alt="Rete Sentieristica" src="/documents/1882959/2325040/rete-sentieristica.jpg/95ceb31d-055d-4099-9804-729c2b0e44b6?t=1587643008041" ></a>
282 </div>
283 </div>
284 </div>
285 </#if>
286
287
288 </div>
289 <#-- end sidebar -->
290
291 <#-- main -->
292 <div class="col-12 col-lg-7 offset-lg-1" data-aos='fade'>
293
294 <#if noImageflag != "true" >
295 <#if previewImage ??>
296 <#if previewImage.getData()?has_content>
297 <img src="${prefix}${previewImage.getData()}" class="img-fluid">
298 </#if>
299 </#if>
300 <#else>
301 <@gallery />
302 </#if>
303
304 <!-- video-->
305 <#assign thereisvideo="false">
306 <#if video ??>
307 <#if video.getSiblings()?has_content>
308 <#assign thereisvideo="true">
309 </#if>
310 </#if>
311 <#if thereisvideo == "true">
312 <#list video.getSiblings() as cur_video>
313 <div style="padding-bottom:1%;padding-top:3%;text-align:center;" class="videoframe">
314 ${cur_video.embedCodeVideo.getData()}<br/>
315 ${cur_video.getData()}
316 </div>
317 </#list>
318 </#if>
319 <!-- end video-->
320
321 <div class="mt-5">
322 <#if longDesc ?? >
323 <#if longDesc.getData()?has_content >
324 ${longDesc.getData()}
325 <#elseif locale.language != "it">
326 <#assign journalArticle = journalServiceAPI.getLatestArticle(groupId?number,articleId)/>
327 <#assign document = saxReaderUtil.read(journalArticle.getContent())>
328 <#assign rootElement = document.getRootElement()>
329 <#assign desc = getLiferayDocSingleField(rootElement,"longDesc","it_IT")>
330 ${desc}
331 </#if>
332 </#if>
333 <div class="dropdown-divider"></div>
334 </div>
335
336 <!-- row_section_descriptions -->
337 <#include "${templatesPath}/2202617" >
338
339 <#if articoloDateStr != "" >
340 <p content="${articoloDateStr}" class="mb-0">${articoloDateStr}</p>
341 </#if>
342 </div>
343
344 <#-- end main -->
345 </div>
346 </div>
347</section>
348
349
350<#macro gallery>
351<#assign hasContentSlider = false >
352<#assign curGallery = 0>
353<#if mainImageFolder ??>
354 <#if mainImageFolder.getData() != "">
355 <#assign mainImage = mainImageFolder.getData()>
356 <#if mainImage ??>
357 <#assign startFrom=mainImage?last_index_of("/")+1>
358
359 <#assign endTo=mainImage?last_index_of("?")-1>
360
361 <#if endTo gt 0 >
362 <#assign mainImageUid = mainImage[startFrom..endTo]>
363 <#assign curGallery = dlService.getFileEntryByUuidAndGroupId(mainImageUid,groupId).folderId?number>
364 <#assign hasContentSlider = true >
365 </#if>
366 </#if>
367 </#if>
368</#if>
369
370<#if hasContentSlider == true>
371 <#if curGallery !=0>
372 <#assign dlFiles = dlService.getFileEntries(groupId, curGallery)>
373 <#assign defImage="">
374 <#assign counterimg= 0 >
375 <div id="slideshow" class="carousel slide" data-ride="carousel">
376 <div class="carousel-inner">
377 <#list dlFiles as dlFile >
378 <#assign defImage="">
379 <#if dlFile.getFileVersion().status == 0>
380 <#if dlFile.getFileVersion().description != "HIDE">
381 <#assign uet = httpUtil.encodeURL(htmlUtil.unescape(dlFile.getTitle()))>
382
383 <#if defImage=="">
384 <#assign defImage="${cdnHost}/documents/${groupId}/${curGallery}/${uet}">
385 <#assign defImage=defImage+"?width=700&height=450">
386
387
388 </#if>
389
390 <#if counterimg == 0>
391 <div class="carousel-item active">
392 <img src="${defImage}" class="w-100" alt="">
393 </div>
394 <#else>
395 <div class="carousel-item">
396 <img src="${defImage}" class="w-100" alt="">
397 </div>
398 </#if>
399 <#assign counterimg= counterimg+1>
400 </#if>
401 </#if>
402 </#list>
403 </div>
404 <#if (counterimg >= 0)>
405 <div class="carousel-controls d-flex w-100 position-absolute">
406 <div class="btn view-mode btn-dark rounded-0 ml-auto m-1" data-target="#slideshow" data-slide="prev">
407 <i class="fa fa-chevron-left text-white"></i>
408 </div>
409 <div class="btn view-mode btn-dark rounded-0 m-1" data-target="#slideshow" data-slide="next">
410 <i class="fa fa-chevron-right text-white"></i>
411 </div>
412 </div>
413 </#if>
414 </div>
415 </#if>
416</#if>
417</#macro>
418
419<#macro infosection>
420<#if contactPhone?? || contactFax?? || contactEmail?? || contactWeb?? || contactFacebook??>
421<#if contactPhone.getData()?has_content || contactFax.getData()?has_content || contactEmail.getData()?has_content || contactWeb.getData()?has_content || contactFacebook.getData()?has_content>
422 <div class="social-contacts">
423 <p class="text-uppercase font-weight-bold border-bottom border-dark mt-5">${contattiLabel}</p>
424 <#if contactPhone ??>
425 <#if contactPhone.getData()?has_content >
426 <div class="row">
427 <div class="col-auto px-0">
428 <span class="fa-stack fa-lg text-white">
429 <i class="fa fa-square fa-stack-1x text-dark"></i>
430 <i class="fa fa-phone fa-stack-1x smaller"></i>
431 </span>
432 </div>
433 <div class="col d-flex align-items-center pl-0">
434 <a href="tel:${contactPhone.getData()}" class="small mb-0">${i18n("tel")}: ${contactPhone.getData()}</a>
435 </div>
436 </div>
437 </#if>
438 </#if>
439 <#if contactFax ??>
440 <#if contactFax.getData()?has_content >
441 <div class="row">
442 <div class="col-auto px-0">
443 <span class="fa-stack fa-lg text-white">
444 <i class="fa fa-square fa-stack-1x text-dark"></i>
445 <i class="fa fa-fax fa-stack-1x smaller"></i>
446 </span>
447 </div>
448 <div class="col d-flex align-items-center pl-0">
449 <a href="fax:${contactFax.getData()}" class="small mb-0">Fax: ${contactFax.getData()}</a>
450 </div>
451 </div>
452 </#if>
453 </#if>
454 <#if contactEmail ??>
455 <#if contactEmail.getData()?has_content >
456 <div class="row">
457 <div class="col-auto px-0">
458 <span class="fa-stack fa-lg text-white">
459 <i class="fa fa-square fa-stack-1x text-dark"></i>
460 <i class="fa fa-envelope fa-stack-1x smaller"></i>
461 </span>
462 </div>
463 <div class="col d-flex align-items-center pl-0">
464 <a href="mailto:${contactEmail.getData()}" class="mail-contact small mb-0">${contactEmail.getData()}</a>
465 </div>
466 </div>
467 <div class="row">
468 <div class="col-auto px-0">
469 <span class="fa-stack fa-lg text-white">
470 <i class="fa fa-square fa-stack-1x text-dark"></i>
471 <i class="fa fa-lock fa-stack-1x smaller"></i>
472 </span>
473 </div>
474 <div class="col d-flex align-items-center pl-0">
475 <a href="/privacy-policy" class="mail-contact small mb-0">${i18n("leggi-informativa-privacy")}</a>
476 </div>
477 </div>
478 </#if>
479 </#if>
480 <#if contactWeb ??>
481 <#if contactWeb.getData()?has_content>
482 <#if contactWeb.getData()?starts_with("http://") || contactWeb.getData()?starts_with("https://") >
483 <#assign weblink = contactWeb.getData()>
484 <#else>
485 <#assign weblink = "http://"+ contactWeb.getData()>
486 </#if>
487 <div class="row">
488 <div class="col-auto px-0">
489 <span class="fa-stack fa-lg text-white">
490 <i class="fa fa-square fa-stack-1x text-dark"></i>
491 <i class="fa fa-globe fa-stack-1x smaller"></i>
492 </span>
493 </div>
494 <div class="col d-flex align-items-center pl-0">
495 <p class="small mb-0"><a href="${weblink}" class="weblink" title="${contactWeb.getData()}">${i18n("sito-web")} </a></p>
496 </div>
497 </div>
498 </#if>
499 </#if>
500 <#if contactFacebook ??>
501 <#if contactFacebook.getData()?has_content>
502 <div class="row">
503 <div class="col-auto px-0">
504 <span class="fa-stack fa-lg text-white">
505 <i class="fa fa-square fa-stack-1x text-dark"></i>
506 <i class="fa fa-facebook fa-stack-1x smaller"></i>
507 </span>
508 </div>
509 <div class="col d-flex align-items-center pl-0">
510 <p class="small mb-0"><a href="${contactFacebook.getData()}" title="${contactFacebook.getData()}">Facebook</a></p>
511 </div>
512 </div>
513 </#if>
514 </#if>
515 </div>
516</#if>
517</#if>
518</#macro>
519
520<#macro linklist>
521<#if thereareLink == "true">
522<div class="informations">
523<p class="text-uppercase font-weight-bold border-bottom border-dark mt-5">${i18n("altri-link-utili")}</p>
524 <div class="row section-mode1">
525 <div class="col-md-12">
526 <#list titleLink.getSiblings() as item>
527 <#if item.getData()?has_content>
528 <#if item.urlLink.getData()?starts_with("http://") || item.urlLink.getData()?starts_with("https://")>
529 <#assign urlLink = item.urlLink.getData()>
530 <#else>
531 <#assign urlLink = "http://"+ item.urlLink.getData()>
532 </#if>
533 <#assign testoLink = item.getData()>
534 <a href="${urlLink}"><i class=" icon-link"></i>${testoLink}</a>
535 <br/>
536 </#if>
537 </#list>
538 </div>
539 </div>
540</div>
541</#if>
542
543</#macro>
544
545<#macro downloadlist>
546<#if thereareDownload == "true">
547<div class="informations">
548<p class="text-uppercase font-weight-bold border-bottom border-dark mt-5">Download</p>
549 <div class="row section-mode1">
550 <div class="col-md-12">
551 <#list download.getSiblings() as item>
552 <#if item.getData()?has_content>
553 <#assign urlDownload = item.getData()>
554 <#assign doctitle = "" >
555 <#assign fileType = "">
556 <#assign counter = 0 >
557
558
559
560 <!-- informazioni sul file -->
561 <#list urlDownload?split("/") as x>
562 <#if counter == 2>
563 <#assign groupIDdoc = x?number >
564 </#if>
565 <#if counter == 4>
566 <#assign filename = x >
567 </#if>
568 <#if counter == 5>
569 <#assign uuId = x >
570 </#if>
571 <#assign counter = counter+1 >
572 </#list>
573 <#assign start=urlDownload?last_index_of("/")+1>
574 <#assign end=urlDownload?last_index_of("?")-1>
575 <#if end != -2>
576 <#assign mainDocUid = urlDownload[start..end]>
577 <#assign file=fileEntry.getFileEntryByUuidAndGroupId(mainDocUid, groupIDdoc) >
578 <#else>
579 <#assign file=fileEntry.getFileEntryByUuidAndGroupId(uuId, groupIDdoc) >
580 </#if>
581 <#assign fileType = file.getMimeType()> <!--tipo di file --->
582
583 <#if item.downloadTitle.getData()?has_content>
584 <#assign doctitle = item.downloadTitle.getData()>
585 <#else>
586 <#assign doctitle = urlDownload>
587 </#if>
588 <a href="${urlDownload}" title="${doctitle}" ><i class="icon_cloud-download_alt"></i>${doctitle}</a>
589 <br/>
590 </#if>
591 </#list>
592 </div>
593 </div>
594</div>
595</#if>
596</#macro>
597
598<#macro testingLocation>
599<#if locationName?? >
600<#if locationName.getData()?has_content >
601<#assign thereIsLocation="true">
602</#if>
603</#if>
604<#if locationAddress?? >
605<#if locationAddress.getData()?has_content >
606<#assign thereIsLocation="true">
607</#if>
608</#if>
609<#if locationPlace?? >
610<#if locationPlace.getData()?has_content >
611<#assign thereIsLocation="true">
612</#if>
613</#if>
614</#macro>
615<#function i18n labelId>
616 <#assign ret = labelId>
617 <#assign ret=SuggestoMarketspaceAPI.msgAll(groupId?string,domainName,labelId,locale.toString(),defLng) >
618 <#return ret>
619</#function>
620<#function getLiferayDocSingleField rootEl fieldName localeToRead>
621 <#assign stringSelector = "dynamic-element[@name='${fieldName}']/dynamic-content[@language-id = '" + localeToRead+ "']">
622 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>
623 <#assign ret = "">
624 <#if xPathSelector.selectSingleNode(rootEl)??>
625 <#assign ret = xPathSelector.selectSingleNode(rootEl).getStringValue()>
626
627 </#if>
628 <#return ret>
629</#function>
Une erreur s'est produite en traitant le calibre.
Error on line 8, column 1 in 1882933#1882971#2159108 serviceLocator.findService("suggesto-gui-portlet", "eu.suggesto.suggestogui.service.suggestoGuiLocalService") is undefined. It cannot be assigned to suggestoAPI
1<#--
2 ADT itinerari.ftl
3 ADT eCTRLSolutions
4-->
5<#assign liferay_ui = taglibLiferayHash["/WEB-INF/tld/liferay-ui.tld"]>
6
7
8<#assign suggestoAPI = serviceLocator.findService("suggesto-gui-portlet", "eu.suggesto.suggestogui.service.suggestoGuiLocalService")>
9<#assign suggestoMkspAPI = serviceLocator.findService("suggesto-mksp-portlet","eu.suggesto.marketspace.service.MkspDockbarLocalService")>
10<#assign SuggestoMarketspaceAPI = serviceLocator.findService("suggesto-mksp-portlet","eu.suggesto.marketspace.service.MkspDomainLocalService")>
11<#assign defLocale = localeUtil.fromLanguageId("it_IT")>
12<#assign serverName = request.getServerName()>
13<#assign serverName = "">
14<#assign domainName = "domainLiferay" >
15<#assign defLng = "it_IT" >
16
17<#function getPrefix img width height>
18 <#assign
19 baseUrl = "https://d28r45jypu6nt9.cloudfront.net/o/d40/img/"
20 siteUrl = themeDisplay.getURLPortal()?replace("://", ".")
21 w = width
22 h = height
23 />
24 <#if height?is_string>
25 <#assign prefix = baseUrl + "w_" + w + "/" + siteUrl>
26 <#else>
27 <#assign prefix = baseUrl + "w_" + w + ",h_" + h + "/" + siteUrl>
28 </#if>
29
30 <#if !img?contains("/documents/")>
31 <#assign prefix = "">
32 </#if>
33
34 <#return prefix + img>
35</#function>
36
37<style>
38 @media screen and (min-width: 768px){
39 .card .card-head{
40 min-width: 25%;
41 }
42 .card .card-head img{
43 object-fit: cover;
44 }
45 .card .card-body{
46 width: 50%;
47 }
48 .card .card-footer{
49 width: 25%;
50 }
51 }
52
53</style>
54
55<#if entries?has_content>
56 <#assign results = 0>
57 <#list entries as entry>
58 <#assign results = results + 1>
59 </#list>
60 <section id="accomodation">
61 <div class="container-fluid-big py-5">
62 <div class="row justify-content-center">
63 <div class="col-12 col-xl-10 mb-5">
64 <p class="mb-0">${results} ${i18n("risultati")}</p>
65 </div>
66 <#list entries as entry>
67 <#assign entry = entry>
68 <#assign assetRenderer = entry.getAssetRenderer()>
69 <#assign className = assetRenderer.getClassName()>
70 <#assign customTitle = "">
71 <#assign previewImage = "">
72 <#assign uphillDifference = "">
73 <#assign pathLength = "">
74 <#assign itineraryTime = "">
75 <#assign desc = "">
76 <#assign telefono = "">
77 <#assign viewURL = "">
78
79 <#if className == "com.liferay.portlet.journal.model.JournalArticle">
80 <#assign journalArticle = assetRenderer.getArticle()>
81 <#assign document = saxReaderUtil.read(journalArticle.getContent())>
82 <#assign rootElement = document.getRootElement()>
83 <#assign title = htmlUtil.escape(assetRenderer.getTitle(locale))>
84
85 <#assign stringSelector = "dynamic-element[@name='name']/dynamic-content[@language-id = '" + locale + "']">
86 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>
87 <#if xPathSelector.selectSingleNode(rootElement)??>
88 <#assign customTitle = xPathSelector.selectSingleNode(rootElement).getStringValue()>
89 </#if>
90
91 <#assign stringSelector = "dynamic-element[@name='previewImage']/dynamic-content[@language-id = '" + defLocale + "']">
92 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>
93 <#if xPathSelector.selectSingleNode(rootElement)??>
94 <#assign image1 = xPathSelector.selectSingleNode(rootElement).getStringValue()>
95 </#if>
96
97 <#assign stringSelector = "dynamic-element[@name='image2']/dynamic-content[@language-id = '" + defLocale + "']">
98 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>
99 <#if xPathSelector.selectSingleNode(rootElement)??>
100 <#assign image2 = xPathSelector.selectSingleNode(rootElement).getStringValue()>
101 </#if>
102
103 <#assign stringSelector = "dynamic-element[@name='image3']/dynamic-content[@language-id = '" + defLocale + "']">
104 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>
105 <#if xPathSelector.selectSingleNode(rootElement)??>
106 <#assign image3 = xPathSelector.selectSingleNode(rootElement).getStringValue()>
107 </#if>
108
109 <#assign stringSelector = "dynamic-element[@name='image4']/dynamic-content[@language-id = '" + defLocale + "']">
110 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>
111 <#if xPathSelector.selectSingleNode(rootElement)??>
112 <#assign image4 = xPathSelector.selectSingleNode(rootElement).getStringValue()>
113 </#if>
114
115 <#assign stringSelector = "dynamic-element[@name='uphillDifference']/dynamic-content[@language-id = '" + defLocale + "']">
116 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>
117 <#if xPathSelector.selectSingleNode(rootElement)??>
118 <#assign uphillDifference = xPathSelector.selectSingleNode(rootElement).getStringValue()>
119 </#if>
120
121 <#assign stringSelector = "dynamic-element[@name='pathLength']/dynamic-content[@language-id = '" + defLocale + "']">
122 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>
123 <#if xPathSelector.selectSingleNode(rootElement)??>
124 <#assign pathLength = xPathSelector.selectSingleNode(rootElement).getStringValue()>
125 </#if>
126
127 <#assign stringSelector = "dynamic-element[@name='itineraryTime']/dynamic-content[@language-id = '" + defLocale + "']">
128 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>
129 <#if xPathSelector.selectSingleNode(rootElement)??>
130 <#assign itineraryTime = xPathSelector.selectSingleNode(rootElement).getStringValue()>
131 </#if>
132
133 <#assign viewURL = suggestoMkspAPI.getArticleUrl(groupId,serverName,journalArticle.articleId,localeUtil.fromLanguageId(locale.toString()),localeUtil.fromLanguageId("it_IT"),"/xyz")>
134 <#assign regioni = "">
135 <@categorie />
136
137 <#-- Choose preview image -->
138
139 <#if image2?has_content>
140 <#assign previewImage = image2>
141 <#elseif image3?has_content>
142 <#assign previewImage = image3>
143 <#elseif image4?has_content>
144 <#assign previewImage = image4>
145 <#else>
146 <#assign previewImage = "/documents/1882959/1886834/placeholder.jpg">
147 </#if>
148
149
150 <div class="col-12 col-xl-10 mb-5">
151 <div class="card flex-md-row rounded-0 border-0">
152 <div class="card-head float-md-left position-relative">
153 <a href="${viewURL}" class="card-zoom position-relative d-block w-100 h-100">
154 <div class="text-overlay middle-top position-absolute w-100 h-100"></div>
155 <img class="card-img-top rounded-0 w-100 h-100" src="${getPrefix(previewImage, 400, 250)}">
156 </a>
157 </div>
158 <div class="card-body float-md-left back-gray">
159 <#if regioni != ""> <p class="catamaran mb-0">${regioni}</p></#if>
160 <h6 class="font-weight-bold">${customTitle}</h6>
161 <#if catItinerariTipo != ""> <p class="catamaran mb-0">${i18n("tipo-di-itinerario")}: ${catItinerariTipo}</p></#if>
162 <#if catItinerariMezzo != ""> <p class="catamaran mb-0">${i18n("mezzo-di-trasporto")}: ${catItinerariMezzo}</p></#if>
163 <#if pathLength != ""> <p class="catamaran mb-0">${i18n("lunghezza")} (km): ${pathLength}</p></#if>
164 <#if uphillDifference != ""> <p class="catamaran mb-0">${i18n("dislivello-in-salita")}: ${uphillDifference}</p></#if>
165 <#if itineraryTime != ""> <p class="catamaran mb-0"><@itineraryTimeFormat /></p></#if>
166 <#if catItinerariDifficolta != ""> <p class="catamaran mb-0">${i18n("difficolta")}: ${catItinerariDifficolta}</p></#if>
167 </div>
168 <div class="card-footer justify-content-center flex-wrap flex-column float-md-left d-flex text-center rounded-0">
169 <i class="fa fa-2x fa-map-marker align-middle purple"></i>
170 <a href="#" target="_blank" rel="noopener noreferrer" class="btn text-dark btn-link px-0">${i18n("vedi-su-mappa")}</a>
171 <a href="${viewURL}" class="btn btn-lg btn-purple rounded-0 text-uppercase">${i18n("dettagli")}</a>
172 </div>
173 </div>
174 </div>
175 </#if>
176 </#list>
177 </div>
178 </div>
179 </section>
180</#if>
181
182<#macro categorie>
183 <#assign groupedCategories="">
184 <#assign groupedCategories=suggestoMkspAPI.getGroupedArticleCategories(groupId, journalArticle.articleId, locale, defLocale)>
185
186
187 <#if (groupedCategories.length() > 0)>
188 <#list 0..groupedCategories.length()-1 as i>
189 <#assign gc = groupedCategories.getJSONObject(i)>
190 <#assign gcCat = gc.getJSONArray("categories")>
191 <#assign vocabularyName = gc.getString("vocabularyName")>
192 <#assign vocabularyID = gc.getString("vocabularyId")>
193
194 <!-- lista regioni e comuni -->
195 <#include "${templatesPath}/2116615" >
196
197 <#-- vocabolario itinerari -->
198 <#if vocabularyID== "1924897" >
199 <#assign catItinerariTipo = "">
200 <#assign catItinerariMezzo = "">
201 <#assign catItinerariDifficolta = "">
202 <#assign catItinerariLunghezza = "">
203 <#assign catItinerariTratta = "">
204 <#assign sep1 = "">
205 <#assign sep2 = "">
206 <#assign sep3 = "">
207 <#assign sep4 = "">
208 <#assign sep5 = "">
209 <#assign sep6 = "">
210
211 <#list 0..gcCat.length()-1 as y>
212 <#assign sCatTC = gcCat.getJSONObject(y)>
213
214 <#assign categoryName=sCatTC.getString("name")>
215 <#assign pathById=sCatTC.getString("pathById") >
216 <#assign pathByName=sCatTC.getString("pathByName")>
217 <#assign pathByIcon=sCatTC.getString("icon")>
218
219 <#if sCatTC.getString("parentCategoryId") == "1924898" >
220 <#assign catItinerariTipo = catItinerariTipo+sep1+categoryName>
221 <#assign sep1 = ", ">
222 </#if>
223 <#if sCatTC.getString("parentCategoryId") == "1924907">
224 <#assign catItinerariMezzo = catItinerariMezzo+sep2+categoryName>
225 <#assign sep2 = ", ">
226 </#if>
227 <#if sCatTC.getString("parentCategoryId") == "1924915">
228 <#assign catItinerariDifficolta = catItinerariDifficolta+sep4+categoryName>
229 <#assign sep4 = ", ">
230 </#if>
231 <#if sCatTC.getString("parentCategoryId") == "1924911">
232 <#assign catItinerariLunghezza = catItinerariLunghezza+sep5+categoryName>
233 <#assign sep5 = ", ">
234 </#if>
235 <#if sCatTC.getString("parentCategoryId") == "2018043">
236 <#assign catItinerariTratta = catItinerariTratta+sep6+categoryName>
237 <#assign sep6 = ", ">
238 </#if>
239 </#list>
240 </#if>
241
242 </#list>
243 </#if>
244
245
246</#macro>
247
248<#function i18n labelId>
249 <#assign ret = labelId>
250 <#assign ret = SuggestoMarketspaceAPI.msgAll(groupId?string,domainName,labelId,locale.toString(),defLng)>
251 <#return ret>
252</#function>
253
254
255<#macro itineraryTimeFormat>
256<#if itineraryTime??>
257 <#if itineraryTime?has_content>
258 <#assign timeNoformat = itineraryTime>
259 <#assign hours = "">
260 <#assign minTot = "">
261
262 <#if (timeNoformat?length > 0)>
263 <#if timeNoformat?contains(".")>
264 <#assign pv = timeNoformat?last_index_of(".")>
265 <#assign hours = timeNoformat?substring(0, pv)>
266 <#assign mymin = timeNoformat?substring(pv)>
267 <#assign mymin = mymin?substring(1)>
268
269 <#assign minInt = mymin?number>
270
271 <#assign minTot = (minInt * 60)/100>
272 <#assign minTot = minTot?round>
273 <!-- #assign minTot = ((minTot + 2)/5) * 5 -->
274 <#else>
275 <#assign hours = "">
276 <#assign minTot = timeNoformat>
277 </#if>
278 <p class="catamaran mb-0">${i18n("tempo-di-percorrenza")}:
279 <#if hours == "" || hours == "0">
280 ${minTot} ${i18n("minuti")}
281 <#elseif hours == "1">
282 ${hours} ${i18n("ora")} <#if minTot gt 0> ${minTot} ${i18n("minuti")}</#if >
283 <#else>
284 ${hours} ${i18n("ore")} <#if minTot gt 0> ${minTot} ${i18n("minuti")}</#if >
285 </#if >
286 </p>
287 </#if>
288 </#if>
289</#if>
290</#macro>