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