An error occurred while processing the template.
Java method "jdk.proxy67.$Proxy628.getArticleContent(long, String, String, com.liferay.portal.kernel.portlet.PortletRequestModel, com.liferay.portal.kernel.theme.ThemeDisplay)" threw an exception when invoked on jdk.proxy67.$Proxy628 object "com.liferay.journal.service.impl.JournalArticleServiceImpl@12473c12"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: bannerConsultorContent = journalArtic...  [in template "176139#176179#1006595" at line 221, column 5]
----
1<#assign  
2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleService") 
3    assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryService") 
4    categories = assetCategoryService.getCategories("com.liferay.journal.model.JournalArticle", .vars['reserved-article-id'].data?number) 
5    categoriesString = "" 
6/> 
7 
8<#list categories as category> 
9    <#assign categoriesString += category.getTitle(locale)> 
10        <#if !category?is_last> 
11            <#assign categoriesString += " · "> 
12        </#if> 
13</#list> 
14 
15<section id="cabecera" class="cabecera_5"> 
16    <#if (imageFirstNew.getData())?? && imageFirstNew.getData() != ""> 
17        <img class="background_image" alt="${imageFirstNew.getAttribute("alt")}" data-fileentryid="${imageFirstNew.getAttribute("fileEntryId")}" src="${imageFirstNew.getData()}" /> 
18    </#if> 
19    <div class="background_degra"></div> 
20    <div class="content_head"> 
21        <div class="titular"> 
22            <#if (titleAgenda.getData())?? && titleAgenda.getData() != ""> 
23                <h1 class="medium_title">${titleAgenda.getData()}</h1> 
24            </#if> 
25            <#if (subtitleAgenda.getData())?? && subtitleAgenda.getData() != ""> 
26                <p class="date">${subtitleAgenda.getData()}</p> 
27            </#if> 
28            <div class="add_info"> 
29                <#assign dateInitial_Data = getterUtil.getString(dateInitial.getData())> 
30                <#assign dateFin_Data = getterUtil.getString(dateFin.getData())> 
31                <#if validator.isNotNull(dateInitial_Data) && validator.isNotNull(dateFin_Data)> 
32                    <#assign dateInitial_DateObj = dateUtil.parseDate("yyyy-MM-dd", dateInitial_Data, locale)> 
33                    <#assign dateFin_DateObj = dateUtil.parseDate("yyyy-MM-dd", dateFin_Data, locale)> 
34                    <p class="category">${dateUtil.getDate(dateInitial_DateObj, "dd MMM yyyy", locale)} - ${dateUtil.getDate(dateFin_DateObj, "dd MMM yyyy", locale)}</p> 
35                </#if> 
36                <div class="languages"> 
37                    <p>Add to your calendar  
38                    <a id="outlook" role="button">Outlook</a> /  
39                    <a id="google" role="button">Google</a> /  
40                    <a id="apple" role="button">Apple</a></p> 
41                </div> 
42                <#if traslatedUrl?? && traslatedUrl.getData() != "" && traslatedUrl.getSiblings()?has_content> 
43                   <div class="languages"> 
44                        <img src="/documents/176177/179195/idioma.png/f401554d-c635-40ae-c73a-c6cbb47d8d89?t=1737644561098" alt=""> 
45                        <p>Content available in:  
46                        <#assign isFirstLanguage = true> 
47                        <#list traslatedUrl.getSiblings() as cur_traslatedUrl> 
48                    		<#if (cur_traslatedUrl.getData())??> 
49                                <#if !isFirstLanguage> / </#if> 
50                                <a href="${cur_traslatedUrl.getData()}">${cur_traslatedUrl.traslatedLanguage.getData()}</a> 
51                                <#assign isFirstLanguage = false> 
52                            </#if> 
53                        </#list> 
54                    </div> 
55                </#if> 
56            </div> 
57        </div> 
58        <#if (summaryAgenda.getData())?? && summaryAgenda.getData() != ""> 
59            <div class="summary"> 
60                ${summaryAgenda.getData()} 
61            </div> 
62        </#if> 
63        <#if (textLinkAgenda.urlLinkAgenda.getData())?? && textLinkAgenda.urlLinkAgenda.getData() != "" && (textLinkAgenda.getData())?? && textLinkAgenda.getData() != ""> 
64            <a href="${textLinkAgenda.urlLinkAgenda.getData()}" class="btn_red" <#if !textLinkAgenda.urlLinkAgenda.getData()?contains('catalonia.com')> target="_blank" title="Open new window"</#if> >${textLinkAgenda.getData()}</a> 
65        </#if> 
66        <div class="separator"></div> 
67    </div> 
68</section> 
69 
70<#if (contentAgenda.getData())?? && contentAgenda.getData() != ""> 
71    <section class="content_new container"> 
72        <div class="content_text"> 
73            ${contentAgenda.getData()} 
74        </div> 
75    </section> 
76</#if> 
77    
78<#if titleSectionCards?exists> 
79    <#if (titleSectionCards.titleSliderCard.getData())?? && titleSectionCards.titleSliderCard.getData() != ""> 
80        <section class="type_card_21 container-fluid plans-container--slider"> 
81            <!-- Titular sección --> 
82            <div class="content_type_4"> 
83                <div class="line_red"></div> 
84                <#if (titleSectionCards.getData())?? && titleSectionCards.getData() != ""> 
85                    <div class="titular"> 
86                        <h2 class="big_title">${titleSectionCards.getData()}</h2> 
87                    </div> 
88                </#if> 
89            </div> 
90 
91            <!--Carousel--> 
92            <div class="carrusel_card_big"> 
93                <#if (titleSectionCards.titleSliderCard.getSiblings()?size > 1)> 
94                    <button type="button" class="left-arrow"> 
95                        <span class="fas fa-arrow-circle-left" aria-hidden="true"></span> 
96                        <span class="sr-only">Previous</span> 
97                    </button> 
98                    <button type="button" class="right-arrow"> 
99                        <span class="fas fa-arrow-circle-right" aria-hidden="true"></span> 
100                        <span class="sr-only">Next</span> 
101                    </button> 
102                </#if> 
103 
104                <#if titleSectionCards.titleSliderCard.getSiblings()?has_content> 
105                    <ul class="list_cards"> 
106                        <#list titleSectionCards.titleSliderCard.getSiblings() as cur_titleSectionCards_titleSliderCard> 
107                            <li class="item"> 
108                                <div class="content_card"> 
109                                    <#if (cur_titleSectionCards_titleSliderCard.getChild('imageSliderCard').getData())?? && cur_titleSectionCards_titleSliderCard.getChild('imageSliderCard').getData() != ""> 
110                                        <div class="image"> 
111                                            <img alt="${cur_titleSectionCards_titleSliderCard.getChild('imageSliderCard').getAttribute("alt")}" src="${cur_titleSectionCards_titleSliderCard.getChild('imageSliderCard').getData()}" data-fileentryid="${cur_titleSectionCards_titleSliderCard.getChild('imageSliderCard').getAttribute("fileEntryId")}" /> 
112                                        </div> 
113                                    </#if> 
114 
115                                    <div class="content"> 
116                                        <#if (cur_titleSectionCards_titleSliderCard.getData())?? && cur_titleSectionCards_titleSliderCard.getData() != ""> 
117                                            <h3 class="title">${cur_titleSectionCards_titleSliderCard.getData()}</h3>  
118                                        </#if> 
119                                        <#if (cur_titleSectionCards_titleSliderCard.getChild('contentSliderCard').getData())?? && cur_titleSectionCards_titleSliderCard.getChild('contentSliderCard').getData() != ""> 
120                                             <div class="content_text"> 
121                                                ${cur_titleSectionCards_titleSliderCard.getChild('contentSliderCard').getData()}  
122                                            </div> 
123                                        </#if> 
124                                        <#if (cur_titleSectionCards_titleSliderCard.getChild('urlLinkSliderCard').getData())?? && cur_titleSectionCards_titleSliderCard.getChild('urlLinkSliderCard').getData() != "" && (cur_titleSectionCards_titleSliderCard.getChild('textLinkSliderCard').getData())?? && cur_titleSectionCards_titleSliderCard.getChild('textLinkSliderCard').getData() != ""> 
125                                            <a href="${cur_titleSectionCards_titleSliderCard.getChild('urlLinkSliderCard').getData()}" class="btn_all_blue" <#if !cur_titleSectionCards_titleSliderCard.getChild('urlLinkSliderCard').getData()?contains('catalonia.com')> target="_blank" title="Open new window"</#if> >${cur_titleSectionCards_titleSliderCard.getChild('textLinkSliderCard').getData()}</a> 
126                                        </#if> 
127                                    </div> 
128                                </div> 
129                            </li> 
130                        </#list> 
131                    </ul> 
132                </#if> 
133            </div> 
134        </section> 
135    </#if> 
136</#if> 
137 
138<#if (titleMoreInfo.getData())?? && titleMoreInfo.getData() != "" && (titleMoreInfo.descriptionMoreInfo.getData())?? && titleMoreInfo.descriptionMoreInfo.getData() != ""> 
139    <section class="second_menu_2 container-fluid"> 
140        <div class="bloque"> 
141            <div class="image"> 
142                <img src="/documents/176177/179195/more-info.png" alt=""> 
143            </div> 
144            <div class="text"> 
145                <#if (titleMoreInfo.getData())??> 
146                    <h2 class="title">${titleMoreInfo.getData()}</h2> 
147                </#if> 
148                <#if (titleMoreInfo.descriptionMoreInfo.getData())??> 
149                    <div class="content_text"> 
150                        ${titleMoreInfo.descriptionMoreInfo.getData()} 
151                    </div> 
152                </#if> 
153            </div> 
154        </div> 
155    </section> 
156</#if> 
157 
158<#if (titlePeople.namePeople.getData())?? && titlePeople.namePeople.getData() != ""> 
159    <#if titlePeople.namePeople.getSiblings()?has_content> 
160    <section class="type_card_9 gray"> 
161        <div class="content_type_4"> 
162            <div class="line_red"></div> 
163            <#if (titlePeople.getData())??> 
164                <div class="titular"> 
165                    <h2 class="big_title">${titlePeople.getData()}</h2> 
166                </div> 
167            </#if> 
168            <#if (titlePeople.descriptionPeople.getData())??> 
169                <div class="content_text"> 
170                    ${titlePeople.descriptionPeople.getData()} 
171                </div> 
172            </#if> 
173        </div> 
174        <div class="container"> 
175            <ul class="list_item row"> 
176                <#list titlePeople.namePeople.getSiblings() as cur_titlePeople_namePeople> 
177                    <li class="item col-12 col-md-4"> 
178                        <div class="bloque"> 
179                            <div class="titular"> 
180                                <#if (cur_titlePeople_namePeople.getData())??> 
181                                    <h3 class="title">${cur_titlePeople_namePeople.getData()}</h3> 
182                                </#if> 
183                                <#if (cur_titlePeople_namePeople.getChild('logoPeople').getData())?? && cur_titlePeople_namePeople.getChild('logoPeople').getData() != ""> 
184                                    <img class="logo" alt="${cur_titlePeople_namePeople.getChild('logoPeople').getAttribute("alt")}" src="${cur_titlePeople_namePeople.getChild('logoPeople').getData()}" data-fileentryid="${cur_titlePeople_namePeople.getChild('logoPeople').getAttribute("fileEntryId")}" /> 
185                                </#if> 
186 
187                                <#--<ul class="share_rrss"> 
188                                    <li> 
189                                        <a href="#"><i class="fas fa-envelope"></i><span class="sr-only">Compartir en Twitter</span></a> 
190                                    </li> 
191                                    <li> 
192                                        <a href="#"><i class="fab fa-twitter"></i><span class="sr-only">Compartir en Twitter</span></a> 
193                                    </li> 
194                                    <li> 
195                                        <a href="#"><i class="fab fa-linkedin"></i><span class="sr-only">Compartir en Twitter</span></a> 
196                                    </li> 
197                                </ul>--> 
198 
199                            </div> 
200                            <#if (cur_titlePeople_namePeople.getChild('subdescriptionPeople').getData())??> 
201                                <div class="content_text"> 
202                                    ${cur_titlePeople_namePeople.getChild('subdescriptionPeople').getData()} 
203                                </div> 
204                            </#if> 
205                            <#if (cur_titlePeople_namePeople.getChild('urlPeople').getData())?? && cur_titlePeople_namePeople.getChild('urlPeople').getData() != "" && (cur_titlePeople_namePeople.getChild('linkPeople').getData())?? && cur_titlePeople_namePeople.getChild('linkPeople').getData() != ""> 
206                                <a href="${cur_titlePeople_namePeople.getChild('urlPeople').getData()}" class="btn_all_blue" <#if !cur_titlePeople_namePeople.getChild('urlPeople').getData()?contains('catalonia.com')> target="_blank" title="Open new window"</#if> >${cur_titlePeople_namePeople.getChild('linkPeople').getData()}<i class="fas fa-arrow-right" aria-hidden="true"></i></a> 
207                            </#if> 
208                        </div> 
209                    </li>                    
210                </#list> 
211            </ul> 
212        </div> 
213    </section> 
214    </#if> 
215</#if> 
216 
217 
218<#if (bannerConsultor.getData())?? && bannerConsultor.getData() != ""> 
219    <#assign bannerConsultorJSON = jsonFactoryUtil.createJSONObject(bannerConsultor.getData()) 
220     
221    bannerConsultorContent = journalArticleService.getArticleContent(groupId, (bannerConsultorJSON.classPK?number - 2)?c, themeDisplay.getLanguageId(), null, themeDisplay) 
222     
223    /> 
224     
225    ${bannerConsultorContent} 
226</#if> 
227 
228<#if (titleMoreEvento.imageMoreEvento.getData())?? && titleMoreEvento.imageMoreEvento.getData() != "" && (titleMoreEvento.getData())?? && titleMoreEvento.getData() != "" || (titleMoreEvento.imageMoreEvento.getData())?? && titleMoreEvento.imageMoreEvento.getData() != "" && (titleMoreEvento.descriptionMoreEvento.getData())?? && titleMoreEvento.descriptionMoreEvento.getData() != ""> 
229    <section class="content_type_7 space container-fluid"> 
230        <#if (titleMoreEvento.imageMoreEvento.getData())?? && titleMoreEvento.imageMoreEvento.getData() != ""> 
231            <img class="background_image" alt="${titleMoreEvento.imageMoreEvento.getAttribute("alt")}" data-fileentryid="${titleMoreEvento.imageMoreEvento.getAttribute("fileEntryId")}" src="${titleMoreEvento.imageMoreEvento.getData()}" /> 
232        </#if> 
233        <div class="bloque"> 
234            <#if (titleMoreEvento.getData())??> 
235                <h2 class="big_title">${htmlUtil.unescape(titleMoreEvento.getData())}<span class="dest_blue">.</span></h2> 
236            </#if> 
237            <#if (titleMoreEvento.logoMoreEvento.getData())?? && titleMoreEvento.logoMoreEvento.getData() != ""> 
238                <div class="logo"> 
239                    <img alt="${titleMoreEvento.logoMoreEvento.getAttribute("alt")}" src="${titleMoreEvento.logoMoreEvento.getData()}" data-fileentryid="${titleMoreEvento.logoMoreEvento.getAttribute("fileEntryId")}" /> 
240                </div> 
241            </#if> 
242            <#if (titleMoreEvento.nameMoreEvento.getData())??> 
243                <p class="subtitle">${titleMoreEvento.nameMoreEvento.getData()}</p> 
244            </#if> 
245            <#if (titleMoreEvento.descriptionMoreEvento.getData())??> 
246                <div class="content_text"> 
247                    ${titleMoreEvento.descriptionMoreEvento.getData()} 
248                </div>   
249            </#if> 
250            <#if (titleMoreEvento.locationMoreEvento.getData())??> 
251                <p class="text_dest"><i class="fas fa-map-marker-alt" aria-hidden="true"></i> ${titleMoreEvento.locationMoreEvento.getData()}</p> 
252            </#if> 
253            <#if (titleMoreEvento.urlMoreEvento.getData())?? && titleMoreEvento.urlMoreEvento.getData() != "" && (titleMoreEvento.linkMoreEvento.getData())?? && titleMoreEvento.linkMoreEvento.getData() != ""> 
254                <a href="${titleMoreEvento.urlMoreEvento.getData()}" class="btn_blue" <#if !titleMoreEvento.urlMoreEvento.getData()?contains('catalonia.com')> target="_blank" title="Open new window"</#if> >${titleMoreEvento.linkMoreEvento.getData()}</a> 
255            </#if> 
256        </div> 
257    </section> 
258</#if> 
259 
260<#if (infoRelated.subtitleRelated.getData())?? && infoRelated.subtitleRelated.getData() != ""> 
261    <#if infoRelated.subtitleRelated.getSiblings()?has_content> 
262        <section class="type_card_5 <#if infoRelated.subtitleRelated.getSiblings()?size == 1>one</#if> container"> 
263            <div class="content_type_4"> 
264                <div class="line_red"></div> 
265                    <div class="titular"> 
266                        <h2 class="big_title"><span class="hand">Discover</span> our <span class="dest_blue">services.</span></h2> 
267                    </div> 
268                <#if (infoRelated.descriptionRelated.getData())?? && infoRelated.descriptionRelated.getData() != ""> 
269                    <div class="content_text"> 
270                        ${infoRelated.descriptionRelated.getData()} 
271                    </div> 
272                </#if> 
273            </div> 
274            <#if infoRelated.subtitleRelated.getSiblings()?has_content> 
275 
276                <#if infoRelated.subtitleRelated.getSiblings()?size == 1> 
277                    <div class="list_item row"> 
278                        <div class="item col-12 col-md-4"> 
279                            <div class="bloque"> 
280                                <#if (infoRelated.subtitleRelated.iconRelated.getData())?? && infoRelated.subtitleRelated.iconRelated.getData() != ""> 
281                                    <img class="icon" alt="${infoRelated.subtitleRelated.iconRelated.getAttribute("alt")}" src="${infoRelated.subtitleRelated.iconRelated.getData()}" data-fileentryid="${infoRelated.subtitleRelated.iconRelated.getAttribute("fileEntryId")}" /> 
282                                </#if> 
283                                <div> 
284                                    <#if (infoRelated.subtitleRelated.getData())?? && infoRelated.subtitleRelated.getData() != ""> 
285                                        <#if (infoRelated.getData())?? && infoRelated.getData() != ""> 
286                                            <h3 class="small_title">${infoRelated.subtitleRelated.getData()}</h3> 
287                                        <#else> 
288                                            <h2 class="small_title">${infoRelated.subtitleRelated.getData()}</h2> 
289                                        </#if> 
290                                    </#if> 
291                                    <#if (infoRelated.subtitleRelated.subdescriptionRelated.getData())?? && infoRelated.subtitleRelated.subdescriptionRelated.getData() != ""> 
292                                        <div class="content_text"> 
293                                            ${infoRelated.subtitleRelated.subdescriptionRelated.getData()} 
294                                        </div> 
295                                    </#if> 
296                                    <#if (infoRelated.subtitleRelated.textLinkRelated.getData())?? && infoRelated.subtitleRelated.textLinkRelated.getData() != "" && (infoRelated.subtitleRelated.urlLinkRelated.getData())?? && infoRelated.subtitleRelated.urlLinkRelated.getData() != ""> 
297                                        <a href="${infoRelated.subtitleRelated.urlLinkRelated.getData()}" class="btn_blue" <#if !infoRelated.subtitleRelated.urlLinkRelated.getData()?contains('catalonia.com')> target="_blank" title="Open new window"</#if> >${infoRelated.subtitleRelated.textLinkRelated.getData()}</a> 
298                                    </#if> 
299                                </div> 
300                            </div> 
301                        </div> 
302                    </div> 
303 
304                <#elseif infoRelated.subtitleRelated.getSiblings()?size gte 6> 
305                    <ul class="list_item row"> 
306                        <#list infoRelated.subtitleRelated.getSiblings() as cur_infoRelated_subtitleRelated> 
307                            <li class="item col-12 col-md-6 col-lg-3"> 
308                                <div class="bloque"> 
309                                    <#if (cur_infoRelated_subtitleRelated.getChild('iconRelated').getData())?? && cur_infoRelated_subtitleRelated.getChild('iconRelated').getData() != ""> 
310                                        <img class="icon" alt="${cur_infoRelated_subtitleRelated.getChild('iconRelated').getAttribute("alt")}" src="${cur_infoRelated_subtitleRelated.getChild('iconRelated').getData()}" data-fileentryid="${cur_infoRelated_subtitleRelated.getChild('iconRelated').getAttribute("fileEntryId")}" /> 
311                                    </#if> 
312                                    <div> 
313                                        <#if (cur_infoRelated_subtitleRelated.getData())?? && cur_infoRelated_subtitleRelated.getData() != ""> 
314                                            <#if (infoRelated.getData())?? && infoRelated.getData() != ""> 
315                                                <h3 class="small_title">${cur_infoRelated_subtitleRelated.getData()}</h3> 
316                                            <#else> 
317                                                <h2 class="small_title">${cur_infoRelated_subtitleRelated.getData()}</h2> 
318                                            </#if> 
319                                        </#if> 
320                                        <#if (cur_infoRelated_subtitleRelated.subdescriptionRelated.getData())?? && cur_infoRelated_subtitleRelated.subdescriptionRelated.getData() != ""> 
321                                            <div class="content_text"> 
322                                                ${cur_infoRelated_subtitleRelated.subdescriptionRelated.getData()} 
323                                            </div> 
324                                        </#if> 
325                                        <#if (cur_infoRelated_subtitleRelated.textLinkRelated.getData())?? && cur_infoRelated_subtitleRelated.textLinkRelated.getData() != "" && (cur_infoRelated_subtitleRelated.urlLinkRelated.getData())?? && cur_infoRelated_subtitleRelated.urlLinkRelated.getData() != ""> 
326                                            <a href="${cur_infoRelated_subtitleRelated.urlLinkRelated.getData()}" class="btn_blue" <#if !cur_infoRelated_subtitleRelated.urlLinkRelated.getData()?contains('catalonia.com')> target="_blank" title="Open new window"</#if> >${cur_infoRelated_subtitleRelated.textLinkRelated.getData()}</a> 
327                                        </#if> 
328                                    </div> 
329                                </div> 
330                            </li> 
331                        </#list> 
332                    </ul> 
333 
334                <#else> 
335                    <ul class="list_item row"> 
336                        <#list infoRelated.subtitleRelated.getSiblings() as cur_infoRelated_subtitleRelated> 
337                            <li class="item col-12 col-md-4"> 
338                                <div class="bloque"> 
339                                    <#if (cur_infoRelated_subtitleRelated.getChild('iconRelated').getData())?? && cur_infoRelated_subtitleRelated.getChild('iconRelated').getData() != ""> 
340                                        <img class="icon" alt="${cur_infoRelated_subtitleRelated.getChild('iconRelated').getAttribute("alt")}" src="${cur_infoRelated_subtitleRelated.getChild('iconRelated').getData()}" data-fileentryid="${cur_infoRelated_subtitleRelated.getChild('iconRelated').getAttribute("fileEntryId")}" /> 
341                                    </#if> 
342                                    <div> 
343                                        <#if (cur_infoRelated_subtitleRelated.getData())?? && cur_infoRelated_subtitleRelated.getData() != ""> 
344                                            <#if (infoRelated.getData())?? && infoRelated.getData() != ""> 
345                                                <h3 class="small_title">${cur_infoRelated_subtitleRelated.getData()}</h3> 
346                                            <#else> 
347                                                <h2 class="small_title">${cur_infoRelated_subtitleRelated.getData()}</h2> 
348                                            </#if> 
349                                        </#if> 
350                                        <#if (cur_infoRelated_subtitleRelated.subdescriptionRelated.getData())?? && cur_infoRelated_subtitleRelated.subdescriptionRelated.getData() != ""> 
351                                            <div class="content_text"> 
352                                                ${cur_infoRelated_subtitleRelated.subdescriptionRelated.getData()} 
353                                            </div> 
354                                        </#if> 
355                                        <#if (cur_infoRelated_subtitleRelated.textLinkRelated.getData())?? && cur_infoRelated_subtitleRelated.textLinkRelated.getData() != "" && (cur_infoRelated_subtitleRelated.urlLinkRelated.getData())?? && cur_infoRelated_subtitleRelated.urlLinkRelated.getData() != ""> 
356                                            <a href="${cur_infoRelated_subtitleRelated.urlLinkRelated.getData()}" class="btn_blue" <#if !cur_infoRelated_subtitleRelated.urlLinkRelated.getData()?contains('catalonia.com')> target="_blank" title="Open new window"</#if> >${cur_infoRelated_subtitleRelated.textLinkRelated.getData()}</a> 
357                                        </#if> 
358                                    </div> 
359                                </div> 
360                            </li> 
361                        </#list> 
362                    </ul> 
363                </#if> 
364            </#if> 
365        </section> 
366    </#if> 
367</#if> 
368 
369<#if (bannerSector.getData())?? && bannerSector.getData() != "">                                
370    <#assign bannerSectorJSON = jsonFactoryUtil.createJSONObject(bannerSector.getData()) 
371     
372    bannerSectorContent = journalArticleService.getArticleContent(groupId, (bannerSectorJSON.classPK?number - 2)?c, themeDisplay.getLanguageId(), null, themeDisplay) 
373     
374    /> 
375    ${bannerSectorContent} 
376</#if> 
377 
378<script> 
379    function isBrowser() { 
380        try {return this === window;} catch(e) {return false;} 
381
382 
383    function checkIfiOS() { 
384        if (isBrowser()) 
385            if ((/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) 
386                return true; 
387            else  
388                return false; 
389        else  
390            return false; 
391
392 
393    var data = { "name": "${titleAgenda.getData()}", "description": "${summaryAgenda.getData()}", "startDate": "${dateUtil.getDate(dateInitial_DateObj, "yyyy-MM-dd", locale)}", "endDate": "${dateUtil.getDate(dateFin_DateObj, "yyyy-MM-dd", locale)}", "location": "${titleMoreInfo.descriptionMoreInfo.getData()}" }; 
394 
395    jQuery("#outlook").click(function() { 
396        let url = 'https://outlook.live.com/calendar/0/deeplink/compose?path=%2Fcalendar%2Faction%2Fcompose&rru=addevent'; 
397     
398        let formattedDate = generateTime(data, 'delimiters', 'microsoft'); 
399        url += '&startdt=' + formattedDate['start'] + '&enddt=' + formattedDate['end']; 
400     
401        if (formattedDate['allday']) 
402            url += '&allday=true'; 
403     
404        if (data['name'] != null && data['name'] != '') 
405            url += '&subject=' + encodeURIComponent(data['name']); 
406     
407        if (data['location'] != null && data['location'] != '') 
408            url += '&location=' + encodeURIComponent(data['location']); 
409     
410        if (data['description'] != null && data['description'] != '') 
411            url += '&body=' + encodeURIComponent(data['description'].replace(/\n/g, '<br>')); 
412     
413        window.open(url, '_blank').focus(); 
414    }); 
415 
416    jQuery("#google").click(function() { 
417        let url = 'https://calendar.google.com/calendar/render?action=TEMPLATE'; 
418        let formattedDate = generateTime('clean', 'google'); 
419        url += '&dates=' + formattedDate['start'] + '%2F' + formattedDate['end']; 
420 
421        if (data['name'] != null && data['name'] != '') 
422            url += '&text=' + encodeURIComponent(data['name']); 
423 
424        if (data['location'] != null && data['location'] != '') { 
425            url += '&location=' + encodeURIComponent(data['location']); 
426            if (checkIfiOS()) { // Workaround for location bug in iOS for google calendar 
427                if (data['description'] == null || data['description'] == '') { 
428                    data['description'] = ''; 
429                } else { 
430                    data['description'] += '<br><br>'; 
431
432 
433                data['description'] += '&#128205;: ' + data['location']; 
434
435
436 
437        if (data['description'] != null && data['description'] != '') 
438            url += '&details=' + encodeURIComponent(data['description']); 
439 
440        window.open(url, '_blank').focus(); 
441    }); 
442 
443    jQuery("#apple").click(function() { 
444        let now = new Date(); 
445        now = now.toISOString().replace(/\..../g, '').replace(/[^a-z0-9]/gi, ''); 
446        let formattedDate = generateTime('clean', 'ical'); 
447        let timeslot = ''; 
448 
449        if (formattedDate['allday'])  
450            timeslot = ';VALUE=DATE'; 
451 
452        let ics_lines = ["BEGIN:VCALENDAR", "VERSION:2.0", "CALSCALE:GREGORIAN", "BEGIN:VEVENT", "DTSTAMP:" + formattedDate['start'], "DTSTART" + timeslot + ":" + formattedDate['start'], "DTEND" + timeslot + ":" + formattedDate['end'], "SUMMARY:" + data['name']]; 
453         
454        if (data['description'] != null && data['description'] != '') 
455            ics_lines.push("DESCRIPTION:" + data['description'].replace(/\n/g, '\\n')); 
456 
457        if (data['location'] != null && data['location'] != '') 
458            ics_lines.push("LOCATION:" + data['location']); 
459 
460        ics_lines.push("STATUS:CONFIRMED", "LAST-MODIFIED:" + now, "SEQUENCE:0", "END:VEVENT","END:VCALENDAR"); 
461        let dlurl = 'data:text/calendar;charset=utf-8,' + encodeURIComponent(ics_lines.join('\r\n')); 
462         
463        try { 
464            if (!window.ActiveXObject) { 
465                let save = document.createElement('a'); 
466                save.href = dlurl; 
467                save.target = '_blank'; 
468                save.download = data['iCalFileName'] || 'event-to-save-in-my-calendar'; 
469                let evt = new MouseEvent('click', { 
470                    'view': window, 
471                    'bubbles': true, 
472                    'cancelable': false 
473                }); 
474                save.dispatchEvent(evt); 
475                (window.URL || window.webkitURL).revokeObjectURL(save.href); 
476
477        } catch (e) { 
478            console.error(e); 
479
480    }); 
481 
482    function generateTime(style = 'delimiters', targetCal = 'general') { 
483        let startDate = data['startDate'].split('-'); 
484        let endDate = data['endDate'].split('-'); 
485        let start = ''; 
486        let end = ''; 
487 
488        allday = true; 
489        start = new Date(Date.UTC(startDate[0], startDate[1] - 1, startDate[2])); 
490        let breakStart = start.toISOString().replace(/T(.+)Z/g, ''); 
491        end = new Date(Date.UTC(endDate[0], endDate[1] - 1, endDate[2])); 
492 
493        if (targetCal == 'google' || targetCal == 'microsoft' || targetCal == 'ical') 
494            end.setDate(end.getDate() + 1); 
495 
496        let breakEnd = end.toISOString().replace(/T(.+)Z/g, ''); 
497 
498        if (style == 'clean') { 
499            breakStart = breakStart.replace(/\-/g, ''); 
500            breakEnd = breakEnd.replace(/\-/g, ''); 
501
502 
503        start = breakStart; 
504        end = breakEnd; 
505 
506        let returnObject = { 'start': start, 'end': end, 'allday': true }; 
507        return returnObject; 
508
509     
510    document.addEventListener('DOMContentLoaded', function () { 
511        const listCards = document.querySelector('.type_card_21 .list_cards'); 
512        const items = document.querySelectorAll('.type_card_21 .list_cards .item'); 
513        const leftArrow = document.querySelector('.left-arrow'); 
514        const rightArrow = document.querySelector('.right-arrow'); 
515 
516        let currentIndex = 0; // Índice del elemento activo 
517 
518        function updateCarousel() { 
519            // Resetear todas las tarjetas 
520            items.forEach((item, index) => { 
521                item.classList.remove('active', 'side'); 
522                item.style.transform = ''; // Reiniciar la transformación 
523            }); 
524 
525            // Asignar clase 'active' al elemento central 
526            const currentItem = items[currentIndex]; 
527            currentItem.classList.add('active'); 
528 
529            // Asignar clase 'side' al elemento anterior (si existe) 
530            if (currentIndex > 0) { 
531                const prevItem = items[currentIndex - 1]; 
532                prevItem.classList.add('side'); 
533
534 
535            // Asignar clase 'side' al siguiente elemento (si existe) 
536            if (currentIndex < items.length - 1) { 
537                const nextItem = items[currentIndex + 1]; 
538                nextItem.classList.add('side'); 
539
540 
541            // Usar requestAnimationFrame para asegurar que los elementos están disponibles y visibles 
542            requestAnimationFrame(() => { 
543                const offset = -currentItem.offsetLeft + (listCards.clientWidth - currentItem.clientWidth) / 2; 
544                listCards.style.transform = 'translateX(' + offset + 'px)'; 
545            }); 
546
547 
548        // Evento para el botón izquierdo 
549        leftArrow.addEventListener('click', function () { 
550            if (currentIndex > 0) { 
551                currentIndex--; 
552                updateCarousel(); 
553
554        }); 
555 
556        // Evento para el botón derecho 
557        rightArrow.addEventListener('click', function () { 
558            if (currentIndex < items.length - 1) { 
559                currentIndex++; 
560                updateCarousel(); 
561
562        }); 
563 
564        // Configuración inicial 
565        updateCarousel(); 
566    }); 
567</script>