String index out of range: The index was 0 (0-based), but the length of the string is only 0. ---- FTL stack trace ("~" means nesting-related): - Failed at: ${name[0] + surname[0]} [in template "20096#20121#43059" at line 133, column 27] ----
1<#include "${templatesPath}/MACRO-CONFINDUSTRIA" />
2<#assign assetCategoryLocalService = serviceLocator.findService('com.liferay.asset.kernel.service.AssetCategoryLocalService') />
3<#assign journalLocalService = serviceLocator.findService('com.liferay.journal.service.JournalArticleLocalService') />
4<#assign
5 languageId = themeDisplay.getLanguageId()
6 defaultLanguageId = localeUtil.getDefault().toString()
7 DDMSTRUCTUREKEY_NEWS = "CONFINDUSTRIA-NOTIZIA"
8 DDMSTRUCTUREKEY_CIRCOLARE = "CONFINDUSTRIA-CIRCOLARE"
9 DDMSTRUCTUREKEY_CONTATTO = "CONFINDUSTRIA-CONTATTO"
10 DDMSTRUCTUREKEY_ATTIVITA = "CONFINDUSTRIA-ATTIVITA"
11 DDMSTRUCTUREKEY_EVENTO = "CONFINDUSTRIA-EVENTO"
12 DDMSTRUCTUREKEY_PUBBLICAZIONE = "CONFINDUSTRIA-PUBBLICAZIONE"
13 DDMSTRUCTUREKEY_ARTICOLO_REDAZIONALE = "CONFINDUSTRIA-ARTICOLO-REDAZIONALE"
14 DDMSTRUCTUREKEY_COMMISSIONI = "COMMISSIONI_STRUCTURE_KEY"
15 />
16
17 <#assign
18 FIELD_PUBLISH_DATE = "publishDate"
19 FIELD_DISPLAYDATE = "displayDate"
20 FIELD_CLASS_TYPE_ID = "classTypeId"
21 FIELD_DDMSTRUCTUREKEY = "ddmStructureKey"
22 FIELD_ENTRY_CLASS_NAME = "entryClassName"
23 FIELD_CLASSPK = "entryClassPK"
24 FIELD_ASSETCATEGORYIDS = "assetCategoryIds"
25 FIELD_URLTITLE = "urlTitle_"
26 FIELD_PREFIX = "ddm__keyword__"
27 FIELD_TITLE = "__title_"
28 FIELD_SIMPLE_TITLE = "title"
29 FIELD_EMAIL = "__email_"
30 FIELD_NAME = "__nome_"
31 FIELD_SURNAME = "__cognome_"
32 FIELD_START_TIME_EVENT="__startTime_"
33 FIELD_END_TIME_EVENT="__endTime_"
34 FIELD_START_DATE_EVENT = "__startDate_"
35 FIELD_END_DATE_EVENT ="__endDate_"
36 FIELD_NAME_EN = "__name_"
37 FIELD_GROUP_ID = "groupId"
38 FIELD_HIDE_DISPLAY_DATE = "__hideDisplayDate_"
39 />
40
41<#assign docs = searchContainer.getResults() />
42
43<section data-group="true">
44 <div class="container">
45 <div class="row">
46 <div class="col-12">
47 <div class="section__results w-100 d-flex justify-content-center">
48 <#if searchContainer.getTotal() == 1>
49 <div><@liferay.language key="confindustria.search.results.count.prefix" />: <strong>${searchContainer.getTotal()} <@liferay.language key="confindustria.search.results.one.result" /></strong></div>
50 <#else>
51 <div><@liferay.language key="confindustria.search.results.count.prefix" />: <strong>${searchContainer.getTotal()} <@liferay.language key="confindustria.search.results.count" /></strong></div>
52 </#if>
53 </div>
54 </div>
55 </div>
56 <div class="row">
57 <#if docs?has_content>
58 <#list docs as d>
59 <#assign
60 ae = confindustria_template_tool.getAssetEntry(d)
61 item = confindustria_template_tool.getDDMJournalArticleValuesMap(ae.getClassPK(), locale)
62 ddmStructureKey = d.get(FIELD_DDMSTRUCTUREKEY)
63 classTypeId = d.get(FIELD_CLASS_TYPE_ID)
64 title = d.get(FIELD_PREFIX + classTypeId + FIELD_TITLE + languageId)
65 groupId = d.get(FIELD_GROUP_ID)?number
66 displayDate=confindustria_template_tool.getDateFormattedBy(d.get(FIELD_DISPLAYDATE), "dd MMMMM yyyy", locale)
67 link = confindustria_template_tool.getSearchViewURL(d.get(FIELD_URLTITLE + languageId), groupId)
68 categories = ae.getCategories()
69 areeCategories = confindustria_template_tool.getAreeTematiche(categories)
70 materieCategories = confindustria_template_tool.getMaterie(categories)
71 className = d.get(FIELD_ENTRY_CLASS_NAME)
72 classPK = d.get(FIELD_CLASSPK)
73 hideDisplayDate = (d.get(FIELD_PREFIX + classTypeId + FIELD_HIDE_DISPLAY_DATE + languageId)!"")?lower_case == "true"
74 />
75 <div class="col-12 col-md-10 offset-md-1 col-lg-8 offset-lg-2">
76 <div class="card-search">
77 <#switch ddmStructureKey>
78 <#case DDMSTRUCTUREKEY_EVENTO>
79 <#assign
80 startTime = d.get(FIELD_PREFIX + classTypeId + FIELD_START_TIME_EVENT + languageId)
81 endTime = d.get(FIELD_PREFIX + classTypeId + FIELD_END_TIME_EVENT + languageId)
82 startDate = d.get(FIELD_PREFIX + classTypeId + FIELD_START_DATE_EVENT + languageId)
83 endDate = d.get(FIELD_PREFIX + classTypeId + FIELD_END_DATE_EVENT + languageId)
84 />
85 <div class="d-flex justify-content-between">
86 <div class="card-search__contenttype"><@liferay.language key="confindustria.events.label" /></div>
87 <#if startDate?? && startDate != '' && endDate?? && endDate != '' && startTime?? && startTime != '' && endTime?? && endTime != ''>
88 <div class="card-search__date">${confindustria_template_tool.getDateDetail(startDate, endDate, locale)}, ${confindustria_template_tool.getHourDetail(startTime, endTime, locale)}</div>
89 </#if>
90 </div>
91 <a href="${link}" title="${title}" class="card-search__title">${title}</a>
92 <div class="d-flex align-items-center mt-3">
93 <#if areeCategories?size gt 0>
94 <#list areeCategories as area>
95 <div class="card-search__category">${area.getTitle(locale)}</div>
96 </#list>
97 </#if>
98 <#if materieCategories?size gt 0>
99 <div class="card-search__materia">
100 <span>${(materieCategories?size == 1)?then(languageUtil.get(locale, "confindustria.materia"), languageUtil.get(locale, "confindustria.materie"))}:</span>
101 <#list materieCategories as mat>
102 ${mat.getTitle(locale)}
103 </#list>
104 </div>
105 </#if>
106 </div>
107 <#break>
108 <#case DDMSTRUCTUREKEY_CONTATTO>
109 <#assign fileEntryImage ="" />
110 <#assign fileName ="" />
111 <#if confindustria_template_tool.getFileEntrySearch(d, classTypeId, 'picture', themeDisplay)?? && confindustria_template_tool.getFileEntrySearch(d, classTypeId, 'picture', themeDisplay)?has_content>
112 <#assign fileEntryImage = confindustria_template_tool.getFileEntrySearch(d, classTypeId, 'picture', themeDisplay) />
113 </#if>
114
115 <#if fileEntryImage?? && fileEntryImage?has_content>
116 <#assign
117 entryId = fileEntryImage.getFileEntryId()
118 fileName = fileEntryImage.getFileName()
119 altImage = confindustria_template_tool.getJSONFieldValue(item.picture.value, "alt") />
120 <#else>
121 <#assign altImage = title />
122 </#if>
123 <#assign email = d.get(FIELD_PREFIX + classTypeId + FIELD_EMAIL + languageId)/>
124 <#assign name = d.get(FIELD_PREFIX + classTypeId + FIELD_NAME + languageId)/>
125 <#assign surname = d.get(FIELD_PREFIX + classTypeId + FIELD_SURNAME + languageId)/>
126 <div class="d-flex">
127 <#if entryId?has_content && fileName?has_content>
128 <div class="card-search__img">
129 <img src="/o/adaptive-media/adapt-image/${entryId}/${fileName}?w=56&h=56&q=60&fm=webp" alt="${altImage}" />
130 </div>
131 <#else>
132 <div class="card-search__img">
133 ${name[0]+surname[0]}
134 </div>
135 </#if>
136 <div>
137 <span class="card-search__title mb-1">${name + " " + surname}</span>
138 <#if item.ruolo?? && item.ruolo!=''>
139 <div class="card-search__role">${item.ruolo.value}</div>
140 </#if>
141 <div class="d-inline-flex flex-wrap mt-auto">
142 <#if item.telefono?? && item.telefono.value?has_content>
143 <div class="card-search__contact">
144 <#assign callString = languageUtil.get(locale, 'confindustria.contatto.chiama') />
145 <a href="tel:${item.telefono.value}" title="${callString} ${item.telefono.value}" class="card-search__link d-inline-flex align-items-center">
146 <svg class="ico-svg">
147 <use xlink:href="${themeIconsPath}#phone-alt-solid"></use>
148 </svg>
149 <span>${item.telefono.value}</span>
150 </a>
151 </div>
152 </#if>
153 <#if email?has_content>
154 <div class="card-search__contact">
155 <div class="card-search__link d-inline-flex align-items-center" onclick=${confindustria_template_tool.getContactEmailClickable(email)}>
156 <svg class="ico-svg">
157 <use xlink:href="${themeIconsPath}#envelope-light"></use>
158 </svg>
159 <span><@liferay.language key="confindustria.contact.email" /></span>
160 </div>
161 </div>
162 </#if>
163 </div>
164 </div>
165 </div>
166 <#break>
167 <#case DDMSTRUCTUREKEY_ARTICOLO_REDAZIONALE>
168 <div class="d-flex justify-content-between">
169 <div class="card-search__contenttype"><@liferay.language key="confindustria.articolo.redazionale" /></div>
170 <#if displayDate?? && displayDate != "" && !hideDisplayDate>
171 <div class="card-search__date">${displayDate}</div>
172 </#if>
173 </div>
174 <a href="${link}" title="${title}" class="card-search__title">${title}</a>
175 <div class="d-flex align-items-center mt-3">
176 <#if areeCategories?size gt 0>
177 <#list areeCategories as area>
178 <div class="card-search__category">${area.getTitle(locale)}</div>
179 </#list>
180 </#if>
181 <#if materieCategories?size gt 0>
182 <div class="card-search__materia">
183 <span>${(materieCategories?size == 1)?then(languageUtil.get(locale, "confindustria.materia"), languageUtil.get(locale, "confindustria.materie"))}:</span>
184 <#list materieCategories as mat>
185 ${mat.getTitle(locale)}
186 </#list>
187 </div>
188 </#if>
189 </div>
190 <#break>
191 <#case DDMSTRUCTUREKEY_CIRCOLARE>
192 <div class="d-flex justify-content-between">
193 <div class="card-search__contenttype"><@liferay.language key="confindustria.circolare" /></div>
194 <#if displayDate?? && displayDate != "" && !hideDisplayDate>
195 <div class="card-search__date">${displayDate}</div>
196 </#if>
197 </div>
198 <a href="${link}" title="${title}" class="card-search__title">${title}</a>
199 <div class="d-flex align-items-center mt-3">
200 <#if areeCategories?size gt 0>
201 <#list areeCategories as area>
202 <div class="card-search__category">${area.getTitle(locale)}</div>
203 </#list>
204 </#if>
205 <#if materieCategories?size gt 0>
206 <div class="card-search__materia">
207 <span>${(materieCategories?size == 1)?then(languageUtil.get(locale, "confindustria.materia"), languageUtil.get(locale, "confindustria.materie"))}:</span>
208 <#list materieCategories as mat>
209 ${mat.getTitle(locale)}
210 </#list>
211 </div>
212 </#if>
213 </div>
214 <#break>
215 <#case DDMSTRUCTUREKEY_NEWS>
216 <div class="d-flex justify-content-between">
217 <div class="card-search__contenttype"><@liferay.language key="confindustria.notizia" /></div>
218 <#if displayDate?? && displayDate != "" && !hideDisplayDate>
219 <div class="card-search__date">${displayDate}</div>
220 </#if>
221 </div>
222 <a href="${link}" title="${title}" class="card-search__title">${title}</a>
223 <div class="d-flex align-items-center mt-3">
224 <#if areeCategories?size gt 0>
225 <#list areeCategories as area>
226 <div class="card-search__category">${area.getTitle(locale)}</div>
227 </#list>
228 </#if>
229 <#if materieCategories?size gt 0>
230 <div class="card-search__materia">
231 <span>${(materieCategories?size == 1)?then(languageUtil.get(locale, "confindustria.materia"), languageUtil.get(locale, "confindustria.materie"))}:</span>
232 <#list materieCategories as mat>
233 ${mat.getTitle(locale)}
234 </#list>
235 </div>
236 </#if>
237 </div>
238 <#break>
239 <#case DDMSTRUCTUREKEY_ATTIVITA>
240 <div class="d-flex justify-content-between">
241 <div class="card-search__contenttype"><@liferay.language key="confindustria.activity.our" /></div>
242 <#if displayDate?? && displayDate != "" && !hideDisplayDate>
243 <div class="card-search__date">${displayDate}</div>
244 </#if>
245 </div>
246 <a href="${link}" title="${title}" class="card-search__title">${title}</a>
247 <div class="d-flex align-items-center mt-3">
248 <#if areeCategories?size gt 0>
249 <#list areeCategories as area>
250 <div class="card-search__category">${area.getTitle(locale)}</div>
251 </#list>
252 </#if>
253 <#if materieCategories?size gt 0>
254 <div class="card-search__materia">
255 <span>${(materieCategories?size == 1)?then(languageUtil.get(locale, "confindustria.materia"), languageUtil.get(locale, "confindustria.materie"))}:</span>
256 <#list materieCategories as mat>
257 ${mat.getTitle(locale)}
258 </#list>
259 </div>
260 </#if>
261 </div>
262 <#break>
263 <#case DDMSTRUCTUREKEY_PUBBLICAZIONE>
264 <div class="d-flex justify-content-between">
265 <div class="card-search__contenttype"><@liferay.language key="confindustria.publication.label" /></div>
266 <#if displayDate?? && displayDate != "" && !hideDisplayDate>
267 <div class="card-search__date">${displayDate}</div>
268 </#if>
269 </div>
270 <a href="${link}" title="${title}" class="card-search__title">${title}</a>
271 <div class="d-flex align-items-center mt-3">
272 <#if areeCategories?size gt 0>
273 <#list areeCategories as area>
274 <div class="card-search__category">${area.getTitle(locale)}</div>
275 </#list>
276 </#if>
277 <#if materieCategories?size gt 0>
278 <div class="card-search__materia">
279 <span>${(materieCategories?size == 1)?then(languageUtil.get(locale, "confindustria.materia"), languageUtil.get(locale, "confindustria.materie"))}:</span>
280 <#list materieCategories as mat>
281 ${mat.getTitle(locale)}
282 </#list>
283 </div>
284 </#if>
285 </div>
286 <#break>
287 <#case DDMSTRUCTUREKEY_COMMISSIONI>
288 <#assign name = d.get(FIELD_PREFIX + classTypeId + FIELD_NAME_EN + languageId)/>
289 <div class="d-flex justify-content-between">
290 <div class="card-search__contenttype"><@liferay.language key="confindustria.commissione.label" /></div>
291 </div>
292 <a href="${link}" title="${title}" class="card-search__title">${name}</a>
293 <div class="d-flex align-items-center mt-3">
294 <#if areeCategories?size gt 0>
295 <#list areeCategories as area>
296 <div class="card-search__category">${area.getTitle(locale)}</div>
297 </#list>
298 </#if>
299 <#if materieCategories?size gt 0>
300 <div class="card-search__materia">
301 <span>${(materieCategories?size == 1)?then(languageUtil.get(locale, "confindustria.materia"), languageUtil.get(locale, "confindustria.materie"))}:</span>
302 <#list materieCategories as mat>
303 ${mat.getTitle(locale)}
304 </#list>
305 </div>
306 </#if>
307 </div>
308 <#break>
309 <#default>
310 <div class="card-circolare d-flex flex-column">
311 <#assign titleGlobalArticle = d.get("title_" + languageId)/>
312 <a href="#" class="card-circolare__title">${titleGlobalArticle}</a>
313 </div>
314 </#switch>
315 </div>
316 </div>
317 </#list>
318 </#if>
319 </div>
320 </div>
321</section>