Equipo ISGlobal
Lo siento, no tiene los roles necesarios para acceder a este portlet
Se ha producido un error al procesar la plantilla.
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 />