People
There are no users with this criterion
Asset Publisher
An error occurred while processing the template.
The following has evaluated to null or missing:
==> PortalClassLoaderUtil  [in template "10153#10191#7998722" at line 67, column 112]

----
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 dynamicQuery = DynamicQueryFa...  [in template "10153#10191#7998722" at line 67, column 17]
----
1<#-- ### CONSTANTES - IMPORTS - FUNCIONES ### --> 
2<#include "${templatesPath}/TEMPLATE_INIT" /> 
3<#include "${templatesPath}/TEMPLATE_FUNCTIONS" /> 
4 
5 
6<#-- ### CONSTANTES CUSTOM ### --> 
7<#assign VOCABULARY_INFO_NAMES = [CATEGORIES_VOCABULARY_NAME] /> 
8<#assign DATE_PATTERN = "dd.MM.yyyy" /> 
9<#assign URL_CURRENT = THEME_DISPLAY.getURLCurrent() /> 
10 
11<#-- ### SPECIAL LIBS ### --> 
12<#attempt> 
13	<#assign i18nblogsentryLocalService = serviceLocator.findService("org.isglobal.customblog.service.i18nblogsentryLocalService") /> 
14	<#assign ExternalPersonnelLocalService = serviceLocator.findService("org.isglobal.customblog.service.ExternalPersonnelLocalService") /> 
15	<#assign PersonaLocalService = serviceLocator.findService("org.isglobal.people.service.PersonaLocalService") /> 
16	<#assign DynamicQueryFactoryUtil = staticUtil["com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil"] /> 
17	<#assign RestrictionsFactoryUtil = staticUtil["com.liferay.portal.kernel.dao.orm.RestrictionsFactoryUtil"] /> 
18	<#assign PropertyFactoryUtil = staticUtil["com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil"] /> 
19																																																					   
20	 
21	<#assign CUSTOM_LIBS_OK =  true /> 
22<#recover> 
23	<#assign ERROR_LIST =  ERROR_LIST + [ "Error getting libs from custom-blog-portlet or isglobal-people-portlet" ] /> 
24	<#assign CUSTOM_LIBS_OK =  false /> 
25</#attempt> 
26 
27<#function _getPersonaIdFromRequest request > 
28	<#attempt> 
29		<#local originalServletRequest = portalUtil.getOriginalServletRequest(request) /> 
30		<#local parameterMap = (originalServletRequest.getParameterNames())!EMPTY_LIST /> 
31		<#list parameterMap as parameterKey > 
32			<#if parameterKey?matches(".*_personaId$") > 
33				<#return originalServletRequest.getParameter(parameterKey)?number > 
34			</#if> 
35		</#list> 
36	<#recover> 
37	</#attempt> 
38	<#return -1 > 
39</#function> 
40 
41 
42<#-- ### INFORMACION ### --> 
43 
44<#-- Estructura JSON ejemplo 
45	{"blogs" : [ 
46
47			"title" : ${}, 
48			"content" : ${}, 
49			"description" : ${}, 
50			"date" : ${}, 
51			"url" : ${}, 
52			"image" : ${}, 
53			"image_alt" : ${}, 
54			"categoryListName" : [], 
55			"categoriesString" : ${} 
56
57	]} 
58--> 
59 
60<#-- Get related posts from file author --> 
61<#assign listPosts = [] /> 
62<#assign personaId = _getPersonaIdFromRequest(request) /> 
63<#if CUSTOM_LIBS_OK && (personaId > 0) > 
64	<#assign persona = PersonaLocalService.getPersona(personaId) /> 
65	<#assign blogUserId = persona.getUserId() /> 
66	<#if (blogUserId > 0) > 
67		<#assign dynamicQuery = DynamicQueryFactoryUtil.forClass("com.liferay.blogs.model.BlogsEntry", PortalClassLoaderUtil.getClassLoader()) /> 
68		<#assign VOID = dynamicQuery.add(RestrictionsFactoryUtil.eq("userId", blogUserId)) /> 
69		<#assign VOID = dynamicQuery.addOrder(PropertyFactoryUtil.forName("displayDate").desc()) /> 
70		<#assign personaBlogs = BlogsEntryLocalService.dynamicQuery(dynamicQuery) /> 
71		<#list personaBlogs as personaBlog > 
72			<#assign personaBlogId = personaBlog.getEntryId() /> 
73			<#attempt> 
74				<#if personaBlog.getStatus() == 0 > 
75					<#assign i18nBlog = i18nblogsentryLocalService.geti18nblogsentry(personaBlogId, locale) /> 
76					<#if i18nBlog?has_content > 
77						<#assign i18nBlogId = i18nBlog.getEntryId() /> 
78						<#if !(ExternalPersonnelLocalService.findBlogId(i18nBlogId)?has_content) > 
79							<#-- El autor es interno (de ISGlobal) --> 
80							<#assign listPosts = listPosts + [personaBlog] /> 
81						</#if> 
82					</#if> 
83				</#if> 
84			<#recover> 
85			</#attempt> 
86		</#list> 
87	</#if> 
88</#if> 
89 
90<#assign blogs = [] /> 
91<#if listPosts?has_content > 
92 
93	<#-- Get Blog Info --> 
94	<#list listPosts as blogEntry> 
95 
96		<#-- creacion del objeto JSON a rellenar --> 
97			<#assign data = {} /> 
98			<#assign title = "" /> 
99			<#assign content = "" /> 
100			<#assign description = "" /> 
101			<#assign date = "" /> 
102			<#assign url = "" /> 
103			<#assign image = "" /> 
104 
105		<#-- Extraccion de informacion --> 
106			 
107			<#-- Blog info --> 
108			<#assign blogEntryId = blogEntry.getEntryId() /> 
109			<#assign blogEntryUrl = blogEntry.getUrlTitle() /> 
110			 
111			<#assign title = blogEntry.getTitle() /> 
112			<#assign content = blogEntry.getContent() /> 
113			<#if CUSTOM_LIBS_OK > 
114				<#attempt> 
115					<#assign i18nEntry = i18nblogsentryLocalService.geti18nblogsentry(blogEntryId, locale.toString()) /> 
116					<#if i18nEntry.getTitle()?has_content > 
117						<#assign title = i18nEntry.getTitle() /> 
118					</#if> 
119					<#if i18nEntry.getContent()?has_content > 
120						<#assign content = i18nEntry.getContent() /> 
121					</#if> 
122				<#recover> 
123					<#assign ERROR_LIST =  ERROR_LIST + [ "Error getting i18n Blog Title" ] /> 
124				</#attempt> 
125			</#if> 
126			<#assign description = stringUtil.shorten(htmlUtil.stripHtml(content), 150) /> 
127			 
128			<#assign date = dateUtil.getDate(blogEntry.getDisplayDate(), DATE_PATTERN, locale) /> 
129			 
130			<#assign blogUserExternalId = 0 /> 
131			<#assign url = "${HEALTH_BLOG_PATH}/${blogEntryUrl}" /> 
132			 
133			<#assign image = DEFAULT_BLOG_IMAGE /> 
134			<#if blogEntry.getSmallImageURL()?has_content > 
135				<#assign image = blogEntry.getSmallImageURL() /> 
136			</#if> 
137			 
138		<#-- Guardado de la informacion modo JSON --> 
139		 
140			<#assign data = data + {"title" : "${title}"} /> 
141			<#assign data = data + {"content" : "${content}"} /> 
142			<#assign data = data + {"description" : "${description}"} /> 
143			<#assign data = data + {"date" : "${date}"} /> 
144			<#assign data = data + {"url" : "${url}"} /> 
145			<#assign data = data + {"image" : "${image}"} /> 
146			<#assign data = data + {"image_alt" : _getAltImage(image)} /> 
147			 
148		<#-- JSON añadido a la lista de elementos --> 
149			<#assign blogs = blogs + [data] /> 
150		 
151	</#list> 
152</#if> 
153 
154<#-- ### HTML ### --> 
155<#if blogs?has_content > 
156	<aside class="interesting-items llista-blog"> 
157		<h2 class="h3"><@liferay.language key="blog-posts"/></h2> 
158		<section class="ultimes-noticies container-fluid"> 
159			<div class="container"> 
160				<div class="row slider-mixed "> 
161					<div class="slider-noticies owl-carousel owl-theme noticies-state"> 
162						 
163						<#list blogs as elem> 
164							<article class="item item-list item-post text-center col-12" data-link="${elem.url}"> 
165								<div class="wrap-image wrap-image-icon"> 
166									<img class="img-responsive" src="${elem.image}" alt="${elem.image_alt}"> 
167								</div> 
168								<div class=""> 
169									<h3 class="title"> 
170										<a href="${elem.url}">${elem.title}</a> 
171									</h3> 
172									<p class="description">${elem.description}</p> 
173									<span class="info-date">${elem.date}</span> 
174								</div> 
175							</article> 
176						</#list> 
177						 
178					</div> 
179				</div> 
180			</div> 
181		</section> 
182	</aside> 
183</#if> 
184 
185<#-- Error control --> 
186<@_errorMessage hasPermission=VIEW_ERROR_PERMISSION msgList=ERROR_LIST /> 
187<@_jsonInfo hasPermission=ADMIN_PERMISSION info=blogs />