Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> serviceLocator.findService("es.cv.urlfilter.service.PathKeyLocalService") [in template "20099#20135#413073" at line 23, column 20]
----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign pathKey = serviceLocator.find... [in template "20099#20135#413073" at line 23, column 1]
----
1<#assign DDMStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")>
2
3<#assign ClassNameLocalService = serviceLocator.findService(
4 "com.liferay.portal.kernel.service.ClassNameLocalService")>
5
6<#assign classNameId = ClassNameLocalService.getClassNameId(
7 "com.liferay.journal.model.JournalArticle")>
8
9<#assign structures = DDMStructureLocalService.getStructures(
10 themeDisplay.getScopeGroupId(),
11 classNameId)>
12
13<#assign publicationStructureKey = "">
14<#list structures as structure>
15 <#assign title = structure.getName(locale)>
16 <#if title == "Publicación">
17 <#assign publicationStructureKey = structure.getStructureKey()>
18 </#if>
19</#list>
20
21<#if selectionStyle == "dynamic" >
22<#assign aeq = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery")/>
23<#assign pathKey = serviceLocator.findService("es.cv.urlfilter.service.PathKeyLocalService")>
24<#assign pathValue = serviceLocator.findService("es.cv.urlfilter.service.PathValueLocalService")>
25<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
26<#assign AssetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")>
27<#assign pfu = serviceLocator.findService("com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil")>
28<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
29
30
31<#assign language = locale.getLanguage()!"es" />
32 <#assign custom_language = "Es"
33 language_url = "/"+language>
34
35 <#if language == "es">
36 <#assign custom_language = "Es">
37 <#elseif language == "en">
38 <#assign custom_language = "En">
39 <#elseif language == "fr">
40 <#assign custom_language = "Fr">
41 <#elseif language == "de">
42 <#assign custom_language = "De">
43 <#elseif language == "ca">
44 <#assign custom_language = "Va"
45 language_url="/va" >
46 </#if>
47
48
49
50<#assign slugs = {
51 "province": (avtContext.provinceSlug)!'',
52 "township": (avtContext.townshipSlug)!'',
53 "type": (avtContext.typeSlug)!'',
54 "subtype": (avtContext.subtypeSlug)!'',
55 "segment": (avtContext.segmentSlug)!'',
56 "subsegment": (avtContext.subsegmentSlug)!'',
57 "resource": (avtContext.resourceSlug)!''
58 } />
59
60<#assign dinamicPage = "false">
61<#assign typePathKey = "">
62<#assign idPathKey = 0>
63<#assign slug = "">
64
65<#assign queryValues0 = [] >
66<#if portletPreferences["queryValues0"]??>
67 <#assign queryValues0 = portletPreferences["queryValues0"] >
68</#if>
69
70
71<#if portletPreferences["orderByColumn1"]??>
72 <#assign orders1 = portletPreferences["orderByColumn1"] >
73</#if>
74
75<#if portletPreferences["orderByColumn2"]??>
76 <#assign orders2 = portletPreferences["orderByColumn2"] >
77</#if>
78
79<#assign queryValues1 = [] >
80<#if portletPreferences["queryValues1"]??>
81 <#assign queryValues1 = portletPreferences["queryValues1"] >
82</#if>
83
84<#assign deltas = [] >
85<#if portletPreferences["delta"]??>
86 <#assign deltas = portletPreferences["delta"] >
87</#if>
88
89<#assign queryAndOperator0 = [] >
90<#if portletPreferences["queryAndOperator0"]??>
91 <#assign queryAndOperator0 = portletPreferences["queryAndOperator0"] >
92</#if>
93
94<#assign queryAndOperator1 = [] >
95<#if portletPreferences["queryAndOperator1"]??>
96 <#assign queryAndOperator1 = portletPreferences["queryAndOperator1"] >
97</#if>
98
99<#assign queryNames0 = [] >
100<#if portletPreferences["queryName0"]??>
101 <#assign queryNames0 = portletPreferences["queryName0"] >
102</#if>
103
104<#assign queryNames1 = [] >
105<#if portletPreferences["queryName1"]??>
106 <#assign queryNames1 = portletPreferences["queryName1"] >
107</#if>
108
109
110<#assign categoriesArrayAND = [] />
111<#assign categoriesArrayOR = [] />
112
113<#assign tagsArrayAND = [] />
114<#assign tagsArrayOR = [] />
115
116
117<#--Numero de elementos a mostrar-->
118<#assign size = 20?number >
119<#list deltas as delta>
120 <#assign size = delta?number >
121</#list>
122
123<#--Nombre de la primera query-->
124<#list queryNames0 as queryName0>
125 <#assign firstQuery = queryName0 >
126</#list>
127<#--Nombre de la segunda query-->
128<#list queryNames1 as queryName1>
129 <#assign secondQuery = queryName1 >
130</#list>
131
132<#--Operador de la primera query-->
133<#list queryAndOperator0 as order0Aux>
134 <#assign orderAnd0 = order0Aux >
135</#list>
136
137<#--Operador de la primera query-->
138<#list queryAndOperator1 as order1Aux>
139 <#assign orderAnd1 = order1Aux >
140</#list>
141
142
143<#if firstQuery??>
144 <#if firstQuery == "assetCategories">
145 <#list queryValues0 as queryValue0>
146 <#assign num = queryValue0?number>
147 <#if orderAnd0 == "true">
148 <#assign categoriesArrayAND = categoriesArrayAND + [ num ] />
149 </#if>
150 <#if orderAnd0 == "false">
151 <#assign categoriesArrayOR = categoriesArrayOR + [ num ] />
152 </#if>
153 </#list>
154 <#elseif firstQuery == "assetTags">
155 <#list queryValues0 as queryValue0>
156 <#assign dynamicQuery = AssetTagLocalService.dynamicQuery().add(pfu.forName("name").like("%" + queryValue0 + "%"))>
157 <#assign tags = AssetTagLocalService.dynamicQuery(dynamicQuery, 0, 1) >
158 <#list tags as tag>
159 <#if orderAnd0 == "true">
160 <#assign tagsArrayAND = tagsArrayAND + [ tag.getTagId() ] />
161 </#if>
162 <#if orderAnd0 == "false">
163 <#assign tagsArrayOR = tagsArrayOR + [ tag.getTagId() ] />
164 </#if>
165 </#list>
166 </#list>
167 </#if>
168</#if>
169
170
171<#if secondQuery??>
172 <#if secondQuery == "assetCategories">
173 <#list queryValues1 as queryValue1>
174 <#assign num = queryValue1?number>
175 <#if orderAnd1 == "true">
176 <#assign categoriesArrayAND = categoriesArrayAND + [ num ] />
177 </#if>
178 <#if orderAnd1 == "false">
179 <#assign categoriesArrayOR = categoriesArrayOR + [ num ] />
180 </#if>
181 </#list>
182 <#elseif secondQuery == "assetTags">
183 <#list queryValues1 as queryValue1>
184 <#assign dynamicQuery = AssetTagLocalService.dynamicQuery().add(pfu.forName("name").like("%" + queryValue1 + "%"))>
185 <#assign tags = AssetTagLocalService.dynamicQuery(dynamicQuery, 0, 1) >
186 <#list tags as tag>
187 <#if orderAnd1 == "true">
188 <#assign tagsArrayAND = tagsArrayAND + [ tag.getTagId() ] />
189 </#if>
190 <#if orderAnd1 == "false">
191 <#assign tagsArrayOR = tagsArrayOR + [ tag.getTagId() ] />
192 </#if>
193 </#list>
194 </#list>
195 </#if>
196</#if>
197
198
199
200
201<#if slugs["township"]?has_content && slugs["province"]?has_content>
202 <#assign typePathKey = pathKey.findByType("township")>
203 <#assign slug = slugs["township"]>
204 <#assign idPathKey = typePathKey.getKeyId()>
205 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
206
207
208 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
209 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
210 <#list categories as category>
211 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
212 </#list>
213<#elseif slugs["province"]?has_content>
214 <#assign typePathKey = pathKey.findByType("province")>
215 <#assign slug = slugs["province"]>
216
217 <#assign idPathKey = typePathKey.getKeyId()>
218 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
219 <#assign nameCategory = nameCategory + " (Provincia)">
220
221 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
222 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
223 <#list categories as category>
224 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
225 </#list>
226
227</#if>
228
229
230<#if slugs["type"]?has_content>
231 <#assign typePathKey = pathKey.findByType("type")>
232 <#assign slug = slugs["type"]>
233
234 <#assign idPathKey = typePathKey.getKeyId()>
235 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
236
237
238 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
239 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
240 <#list categories as category>
241 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
242 </#list>
243
244</#if>
245
246<#if slugs["subtype"]?has_content>
247 <#assign typePathKey = pathKey.findByType("subtype")>
248 <#assign slug = slugs["subtype"]>
249
250 <#assign idPathKey = typePathKey.getKeyId()>
251 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
252
253
254 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
255 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
256 <#list categories as category>
257 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
258 </#list>
259
260</#if>
261
262<#if slugs["segment"]?has_content>
263 <#assign typePathKey = pathKey.findByType("segment")>
264 <#assign slug = slugs["segment"]>
265
266 <#assign idPathKey = typePathKey.getKeyId()>
267 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
268
269
270 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
271 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
272 <#list categories as category>
273 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
274 </#list>
275
276</#if>
277
278
279<#if slugs["subsegment"]?has_content>
280 <#assign typePathKey = pathKey.findByType("subsegment")>
281 <#assign slug = slugs["subsegment"]>
282
283 <#assign idPathKey = typePathKey.getKeyId()>
284 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
285
286
287 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
288 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
289 <#list categories as category>
290 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
291 </#list>
292
293</#if>
294
295
296<#assign prueba = aeq.setAllCategoryIds(categoriesArrayAND) >
297<#assign prueba = aeq.setAnyCategoryIds(categoriesArrayOR) >
298
299<#assign prueba = aeq.setAllTagIds(tagsArrayAND) >
300<#assign prueba = aeq.setAnyTagIds(tagsArrayOR) >
301
302<#assign prueba = aeq.setStart(0) >
303<#assign prueba = aeq.setEnd(1000) >
304
305<#if orders1??>
306 <#assign prueba = aeq.setOrderByCol1(orders1[0]) >
307</#if>
308
309<#if orders2??>
310 <#assign prueba = aeq.setOrderByCol2(orders2[0]) >
311</#if>
312
313
314<#assign assetEntryList = AssetEntryLocalService.getEntries(aeq)>
315<#else>
316 <#assign assetEntryList = entries>
317 <#assign size = entries?size>
318 <#assign language = locale.getLanguage()!"es" />
319 <#assign language_url = "/"+language>
320 <#if language == "ca">
321 <#assign language_url="/va" >
322 </#if>
323</#if>
324
325<#assign filteredAssetEntryList = []>
326<#list assetEntryList as entry>
327 <#if entry.getAssetRenderer()??>
328 <#assign renderer = entry.getAssetRenderer()>
329 <#if renderer.getClassName() == "com.liferay.journal.model.JournalArticle">
330 <#assign article = renderer.getArticle()>
331 <#assign currentLanguageId = locale.toString()>
332 <#if article.getDDMStructureKey() == publicationStructureKey && article.getAvailableLanguageIds()?seq_contains(currentLanguageId)>
333 <#assign document = saxReaderUtil.read(article.getContentByLocale(locale))>
334 <#assign rootElement = document.getRootElement()>
335 <#assign titulo = "">
336 <#list rootElement.elements() as dynamicElement>
337 <#if dynamicElement.attributeValue("name") == "titulo">
338 <#assign titulo = dynamicElement.element("dynamic-content").getText()?trim>
339 </#if>
340 </#list>
341 <#if titulo?has_content>
342 <#assign filteredAssetEntryList = filteredAssetEntryList + [entry]>
343 </#if>
344 </#if>
345 </#if>
346 </#if>
347</#list>
348<#assign assetEntryList = filteredAssetEntryList>
349<#if assetEntryList?size gt size>
350 <#assign assetEntryList = assetEntryList[0..(size-1)]>
351</#if>
352
353<#assign pdfCarrusel = "pdf-carrusel-" + randomNamespace>
354<#if assetEntryList?has_content>
355 <#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
356 <section id="${pdfCarrusel}" class="pt-5 pb-5">
357 <h2 class="text-center title-big"> <@liferay.language key="published.last-publication"/> </h2>
358 <div class="pdf-carrusel carousel slick-carousel wrapped-content">
359 <#list assetEntryList as entry>
360 <#if entry.getAssetRenderer()??>
361 <#assign renderer = entry.getAssetRenderer()>
362 <#assign className = renderer.getClassName() >
363 <#if className == "com.liferay.journal.model.JournalArticle" >
364 <#assign journalArticle = renderer.getArticle() >
365 <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) >
366 <#assign rootElement = document.getRootElement() >
367
368 <#if language == 'ca'>
369 <#assign language = 'va'>
370 </#if>
371 <#assign articFolderAttributes = journalArticle.getFolder().getExpandoBridge().getAttributes() >
372 <#assign slugFolderTitle = "slug_" + language>
373 <#assign folderPath = articFolderAttributes[slugFolderTitle] >
374 <#assign urlFriendly=language_url + folderPath + journalArticle.getUrlTitle(themeDisplay.getLocale())>
375
376 <#assign publicacionPDF =[]
377 publicacionText=[]
378 fotodeportada="" >
379
380 <#list rootElement.elements() as dynamicElement >
381 <#if "fotodeportada" == dynamicElement.attributeValue("name") >
382 <#assign fotodeportada = dynamicElement.element("dynamic-content").getText() >
383 <#assign fotodeportadaChild = dynamicElement.selectSingleNode("/root/dynamic-element[@name='fotodeportada']/dynamic-element")>
384 <#assign descripcionimagenportada = fotodeportadaChild.element("dynamic-content").getText() >
385 </#if>
386 <#if "publicacion" == dynamicElement.attributeValue("name") >
387 <#assign publicacion = dynamicElement.element("dynamic-content").getText() >
388 <#assign publicacionElements = dynamicElement.element("dynamic-content").elements() >
389 <#list dynamicElement.element("dynamic-element").elements() as dpubli >
390 <#if dpubli.getText()?trim?length gt 0 >
391 <#assign publicacionText = publicacionText + [dpubli.getText()] >
392 </#if>
393 </#list>
394 <#list dynamicElement.elements() as algo >
395 <#if algo.getText()?trim?length gt 0 >
396 <#assign publicacionPDF = publicacionPDF + [algo.getText()] >
397 </#if>
398 </#list>
399 </#if>
400 <#if "titulo" == dynamicElement.attributeValue("name") >
401 <#assign titulo = dynamicElement.element("dynamic-content").getText() >
402 </#if>
403 </#list>
404 <#if titulo?? && titulo!=''>
405 <div class="slick-item h-100">
406 <div class="row">
407 <div class="col-4 mt-0 mb-auto">
408 <img loading="lazy" class="image-pdf w-100 image-result" aria-hidden="true" alt=""
409 <#if fotodeportada?length gt 0 > src="${fotodeportada}"
410 <#else> src="/o/main-theme/images/publicaciones.svg"
411 </#if>
412 />
413 </div>
414 <div class="col-8">
415 <p class="tag-title">
416 <a href="${urlFriendly}">${titulo}</a>
417 </p>
418 <div class="tag-download">
419 <@liferay.language key="download" />:
420 </div>
421 <#assign textpubli = "" >
422 <#list publicacionPDF as pdf >
423 <#if pdf?index lt publicacionText?size >
424 <#if pdf?length gt 0 >
425 <#if textpubli?contains(publicacionText[pdf?index]) == false >
426 <#assign textpubli = textpubli +" "+publicacionText[pdf?index] >
427 <#assign linkDescription = "" >
428 <#switch publicacionText[pdf?index]>
429 <#case 'ES'>
430 <#assign linkDescription><@liferay.language key="download.publication.pdf.spanish"/></#assign>
431 <#break>
432 <#case 'VA'>
433 <#assign linkDescription><@liferay.language key="download.publication.pdf.valencian"/></#assign>
434 <#break>
435 <#case 'EN'>
436 <#assign linkDescription><@liferay.language key="download.publication.pdf.english"/></#assign>
437 <#break>
438 <#case 'FR'>
439 <#assign linkDescription><@liferay.language key="download.publication.pdf.french"/></#assign>
440 <#break>
441 <#case 'DE'>
442 <#assign linkDescription><@liferay.language key="download.publication.pdf.german"/></#assign>
443 <#break>
444 <#case 'IT'>
445 <#assign linkDescription><@liferay.language key="download.publication.pdf.italian"/></#assign>
446 <#break>
447 <#case 'NE'>
448 <#assign linkDescription><@liferay.language key="download.publication.pdf.dutch"/></#assign>
449 <#break>
450 <#case 'POR'>
451 <#assign linkDescription><@liferay.language key="download.publication.pdf.portuguese"/></#assign>
452 <#break>
453 <#case 'POL'>
454 <#assign linkDescription><@liferay.language key="download.publication.pdf.polish"/></#assign>
455 <#break>
456 <#case 'ZH'>
457 <#assign linkDescription><@liferay.language key="download.publication.pdf.chinese"/></#assign>
458 <#break>
459 <#case 'RU'>
460 <#assign linkDescription><@liferay.language key="download.publication.pdf.russian"/></#assign>
461 <#break>
462 <#case 'JA'>
463 <#assign linkDescription><@liferay.language key="download.publication.pdf.japanese"/></#assign>
464 <#break>
465 </#switch>
466 <a class="link-pdf text-uppercase" href="${pdf}" target="_blank" download="${journalArticle.getTitle()}" aria-label="${linkDescription}">${publicacionText[pdf?index]}</a>
467 </#if>
468 </#if>
469 </#if>
470 </#list>
471 </div>
472 </div>
473 </div>
474 </#if>
475 </#if>
476 </#if>
477 </#list>
478 </div>
479 </section>
480
481
482 <style>
483 #${pdfCarrusel} { padding: 5rem 0; }
484 #${pdfCarrusel} .image-pdf { min-height: 5rem; height: auto; max-height: 10rem; object-fit: cover; margin: 0 auto; }
485 #${pdfCarrusel} .slick-item { padding: 1rem; }
486 #${pdfCarrusel} .slick-item[aria-hidden=true] { visibility: hidden; height: 0; }
487 #${pdfCarrusel} .tag-title a{ font-size: 1.4rem; text-transform: uppercase; transform: scaleX(0.9); transform-origin: left; color:#CB4F40; }
488 #${pdfCarrusel} .tag-download{ font-size: 1rem; }
489 #${pdfCarrusel} .link-pdf { font-size: 1rem; color: #0078BF; }
490 </style>
491
492
493
494 <link rel="stylesheet" type="text/css" href="slick/slick.css"/>
495 <link rel="stylesheet" type="text/css" href="slick/slick-theme.css"/>
496 <script>
497 $(window).ready(function() {
498 if(typeof $.fn.slick === 'function'){
499 var total = "${assetEntryList?size}";
500 $("#${pdfCarrusel} .pdf-carrusel:not(.slick-initialized)").slick({
501 dots: total>4,
502 arrows: false,
503 infinite: true,
504 slidesToShow: 4,
505 slidesToScroll: 4,
506 responsive: [
507 {
508 breakpoint: 1024,
509 settings: {
510 slidesToShow: 3,
511 slidesToScroll: 3,
512 infinite: true,
513 dots: true
514 }
515 },
516 {
517 breakpoint: 600,
518 settings: {
519 slidesToShow: 2,
520 slidesToScroll: 2
521 }
522 },
523 {
524 breakpoint: 480,
525 settings: {
526 slidesToShow: 1,
527 slidesToScroll: 1
528 }
529 }
530 // You can unslick at a given breakpoint now by adding:
531 // settings: "unslick"
532 // instead of a settings object
533 ]
534 });
535 }
536 });
537 </script>
538
539<#else>
540 <#assign usrRoles = user.getRoles()>
541 <style>
542 #${pdfCarrusel} .empty-message {
543 color: #c28a03;
544 font-size: 1.4rem;
545 font-weight: 600;
546 line-height: 1.2;
547 margin-top: 1rem;
548 }
549 </style>
550 <#list usrRoles as usrRole>
551 <#if usrRole.getName() == "Administrator">
552 <section id="${pdfCarrusel}" class="pt-5 pb-5">
553 <div class="text-uppercase text-center empty-message f-source-sans-pro">
554 <@liferay.language key="highlighted.search.results.empty"/>
555 </div>
556 </section>
557 </#if>
558 </#list>
559</#if>
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> serviceLocator.findService("es.cv.urlfilter.service.PathKeyLocalService") [in template "20099#20135#102529" at line 2, column 20]
----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign pathKey = serviceLocator.find... [in template "20099#20135#102529" at line 2, column 1]
----
1<#assign aeq = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery")/>
2<#assign pathKey = serviceLocator.findService("es.cv.urlfilter.service.PathKeyLocalService")>
3<#assign pathValue = serviceLocator.findService("es.cv.urlfilter.service.PathValueLocalService")>
4<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
6<#assign AssetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")>
7<#assign pfu = serviceLocator.findService("com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil")>
8<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
9
10
11<#assign language = locale.getLanguage()!"es" />
12 <#assign custom_language = "Es"
13 language_url = "/"+language>
14
15 <#if language == "es">
16 <#assign custom_language = "Es">
17 <#elseif language == "en">
18 <#assign custom_language = "En">
19 <#elseif language == "fr">
20 <#assign custom_language = "Fr">
21 <#elseif language == "de">
22 <#assign custom_language = "De">
23 <#elseif language == "ca">
24 <#assign custom_language = "Va"
25 language_url="/va" >
26 </#if>
27
28
29
30<#assign slugs = {
31 "province": (avtContext.provinceSlug)!'',
32 "township": (avtContext.townshipSlug)!'',
33 "type": (avtContext.typeSlug)!'',
34 "subtype": (avtContext.subtypeSlug)!'',
35 "segment": (avtContext.segmentSlug)!'',
36 "subsegment": (avtContext.subsegmentSlug)!'',
37 "resource": (avtContext.resourceSlug)!''
38 } />
39
40<#assign dinamicPage = "false">
41<#assign typePathKey = "">
42<#assign idPathKey = 0>
43<#assign slug = "">
44
45<#assign queryValues0 = [] >
46<#if portletPreferences["queryValues0"]??>
47 <#assign queryValues0 = portletPreferences["queryValues0"] >
48</#if>
49
50
51<#if portletPreferences["orderByColumn1"]??>
52 <#assign orders1 = portletPreferences["orderByColumn1"] >
53</#if>
54
55<#if portletPreferences["orderByColumn2"]??>
56 <#assign orders2 = portletPreferences["orderByColumn2"] >
57</#if>
58
59<#assign queryValues1 = [] >
60<#if portletPreferences["queryValues1"]??>
61 <#assign queryValues1 = portletPreferences["queryValues1"] >
62</#if>
63
64<#assign deltas = [] >
65<#if portletPreferences["delta"]??>
66 <#assign deltas = portletPreferences["delta"] >
67</#if>
68
69<#assign queryAndOperator0 = [] >
70<#if portletPreferences["queryAndOperator0"]??>
71 <#assign queryAndOperator0 = portletPreferences["queryAndOperator0"] >
72</#if>
73
74<#assign queryAndOperator1 = [] >
75<#if portletPreferences["queryAndOperator1"]??>
76 <#assign queryAndOperator1 = portletPreferences["queryAndOperator1"] >
77</#if>
78
79<#assign queryNames0 = [] >
80<#if portletPreferences["queryName0"]??>
81 <#assign queryNames0 = portletPreferences["queryName0"] >
82</#if>
83
84<#assign queryNames1 = [] >
85<#if portletPreferences["queryName1"]??>
86 <#assign queryNames1 = portletPreferences["queryName1"] >
87</#if>
88
89
90<#assign categoriesArrayAND = [] />
91<#assign categoriesArrayOR = [] />
92
93<#assign tagsArrayAND = [] />
94<#assign tagsArrayOR = [] />
95
96
97<#--Numero de elementos a mostrar-->
98<#assign size = 20?number >
99<#list deltas as delta>
100 <#assign size = delta?number >
101</#list>
102
103<#--Nombre de la primera query-->
104<#list queryNames0 as queryName0>
105 <#assign firstQuery = queryName0 >
106</#list>
107<#--Nombre de la segunda query-->
108<#list queryNames1 as queryName1>
109 <#assign secondQuery = queryName1 >
110</#list>
111
112<#--Operador de la primera query-->
113<#list queryAndOperator0 as order0Aux>
114 <#assign orderAnd0 = order0Aux >
115</#list>
116
117<#--Operador de la primera query-->
118<#list queryAndOperator1 as order1Aux>
119 <#assign orderAnd1 = order1Aux >
120</#list>
121
122
123<#if firstQuery??>
124 <#if firstQuery == "assetCategories">
125 <#list queryValues0 as queryValue0>
126 <#assign num = queryValue0?number>
127 <#if orderAnd0 == "true">
128 <#assign categoriesArrayAND = categoriesArrayAND + [ num ] />
129 </#if>
130 <#if orderAnd0 == "false">
131 <#assign categoriesArrayOR = categoriesArrayOR + [ num ] />
132 </#if>
133 </#list>
134 <#elseif firstQuery == "assetTags">
135 <#list queryValues0 as queryValue0>
136 <#assign dynamicQuery = AssetTagLocalService.dynamicQuery().add(pfu.forName("name").like("%" + queryValue0 + "%"))>
137 <#assign tags = AssetTagLocalService.dynamicQuery(dynamicQuery, 0, 1) >
138 <#list tags as tag>
139 <#if orderAnd0 == "true">
140 <#assign tagsArrayAND = tagsArrayAND + [ tag.getTagId() ] />
141 </#if>
142 <#if orderAnd0 == "false">
143 <#assign tagsArrayOR = tagsArrayOR + [ tag.getTagId() ] />
144 </#if>
145 </#list>
146 </#list>
147 </#if>
148</#if>
149
150
151<#if secondQuery??>
152 <#if secondQuery == "assetCategories">
153 <#list queryValues1 as queryValue1>
154 <#assign num = queryValue1?number>
155 <#if orderAnd1 == "true">
156 <#assign categoriesArrayAND = categoriesArrayAND + [ num ] />
157 </#if>
158 <#if orderAnd1 == "false">
159 <#assign categoriesArrayOR = categoriesArrayOR + [ num ] />
160 </#if>
161 </#list>
162 <#elseif secondQuery == "assetTags">
163 <#list queryValues1 as queryValue1>
164 <#assign dynamicQuery = AssetTagLocalService.dynamicQuery().add(pfu.forName("name").like("%" + queryValue1 + "%"))>
165 <#assign tags = AssetTagLocalService.dynamicQuery(dynamicQuery, 0, 1) >
166 <#list tags as tag>
167 <#if orderAnd1 == "true">
168 <#assign tagsArrayAND = tagsArrayAND + [ tag.getTagId() ] />
169 </#if>
170 <#if orderAnd1 == "false">
171 <#assign tagsArrayOR = tagsArrayOR + [ tag.getTagId() ] />
172 </#if>
173 </#list>
174 </#list>
175 </#if>
176</#if>
177
178
179
180
181<#if slugs["township"]?has_content && slugs["province"]?has_content>
182 <#assign typePathKey = pathKey.findByType("township")>
183 <#assign slug = slugs["township"]>
184 <#assign idPathKey = typePathKey.getKeyId()>
185 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
186
187 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like(nameCategory))>
188 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
189
190 <#list categories as category>
191 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
192 </#list>
193<#elseif slugs["province"]?has_content>
194 <#assign typePathKey = pathKey.findByType("province")>
195 <#assign slug = slugs["province"]>
196
197 <#assign idPathKey = typePathKey.getKeyId()>
198 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
199 <#assign nameCategory = nameCategory + " (Provincia)">
200
201 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like(nameCategory))>
202 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
203
204 <#list categories as category>
205 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
206 </#list>
207
208</#if>
209
210
211<#if slugs["type"]?has_content>
212 <#assign typePathKey = pathKey.findByType("type")>
213 <#assign slug = slugs["type"]>
214
215 <#assign idPathKey = typePathKey.getKeyId()>
216 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
217
218
219 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
220 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
221 <#list categories as category>
222 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
223 </#list>
224
225</#if>
226
227<#if slugs["subtype"]?has_content>
228 <#assign typePathKey = pathKey.findByType("subtype")>
229 <#assign slug = slugs["subtype"]>
230
231 <#assign idPathKey = typePathKey.getKeyId()>
232 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
233
234
235 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
236 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
237 <#list categories as category>
238 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
239 </#list>
240
241</#if>
242
243<#if slugs["segment"]?has_content>
244 <#assign typePathKey = pathKey.findByType("segment")>
245 <#assign slug = slugs["segment"]>
246
247 <#assign idPathKey = typePathKey.getKeyId()>
248 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
249
250
251 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
252 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
253 <#list categories as category>
254 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
255 </#list>
256
257</#if>
258
259
260<#if slugs["subsegment"]?has_content>
261 <#assign typePathKey = pathKey.findByType("subsegment")>
262 <#assign slug = slugs["subsegment"]>
263
264 <#assign idPathKey = typePathKey.getKeyId()>
265 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
266
267
268 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
269 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
270 <#list categories as category>
271 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
272 </#list>
273
274</#if>
275
276
277<#assign prueba = aeq.setAllCategoryIds(categoriesArrayAND) >
278<#assign prueba = aeq.setAnyCategoryIds(categoriesArrayOR) >
279
280<#assign prueba = aeq.setAllTagIds(tagsArrayAND) >
281<#assign prueba = aeq.setAnyTagIds(tagsArrayOR) >
282
283<#assign prueba = aeq.setStart(0) >
284<#assign prueba = aeq.setEnd(size) >
285
286<#if orders1??>
287 <#assign prueba = aeq.setOrderByCol1(orders1[0]) >
288</#if>
289
290<#if orders2??>
291 <#assign prueba = aeq.setOrderByCol2(orders2[0]) >
292</#if>
293
294
295<#assign assetEntryList = AssetEntryLocalService.getEntries(aeq)>
296
297<#assign blogCarrusel = "blog-carrusel-" + randomNamespace>
298<#if assetEntryList?has_content>
299 <#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
300 <#assign values = portletPreferences['queryValues0'] />
301 <section id="${blogCarrusel}">
302 <h2 class="text-center title-big">
303 <#if values?has_content>
304 <#assign inMainCategories = false/>
305 <#assign mainCategories=[]/>
306 <#assign otherCategories=[]/>
307
308 <#list values as value>
309 <#assign category = AssetCategoryLocalService.getCategory(getterUtil.getLong(value))/>
310 <#if category.getParentCategoryId() == 0 >
311 <#assign vocabulary = AssetVocabularyLocalService.getAssetVocabulary(category.getVocabularyId())/>
312 <#if category.getVocabularyId() == 59789 || vocabulary.getName() == "Categorías">
313 <#assign inMainCategories = true/>
314 <#assign mainCategories = mainCategories + [AssetCategoryLocalService.getCategory(getterUtil.getLong(value))]/>
315 <#else>
316 <#assign otherCategories = otherCategories + [AssetCategoryLocalService.getCategory(getterUtil.getLong(value))]/>
317 </#if>
318 <#else>
319 <#assign otherCategories = otherCategories + [AssetCategoryLocalService.getCategory(getterUtil.getLong(value))]/>
320 </#if>
321 </#list>
322
323 <#if inMainCategories>
324 <#if mainCategories?has_content>
325 <#assign titleCategory = mainCategories?first>
326 </#if>
327 <#else>
328 <#if otherCategories?has_content>
329 <#assign titleCategory = otherCategories?first>
330 </#if>
331 </#if>
332 <#if titleCategory?has_content>
333 ${titleCategory.getTitle(themeDisplay.getLocale())}
334 </#if>
335 </#if>
336 </h2>
337 <div class="blog-carrusel">
338 <#list assetEntryList as entry>
339 <#assign renderer = entry.getAssetRenderer()>
340 <#assign className = renderer.getClassName() >
341 <#if className == "com.liferay.journal.model.JournalArticle" >
342 <#assign journalArticle = renderer.getArticle() >
343 <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) >
344 <#assign rootElement = document.getRootElement() >
345 <#list rootElement.elements() as dynamicElement >
346 <#if "fotodeportada" == dynamicElement.attributeValue("name") >
347 <#assign fotodeportada = dynamicElement.element("dynamic-content").getText() >
348 <#assign fotodeportadaChild = dynamicElement.selectSingleNode("/root/dynamic-element[@name='fotodeportada']/dynamic-element")>
349 <#assign descripcionimagenportada = fotodeportadaChild.element("dynamic-content").getText() >
350 </#if>
351 <#if "introduccion" == dynamicElement.attributeValue("name") >
352 <#assign introduccion = dynamicElement.element("dynamic-content").getText() >
353 </#if>
354 <#if "titulo" == dynamicElement.attributeValue("name") >
355 <#assign titulo = dynamicElement.element("dynamic-content").getText() >
356 </#if>
357 <#if "descripcionimagenportada" == dynamicElement.attributeValue("name") >
358 <#assign descripcionimagenportada = dynamicElement.element("dynamic-content").getText() >
359 </#if>
360 <#if "path" == dynamicElement.attributeValue("name") >
361 <#assign path = dynamicElement.element("dynamic-content").getText() >
362 </#if>
363 </#list>
364 <#if titulo?has_content>
365 <#assign locale_lang = themeDisplay.getLocale().getLanguage()>
366 <#if locale_lang == 'ca'>
367 <#assign locale_lang = 'va'>
368 </#if>
369 <#assign articFolder = journalArticle.getFolder().getExpandoBridge().getAttributes() >
370 <#assign slugArtic = "slug_" + locale_lang >
371 <#assign urlFriendly = language_url + articFolder[slugArtic] + journalArticle.getUrlTitle(themeDisplay.getLocale()) >
372 <div class="slick-item">
373 <div class="data">
374 <#if fotodeportada?has_content>
375 <#if descripcionimagenportada?has_content>
376 <img loading="lazy" class="portada-blog-carousel image-result" src="${fotodeportada}" alt="${descripcionimagenportada}" aria-hidden="true"/>
377 <#else>
378 <img loading="lazy" class="portada-blog-carousel image-result" src="${fotodeportada}" alt="" aria-hidden="true" />
379 </#if>
380 <#else>
381 <img loading="lazy" class="portada-blog-carousel image-result" src="/o/main-theme/images/no_image.png" alt="" aria-hidden="true" />
382 </#if>
383 </div>
384 <#if urlFriendly?has_content>
385 <div class="data title-medium">
386 <a href="${urlFriendly}">${titulo}</a>
387 </div>
388 </#if>
389 <!--<div class="data date-blog subtitle-result">${renderer.getDisplayDate()?date}</div> -->
390 <#if introduccion?has_content>
391 <p class="data intro-blog text-result">${introduccion}</p>
392 </#if>
393 </div>
394 </#if>
395 </#if>
396 </#list>
397 </div>
398</section>
399
400
401<style>
402#${blogCarrusel} {
403 margin: 5rem 0;
404}
405#${blogCarrusel} .portada-blog-carousel {
406 height: 20rem;
407 width: 100%;
408 object-fit: cover;
409 margin: 0 auto;
410}
411#${blogCarrusel} .slick-item {
412 padding: 0 1rem 1rem 1rem;
413}
414#${blogCarrusel} .slick-item[aria-hidden=true] {
415 visibility: hidden;
416 height: 0;
417}
418</style>
419
420<link rel="stylesheet" type="text/css" href="slick/slick.css"/> <link rel="stylesheet" type="text/css" href="slick/slick-theme.css"/>
421<script>
422 $(window).ready(function() {
423 var total = "${assetEntryList?size}";
424 if(typeof $.fn.slick === 'function'){
425 $("#${blogCarrusel} .blog-carrusel").slick({
426 dots: total>1,
427 arrows: false,
428 infinite: true,
429 slidesToShow: 1,
430 slidesToScroll: 1,
431 autoplay: true,
432 autoplaySpeed: 10000,
433 useTransform:false
434 });
435 }
436 });
437 </script>
438<#else>
439<#assign usrRoles = user.getRoles()>
440<#assign blogCarrusel = "blog-carrusel-" + randomNamespace>
441<style>
442#${blogCarrusel} .empty-message {
443 color: #c28a03;
444 font-size: 1.4rem;
445 font-weight: 600;
446 line-height: 1.2;
447 margin-top: 1rem;
448}
449</style>
450<#list usrRoles as usrRole>
451 <#if usrRole.getName() == "Administrator">
452 <section id="${blogCarrusel}" class="pt-5 pb-5">
453 <div class="text-uppercase text-center empty-message f-source-sans-pro">
454 <@liferay.language key="highlighted.search.results.empty"/>
455 </div>
456 </section>
457 </#if>
458</#list>
459</#if>