Agenda

Agenda

Agendaren deskribapena

Hemen aurkituko dituzu kategorien arabera programatuta dauden jarduerak. Eguna, ordua, lekua eta prezioa agertuko dira, besteak beste.

Kategoria nabigatzailea

Eduki publikatzailea

Errorea gertatu da txantiloia prozesatzerakoan.
?substring(...) argument #2 had invalid value: The index mustn't be greater than the length of the string, 250, but it was 3932.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign Descripcion = Descripcion?sub...  [in template "43206317808343#1799609#40170" at line 240, column 17]
----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
2<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
3<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
4 
5<#assign AssetEntryLocalServiceUtil = objectUtil("com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil") /> 
6<#assign AssetEntryQuery = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery") /> 
7 
8<#function formatHora horaStr> 
9    <#assign num = horaStr?replace(",", ".")?number> 
10    <#assign hour = num?int> 
11    <#assign minutes = ((num - hour) * 100)?int> 
12    <#return (hour?string("00") + ":" + minutes?string("00"))> 
13</#function> 
14 
15<#-- Base URL seguro --> 
16<#if themeDisplay??> 
17    <#assign baseURL = themeDisplay.getScopeGroup().getFriendlyURL()> 
18<#else> 
19    <#assign baseURL = entryURL!"/"> 
20</#if> 
21 
22<section class="cabecera_color"></section> 
23 
24<section class="breadcrumbs container"> 
25    <ul class="nav_breadcrumbs"> 
26        <li> 
27            <a href="${'/web' + baseURL}" class="link">${languageUtil.get(locale, "home")}</a> <span>&gt;</span> 
28        </li> 
29 
30        <#if themeDisplay??> 
31            <#list themeDisplay.getLayout().getAncestors()?reverse as AncestorLayout> 
32                <li> 
33                    <#if AncestorLayout.getType() == "portlet"> 
34                        <a href="${'/web' + baseURL + AncestorLayout.getFriendlyURL(locale)}" class="link">${AncestorLayout.getName(locale)}</a> <span>&gt;</span> 
35                    <#else> 
36                        ${AncestorLayout.getName(locale)} <span>&gt;</span> 
37                    </#if> 
38                </li> 
39            </#list> 
40        </#if> 
41 
42        <li> 
43            <p class="here">${.vars['reserved-article-title'].data}</p> 
44        </li> 
45    </ul> 
46</section> 
47 
48<section class="title_section container"> 
49    <h1 class="title_first">${.vars['reserved-article-title'].data}</h1> 
50    <div class="separator"></div> 
51</section> 
52 
53<section class="content_new container"> 
54 
55    <#-- Group ID seguro --> 
56    <#if themeDisplay??> 
57        <#assign groupId = themeDisplay.getScopeGroupId()> 
58    <#else> 
59        <#assign groupId = entryGroupId!0> 
60    </#if> 
61 
62    <#assign JournalArticle = JournalArticleLocalService.getLatestArticle(groupId, .vars['reserved-article-id'].data) /> 
63    <#assign Categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", JournalArticle.getResourcePrimKey()) /> 
64 
65    <div class="features_new"> 
66 
67        <#-- Fechas --> 
68        <#if Fechas?? && 
69            Fechas.FechaInicio?? && Fechas.FechaInicio.FechaDesde?? && Fechas.FechaInicio.FechaDesde.getData()?? && Fechas.FechaInicio.FechaDesde.getData()?has_content && 
70            Fechas.FechaFin?? && Fechas.FechaFin.FechaHasta?? && Fechas.FechaFin.FechaHasta.getData()?? && Fechas.FechaFin.FechaHasta.getData()?has_content> 
71             
72            <div class="item"> 
73                <i class="fas fa-calendar-alt"></i> 
74                <#if localeUtil.equals(localeUtil.getSiteDefault(), locale)> 
75                    <p>Del ${Fechas.FechaInicio.FechaDesde.getData()?trim?date("yyyy-MM-dd")?string("dd/MM/yyyy")} al ${Fechas.FechaFin.FechaHasta.getData()?trim?date("yyyy-MM-dd")?string("dd/MM/yyyy")}</p> 
76                <#else> 
77                    <p>${Fechas.FechaInicio.FechaDesde.getData()?trim?date("yyyy-MM-dd")?string("yyyy/MM/dd")}tik ${Fechas.FechaFin.FechaHasta.getData()?trim?date("yyyy-MM-dd")?string("yyyy/MM/dd")}ra</p> 
78                </#if> 
79            </div> 
80        </#if> 
81 
82        <#-- Horas --> 
83        <#if Fechas?? && 
84             Fechas.FechaInicio?? && Fechas.FechaInicio.HoraDesde?? && Fechas.FechaInicio.HoraDesde.getData()?? && Fechas.FechaInicio.HoraDesde.getData()?has_content && 
85             Fechas.FechaFin?? && Fechas.FechaFin.HoraHasta?? && Fechas.FechaFin.HoraHasta.getData()?? && Fechas.FechaFin.HoraHasta.getData()?has_content> 
86            <div class="item"> 
87                <i class="fas fa-history"></i> 
88                <p>${formatHora(Fechas.FechaInicio.HoraDesde.getData())} - ${formatHora(Fechas.FechaFin.HoraHasta.getData())}</p> 
89            </div> 
90        </#if> 
91 
92        <#-- Ubicación --> 
93        <#if Ubicacion?? && Ubicacion.getData()?? && Ubicacion.getData()?has_content> 
94            <div class="item"> 
95                <i class="fas fa-map-marker-alt"></i> 
96                <p>${Ubicacion.getData()}</p> 
97            </div> 
98        </#if> 
99 
100        <#-- Precio --> 
101        <#if Precio?? && Precio.getData()?? && Precio.getData()?has_content> 
102            <div class="item"> 
103                <i class="fas fa-euro-sign"></i> 
104                <#if Precio.getData()?number lte 0> 
105                    <#if localeUtil.equals(localeUtil.getSiteDefault(), locale)> 
106                        <p>Gratuito</p> 
107                    <#else> 
108                        <p>Doako</p> 
109                    </#if> 
110                <#else> 
111                    <p>${Precio.getData()}</p> 
112                </#if> 
113            </div> 
114        </#if> 
115 
116        <#-- URL actual seguro --> 
117        <#if themeDisplay??> 
118            <#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
119        <#else> 
120            <#assign currentUrl = entryURL!"/"> 
121        </#if> 
122 
123        <div class="item"> 
124            <i class="fas fa-share-alt"></i> 
125            <#if localeUtil.equals(localeUtil.getSiteDefault(), locale)> 
126                <button type="button" class="share" id="share-new">Compartir</button> 
127            <#else> 
128                <button type="button" class="share" id="share-new">Partekatu</button> 
129            </#if> 
130            <ul class="share_rrss hidden"> 
131                <li><a href="https://www.facebook.com/sharer/sharer.php?p[title]=${.vars['reserved-article-title'].data}&u=${currentUrl}" target="_blank" class="icon"><i class="fab fa-facebook" aria-hidden="true"></i><span class="sr-only">Facebook</span></a></li> 
132                <li><a href="http://twitter.com/share?text=${.vars['reserved-article-title'].data}&url=${currentUrl}" target="_blank" class="icon"><i class="fab fa-twitter" aria-hidden="true"></i><span class="sr-only">Twitter</span></a></li> 
133                <li><a href="mailto:?subject=${.vars['reserved-article-title'].data}&body=${currentUrl}" target="_blank" class="icon"><i class="fas fa-envelope" aria-hidden="true"></i><span class="sr-only">email</span></a></li> 
134                <li><a href="https://wa.me/?text=${currentUrl}" target="_blank" class="icon"><i class="fab fa-whatsapp" aria-hidden="true"></i><span class="sr-only">WhatsApp</span></a></li> 
135            </ul> 
136        </div> 
137    </div> 
138 
139    <#-- Imagen Principal --> 
140    <#if ImagenPrincipal?? && ImagenPrincipal.getData()?? && ImagenPrincipal.getData()?has_content> 
141        <div class="firts_image"> 
142            <img src="${ImagenPrincipal.getData()}" alt="${ImagenPrincipal.getAttribute("alt")}" /> 
143        </div> 
144    </#if> 
145 
146    <#-- Descripción --> 
147    <#if Descripcion?? && Descripcion.getData()?? && Descripcion.getData()?has_content> 
148        <div class="content_basic"> 
149            ${Descripcion.getData()} 
150        </div> 
151    </#if> 
152 
153    <#-- Enlace --> 
154    <#if Enlace?? && 
155         Enlace.TextoEnlace?? && Enlace.TextoEnlace.getData()?? && Enlace.TextoEnlace.getData()?has_content && 
156         Enlace.UrlEnlace?? && Enlace.UrlEnlace.getData()?? && Enlace.UrlEnlace.getData()?has_content> 
157        <a href="${Enlace.UrlEnlace.getData()}" class="link_default">${Enlace.TextoEnlace.getData()}</a> 
158    </#if> 
159</section> 
160 
161<#-- Eventos Similares --> 
162<#assign EventosSimilaresList = "" /> 
163<#assign CategoryIds = AssetCategoryLocalService.getCategoryIds("com.liferay.journal.model.JournalArticle", JournalArticle.getResourcePrimKey()) /> 
164 
165<#if CategoryIds?size gt 0> 
166    ${AssetEntryQuery.setAllCategoryIds(CategoryIds)} 
167    <#assign EventosSimilares = AssetEntryLocalServiceUtil.getEntries(AssetEntryQuery) /> 
168     
169    <#list EventosSimilares as EventoSimilar> 
170        <#assign assetRenderer = EventoSimilar.getAssetRenderer() /> 
171        <#assign journalArticle = assetRenderer.getArticle() /> 
172 
173        <#if .vars['reserved-article-url-title'].data != journalArticle.getUrlTitle()> 
174 
175            <#-- viewURL seguro --> 
176            <#if themeDisplay??> 
177                <#assign viewURL = themeDisplay.getURLCurrent()?replace(.vars['reserved-article-url-title'].data, journalArticle.getUrlTitle()) /> 
178            <#else> 
179                <#assign viewURL = entryURL!"/" + journalArticle.getUrlTitle() /> 
180            </#if> 
181 
182            <#-- Extraer contenido y fechas --> 
183            <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) /> 
184            <#assign rootElement = document.getRootElement() /> 
185            <#assign fechasFieldSetNode = saxReaderUtil.createXPath("dynamic-element[@name='FechasFieldSet']").selectSingleNode(rootElement) /> 
186            <#assign fechaDesde = "" /> 
187            <#assign fechaHasta = "" /> 
188            <#if fechasFieldSetNode??> 
189                <#assign fechasFieldSetFieldSetNode = saxReaderUtil.createXPath("dynamic-element[@name='FechasFieldSetFieldSet']").selectSingleNode(fechasFieldSetNode) /> 
190                <#if fechasFieldSetFieldSetNode??> 
191                    <#assign fechaInicioFieldSetNode = saxReaderUtil.createXPath("dynamic-element[@name='FechaInicioFieldSet']").selectSingleNode(fechasFieldSetFieldSetNode) /> 
192                    <#if fechaInicioFieldSetNode??> 
193                        <#assign fechaInicioFieldSetFieldSetNode = saxReaderUtil.createXPath("dynamic-element[@name='FechaInicioFieldSetFieldSet']").selectSingleNode(fechaInicioFieldSetNode) /> 
194                        <#if fechaInicioFieldSetFieldSetNode??> 
195                            <#assign fechaDesdeNode = saxReaderUtil.createXPath("dynamic-element[@name='FechaDesde']").selectSingleNode(fechaInicioFieldSetFieldSetNode) /> 
196                            <#if fechaDesdeNode??> 
197                                <#assign fechaDesde = fechaDesdeNode.getStringValue()?trim?date("yyyy-MM-dd") /> 
198                            </#if> 
199                        </#if> 
200                    </#if> 
201                    <#assign fechaFinFieldSetNode = saxReaderUtil.createXPath("dynamic-element[@name='FechaFinFieldSet']").selectSingleNode(fechasFieldSetFieldSetNode) /> 
202                    <#if fechaFinFieldSetNode??> 
203                        <#assign fechaFinFieldSetFieldSetNode = saxReaderUtil.createXPath("dynamic-element[@name='FechaFinFieldSetFieldSet']").selectSingleNode(fechaFinFieldSetNode) /> 
204                        <#if fechaFinFieldSetFieldSetNode??> 
205                            <#assign fechaHastaNode = saxReaderUtil.createXPath("dynamic-element[@name='FechaHasta']").selectSingleNode(fechaFinFieldSetFieldSetNode) /> 
206                            <#if fechaHastaNode??> 
207                                <#assign fechaHasta = fechaHastaNode.getStringValue()?trim?date("yyyy-MM-dd") /> 
208                            </#if> 
209                        </#if> 
210                    </#if> 
211                </#if> 
212            </#if> 
213 
214            <#-- Categorías --> 
215            <#assign Categories = "" /> 
216            <#list EventoSimilar.getCategories() as Category> 
217                <#assign Vocabulary = AssetVocabularyLocalService.getAssetVocabulary(Category.getVocabularyId()).getName()?trim /> 
218                <#if Vocabulary == "Tipo evento"> 
219                    <#if Categories?has_content> 
220                        <#assign Categories += ", " + Category.getTitle(locale) /> 
221                    <#else> 
222                        <#assign Categories = Category.getTitle(locale) /> 
223                    </#if> 
224                </#if> 
225            </#list> 
226 
227            <#-- Ubicación y Descripción --> 
228            <#assign UbicacionNode = saxReaderUtil.createXPath("dynamic-element[@name='Ubicacion']").selectSingleNode(rootElement) /> 
229            <#assign Ubicacion = "" /> 
230            <#if UbicacionNode??> 
231                <#assign Ubicacion = UbicacionNode.getStringValue() /> 
232            </#if> 
233 
234            <#assign DescripcionNode = saxReaderUtil.createXPath("dynamic-element[@name='Descripcion']").selectSingleNode(rootElement) /> 
235            <#assign Descripcion = "" /> 
236            <#if DescripcionNode?? && DescripcionNode.getStringValue()?has_content> 
237                <#assign Descripcion = DescripcionNode.getStringValue()?trim /> 
238            </#if> 
239            <#if Descripcion?length gte 250> 
240                <#assign Descripcion = Descripcion?substring(0, 250)?trim?substring(0, Descripcion?last_index_of(" ")) + "..." /> 
241            </#if> 
242 
243            <#-- Imagen principal --> 
244            <#assign ImagenPrincipalNode = saxReaderUtil.createXPath("dynamic-element[@name='ImagenPrincipal']").selectSingleNode(rootElement) /> 
245            <#assign imagenPrincipalURL = "" /> 
246            <#if ImagenPrincipalNode??> 
247                <#assign ImagenPrincipalJson = jsonFactoryUtil.createJSONObject(ImagenPrincipalNode.getStringValue()) /> 
248                <#assign imagenPrincipalURL = "/documents/" + ImagenPrincipalJson.groupId + "/" + ImagenPrincipalJson.uuid /> 
249            </#if> 
250 
251            <#assign EventosSimilaresList += '<li class="item col-12 col-lg-6"><a href="' + viewURL + '" class="link"><span class="sr-only">' + EventoSimilar.getTitle(locale) + '</span></a><div class="cards"><div class="image" style="background: url(' + imagenPrincipalURL + ');"><div class="fecha"><span class="dia">' + (fechaDesde?string("dd")) + '</span><span class="mes">' + (fechaDesde?string("MMM")?upper_case) + '</span><span class="dia">' + (fechaHasta?string("dd")) + '</span><span class="mes">' + (fechaHasta?string("MMM")?upper_case) + '</span></div></div><div class="content"><p class="category">' + Categories + '</p><p class="ubicacion"><i class="fas fa-map-marker-alt" aria-hidden="true"></i> ' + Ubicacion + '</p><hr><p class="title">' + EventoSimilar.getTitle(locale) + '</p><p class="summary">' + Descripcion + '</p></div></div></li>' /> 
252        </#if> 
253    </#list> 
254 
255    <#if EventosSimilaresList?has_content> 
256        <section class="title_section container"> 
257            <#if localeUtil.equals(localeUtil.getSiteDefault(), locale)> 
258                <h2 class="title_second">Eventos similares</h2> 
259            <#else> 
260                <h2 class="title_second">Antzeko gertaerak</h2> 
261            </#if> 
262            <div class="separator"></div> 
263        </section> 
264        <section class="list_agenda container"> 
265            <ul class="list_items row"> 
266                ${EventosSimilaresList} 
267            </ul> 
268        </section> 
269    </#if> 
270</#if>