Si รจ verificato un errore nell'elaborarazione del modello.
The target variable of the assignment, "facetToProcess", was null or missing, but the "+=" operator needs to get its value before assigning to it. ---- Tip: If the target variable is known to be legally null or missing sometimes, instead of something like <#assign x += 1>, you could write <#if x??><#assign x += 1></#if> or <#assign x = (x!0) + 1> ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign facetToProcess += {"values": ... [in template "3144088#3144123#3189782" in function "processFacet" at line 835, column 4] - Reached through: x = processFacet(fp1) [in template "3144088#3144123#3189782" in function "processFacets" at line 806, column 9] - Reached through: #assign-container [in template "3144088#3144123#3189782" in function "processFacets" at line 804, column 5] - Reached through: processedFacets = processFacets(facets) [in template "3144088#3144123#3189782" in macro "writeItems" at line 431, column 9] - Reached through: #assign-container [in template "3144088#3144123#3189782" in macro "writeItems" at line 427, column 5] - Reached through: @writeItems [in template "3144088#3144123#3189782" at line 396, column 13] ----
1<#import "_TEMPLATE_CONTEXT_/3144088/3149724/23609/3151242" as d40>
2
3<#compress>
4<#setting url_escaping_charset="UTF-8">
5
6<#assign
7 SuggestoMarketspaceAPI = serviceLocator.findService("eu.suggesto.marketspace.service.SmkspDataLocalService")
8 SuggestoRecommenderServiceAPI = serviceLocator.findService("eu.suggesto.servicecs.service.SuggestoRecommenderLocalService")
9 SuggestoCSServiceAPI = serviceLocator.findService("eu.suggesto.servicecs.service.SuggestoCSLocalService")
10 d40Service = serviceLocator.findService("eu.suggesto.d40.builder.d40.service.TourismItemLocalService")
11 JALS = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
12
13 ddmStructureKey = "*"
14 structureKey1 = "1365076"
15 structureKey2 = "1332941"
16 structureKey3 = "1332945"
17 structureKey4 = "1332946"
18 structureKey5 = "1332947"
19
20 serviceName = "0:esvisitsicilia"
21 serverName = ""
22 srvGroupId = groupId?string
23 defLng = "it_IT"
24 numPag = 1
25 numItems = 10
26 jsonParams = d40.createObject("")
27
28 szJsonParams = result.getNamespacedParameters().getString("jsonParams")
29/>
30
31<#assign rndSort>
32{
33 _script: {
34 script: "2005000",
35 type: "number",
36 params: {},
37 order: "asc"
38 }
39}
40</#assign>
41
42<#if szJsonParams?has_content>
43 <#assign jsonParams = d40.createObject(szJsonParams)>
44</#if>
45
46<#if jsonParams.getString("pag")?has_content>
47 <#assign numPag = jsonParams.getString("pag")?number>
48</#if>
49
50<#if jsonParams.getString("num")?has_content>
51 <#assign numItems = jsonParams.getString("num")?number>
52</#if>
53
54<#assign
55 query = jsonParams.getString("qry")
56 structureKey = jsonParams.getString("structureKey")
57 uid = jsonParams.getString("uid")
58 kw = jsonParams.getString("kw", "*")
59 p1 = jsonParams.getString("p1", "*")
60 p2 = jsonParams.getString("p2", "*")
61 p3 = jsonParams.getString("p3", "*")
62 p4 = jsonParams.getString("p4", "*")
63 p5 = jsonParams.getString("p5", "*")
64 p6 = jsonParams.getString("p6", "*")
65 p7 = jsonParams.getString("p7", "*")
66 p8 = jsonParams.getString("p8", "*")
67 p9 = jsonParams.getString("p9", "*")
68 p10 = jsonParams.getString("p10", "*")
69 d1 = jsonParams.getString("d1", "*")
70 d2 = jsonParams.getString("d2", "*")
71 queryAndOperatorP1 = jsonParams.getString("queryAndOperatorP1", "")
72 queryAndOperatorP2 = jsonParams.getString("queryAndOperatorP2", "")
73 queryAndOperatorP3 = jsonParams.getString("queryAndOperatorP3", "")
74 queryAndOperatorP4 = jsonParams.getString("queryAndOperatorP4", "")
75 queryAndOperatorC1 = jsonParams.getString("queryAndOperatorC1", "")
76 queryAndOperator0 = jsonParams.getString("queryAndOperator0", "")
77 queryAndOperator1 = jsonParams.getString("queryAndOperator1", "")
78 orderByColumn1 = jsonParams.getString("orderByColumn1", "")
79 orderByColumn2 = jsonParams.getString("orderByColumn2", "")
80 orderByType1 = jsonParams.getString("orderByType1", "")
81 orderByType2 = jsonParams.getString("orderByType2", "")
82 f0 = jsonParams.getString("f0", "")
83 f1 = jsonParams.getString("f1", "")
84 c1 = jsonParams.getString("c1", "")
85 sortOrder = jsonParams.getString("so", "")
86 scopeIds = jsonParams.getString("scopeIds", "")
87 mode = jsonParams.getString("mode", "")
88 pt = jsonParams.getString("pt")
89 ptflt = jsonParams.getString("ptflt")
90 dist = jsonParams.getString("d", "1")
91 lng = jsonParams.getString("lng", locale.toString())
92 fields = jsonParams.getString("flds", "*")
93 varjs = jsonParams.getString("varjs", "isct")
94 skipItems = (numPag-1) * numItems
95 locLng = localeUtil.fromLanguageId(lng)
96 locDef = localeUtil.fromLanguageId("it_IT")
97 today = dateUtil.parseDate(.now?string("dd")+ "/" + .now?string("MM") + "/" + .now?string("yyyy"), locDef)
98 szExpDate = .now?string("yyyy") + .now?string("MM") + .now?string("dd") + .now?string("hh") + .now?string("mm") + .now?string("ss")
99 szToday = .now?string("yyyy") + "-" + .now?string("MM") + "-" + .now?string("dd")
100 jsort = []
101/>
102
103<#if orderByType1 != "ASC" && orderByType1 != "DESC">
104 <#assign orderByType1 ="DESC">
105</#if>
106
107<#if orderByColumn1 == "title">
108 <#assign orderByColumn1 = "localized_title_it_IT_sortable">
109</#if>
110
111<#if orderByColumn1 == "modifiedDate">
112 <#assign orderByColumn1 = "modified_sortable">
113</#if>
114
115<#if structureKey == "1332933">
116 <#assign
117 orderByColumn1="ddm__keyword__1332934__dataFine"
118 orderByType1 = "ASC"
119 />
120</#if>
121
122<#if orderByColumn1?starts_with("ddm__keyword")>
123 <#assign orderByColumn1 += "_it_IT_String_sortable">
124</#if>
125
126<#if orderByColumn2 == "title">
127 <#assign orderByColumn2 = "localized_title_it_IT_sortable">
128</#if>
129
130<#if orderByColumn2 == "modifiedDate">
131 <#assign orderByColumn2 = "modified_sortable">
132</#if>
133
134<#if orderByColumn2?starts_with("ddm__keyword")>
135 <#assign orderByColumn2 += "_it_IT_String_sortable">
136</#if>
137
138<#if query?has_content && query == "global">
139 <#assign
140 querySlr1 = "head:true AND status:0 AND ddmStructureKey:${structureKey1} AND expirationDate:[${szExpDate} TO *]"
141 querySlr2 = "head:true AND status:0 AND ddmStructureKey:${structureKey2} AND expirationDate:[${szExpDate} TO *]"
142 querySlr3 = "head:true AND status:0 AND ddmStructureKey:${structureKey3} AND expirationDate:[${szExpDate} TO *]"
143 querySlr4 = "head:true AND status:0 AND ddmStructureKey:${structureKey4} AND expirationDate:[${szExpDate} TO *]"
144 querySlr5 = "head:true AND status:0 AND ddmStructureKey:${structureKey5} AND expirationDate:[${szExpDate} TO *]"
145 />
146
147 <#if structureKey == "1332933" && !d1?has_content>
148 <#assign d1 = szToday>
149 </#if>
150
151 <#if d1?has_content && structureKey?has_content && structureKey == "1332933">
152 <#assign querySlr5 = querySlr5 + " AND ddm__keyword__1332934__dataFine_it_IT:[${d1} TO *]">
153
154 <#if d2?has_content && structureKey?has_content && structureKey == "1332933">
155 <#assign querySlr5 = querySlr5 + " AND ddm__keyword__1332934__dataInizio_it_IT:[* TO ${d2}]">
156 </#if>
157 </#if>
158
159 <#assign querySlrFull = "head:true AND status:0 AND (ddmStructureKey:(${structureKey1} OR ${structureKey2} OR ${structureKey3} OR ${structureKey4} OR ${structureKey5})) AND expirationDate:[${szExpDate} TO *]">
160
161 <#if kw?has_content>
162 <#assign
163 querySlr1 += " AND content:${kw}"
164 querySlr2 += " AND content:${kw}"
165 querySlr3 += " AND content:${kw}"
166 querySlr4 += " AND content:${kw}"
167 querySlr5 += " AND content:${kw}"
168 querySlrFull += " AND content:${kw}"
169 />
170 </#if>
171<#else>
172 <#assign querySlr = "head:true AND status:0 AND expirationDate:[${szExpDate} TO *]">
173
174 <#if structureKey?has_content>
175 <#assign querySlr += " AND ddmStructureKey:${structureKey}">
176
177 <#if scopeIds?has_content>
178 <#assign querySlr += " AND groupId:${scopeIds}">
179 </#if>
180
181 <@setFilterParam param=f0 operator=queryAndOperator0 cats=f0Cats />
182
183 <@setFilterParam param=f1 operator=queryAndOperator1 cats=f1Cats />
184
185 <@setFilterParam param=c1 operator=queryAndOperatorC1 cats=c1Cats />
186 <#else>
187 <#if scopeIds?has_content>
188 <#assign querySlr = "head:true AND status:0 AND groupId:${scopeIds} AND ddmStructureKey:${ddmStructureKey} AND expirationDate:[${szExpDate} TO *]">
189
190 <#if scopeIds?has_content>
191 <#assign querySlr += " AND groupId:${scopeIds}">
192 </#if>
193
194 <@setFilterParam param=f0 operator=queryAndOperator0 cats=f0Cats />
195
196 <@setFilterParam param=f1 operator=queryAndOperator1 cats=f1Cats />
197
198 <@setFilterParam param=c1 operator=queryAndOperatorC1 cats=c1Cats />
199 </#if>
200 </#if>
201
202 <#if uid?has_content>
203 <#assign querySlr += " AND articleId:${uid}">
204 </#if>
205
206 <#if kw?has_content>
207 <#assign querySlr += " AND content:${kw}">
208 </#if>
209</#if>
210
211<#if orderByColumn1?has_content>
212 <#assign jsort += [{orderByColumn1, orderByType1}]>
213</#if>
214
215<#if orderByColumn2?has_content>
216 <#assign jsort += [{orderByColumn2, orderByType2}]>
217</#if>
218
219<#if sortOrder != "random">
220 <#assign sortOrder = d40.printPlain(jsort)>
221<#else>
222 <#assign sortOrder = "{'random':{}}">
223</#if>
224
225<#if kw?trim?has_content>
226 <#assign sortOrder = "">
227<#else>
228 <#assign kw = "*">
229</#if>
230
231<#if !p1?has_content>
232 <#assign p1 = "*">
233</#if>
234<#if !p2?has_content>
235 <#assign p2 = "*">
236</#if>
237<#if !p3?has_content>
238 <#assign p3 = "*">
239</#if>
240<#if !p4?has_content>
241 <#assign p4 = "*">
242</#if>
243<#if !p5?has_content>
244 <#assign p5 = "*">
245</#if>
246
247<#if structureKey == "1332933" && !d1?has_content>
248 <#assign d1 = szToday>
249</#if>
250
251<#if structureKey == "1332933" && !d1?has_content>
252 <#assign d1 = szToday>
253</#if>
254
255<#if d1?has_content && structureKey?has_content && structureKey == "1332933">
256 <#assign querySlr += " AND ddm__keyword__1332934__dataFine_it_IT:[${d1} TO *]">
257
258 <#if d2?has_content && structureKey?has_content && structureKey == "1332933">
259 <#assign querySlr += " AND ddm__keyword__1332934__dataInizio_it_IT:[* TO ${d2}]">
260 </#if>
261</#if>
262
263<#if query?has_content && query == "global">
264 <#assign
265 queryEs1 = buildQueryEs(querySlr1)
266 queryEs2 = buildQueryEs(querySlr2)
267 queryEs3 = buildQueryEs(querySlr3)
268 queryEs4 = buildQueryEs(querySlr4)
269 queryEs5 = buildQueryEs(querySlr5)
270 queryEsFull = buildQueryEs(querySlrFull)
271
272 resultQry1 = SuggestoRecommenderServiceAPI.search("0", serviceName,"", queryEs1, sortOrder, skipItems, numItems)
273 resultQry2 = SuggestoRecommenderServiceAPI.search("0", serviceName,"", queryEs2, sortOrder, skipItems, numItems)
274 resultQry3 = SuggestoRecommenderServiceAPI.search("0", serviceName,"", queryEs3, sortOrder, skipItems, numItems)
275 resultQry4 = SuggestoRecommenderServiceAPI.search("0", serviceName,"", queryEs4, sortOrder, skipItems, numItems)
276 resultQry5 = SuggestoRecommenderServiceAPI.search("0", serviceName,"", queryEs5, sortOrder, skipItems, numItems)
277 resultQryFull = SuggestoRecommenderServiceAPI.search("0", serviceName,"", queryEsFull, sortOrder, skipItems, numItems)
278 />
279
280 <#if !resultQryFull?has_content || resultQryFull.getJSONObject("data").getJSONObject("response").getString("numFound")?number == 0>
281 {
282 "metadata": {
283 "numFound": 0,
284 "start": 0,
285 "queryEsFull": "${d40.getJsonString(queryEsFull)}",
286 "sortOrder": "${d40.getJsonString(sortOrder)}"
287 },
288 "docs": [],
289 "service": "${serviceName}"
290 }
291 <#else>
292 <#assign
293 numFound = resultQryFull.getJSONObject("data").getJSONObject("response").getString("numFound")?number
294 start = resultQryFull.getJSONObject("data").getJSONObject("response").getString("start")?number
295 />
296
297 <#if (numFound > 0)>
298 <#assign
299 start = resultQryFull.getJSONObject("data").getJSONObject("response").getString("start")
300 items1 = resultQry1.getJSONObject("data").getJSONObject("response").getJSONArray("docs")
301 items2 = resultQry2.getJSONObject("data").getJSONObject("response").getJSONArray("docs")
302 items3 = resultQry3.getJSONObject("data").getJSONObject("response").getJSONArray("docs")
303 items4 = resultQry4.getJSONObject("data").getJSONObject("response").getJSONArray("docs")
304 items5 = resultQry5.getJSONObject("data").getJSONObject("response").getJSONArray("docs")
305 facets = resultQryFull.getJSONObject("data").getJSONObject("aggregations")
306 processedFacets = processFacets(facets)
307 first = true
308 />
309
310 {
311 "metadata": {
312 "numFound": ${numFound},
313 "start": ${start},
314 "queryEsFull": "${d40.getJsonString(queryEsFull)}",
315 "sortOrder": "${d40.getJsonString(sortOrder)}",
316 "c1": "${c1}",
317 "orderByColumn1": "${orderByColumn1}",
318 "orderByType1": "${orderByType1}"
319 },
320 "docs": [
321 <#list 0..items1.length()-1 as i>
322 <#if items1.getJSONObject(i)?has_content>
323 <#assign doc = items1.getJSONObject(i)>
324
325 <@jsonoutput />
326 </#if>
327 </#list>
328
329 <#list 0..items2.length()-1 as i>
330 <#if items2.getJSONObject(i)?has_content>
331 <#assign doc = items2.getJSONObject(i)>
332
333 <@jsonoutput />
334 </#if>
335 </#list>
336
337 <#list 0..items3.length()-1 as i>
338 <#if items3.getJSONObject(i)?has_content>
339 <#assign doc = items3.getJSONObject(i)>
340
341 <@jsonoutput />
342 </#if>
343 </#list>
344
345 <#list 0..items4.length()-1 as i>
346 <#if items4.getJSONObject(i)?has_content>
347 <#assign doc = items4.getJSONObject(i)>
348
349 <@jsonoutput />
350 </#if>
351 </#list>
352
353 <#list 0..items5.length()-1 as i>
354 <#if items5.getJSONObject(i)?has_content>
355 <#assign doc = items5.getJSONObject(i)>
356
357 <@jsonoutput />
358 </#if>
359 </#list>
360 ],
361 "facetedValues": ${processedFacets.toString()}
362 }
363 <#else>
364 {
365 "metadata": {
366 "numFound": ${numFound}
367 },
368 "query": "${querySlrFull}"
369 }
370 </#if>
371 </#if>
372<#else>
373 <#assign
374 queryEs = buildQueryEs(querySlr)
375 resultQry = SuggestoRecommenderServiceAPI.search("0", serviceName, "", queryEs, sortOrder, skipItems, numItems)
376 />
377
378 <#if !resultQry?has_content>
379 {
380 "metadata":{
381 "numFound": 0,
382 "start": 0
383 },
384 "docs": [],
385 "service": "${serviceName}",
386 "queryEs": "${d40.getJsonString(queryEs)}",
387 "sortOrder2": "${d40.getJsonString(sortOrder)}"
388 }
389 <#else>
390 <#assign
391 numFound = resultQry.getJSONObject("data").getJSONObject("response").getString("numFound")?number
392 start = resultQry.getJSONObject("data").getJSONObject("response").getString("start")?number
393 />
394
395 <#if (numFound > 0) && (start < numFound)>
396 <@writeItems/>
397 <#else>
398 {
399 "metadata": {
400 "numFound": ${numFound},
401 "start": ${start}
402 },
403 "docs": [],
404 "queryEs": "${d40.getJsonString(queryEs)}"
405 }
406 </#if>
407 </#if>
408</#if>
409
410<#macro setFilterParam param operator cats>
411 <#if param?has_content>
412 <#if operator == "true">
413 <#assign
414 cats = d40.getAndOrParam(param, "AND", "")
415 querySlr += " AND assetCategoryIds:(" + cats + ")"
416 />
417 <#else>
418 <#assign
419 cats = d40.getAndOrParam(param, "OR", "")
420 querySlr += " AND assetCategoryIds:(" + cats + ")"
421 />
422 </#if>
423 </#if>
424</#macro>
425
426<#macro writeItems>
427 <#assign
428 start = resultQry.getJSONObject("data").getJSONObject("response").getString("start")
429 items = resultQry.getJSONObject("data").getJSONObject("response").getJSONArray("docs")
430 facets = resultQry.getJSONObject("data").getJSONObject("aggregations")
431 processedFacets = processFacets(facets)
432 />
433
434 {
435 "metadata": {
436 "numFound": ${numFound},
437 "start": ${start},
438 "c1": "${c1}",
439 "orderByColumn1": "${orderByColumn1}",
440 "orderByType1": "${orderByType1}",
441 "queryEs": "${d40.getJsonString(queryEs)}",
442 "sortOrder": "${d40.getJsonString(sortOrder)}"
443 },
444 "docs": [
445 <#list 0..items.length()-1 as i>
446 <#assign doc = items.getJSONObject(i)>
447
448 <@jsonoutput />
449 </#list>
450 ],
451 "facetedValues": ${processedFacets}
452 }
453</#macro>
454
455<#macro jsonoutput>
456 <#assign
457 articleId = getLngStringFromJsonObject(doc, "articleId", lng, defLng, "")
458 articleGroupId = getLngStringFromJsonObject(doc, "groupId", lng, defLng, "")?number
459 article = d40Service.getByLng(articleGroupId, "", articleId, lng)
460 />
461
462 <#if article.getBoolean("success")>
463 <#assign contentJSON = article.getJSONObject("data").getJSONObject("contentJSON")>
464
465 <#if groupId == articleGroupId?number>
466 <#assign viewUrl = d40.mkspAPI.getArticleUrl(articleGroupId, "", articleId, locLng, locDef, "/det")>
467 <#else>
468 <#assign viewUrl = d40.mkspAPI.getArticleUrl(groupId, "", articleGroupId, articleId, locLng, locDef, "/det")>
469 </#if>
470
471 <#assign
472 contentJSON += {"viewUrl", viewUrl}
473 contentJSON += {"articleGroupIdViewUrl", articleGroupId}
474 contentJSON += {"articleIdViewUrl", articleId}
475 contentJSON += {"locale", locLng.toString()}
476 contentJSON += {"geoRef", d40.replaceStringWithGeoRef(contentJSON, "geoRef")}
477 />
478
479 <#if contentJSON.getString("coordinateTestuali")?has_content>
480 <#assign contentJSON += d40.fromTestualiToGeoRef(contentJSON)>
481 </#if>
482
483 <#if contentJSON.getString("previewPicture")?has_content>
484 <#assign contentJSON += {"previewPicture", d40.generateImgUrl(contentJSON.getString("previewPicture"))}>
485 </#if>
486
487 <#assign
488 contentJSON += d40.replaceStringWithImagesArray(contentJSON, "pictures")
489 groupedCategories = d40.mkspAPI.getGroupedArticleCategories(articleGroupId, articleId, locLng, locDef)
490 />
491
492 <#if groupedCategories?has_content>
493 <#assign contentJSON += {"groupedCategories", groupedCategories}>
494 </#if>
495
496 ${article.getJSONObject("data").toString()},
497 <#else>
498 {
499 "articleId": "${articleId},
500 "status": "notfound"
501 }
502 </#if>
503</#macro>
504
505<#function buildQueryEs varName>
506 <#assign rtnQuery>
507 {
508 "query": {
509 "bool": {
510 "must": [
511 {
512 "query_string": {
513 "query": "${d40.getJsonString(varName)}"
514 }
515 },
516 {
517 "query_string": {
518 "query": "assetCategoryIds:${p1}"
519 }
520 },
521 {
522 "query_string": {
523 "query": "assetCategoryIds:${p2}"
524 }
525 },
526 {
527 "query_string": {
528 "query": "assetCategoryIds:${p3}"
529 }
530 },
531 {
532 "query_string": {
533 "query": "assetCategoryIds:${p4}"
534 }
535 },
536 {
537 "query_string": {
538 "query": "assetCategoryIds:${p5}"
539 }
540 }
541 ]
542 }
543 },
544 "_source": ["articleId", "groupId"],
545 "aggs": {
546 "p1": {
547 "terms": {
548 "field": "assetCategoryIds",
549 "size": 200
550 }
551 },
552 "p2": {
553 "terms": {
554 "field": "assetCategoryIds",
555 "size": 200
556 }
557 },
558 "p3": {
559 "terms": {
560 "field": "assetCategoryIds",
561 "size": 200
562 }
563 },
564 "p4": {
565 "terms": {
566 "field": "assetCategoryIds",
567 "size": 200
568 }
569 },
570 "p5": {
571 "terms": {
572 "field": "assetCategoryIds",
573 "size": 200
574 }
575 }
576 }
577 }
578 </#assign>
579
580 <#return rtnQuery>
581</#function>
582
583<#function resolveItems contentJSON nodeName>
584 <#if contentJSON.getString(nodeName)?has_content && !contentJSON.getJSONArray(nodeName)?has_content>
585 <#assign
586 node = contentJSON.getString(nodeName)
587 jnode = d40.createObject(node)
588 stageGroupId = jnode.getString("groupId")
589 stxArray = []
590 />
591
592 <#if stageGroupId?has_content>
593 <#assign
594 className = jnode.getString("className")
595 classPK = jnode.getString("classPK")
596 linkedArticle = JALS.getLatestArticle(classPK?number?long)
597 stageArticleId = linkedArticle.getArticleId()
598 stageDocument = d40Service.getByLng(stageGroupId?number, "", stageArticleId, lng)!""
599 />
600
601 <#if stageDocument?has_content>
602 <#assign
603 v = cleanLiferayItem(stageDocument.getJSONObject("data"))
604 stageDocumentCJson = stageDocument.getJSONObject("data").getJSONObject("contentJSON")
605 z = resolveItem(stageDocumentCJson, "beacon")
606 stageDocumentCJson += d40.replaceStringWithJSONObject(stageDocumentCJson, "geoRef")
607 stageDocumentCJson += {"immagineLista", d40.generateImgUrl(stageDocumentCJson.getString("immagineLista"))}
608 stageDocumentCJson += {"map", d40.generateImgUrl(stageDocumentCJson.getString("map"))}
609 stageDocumentCJson += d40.replaceObjectWithArray(stageDocumentCJson, "infoItem")
610 infoItems = stageDocumentCJson.getJSONArray("infoItem")
611 />
612
613 <#list 0..infoItems.length()-1 as i>
614 <#assign
615 infoItem = infoItems.getJSONObject(i)
616 infoItem += {"infoItemSpeech", d40.generateImgUrl(infoItem.getString("infoItemSpeech"))}
617 infoItem += {"infoItemPreviewPicture", d40.generateImgUrl(infoItem.getString("infoItemPreviewPicture"))}
618 infoItem += {"infoItemMainPicture", d40.generateImgUrl(infoItem.getString("infoItemMainPicture"))}
619 infoItem += d40.replaceStringWithImagesArray(infoItem, "infoItemMediaItem")
620 />
621 </#list>
622
623 <#assign stxArray += [stageDocument.getJSONObject("data")]>
624 </#if>
625 </#if>
626
627 <#assign contentJSON += {nodeName + "Obj", stxArray}>
628 <#else>
629 <#if contentJSON.getJSONArray(nodeName)?has_content>
630 <#assign
631 stages = contentJSON.getJSONArray(nodeName)
632 stxArray = []
633 />
634
635 <#list 0..stages.length()-1 as i>
636 <#assign node = stages.getString(i)>
637
638 <#if node?has_content>
639 <#assign
640 jnode = d40.createObject(node)
641 stageGroupId = groupId
642 />
643
644 <#if jnode.getString("groupId")?has_content>
645 <#assign stageGroupId = jnode.getString("groupId")>
646 </#if>
647
648 <#assign
649 className = jnode.getString("className")
650 classPK = jnode.getString("classPK")
651 linkedArticle = JALS.getLatestArticle(classPK?number?long)
652 stageArticleId = linkedArticle.getArticleId()
653 stageDocument = d40Service.getByLng(stageGroupId?number, "", stageArticleId, lng)!""
654 x = cleanLiferayItem(stageDocument.getJSONObject("data"))
655 stageDocumentCJson = stageDocument.getJSONObject("data").getJSONObject("contentJSON")
656 stageDocumentCJson += d40.replaceStringWithJSONObject(stageDocumentCJson, "geoRef")
657 z = resolveItem(stageDocumentCJson, "beacon")
658 stageDocumentCJson += {"immagineLista", d40.generateImgUrl(stageDocumentCJson.getString("immagineLista"))}
659 stageDocumentCJson += {"map", d40.generateImgUrl(stageDocumentCJson.getString("map"))}
660 stageDocumentCJson += d40.replaceObjectWithArray(stageDocumentCJson, "infoItem")
661 infoItems = stageDocumentCJson.getJSONArray("infoItem")
662 />
663
664 <#list 0..infoItems.length()-1 as i>
665 <#assign
666 infoItem += {"infoItemSpeech", d40.generateImgUrl(infoItems.getJSONObject(i).getString("infoItemSpeech"))}
667 infoItem += {"infoItemPreviewPicture", d40.generateImgUrl(infoItem.getString("infoItemPreviewPicture"))}
668 infoItem += {"infoItemMainPicture", d40.generateImgUrl(infoItem.getString("infoItemMainPicture"))}
669 infoItem += d40.replaceStringWithImagesArray(infoItem, "infoItemMediaItem")
670 />
671 </#list>
672
673 <#assign stxArray += [stageDocument.getJSONObject("data")]>
674 </#if>
675 </#list>
676
677 <#assign contentJSON += {nodeName + "Obj", stxArray}>
678 </#if>
679 </#if>
680
681 <#return contentJSON>
682</#function>
683
684<#function resolveItem contentJSON nodeName>
685 <#assign itemDocumentCJson = d40.createObject("")>
686
687 <#if contentJSON.getString(nodeName)?has_content>
688 <#assign
689 node = contentJSON.getString(nodeName)
690 jnode = d40.createObject(node)
691 itemGroupId = jnode.getString("groupId")
692 className = jnode.getString("className")
693 classPK = jnode.getString("classPK")
694 linkedArticle = JALS.getLatestArticle(classPK?number?long)
695 itemArticleId = linkedArticle.getArticleId()
696 itemDocument = d40Service.getByLng(itemGroupId?number, "", itemArticleId, lng)!""
697 />
698
699 <#if itemDocument?has_content && itemDocument.getJSONObject("data")?has_content>
700 <#assign
701 objItemDocument = itemDocument.getJSONObject("data").getJSONObject("contentJSON")
702 itemDocumentCJson += d40.replaceStringWithJSONObject(objItemDocument, "geoRef")
703 />
704 </#if>
705 </#if>
706
707 <#assign contentJSON += {nodeName + "Obj", itemDocumentCJson}>
708
709 <#return contentJSON>
710</#function>
711
712<#function getLngStringFromJsonObject jsonObj fieldName lng defLng default>
713 <#assign
714 found = false
715 result = getLngStringFromJsonObjectInternal(jsonObj, fieldName, lng, defLng)
716 />
717
718 <#if result == "notFound">
719 <#assign result = getLngStringFromJsonObjectInternal(jsonObj, fieldName, lng?keep_before("_"), defLng?keep_before("_"))>
720
721 <#if result == "notFound">
722 <#assign result = default>
723 <#else>
724 <#assign found = true>
725 </#if>
726 <#else>
727 <#assign found = true>
728 </#if>
729
730 <#if !found>
731 <#assign result = default>
732 </#if>
733
734 <#return d40.getJsonString(result)>
735</#function>
736
737<#function getLngStringFromJsonObjectInternal jsonObj fieldName lng defLng>
738 <#assign found = false>
739
740 <#if jsonObj.getJSONArray(fieldName + "_" + lng)??>
741 <#assign
742 retObj = jsonObj.getJSONArray(fieldName + "_" + lng)
743 found = true
744 />
745 </#if>
746
747 <#if !found>
748 <#if jsonObj.getJSONArray(fieldName + "_" + defLng)??>
749 <#assign
750 retObj = jsonObj.getJSONArray(fieldName + "_" + defLng)
751 found = true
752 />
753 </#if>
754 </#if>
755
756 <#if !found>
757 <#if jsonObj.getJSONArray(fieldName)??>
758 <#assign
759 retObj = jsonObj.getJSONArray(fieldName)
760 found = true
761 />
762 </#if>
763 </#if>
764
765 <#if found>
766 <#assign result = retObj.getString(0)>
767 </#if>
768
769 <#if !found>
770 <#if jsonObj.getString(fieldName + "_" + lng)?has_content>
771 <#assign
772 result = jsonObj.getString(fieldName + "_" + lng)
773 found = true
774 />
775 </#if>
776 </#if>
777
778 <#if !found>
779 <#if jsonObj.getString(fieldName + "_" + defLng)?has_content>
780 <#assign
781 result = jsonObj.getString(fieldName + "_" + defLng)
782 found = true
783 />
784 </#if>
785 </#if>
786
787 <#if !found>
788 <#if jsonObj.getString(fieldName)?has_content>
789 <#assign
790 result = jsonObj.getString(fieldName)
791 found = true
792 />
793 </#if>
794 </#if>
795
796 <#if !found>
797 <#return "notFound">
798 </#if>
799
800 <#return result>
801</#function>
802
803<#function processFacets facetsToProcess>
804 <#assign
805 fp1 = facetsToProcess.getJSONObject("p1")
806 x = processFacet(fp1)
807 fp2 = facetsToProcess.getJSONObject("p2")
808 x = processFacet(fp2)
809 fp3 = facetsToProcess.getJSONObject("p3")
810 x = processFacet(fp3)
811 fp4 = facetsToProcess.getJSONObject("p4")
812 x = processFacet(fp4)
813 />
814
815 <#return facetsToProcess>
816</#function>
817
818<#function processFacet facetToProcess>
819 <#assign
820 buckets = facetToProcess.getJSONArray("buckets")
821 fpValues = {}
822 />
823
824 <#list 0..buckets.length()-1 as i>
825 <#if buckets.getJSONObject(i)?has_content>
826 <#assign
827 bck = buckets.getJSONObject(i)
828 keyBck = bck.getString("key")
829 keyCount = bck.getLong("doc_count")
830 fpValues += {keyBck, keyCount?string}
831 />
832 </#if>
833 </#list>
834
835 <#assign facetToProcess += {"values", fpValues}>
836
837 <#return facetToProcess>
838</#function>
839
840</#compress>