Ruta de navegación

FORUN 2021 bloque

FORUN 2024: EL FACTOR HUMANO

carrusel_avisos_2022_morado-noticias

Aplicaciones anidadas

Publicador de contenidos

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> journalArticleLocalService.fetchLatestArticle(curEntry.getClassPK())  [in template "10136#10174#29238558" at line 84, column 36]

----
Tip: If the failing expression is known to 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 article = journalArticleLocal...  [in template "10136#10174#29238558" at line 84, column 17]
----
1<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
2<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") /> 
3<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
4 
5 
6 
7 
8<#assign groupFriendlyURL = themeDisplay.getScopeGroup().getFriendlyURL() /> 
9<#assign friendlyURL = themeDisplay.getScopeGroup().getPathFriendlyURL(false,themeDisplay) + groupFriendlyURL /> 
10<#assign actualURLFriendly = portalUtil.getHost(request) + friendlyURL /> 
11<#assign scopeGroupId = themeDisplay.getScopeGroupId() /> 
12 
13<#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] /> 
14<#assign URLEncoder = staticUtil["java.net.URLEncoder"] /> 
15<#assign Normalizer = staticUtil["java.text.Normalizer"] /> 
16<#assign currentGroupSite = themeDisplay.getLayout().getGroup().getFriendlyURL()  /> 
17<#if themeDisplay.getLayout().getPrivateLayout() == true > 
18    <#assign state = themeDisplay.getPathFriendlyURLPrivateGroup()/> 
19<#else> 
20    <#assign state = themeDisplay.getPathFriendlyURLPublic()/> 
21</#if> 
22 
23 
24 
25<#assign imagen = languageUtil.get(locale, "listado.noticia.imagen")> 
26<#assign texto = languageUtil.get(locale, "listado.noticia.texto")> 
27<#assign instanceId = themeDisplay.getPortletDisplay().getId()?replace("com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_", "")> 
28<#assign originalInstanceId = themeDisplay.getPortletDisplay().getId()?replace("com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_", "")> 
29<#assign currentPageUrl = PortalUtil.getLayoutURL(themeDisplay.getLayout(),themeDisplay)> 
30<#assign currentLayoutFriendlyUrl = themeDisplay.getLayoutFriendlyURL(themeDisplay.getLayout())> 
31 
32<#-- custom fields  
33<#assign expandos = themeDisplay.getScopeGroup().getExpandoBridge().getAttributes()> 
34<#list expandos?keys as key> 
35    ${key} 
36</#list> 
37--> 
38 
39 
40<#-- site_news_asset_publisher_instance_id name of the custom field for the asset publisher instance id of the site --> 
41<#assign site_news_asset_publisher_instance_id = layout.getGroup().getExpandoBridge().getAttribute("site_news_asset_publisher_instance_id")> 
42<#-- by default the main site asset publisher id --> 
43<#assign site_news_asset_publisher_instance_id_default = layout.getGroup().getExpandoBridge().getAttributeDefault("site_news_asset_publisher_instance_id")> 
44<#-- site_news_url name of the custom field url of the news page of the site --> 
45<#assign site_news_url = themeDisplay.getScopeGroup().getExpandoBridge().getAttribute("site_news_url")> 
46<#-- by default the main site news page --> 
47<#assign site_news_url_default = themeDisplay.getScopeGroup().getExpandoBridge().getAttributeDefault("site_news_url")> 
48 
49 
50<#-- get site_news_url custom field value for the site --> 
51<#list site_news_url?keys as key> 
52	<#if key == locale> 
53		<#assign site_news_url_value = site_news_url?values[key?index]> 
54	</#if> 
55</#list> 
56 
57<#-- get site_news_url custom field default value--> 
58<#list site_news_url_default?keys as key> 
59	<#if key == locale> 
60		<#assign site_news_url_default_value = site_news_url_default?values[key?index]> 
61	</#if> 
62</#list> 
63 
64<#-- assign the url if the site has custom field. Use the default value otherwise--> 
65<#if site_news_url_value??> 
66<#else> 
67	<#if site_news_url_default_value??> 
68		<#assign site_news_url_value = site_news_url_default_value> 
69	</#if> 
70</#if> 
71 
72<#-- assign the instance id if the site has custom field. Use the default value otherwise--> 
73<#if site_news_asset_publisher_instance_id??> 
74<#else> 
75	<#if site_news_asset_publisher_instance_id_default??> 
76		<#assign site_news_asset_publisher_instance_id = site_news_asset_publisher_instance_id_default> 
77	</#if> 
78</#if> 
79 
80  
81<section class="unav-news-list"> 
82    <#if entries?has_content> 
83    	<#list entries as curEntry> 
84    		<#assign article = journalArticleLocalService.fetchLatestArticle(curEntry.getClassPK()) /> 
85    		<#assign assetRendererDate = curEntry.getAssetRenderer() /> 
86            <#assign contentFecha = assetRendererDate.getDisplayDate()?date /> 
87            <#assign contentFechaURLString = contentFecha?date?string["dd/MM/yyyy"] /> 
88            <#assign contentFechaString = contentFecha?date?string["dd | MM | yyyy"] /> 
89 
90    		 <#assign aArticleXML = saxReaderUtil.read(article.getContentByLocale(locale)) /> 
91    		 <#assign tituloNoticia = aArticleXML.valueOf("//dynamic-element[@name='Titulo_noticia']/dynamic-content/text()") /> 
92    		 <#assign autorNombre = aArticleXML.valueOf("//dynamic-element[@name='Nombre_autor']/dynamic-content/text()") /> 
93    		 <#assign autorImagen = aArticleXML.valueOf("//dynamic-element[@name='Autor_imagen']/dynamic-content/text()") /> 
94    		 <#assign jsonObjectString = aArticleXML.valueOf("//dynamic-element[@name='Imagen']/dynamic-content/text()") /> 
95    		  
96    		 <#assign video = aArticleXML.valueOf("//dynamic-element[@name='Video_youtube']/dynamic-content/text()") /> 
97    		  
98    		 <#assign friendlyContentURL = assetPublisherHelper.getAssetViewURL(portalUtil.getLiferayPortletRequest(renderRequest), portalUtil.getLiferayPortletResponse(renderResponse), curEntry,true) /> 
99 
100            <#assign tituloNoticiaEncoded = friendlyUrlDecode(tituloNoticia)> 
101    		  
102 			<#-- Asset publisher instance id in main domain --> 
103 			<#assign mainDomainInstanceId = "lovPblW1fC70"> 
104            <#-- Urls generated always the same page for unav requirements--> 
105            <#-- In main domain, go to main news page and use that asset publisher id. Causes issues with other domains --> 
106            <#-- TODO: remove once custom fields are created--> 
107            <#assign urlNews = languageUtil.get(locale, "url.news.details", "/noticias")> 
108            <#assign instanceId = mainDomainInstanceId> 
109 			 
110 			<#-- Configure url and asset publisher instance id with customFields--> 
111 			<#-- By default configured with main domain news page and asset publisher id. Other domains have to configure it manually in the site configuration --> 
112			<#if site_news_url_value??> 
113				<#assign urlNews = site_news_url_value> 				 
114			</#if> 
115			<#if site_news_asset_publisher_instance_id??> 
116				<#assign instanceId = site_news_asset_publisher_instance_id> 				 
117			</#if> 
118 
119            <#-- WORKAROUND FOR TEMPORAL SITES GO LIVE --> 
120			<#-- lfr.cloud domain urls work differently, redirection to site news has to be adapted for it--> 
121			<#if actualURLFriendly?contains("lfr.cloud")> 
122				<#-- 1. Site with default news page. if using the default value, redirect to main site and use mainDomainInstanceId.--> 
123				<#if site_news_url_default_value == site_news_url_value> 
124					<#assign urlNews = site_news_url_value> 
125					<#assign instanceId = mainDomainInstanceId> 
126				<#else> 
127					<#-- 2. Site with custom news page. if site site_news_url_value contains /web/site/, use site_news_url_value as is and use originalInstanceId to redirect within the site--> 
128					<#if site_news_url_value?contains("/web"+groupFriendlyURL)> 
129						<#assign urlNews = site_news_url_value> 
130						<#assign instanceId = originalInstanceId> 
131						 
132					<#-- 3. Site with custom domain and custom news page. if site site_news_url_value doesn't contain /web/site/ , prepend /web/site to it, to redirect within the site--> 
133					<#else> 
134						<#assign urlNews = "/web"+groupFriendlyURL + site_news_url_value> 
135						<#assign instanceId = originalInstanceId> 
136					</#if> 
137				</#if> 
138				 
139			</#if> 
140 
141            <#assign urlDetail = urlNews+"/-/contents/"+contentFechaURLString+"/"+tituloNoticiaEncoded+"/content/"+instanceId+"/"+curEntry.getEntryId()> 
142             
143<#assign foto = "" > 
144            <a href="${urlDetail}" class="unav-news-list__item"> 
145    		  <#if jsonObjectString?? && jsonObjectString?has_content> 
146    		         <#attempt> 
147                        <#assign jsonObject = jsonObjectString?eval> 
148                        <#assign entryUuid = jsonObject.uuid /> 
149                        <#assign entryGroupId = getterUtil.getLong(jsonObject.groupId) /> 
150                        <#assign dlFileEntry = dlFileEntryLocalService.getDLFileEntryByUuidAndGroupId(entryUuid, entryGroupId) /> 
151                        <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.document.library.kernel.model.DLFileEntry", dlFileEntry.fileEntryId) /> 
152                        <#assign assetRenderer = assetEntry.assetRenderer /> 
153                        <#assign foto = assetRenderer.getURLDownload(themeDisplay) /> 
154                         
155            	        <div class="unav-news-list__img" style="background-image: url('${foto});">&nbsp;</div> 
156                    <#recover> 
157 
158                    </#attempt> 
159                  </#if>     
160                 <#if video?has_content> 
161                    <#if foto == "">  
162                          
163						<div class="unav-news-list__img" style="background-image:url(http://img.youtube.com/vi/${video}/0.jpg)">&nbsp; 
164						</div>        
165					</#if> 
166                  </#if> 
167                   
168                    <div class="unav-news-list__container-txt"> 
169                        <p class="unav__text__date">${contentFechaString}</p> 
170                         
171                        <p class="unav__text unav__text--m">${tituloNoticia}</p> 
172                     
173                        <div class="unav-news-list__info"> 
174                            <#if autorNombre?has_content> 
175                                <p class="unav-writing__info-txt"><span class="unav-writing__info-bold">${texto}</span>${autorNombre}</p> 
176                            </#if> 
177                            <#if autorImagen?has_content> 
178                                <p class="unav-writing__info-txt"><span class="unav-writing__info-bold">${imagen}</span>${autorImagen}</p> 
179                            </#if> 
180                        </div> 
181                    </div> 
182            </a> 
183    	</#list> 
184    </#if> 
185 
186     
187</section> 
188 
189<script> 
190	$(document).ready( function() { 
191		// Avoid lost focus when paginate 
192	    if ($('.lfr-pagination-buttons')) { 
193			var paginationButtons = $('.lfr-pagination-buttons').children(); 
194			for (const paginationButton of paginationButtons) {  
195				var link = $(paginationButton).children(); 
196				if(link) { 
197					$(link).click(function(e){  
198						e.preventDefault(); 
199						var url = $(this).attr('href'); 
200						window.location.href = url + '#unav-news-list'; 
201					}); 
202
203
204
205	}); 
206</script> 
207 
208<#function friendlyUrlDecode title> 
209 
210    <#assign titleFriendly = title?replace("[^A-Za-z0-9À-ú ]", "", "r")?lower_case> 
211    <#assign titleFriendly = titleFriendly?replace("á", "a", "r")> 
212    <#assign titleFriendly = titleFriendly?replace("é", "e", "r")> 
213    <#assign titleFriendly = titleFriendly?replace("í", "i", "r")> 
214    <#assign titleFriendly = titleFriendly?replace("ó", "o", "r")> 
215    <#assign titleFriendly = titleFriendly?replace("ú", "u", "r")> 
216    <#assign titleFriendly = titleFriendly?replace("ñ", "n", "r")> 
217    <#assign titleFriendly = URLEncoder.encode(titleFriendly)> 
218    <#assign titleFriendly = titleFriendly?replace("\\+", "-","r")> 
219    <#return titleFriendly> 
220</#function> 

Aplicaciones anidadas