Errorea gertatu da txantiloia prozesatzerakoan.
Range start index 20 is out of bounds, because the sliced sequence has only 11 element(s). (Note that indices are 0-based). The blamed expression: ==> begin..(totalEle-one) [in template "842907#842945#2677535" at line 167, column 46] ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign finalEntries = finalEntries[b... [in template "842907#842945#2677535" at line 167, column 9] ----
1<#--FTL de funciones genericas-->
2<#assign funcionesCustomId = layout.getGroup().getExpandoBridge().getAttribute("iybg-ftl-funciones")>
3<#include "${templatesPath}/${funcionesCustomId}">
4
5<#-- Servicios -->
6<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
7<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
8<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
9<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") >
10<#assign searcher = serviceLocator.findService("net.juventud.buscador.categorias.service.SearchService")>
11<#assign urlEncoder = staticUtil["java.net.URLEncoder"]>
12
13<#-- Variables -->
14<#assign zero = getterUtil.getInteger("0")>
15<#assign one = getterUtil.getInteger("1")>
16<#assign currentPag = one>
17<#assign delta = getterUtil.getLong("10")>
18<#assign renderURL = themeDisplay.getURLCurrent()>
19<#assign params = renderURL?split("&")>
20<#assign queryBusqueda = "">
21<#assign selectedEstado = "">
22<#assign fechaHasta = "">
23<#assign filtro = "">
24<#assign completeCurrentRedirecUrl = urlEncoder.encode(themeDisplay.getPortalURL() + renderURL,"UTF-8")>
25<#assign totalParams = params?size>
26<#assign selectedCategory = "">
27
28<#list params as param>
29
30 <#assign paramLength = getterUtil.getInteger(param?length)>
31 <#assign equalsIndex = zero>
32 <#if param?index_of("=") != -1>
33 <#assign equalsIndex = getterUtil.getInteger(param?index_of("="))>
34 <#assign equalsIndex = equalsIndex + one>
35 </#if>
36 <#if param?index_of("zx=") != -1>
37 <#assign currentzx = param?substring(equalsIndex,paramLength)>
38 <#assign oldParam = "?zx=" + currentzx>
39 <#assign renderURL = renderURL?replace(oldParam, "")>
40 <#assign oldParam = "&zx=" + currentzx>
41 <#assign renderURL = renderURL?replace(oldParam, "")>
42 <#assign totalParams = params?size - 1>
43 </#if>
44 <#if param?contains("queryBusqueda")>
45 <#assign replaceQueryBusqueda = param?substring(equalsIndex,paramLength)>
46 <#assign queryBusqueda =replaceQueryBusqueda?replace("%2C", ",")>
47 </#if>
48 <#if param?contains("selectedEstado")>
49 <#assign selectedEstado = param?substring(equalsIndex,paramLength)>
50 </#if>
51 <#if param?contains("fechaHasta")>
52 <#assign replaceFechaHasta = param?substring(equalsIndex,paramLength)>
53 <#assign fechaHasta =replaceFechaHasta?replace("%2F", "/")>
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 <#assign totalParams = params?size - 1>
62 </#if>
63 <#if param?contains("catId")>
64 <#if equalsIndex != 0>
65 <#assign filtro = param[equalsIndex..(paramLength-1)]>
66 <#assign selectedCategory = filtro>
67 </#if>
68 <#assign oldParam = "&catId="+filtro>
69 <#assign renderURL = renderURL?replace(oldParam, "")>
70 <#assign oldParam = "?catId="+filtro>
71 <#assign renderURL = renderURL?replace(oldParam, "")>
72 <#assign oldParam = "&catId">
73 <#assign renderURL = renderURL?replace(oldParam, "")>
74 <#assign oldParam = "?catId">
75 <#assign renderURL = renderURL?replace(oldParam, "")>
76 <#assign totalParams = params?size - 1>
77 </#if>
78</#list>
79
80<#if searcher?exists>
81 <#assign finalEntries = searcher.searchContentsByQB(entries, queryBusqueda, filtro)>
82 <#assign finalEntries = searcher.filterContents(finalEntries, selectedEstado,fechaHasta,locale)>
83<#else>
84 <#assign finalEntries = entries>
85</#if>
86
87<#assign beginIndex = currentPag - one>
88<#assign begin = delta * beginIndex>
89
90<#assign end = begin + delta>
91
92<#assign totalEntriesSize = finalEntries?size>
93<#assign totalPag = getterUtil.getInteger((finalEntries?size)/delta)>
94
95<#assign totalPagMod = finalEntries?size%delta>
96
97<#if (finalEntries?size > delta) && totalPagMod!=0>
98 <#assign totalPag = totalPag + one>
99</#if>
100
101<#assign totalEle = finalEntries?size>
102<#assign renderPam = "&page=">
103<#if !renderURL?contains("?")>
104 <#assign renderPam = "?page=">
105</#if>
106<#assign firstURL = renderURL + renderPam + one>
107<#assign lastURL = renderURL + renderPam + totalPag>
108
109<#-- Tener encuenta las categorias -->
110<#if selectedCategory!="">
111 <#assign selectedCategoryText = "&catId=" + selectedCategory >
112 <#assign firstURL = firstURL + selectedCategoryText>
113 <#assign lastURL = lastURL + selectedCategoryText>
114</#if>
115
116<#if (totalPag > one)>
117 <#if (currentPag < totalPag)>
118 <#assign nextValue = currentPag + one>
119 <#else>
120 <#assign nextValue = totalPag>
121 </#if>
122
123 <#if (currentPag > one)>
124 <#assign previousValue = currentPag - one>
125 <#else>
126 <#assign previousValue = one>
127 </#if>
128<#else>
129 <#assign nextValue = one>
130 <#assign previousValue = one>
131</#if>
132
133<#assign nextURL = renderURL + renderPam + nextValue>
134<#assign previousURL = renderURL + renderPam + previousValue>
135<#-- Tener encuenta las categorias -->
136<#if selectedCategory!="">
137 <#assign selectedCategoryText = "&catId=" + selectedCategory >
138 <#assign nextURL = nextURL + selectedCategoryText>
139 <#assign previousURL = previousURL + selectedCategoryText>
140</#if>
141
142<#assign message = delta>
143<#assign init = (delta * (currentPag - one)) + one>
144<#assign final = delta * currentPag>
145
146<#if (totalPag > one)>
147 <#if (end < totalEle)>
148 <#assign parameters = [init, end, totalEle]>
149 <#else>
150 <#assign parameters = [init, totalEle, totalEle]>
151 </#if>
152
153 <#assign message = languageUtil.format(locale, "showing-x-x-of-x-results", parameters)>
154<#else>
155 <#assign parameters = [totalEle]>
156 <#if (totalEle == one)>
157 <#assign message = languageUtil.format(locale, "showing-x-result", parameters)>
158 <#else>
159 <#assign message = languageUtil.format(locale, "showing-x-results", parameters)>
160 </#if>
161</#if>
162
163<#if (finalEntries?size > zero)>
164 <#if (end < totalEle)>
165 <#assign finalEntries = finalEntries[begin..(end-one)]>
166 <#else>
167 <#assign finalEntries = finalEntries[begin..(totalEle-one)]>
168 </#if>
169</#if>
170
171<div class="iybg-container" id="resultadosConvocatorias" aria-live="polite">
172
173<h2 class="red-separator"><span class="iy-text-color-red iy-text-size-XL">${totalEle}</span>
174 <#if totalEle == one>
175 <@liferay.language key="iybg.convocatorias.buscador.convocatoria-encontrada-upper"/>
176 <#else>
177 <@liferay.language key="iybg.convocatorias.buscador.convocatorias-encontradas-upper"/>
178 </#if>
179</h2>
180
181<#-- navegacion por categorias -->
182<nav class="nav type01">
183 <ul class="navbar-nav">
184 <li><a id ="todas" class="nav-link active" href="${renderURL}"><@liferay.language key="iybg.todas" /></a></li>
185 <#assign convocatoriasVocabularyName = "BG-Convocatorias" />
186 <#assign categories = assetVocabularyLocalService.getGroupVocabulary(themeDisplay.getCompanyGroupId(), convocatoriasVocabularyName).getCategories() />
187
188 <#list categories as category>
189 <#assign cont = zero>
190 <#assign assetsEntries = getArticlesByCategoryId(entries,queryBusqueda,category.getCategoryId())>
191 <#assign assetsEntries = getArticlesByStateDate(assetsEntries,selectedEstado,fechaHasta,locale)>
192 <#assign cont = assetsEntries?size>
193
194 <#if (totalParams > one)>
195 <li>
196 <#if (cont > zero)>
197 <a id="${category.getCategoryId()?c}" class="nav-link" href="${renderURL}&catId=${category.getCategoryId()?c}">${category.getTitle(locale)}(${cont})</a>
198 <#else>
199 <span class="not-link"> ${category.getTitle(locale)}</span>
200 </#if>
201 </li>
202 <#else>
203 <li>
204 <#if (cont > zero)>
205 <a id="${category.getCategoryId()?c}" class="nav-link" href="${renderURL}?catId=${category.getCategoryId()?c}">${category.getTitle(locale)}(${cont})</a>
206 <#else>
207 <span class="not-link">${category.getTitle(locale)}</span>
208 </#if>
209 </li>
210 </#if>
211 </#list>
212 </ul>
213</nav>
214<#-- END Categorias -->
215
216<div class="row">
217<#if finalEntries?size != zero>
218
219 <div class="col-md-8 col-centered">
220 <ul class="bipo_participa_estados list-group list-type02">
221 <#list finalEntries as curEntry>
222 <#assign assetRenderer = curEntry.getAssetRenderer()>
223 <#assign journalArticle = assetRenderer.getAssetObject()>
224 <#assign renderer = curEntry.getAssetRenderer()>
225 <#assign className = renderer.getClassName()>
226
227 <#assign layoutUuid = journalArticle.getLayoutUuid()>
228 <#assign modifiedDate = journalArticle.getModifiedDate()>
229 <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry) />
230 <#if !stringUtil.equalsIgnoreCase("showFullContent", assetLinkBehavior?string)>
231 <#assign viewURL = renderer.getURLViewInContext(renderRequest, renderResponse, viewURL) />
232 </#if>
233
234 <#--Solo se usa si se va al asset publisher directamente
235 <#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")/>
236 <#assign group = groupLocalService.getGroup(groupId)/>
237 <#assign groupFriendlyURL = group.getFriendlyURL() />
238 <#assign urlViewContext = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + groupFriendlyURL + "/detalle-convocatorias/-/asset_publisher/B0ZPAtZFKdIv/content/" + journalArticle.getUrlTitle()>
239 -->
240
241 <#--Obtenemos templateKey en funcion del nombre de la plantilla-->
242 <#-- Por accesibilidad hay que hace que solo el titulo sea el enlace, no todo.
243 <#assign curTemplateKey=getTemplateKeyByTemplateName(themeDisplay.getCompanyGroupId(),"BG-Convocatoria listado")/>
244
245 <a href="${viewURL}?redirectUrl=${completeCurrentRedirecUrl}" class="list-group-item" title='<@liferay.language key="iybg.convocatorias.listado.ir-detalle"/>' tabindex="-1">
246 <@liferay_journal["journal-article"]
247 articleId=journalArticle.getArticleId()
248 ddmTemplateKey=curTemplateKey
249 groupId=journalArticle.getGroupId() />
250 </a>
251 -->
252
253
254 <#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) >
255 <#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() >
256 <#assign currentArticleTitulo = saxReaderUtil.createXPath("dynamic-element[@name='titulo']/dynamic-content").selectSingleNode(rootElementcurrentArticle) >
257 <#assign currentArticleFechaCaducidad = saxReaderUtil.createXPath("dynamic-element[@name='fecha_caducidad']/dynamic-content").selectSingleNode(rootElementcurrentArticle) >
258 <#assign currentArticleNombreConvocante = saxReaderUtil.createXPath("dynamic-element[@name='ConvocanteFieldSet']/dynamic-element[@name='ConvocanteFieldSetFieldSet']/dynamic-element[@name='nombreConvocante']/dynamic-content").selectSingleNode(rootElementcurrentArticle).getStringValue() >
259
260 <#assign hashFecha="">
261 <#if validator.isNotNull(currentArticleFechaCaducidad.getData())>
262 <#assign current_date_Data = .now?date?string('yyyy-MM-dd')>
263 <#assign current_date_DateObj = dateUtil.parseDate("yyyy-MM-dd", current_date_Data, locale)>
264 <#assign fecha_caducidad_Data = getterUtil.getString(currentArticleFechaCaducidad.getData())>
265 <#assign fecha_caducidad_DateObj = dateUtil.parseDate("yyyy-MM-dd", fecha_caducidad_Data, locale)>
266 <#assign fecha_caducidad7_Data = (fecha_caducidad_DateObj?long - (7 * 86400000))?number_to_date?string("yyyy-MM-dd")>
267 <#assign fecha_caducidad7_DateObj = dateUtil.parseDate("yyyy-MM-dd", fecha_caducidad7_Data, locale)>
268 <#assign hashFecha="OK">
269 </#if>
270
271 <li class="list-group-item" tabindex="0">
272
273 <div class="row">
274
275 <div class="col-md-3">
276 <p>
277
278 <#assign convocatoriasVocabulary = assetVocabularyLocalService.getGroupVocabulary(themeDisplay.getCompanyGroupId(), convocatoriasVocabularyName) />
279 <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", getterUtil.getLong(journalArticle.resourcePrimKey)) >
280
281 <#list categories as category>
282 <#if stringUtil.equalsIgnoreCase(category.vocabularyId?string,convocatoriasVocabulary.getVocabularyId()?string)>
283 <span class="fs-1_2 bold tc-rojo">${category.getTitle(locale)?upper_case}</span>
284 </#if>
285 </#list>
286
287 <#if validator.isNotNull(hashFecha)>
288 <#if (current_date_DateObj?date >= fecha_caducidad7_DateObj?date) && (current_date_DateObj?date <= fecha_caducidad_DateObj?date)>
289 <span class="clearfix"><span class="red-outline"><@liferay.language key="iybg.convocatorias.listado.ultimos-dias-upper"/></span></span>
290 </#if>
291 </#if>
292 </p>
293 </div>
294
295
296 <div class="col-md-9">
297 <#if currentArticleTitulo.getData()?has_content>
298 <p><a href="${viewURL}?redirectUrl=${completeCurrentRedirecUrl}" title='<@liferay.language key="iybg.convocatorias.listado.ir-detalle"/>' tabindex="-1"><span class="bold">${currentArticleTitulo.getData()}</span></a></p>
299 </#if>
300
301 <#if validator.isNotNull(hashFecha)>
302 <p class="clearfix">
303 <#if (current_date_DateObj?date > fecha_caducidad_DateObj?date)>
304 <span class="bipo_flechaderecha"><@liferay.language key="iybg.convocatorias.cerrado-upper"/></span>
305 <#else>
306 <span class="bipo_flechaderecha back-rojo"><@liferay.language key="iybg.convocatorias.abierto-upper"/></span>
307 </#if>
308
309 <#if (current_date_DateObj?date > fecha_caducidad_DateObj?date)>
310 <#-- Formato 1: dd/MM/yyyy -->
311 <span class="cerrada bipo_participa_fecha"><@liferay.language key="iybg.convocatorias.plazo-finalizado"/> ${formatFecha (fecha_caducidad_Data, 1, locale)}</span>
312 <#else>
313 <#-- Formato 1: dd/MM/yyyy -->
314 <span class="bipo_participa_fecha"><@liferay.language key="iybg.convocatorias.hasta"/> ${formatFecha (fecha_caducidad_Data, 1, locale)}</span>
315 </#if>
316 </p>
317 </#if>
318
319 <#if currentArticleNombreConvocante?has_content>
320 <p class="texto-convocantes">${currentArticleNombreConvocante}</p>
321 </#if>
322 </div>
323 </div>
324 </li>
325 </#list>
326 </ul>
327 </div>
328
329 <#if (totalEntriesSize > delta)>
330 <div class="taglib-page-iterator" >
331 <div class="clearfix lfr-pagination" >
332 <#-- <small>${message}</small>-->
333 <ul class="pager pager lfr-pagination-buttons bg-paginador">
334 <#if (currentPag == one)>
335 <li class="disabled first">
336 <a href="">← <@liferay.language key="first" /></a></li>
337 <#else>
338 <li class="first">
339 <a href="${firstURL}">← <@liferay.language key="first" /></a></li>
340 </#if>
341
342 <#if (currentPag == one)>
343 <li class="disabled">
344 <a href=""><@liferay.language key="previous" /></a></li>
345 <#else>
346 <li>
347 <a href="${previousURL}"><@liferay.language key="previous" /></a></li>
348 </#if>
349
350
351 <#if (currentPag == totalPag)>
352 <li class="disabled">
353 <a href=""><@liferay.language key="next" /></a></li>
354 <#else>
355 <li>
356 <a href="${nextURL}"><@liferay.language key="next" /></a></li>
357 </#if>
358
359 <#if (currentPag == totalPag)>
360 <li class="disabled last">
361 <a href=""><@liferay.language key="last" /> →</a></li>
362 <#else>
363 <li class="last">
364 <a href="${lastURL}"><@liferay.language key="last" /> →</a></li>
365 </#if>
366 </ul>
367 </div>
368 </div>
369 </#if>
370 <#else>
371 <div class="alert alert-info type01">
372 <p class="flex-container"><span class="bipoicon icon-calendar"></span> <span><@liferay.language key="iybg.convocatorias.listado.no-results"/></span></p>
373 </div>
374 </#if>
375
376 </div>
377</div>
378<#function getArticlesByCategoryId entries queryBusqueda categoriId>
379 <#assign categoriesEntries = searcher.searchContentsByQB(entries, queryBusqueda, categoriId?c)>
380 <#return categoriesEntries>
381</#function>
382
383<#function getArticlesByStateDate entries selectedEstado fechaHasta locale>
384 <#assign categoriesEntries = searcher.filterContents(entries, selectedEstado,fechaHasta,locale)>
385 <#return categoriesEntries>
386</#function>
387
388<script type="text/javascript">
389
390 $(function() {
391 // Handler for .ready() called.
392 var isFiltro=String(${filtro});
393
394 $("ul.navbar-nav li a").removeClass("active");
395 if (isFiltro==""){
396 $("#todas").addClass("active");
397 }else{
398 $("#"+isFiltro).addClass("active");
399 }
400
401 });
402
403</script>