Se ha producido un error al procesar la plantilla.
Range start index 120 is out of bounds, because the sliced sequence has only 115 element(s). (Note that indices are 0-based).
The blamed expression:
==> begin..(totalEle-one)  [in template "842907#842945#5675675" at line 434, column 46]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign finalEntries = finalEntries[b...  [in template "842907#842945#5675675" at line 434, column 9]
----
1<#--FTL de funciones genericas--> 
2<#assign funcionesCustomId = layout.getGroup().getExpandoBridge().getAttribute("iybg-ftl-funciones")> 
3 
4<#-- Servicios --> 
5<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
6<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
7<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")/> 
8<#assign searcher = serviceLocator.findService("net.juventud.buscador.categorias.service.SearchService")> 
9<#assign assetCategoryPropertyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryPropertyLocalService") /> 
10<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") > 
11<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") /> 
12<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")> 
13 
14<#assign zero = getterUtil.getInteger("0")> 
15<#assign one = getterUtil.getInteger("1")> 
16<#assign currentPag = one> 
17<#assign delta = getterUtil.getLong("12")> 
18<#assign numElemFila = getterUtil.getLong("3")> 
19<#assign maxDescLength = getterUtil.getLong("200")> 
20<#assign group = groupLocalService.getGroup(groupId)/> 
21<#assign groupFriendlyURL = group.getFriendlyURL() /> 
22<#assign renderURL = themeDisplay.getURLCurrent()> 
23<#assign params = renderURL?split("&")> 
24<#assign categoriesId = ""> 
25<#assign filtro = ""> 
26<#assign urlEncoder = staticUtil["java.net.URLEncoder"]> 
27<#assign completeCurrentRedirecUrl = urlEncoder.encode(themeDisplay.getPortalURL() + renderURL,"UTF-8")> 
28	<#assign temaseleccionado="" > 
29	<#assign comarcaseleccionada="" > 
30	<#assign texto="" > 
31	<#assign comarcaTodasCategoryId = themeDisplay.getThemeSetting("comarca_todas_categoryId")> 
32 
33<#list params as param> 
34 
35        <#assign paramLength = getterUtil.getInteger(param?length)> 
36        <#assign equalsIndex = zero> 
37		 
38        <#if param?index_of("=") != -1> 
39		      <#assign equalsIndex =  getterUtil.getInteger(param?index_of("="))> 
40 
41			<#if param?index_of("zx=") != -1> 
42			  <#assign currentzx = getterUtil.getLong(param[equalsIndex..(paramLength-1)])> 
43			  <#assign renderURL = renderURL?replace("zx=", "")> 
44			  <#assign oldParam = "zx=" + currentzx> 
45			  <#assign renderURL = renderURL?replace(oldParam, "")> 
46			</#if> 
47            <#assign equalsIndex =  equalsIndex + one> 
48        </#if> 
49 
50        <#if param?contains("categoryId")> 
51            <#assign replaceCategories = param?substring(equalsIndex,paramLength)> 
52            <#assign categoriesId =replaceCategories?replace("%2C", ",")> 
53 
54        </#if> 
55        <#if param?contains("page")> 
56            <#assign currentPag = getterUtil.getLong(param[equalsIndex..(paramLength-1)])> 
57            <#assign oldParam = "&page=" + currentPag> 
58            <#assign renderURL = renderURL?replace(oldParam, "")> 
59            <#assign oldParam = "?page=" + currentPag> 
60            <#assign renderURL = renderURL?replace(oldParam, "")> 
61        </#if> 
62        <#if param?contains("conv")> 
63            <#assign filtro = "conv"> 
64            <#assign oldParam = "&conv"> 
65            <#assign renderURL = renderURL?replace(oldParam, "")> 
66            <#assign oldParam = "?conv"> 
67            <#assign renderURL = renderURL?replace(oldParam, "")>             
68        </#if>     
69 
70</#list> 
71 
72 
73<#if (categoriesId?split(",")?size > 1)> 
74	<#assign temaseleccionado=categoriesId?split(",")[0] > 
75	<#assign comarcasCategory=categoriesId?split(",")[1] > 
76	 
77 
78	 
79		 
80		<#if !validator.equals("", temaseleccionado?trim)>	<#-- SE SELECCIONADO TEMA--> 
81			<#if !validator.equals("", comarcasCategory?trim)><#-- SE SELECCIONADO COMARCA--> 
82 
83			<#assign comarcaseleccionada="1" /> 
84			<#assign categorias = temaseleccionado + "," + comarcasCategory> 
85			<#assign categoriastodascomarcas = temaseleccionado + "," + comarcaTodasCategoryId> 
86				<#if searcher?exists>				 
87					<#assign finalEntries1 = searcher.searchContents(entries, categorias, null, filtro)> 
88					<#assign finalEntries2 = searcher.searchContents(entries, categoriastodascomarcas, null, filtro)> 
89	 
90					<#assign finalEntries1Ordered = []/>					 
91					<#assign finalEntries2Ordered = []/> 
92					<#assign listaNueva =[]/> 
93					<#assign listaNueva2 =[]/> 
94				 
95				<#list finalEntries1 as lista> 
96 
97				        <#assign assetRenderer = lista.getAssetRenderer()> 
98						<#assign journalArticle = assetRenderer.getAssetObject()> 
99						 
100						<#assign currentArticleResourcePrimKey = journalArticle.getResourcePrimKey() /> 
101						<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 
102						<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 
103						 
104 
105						<#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
106						<#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() > 
107 
108						 
109						<#assign currentArticleTitulo = saxReaderUtil.createXPath("dynamic-element[@name='titulo']/dynamic-content").selectSingleNode(rootElementcurrentArticle) > 
110				 
111						 
112						<#assign listaNueva =listaNueva+ [currentArticleTitulo.getData()+"##"+currentArticleAssetEntryId]/> 
113						 
114				 
115				</#list> 
116				<#--recorrrer la lista y recoger de nuevo las assetEntryes--> 
117				<#list listaNueva?sort as listaComarcaOrdenada> 
118						<#--${listaComarcaOrdenada}<br>--> 
119						<#assign id_entry = listaComarcaOrdenada?keep_after_last("##") /> 
120						<#assign finalEntries1Ordered =finalEntries1Ordered+[assetEntryLocalService.getAssetEntry(id_entry?number)] /> 
121						 
122				 
123				</#list> 
124				 
125				<#list finalEntries2 as lista2> 
126			 
127				        <#assign assetRenderer = lista2.getAssetRenderer()> 
128						<#assign journalArticle = assetRenderer.getAssetObject()> 
129					 
130						<#assign currentArticleResourcePrimKey = journalArticle.getResourcePrimKey() /> 
131						<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 
132						<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 
133						 
134 
135						<#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
136						<#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() > 
137 
138						 
139						<#assign currentArticleTitulo = saxReaderUtil.createXPath("dynamic-element[@name='titulo']/dynamic-content").selectSingleNode(rootElementcurrentArticle) > 
140						 
141						 
142						<#assign listaNueva2 =listaNueva2+ [currentArticleTitulo.getData()+"##"+currentArticleAssetEntryId] /> 
143						 
144				 
145				</#list>	 
146				<#list listaNueva2?sort as listaDipuOrdenada> 
147						<#--${listaDipuOrdenada}<br>--> 
148						<#assign id_entry2 = listaDipuOrdenada?keep_after_last("##") /> 
149				 
150						<#assign finalEntries2Ordered =finalEntries2Ordered+[assetEntryLocalService.getAssetEntry(id_entry2?number)] /> 
151				 
152				</#list>				 
153					 
154					<#assign finalEntries =finalEntries1Ordered+finalEntries2Ordered > 
155				</#if > 
156 
157			<#else><#-- NO SE SELECCIONADO COMARCA-->	 
158 
159				<#if searcher?exists>				 
160					<#assign finalEntries = searcher.searchContents(entries, temaseleccionado, null, filtro)> 
161					<#--ORDERNA LSITAS --> 
162					<#assign finalEntriesOrdered = []/> 
163					<#assign listaNueva =[]/> 
164					<#list finalEntries as lista> 
165 
166				        <#assign assetRenderer = lista.getAssetRenderer()> 
167						<#assign journalArticle = assetRenderer.getAssetObject()> 
168						 
169						<#assign currentArticleResourcePrimKey = journalArticle.getResourcePrimKey() /> 
170						<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 
171						<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 
172						 
173 
174						<#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
175						<#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() > 
176 
177						 
178						<#assign currentArticleTitulo = saxReaderUtil.createXPath("dynamic-element[@name='titulo']/dynamic-content").selectSingleNode(rootElementcurrentArticle) > 
179				 
180						 
181						<#assign listaNueva =listaNueva+ [currentArticleTitulo.getData()+"##"+currentArticleAssetEntryId]/> 
182						 
183				 
184					</#list> 
185					<#--recorrrer la lista y recoger de nuevo las assetEntryes--> 
186					<#list listaNueva?sort as listaComarcaOrdenada> 
187							<#--${listaComarcaOrdenada}<br>--> 
188							<#assign id_entry = listaComarcaOrdenada?keep_after_last("##") /> 
189							<#assign finalEntriesOrdered =finalEntriesOrdered+[assetEntryLocalService.getAssetEntry(id_entry?number)] /> 
190							 
191					 
192					</#list> 
193					<#assign finalEntries =finalEntriesOrdered /> 
194					<#--FIN ORDERNA LSITAS --> 
195				</#if >			 
196			 
197			</#if > 
198		<#else><#-- NO SE HA SELECCIONADO TEMA-->	 
199 
200			<#if !validator.equals("", comarcasCategory?trim)><#-- SE SELECCIONADO COMARCA--> 
201 
202		<#assign comarcaseleccionada="1" /> 
203				<#if searcher?exists> 
204					<#assign finalEntries1 = searcher.searchContents(entries, comarcasCategory, null, filtro)> 
205					<#assign finalEntries2 = searcher.searchContents(entries, comarcaTodasCategoryId, null, filtro)> 
206					<#assign finalEntries1Ordered = []/>					 
207					<#assign finalEntries2Ordered = []/> 
208					 
209				</#if > 
210				<#--nuevo--> 
211				<#assign listaNueva =[]/> 
212				<#assign listaNueva2 =[]/> 
213				 
214				<#list finalEntries1 as lista> 
215 
216				        <#assign assetRenderer = lista.getAssetRenderer()> 
217						<#assign journalArticle = assetRenderer.getAssetObject()> 
218						 
219						<#assign currentArticleResourcePrimKey = journalArticle.getResourcePrimKey() /> 
220						<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 
221						<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 
222						 
223 
224						<#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
225						<#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() > 
226 
227						 
228						<#assign currentArticleTitulo = saxReaderUtil.createXPath("dynamic-element[@name='titulo']/dynamic-content").selectSingleNode(rootElementcurrentArticle) > 
229				 
230						 
231						<#assign listaNueva =listaNueva+ [currentArticleTitulo.getData()+"##"+currentArticleAssetEntryId]/> 
232						 
233				 
234				</#list> 
235				<#--recorrrer la lista y recoger de nuevo las assetEntryes--> 
236				<#list listaNueva?sort as listaComarcaOrdenada> 
237						<#--${listaComarcaOrdenada}<br>--> 
238						<#assign id_entry = listaComarcaOrdenada?keep_after_last("##") /> 
239						<#assign finalEntries1Ordered =finalEntries1Ordered+[assetEntryLocalService.getAssetEntry(id_entry?number)] /> 
240						 
241				 
242				</#list> 
243				 
244				<#list finalEntries2 as lista2> 
245			 
246				        <#assign assetRenderer = lista2.getAssetRenderer()> 
247						<#assign journalArticle = assetRenderer.getAssetObject()> 
248					 
249						<#assign currentArticleResourcePrimKey = journalArticle.getResourcePrimKey() /> 
250						<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 
251						<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 
252						 
253 
254						<#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
255						<#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() > 
256 
257						 
258						<#assign currentArticleTitulo = saxReaderUtil.createXPath("dynamic-element[@name='titulo']/dynamic-content").selectSingleNode(rootElementcurrentArticle) > 
259						 
260						 
261						<#assign listaNueva2 =listaNueva2+ [currentArticleTitulo.getData()+"##"+currentArticleAssetEntryId] /> 
262						 
263				 
264				</#list>	 
265				<#list listaNueva2?sort as listaDipuOrdenada> 
266						<#--${listaDipuOrdenada}<br>--> 
267						<#assign id_entry2 = listaDipuOrdenada?keep_after_last("##") /> 
268				 
269						<#assign finalEntries2Ordered =finalEntries2Ordered+[assetEntryLocalService.getAssetEntry(id_entry2?number)] /> 
270				 
271				</#list>				 
272 
273		<#assign finalEntries =finalEntries1Ordered+finalEntries2Ordered > 
274				 
275			<#else><#-- NO SE SELECCIONADO COMARCA-->			 
276		 
277				<#if searcher?exists> 
278					<#assign finalEntries = searcher.searchContents(entries, "", null, filtro)> 
279						<#--ORDERNAR LA LISTA:--> 
280					<#assign finalEntriesOrdered = []/> 
281					<#assign listaNueva =[]/> 
282					<#list finalEntries as lista> 
283 
284				        <#assign assetRenderer = lista.getAssetRenderer()> 
285						<#assign journalArticle = assetRenderer.getAssetObject()> 
286						 
287						<#assign currentArticleResourcePrimKey = journalArticle.getResourcePrimKey() /> 
288						<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 
289						<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 
290						 
291 
292						<#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
293						<#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() > 
294 
295						 
296						<#assign currentArticleTitulo = saxReaderUtil.createXPath("dynamic-element[@name='titulo']/dynamic-content").selectSingleNode(rootElementcurrentArticle) > 
297				 
298						 
299						<#assign listaNueva =listaNueva+ [currentArticleTitulo.getData()+"##"+currentArticleAssetEntryId]/> 
300						 
301				 
302					</#list> 
303					<#--recorrrer la lista y recoger de nuevo las assetEntryes--> 
304					<#list listaNueva?sort as listaComarcaOrdenada> 
305							<#--${listaComarcaOrdenada}<br>--> 
306							<#assign id_entry = listaComarcaOrdenada?keep_after_last("##") /> 
307							<#assign finalEntriesOrdered =finalEntriesOrdered+[assetEntryLocalService.getAssetEntry(id_entry?number)] /> 
308							 
309					 
310					</#list> 
311					<#assign finalEntries =finalEntriesOrdered /> 
312					<#--FIN ORDERNA LSITAS -->						 
313 
314				</#if > 
315			</#if > 
316		</#if>	 
317<#else> 
318 
319    
320	<#assign finalEntries = searcher.searchContents(entries, "", null, filtro)> 
321	<#--ORDERNAR LA LISTA:--> 
322				 
323		<#assign finalEntriesOrdered = []/> 
324		<#assign listaNueva =[]/> 
325		<#list finalEntries as lista> 
326 
327			<#assign assetRenderer = lista.getAssetRenderer()> 
328			<#assign journalArticle = assetRenderer.getAssetObject()> 
329			 
330			<#assign currentArticleResourcePrimKey = journalArticle.getResourcePrimKey() /> 
331			<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 
332			<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 
333			 
334 
335			<#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
336			<#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() > 
337 
338			 
339			<#assign currentArticleTitulo = saxReaderUtil.createXPath("dynamic-element[@name='titulo']/dynamic-content").selectSingleNode(rootElementcurrentArticle) > 
340	 
341			 
342			<#assign listaNueva =listaNueva+ [currentArticleTitulo.getData()+"##"+currentArticleAssetEntryId]/> 
343			 
344	 
345		</#list> 
346		<#--recorrrer la lista y recoger de nuevo las assetEntryes--> 
347		<#list listaNueva?sort as listaComarcaOrdenada> 
348				<#--${listaComarcaOrdenada}<br>--> 
349				<#assign id_entry = listaComarcaOrdenada?keep_after_last("##") /> 
350				<#assign finalEntriesOrdered =finalEntriesOrdered+[assetEntryLocalService.getAssetEntry(id_entry?number)] /> 
351				 
352		 
353		</#list> 
354		<#assign finalEntries =finalEntriesOrdered /> 
355		 
356	<#--FIN ORDERNAR LA LISTA:--> 
357</#if> 
358 
359 
360 
361	 
362<#-- ---------------------------------------------------------------------------------------------------- --> 
363 
364 
365 
366<#-- ---------------------------------------------------------------------------------------------------- --> 
367<#assign beginIndex = currentPag - one> 
368<#assign begin = delta * beginIndex> 
369 
370<#assign end = begin + delta> 
371 
372<#assign totalEntriesSize = finalEntries?size> 
373 
374 
375<#assign totalPag = getterUtil.getInteger((finalEntries?size)/delta)> 
376<#if (finalEntries?size > delta)> 
377    <#assign totalPag = totalPag + one> 
378</#if> 
379 
380<#assign totalPagMod = finalEntries?size%delta> 
381<#assign totalEle = finalEntries?size> 
382<#assign renderPam = "&page="> 
383<#if !renderURL?contains("?")> 
384    <#assign renderPam = "?page="> 
385</#if> 
386 
387<#assign firstURL = renderURL + renderPam + one> 
388<#assign lastURL = renderURL + renderPam + totalPag> 
389 
390<#if (totalPag > one)> 
391    <#if (currentPag < totalPag)> 
392        <#assign nextValue = currentPag + one> 
393    <#else> 
394        <#assign nextValue = totalPag> 
395    </#if> 
396 
397    <#if (currentPag > one)> 
398        <#assign previousValue = currentPag - one> 
399    <#else> 
400        <#assign previousValue = one> 
401    </#if> 
402<#else> 
403    <#assign nextValue = one> 
404    <#assign previousValue = one> 
405</#if> 
406 
407<#assign nextURL = renderURL + renderPam + nextValue> 
408<#assign previousURL = renderURL + renderPam + previousValue> 
409<#assign message = delta> 
410<#assign init = (delta * (currentPag - one)) + one> 
411<#assign final = delta * currentPag> 
412 
413<#if (totalPag > one)> 
414    <#if (end < totalEle)> 
415        <#assign parameters = [init, end, totalEle]> 
416    <#else> 
417        <#assign parameters = [init, totalEle, totalEle]> 
418    </#if> 
419     
420    <#assign message = languageUtil.format(locale, "showing-x-x-of-x-results", parameters)> 
421<#else> 
422    <#assign parameters = [totalEle]> 
423    <#if (totalEle == one)> 
424        <#assign message = languageUtil.format(locale, "showing-x-result", parameters)> 
425    <#else> 
426        <#assign message = languageUtil.format(locale, "showing-x-results", parameters)> 
427    </#if> 
428</#if> 
429 
430<#if (finalEntries?size > zero)> 
431    <#if (end < totalEle)> 
432        <#assign finalEntries = finalEntries[begin..(end-one)]> 
433    <#else> 
434        <#assign finalEntries = finalEntries[begin..(totalEle-one)]> 
435    </#if> 
436</#if> 
437 
438<div class="iy-strctures-card-container"> 
439<div class="iybg-container"> 
440 
441<h2><span class="iy-text-color-red iy-text-size-XL">${totalEle}</span> 
442	<#if validator.equals("1", comarcaseleccionada) > 
443		<#if validator.equals(locale.getLanguage(),"es")> 
444				<#assign texto= "(Dirigidas a las personas residentes en la comarca seleccionada)" /> 
445			<#else> 
446				<#assign texto= " (Hautatutako eskualdean bizi diren pertsonei zuzenduak) " />					 
447		</#if> 
448	 
449	</#if> 
450	 
451	 
452    <#if (totalEle == one)> 
453        <@liferay.language key="iybg.programas.iniciativa.encontrada.upper"/> 
454		<span class="iybg_alignedSmallTxt">${texto}</span> 
455 
456    <#else> 
457        <@liferay.language key="iybg.programas.iniciativas.encontradas.upper"/><span class="iybg_alignedSmallTxt">${texto}</span> 
458    </#if>     
459</h2> 
460 
461<#assign isConv=getterUtil.getBoolean("false")> 
462<#if filtro?exists && filtro=="conv"> 
463    <#assign isConv=getterUtil.getBoolean("true")> 
464</#if> 
465 
466 
467<nav class="nav red-separated-bottom-line"> 
468<ul class="navbar-nav"> 
469    <li ><a id="navTodas" class="nav-link active" href="${renderURL}"><@liferay.language key="iybg.programas.todas.upper"/></a></li> 
470    <#if (params?size > one)> 
471	    <li><a id="navConv" class="nav-link" href="${renderURL}&conv"><@liferay.language key="iybg.programas.con_convocatorias.upper"/></a></li> 
472    <#else> 
473        <li><a id="navConv" class="nav-link" href="${renderURL}?conv"><@liferay.language key="iybg.programas.con_convocatorias.upper"/></a></li> 
474    </#if> 
475</ul> 
476</nav> 
477 
478<#if finalEntries?size != zero> 
479     
480    <div class="row flex-box"> 
481    <#assign i = getterUtil.getLong("1")> 
482 
483    <#list finalEntries as curEntry> 
484        <#assign assetRenderer = curEntry.getAssetRenderer()> 
485        <#assign journalArticle = assetRenderer.getAssetObject()> 
486        <#assign renderer = curEntry.getAssetRenderer()> 
487        <#assign className = renderer.getClassName()> 
488           <#--  
489        <#assign layoutUuid = journalArticle.getLayoutUuid() 
490        <#assign modifiedDate = journalArticle.getModifiedDate()> 		 
491		>--> 
492 
493 
494        <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry) /> 
495		<#assign viewURL = renderer.getURLViewInContext(renderRequest, renderResponse, viewURL) /> 
496		 
497        <#if !validator.equals("showFullContent", assetLinkBehavior?string)> 
498			<#assign viewURL = renderer.getURLViewInContext(renderRequest, renderResponse, viewURL) /> 
499		</#if> 
500 
501        <#-- Plantilla para pintar cada uno de los registros de programas e iniciativas --> 
502        <#assign currentArticleResourcePrimKey = journalArticle.getResourcePrimKey() /> 
503        <#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 
504        <#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 
505		<#assign titulo_mostrar = currentArticleAssetEntry.getTitle(locale) /> 
506        <#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) /> 
507 
508 
509        <#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
510        <#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() > 
511		 
512        <#assign currentArticleTitulo = saxReaderUtil.createXPath("dynamic-element[@name='titulo']/dynamic-content").selectSingleNode(rootElementcurrentArticle) > 
513        <#assign currentArticleDescripcion = saxReaderUtil.createXPath("dynamic-element[@name='descripcion']/dynamic-content").selectSingleNode(rootElementcurrentArticle) > 
514        <#assign currentArticleFoto = saxReaderUtil.createXPath("dynamic-element[@name='foto']/dynamic-content").selectSingleNode(rootElementcurrentArticle).getStringValue() > 
515		 
516 
517 
518        <#-- Categorias de tipo Ambito asociadas al journalArticle que se está mostrando--> 
519        <#assign ambitosVocabularyName = "BG-Ambitos" /> 
520        <#assign ambitosVocabulary = assetVocabularyLocalService.getGroupVocabulary(themeDisplay.getCompanyGroupId(), ambitosVocabularyName) /> 
521        <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", getterUtil.getLong(currentArticleResourcePrimKey)) > 
522 
523        <#list categories as category> 
524            <#if validator.equals(category.vocabularyId?string,ambitosVocabulary.getVocabularyId()?string)> 
525                <#assign categoria = category.getTitle(locale) > 
526                <#assign categoryImagen = assetCategoryPropertyLocalService.getCategoryProperty(category.getCategoryId(),"imagen")> 
527            </#if> 
528        </#list> 
529 
530        <div class="col-md-4 col-sm-6 col-xs-12">  
531            <div class="card" tabindex="0"> 
532                <div class="card-header"> 
533                    <#if currentArticleFoto?? && currentArticleFoto != ""> 
534							<#assign img_new =  getFileEntryJson(currentArticleFoto) />			 
535						  
536                        <img class="card-img-top box-cover" src="${img_new}" alt="" /> 
537						 
538                    <#else> 
539                        <#--Imagen predefinida por cada categoria --> 
540                       <img class="card-img-top" src="${themeDisplay.getPathThemeImages()}/bizkaiagazteak/${categoryImagen.getValue()}" alt=""> 
541 
542                    </#if>         
543                </div>  
544                <div class="card-body"> 
545 
546                    <#-- Ambito -->         
547                    <h3 class="card-title">${categoria}</h3> 
548                    <p class="card-text fw-medium"><a href="${viewURL}?redirectUrl=${completeCurrentRedirecUrl}" title='<@liferay.language key="iybg.programas.ir-detalle"/>' tabindex="-1"> 
549					<#--${titulo_mostrar}<bR>-->${currentArticleTitulo.getData()}</a></p> 
550                    <#if currentArticleDescripcion.getData()?has_content> 
551                        <div class="card-text"> 
552                             
553							<#if (currentArticleDescripcion.getData()?length > maxDescLength) > 
554								${currentArticleDescripcion.getData()[0..*(maxDescLength-3)]+"..."} 
555							<#else> 
556								${currentArticleDescripcion.getData()} 
557							</#if> 
558                             
559                        </div> 
560                    </#if> 
561 
562                    <#list currentArticleRelatedLinks as related_entry> 
563                        <#assign relatedAssetEntryId = related_entry.getEntryId2() /> 
564                        <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) /> 
565                        <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() /> 
566                        <#assign relatedArticle = journalArticleLocalService.getLatestArticle(relatedAssetEntryPrimKey) /> 
567                        <#assign relatedArticleId = relatedArticle.getArticleId() /> 
568                    </#list> 
569 
570                    <#if currentArticleRelatedLinks?has_content > 
571                    <p class="iy-link-convocatorias">  
572                        <#assign totalrelatedarticlesSize = currentArticleRelatedLinks?size> 
573                        <span class="bipoicon icon-calendar" aria-hidden="true"></span> <span class="badge iy-text-color-red iy-text-size-L">${totalrelatedarticlesSize}</span> 
574                        <#if (totalrelatedarticlesSize == one)> 
575                            <@liferay.language key="iybg.programas.convocatoria_relacionada" /> 
576                        <#else> 
577                            <@liferay.language key="iybg.programas.convocatorias_relacionadas" /> 
578                        </#if> 
579                    </p>                 
580                    </#if> 
581 
582                </div>     
583            </div> 
584        </div> 
585 
586        <#if i%numElemFila=0> 
587		<#-- 
588            </div> 
589            <div class="row"> 
590			--> 
591        </#if> 
592        <#assign i = i + 1 > 
593    </#list> 
594    </div> 
595 
596    <#if (totalEntriesSize > delta)> 
597        <div class="taglib-page-iterator" > 
598            <div class="clearfix lfr-pagination" > 
599             <#--   <small>${message}</small>--> 
600                     
601					<ul class="pager pager lfr-pagination-buttons bg-paginador"> 
602                        <#if (currentPag == one)> 
603                            <li class="disabled first"> 
604                                <a href="">&larr; <@liferay.language key="first" /></a></li> 
605                        <#else> 
606                            <li class="first"> 
607                                 <a href="${firstURL}">&larr; <@liferay.language key="first" /></a></li> 
608                        </#if> 
609                         
610                        <#if (currentPag == one)> 
611                            <li class="disabled">    
612                               <a href=""><@liferay.language key="previous" /></a></li> 
613                        <#else> 
614                            <li> 
615                                <a href="${previousURL}"><@liferay.language key="previous" /></a></li> 
616                        </#if> 
617                         
618                             
619                        <#if (currentPag == totalPag)> 
620                            <li class="disabled"> 
621                                <a href=""><@liferay.language key="next" /></a></li> 
622                        <#else> 
623                            <li> 
624                                <a href="${nextURL}"><@liferay.language key="next" /></a></li> 
625                        </#if> 
626                             
627                        <#if (currentPag == totalPag)> 
628                            <li class="disabled last"> 
629                                <a href=""><@liferay.language key="last" /> &rarr;</a></li> 
630                        <#else> 
631                            <li class="last"> 
632                                <a href="${lastURL}"><@liferay.language key="last" /> &rarr;</a></li> 
633                        </#if> 
634                    </ul> 
635            </div> 
636        </div> 
637    </#if>   
638<#else> 
639    <div class="alert alert-info type01"> 
640        <p class="flex-container"><span class="bipoicon icon-calendar"></span> <span><@liferay.language key="iybg.programas.no-results"/></span></p> 
641    </div> 
642</#if> 
643</div> 
644</div> 
645 
646<#function getFileEntryJson url > 
647 
648<#assign urljson = url?eval> 
649  <#assign group_id =urljson.groupId /> 
650  <#assign uuid = urljson.uuid /> 
651  <#assign fichero = urljson.title /> 
652 
653  <#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") > 
654  <#assign DLFichero= fileEntryService.getDLFileEntryByUuidAndGroupId(uuid?string, group_id?eval) />  
655   DLFichero 
656   <#return "/documents/"+group_id+"/"+DLFichero.getFolderId()+"/"+fichero />  
657 
658</#function> 
659 
660<script type="text/javascript"> 
661 
662    $(function() { 
663        // Handler for .ready() called. 
664        var isConv=${isConv?c}; 
665         
666        $("ul.navbar-nav li a").removeClass("active"); 
667        if (String(isConv)=="true"){ 
668            $("#navConv").addClass("active"); 
669        }else{ 
670            $("#navTodas").addClass("active"); 
671
672 
673		$(".card").click(function(event){ 
674			var linkProg = $(this).find('a').attr('href'); 
675			$(location).attr('href',linkProg); 
676		}); 
677		$(".card").keypress(function(e) { 
678			var code = (e.keyCode ? e.keyCode : e.which); 
679			if(code===13){ 
680				var linkProg = $(this).find('a').attr('href'); 
681		 
682				$(location).attr('href',linkProg); 
683				 
684
685		});		 
686		   
687		 
688     
689    }); 
690 
691</script>