Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> entry.getContent() [in template "10136#10174#192618091" at line 107, column 102]
----
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: ${entry.getContent()} [in template "10136#10174#192618091" at line 107, column 100]
----
1<section class="unav-news-list">
2 <div class="unav-news-list__body">
3
4 <#assign categoriesParam = [] />
5 <#if request.getParameterValues("category")??>
6 <#list request.getParameterValues("category") as cat>
7 <#assign categoriesParam = categoriesParam + [cat] />
8 </#list>
9 </#if>
10 <section class="unav-news-list">
11 <div class="unav-news-list__body">
12 <#assign searchContainer = searchResultsPortletDisplayContext.searchContainer />
13 <#list searchContainer.results as document>
14 <#assign summaryDisplayContext = searchResultsPortletDisplayContext.getSearchResultSummaryDisplayContext(document) />
15 <#assign fields = document.getFields() />
16
17 <#assign entryClassPK = document.get("entryClassPK")?number?long />
18 <#assign blogsEntry = serviceLocator.findService("com.liferay.blogs.service.BlogsEntryLocalService").fetchBlogsEntry(entryClassPK) />
19
20 <#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
21 <#assign assetEntry = assetEntryLocalService.fetchEntry("com.liferay.blogs.model.BlogsEntry", blogsEntry.getEntryId()) />
22
23 <#assign categories = assetEntry.getCategories() />
24 <#assign tags = assetEntry.getTags() />
25 <#assign pendingTimesToMatchCategory = 0>
26
27 <#if categoriesParam?size != 0>
28 <#assign pendingTimesToMatchCategory = categoriesParam?size>
29 <#if categoriesParam?size <= categories?size>
30 <#list categories as cat>
31 <#if categoriesParam?seq_contains(cat.getCategoryId()?string)>
32 <#assign pendingTimesToMatchCategory = pendingTimesToMatchCategory -1>
33 </#if>
34 </#list>
35 </#if>
36 </#if>
37
38
39 <#if !summaryDisplayContext.temporarilyUnavailable && pendingTimesToMatchCategory == 0>
40 <#assign title = summaryDisplayContext.highlightedTitle>
41 <#assign layoutFriendlyURL = themeDisplay.getLayout().getFriendlyURL()>
42 <#assign altImage = title>
43 <#assign urlTitle = document.get("urlTitle")>
44 <#assign currentUrl = themeDisplay.getPortalURL()>
45 <#assign viewURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()?split("?")[0] + "/-/blogs/" + urlTitle>
46
47 <#assign entryClassName = document.get("entryClassName")>
48 <#assign entryClassPK = document.get("entryClassPK")?number?long />
49 <#assign blogsEntry = serviceLocator.findService("com.liferay.blogs.service.BlogsEntryLocalService").fetchBlogsEntry(entryClassPK) />
50 <#assign description = document.get("subtitle") />
51 <#assign coverImageURL = "" />
52 <#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
53 <#assign coverImageFileEntryId = blogsEntry.coverImageFileEntryId />
54 <#assign requestTag = request.getParameter("tag")!"">
55 <#assign requestCategories = request.getParameterValues("category")?default([]) />
56
57 <#if coverImageFileEntryId != 0>
58 <#attempt>
59 <#assign fileEntry = dlFileEntryLocalService.getDLFileEntry(coverImageFileEntryId) />
60 <#assign coverImageURL = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + fileEntry.getGroupId() + "/" + fileEntry.getUuid() />
61 <#recover>
62 </#attempt>
63 </#if>
64
65 <#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
66 <#assign assetEntry = assetEntryLocalService.fetchEntry("com.liferay.blogs.model.BlogsEntry", blogsEntry.getEntryId()) />
67 <#assign categories = assetEntry.getCategories() />
68 <#assign tags = assetEntry.getTags() />
69
70 <div class="row">
71 <div class="col-xs-12">
72 <article class="row">
73 <header class="row">
74 <div class="row categories-tags-wrapper categorias">
75 <p class="col-sm unav-category-text">
76 <#list categories as category>
77 <#assign isCategorySelected = (requestCategories?seq_contains(category.categoryId?string))?then(" selected", "") />
78 <a class="blog-category-link${isCategorySelected}" onclick="searchByCategory('${category.getCategoryId()}')">${category.getTitle(themeDisplay.getLocale())}</a>
79 </#list>
80 </p>
81 <p class="col-sm unav-category-text etiquetas">
82 <#list tags as tag>
83 <#assign isTagSelected = (tag.name == requestTag)?then(" selected", "") />
84 <a class="blog-tag-link${isTagSelected}" onclick="searchByTag('${tag.name?js_string}')">${tag.getName()}</a>
85 </#list>
86 </p>
87 </div>
88 <div class="row">
89 <h3 class="col-xs-12 titulo">
90 <a href="${viewURL}">${title}</a>
91 </h3>
92 </div>
93 </header>
94 <figure class="row">
95 <#if coverImageURL?has_content>
96 <img src="${coverImageURL}" alt="${blogsEntry.title}" class="unav-bitacora-image" />
97 </#if>
98 </figure>
99 <div class="row">
100 <div class="col-sm-4 col-xs-12 unav-xs-order-2 unav-lg-order-2">
101 <div class="row unav-link-row">
102 <a href="${viewURL}" class="unav-link__arrow-link unav-link_arrow-bitacora">Seguir leyendo</a>
103 </div>
104 </div>
105 <div class="body col-sm-12 col-xs-12 unav-xs-order-1 unav-short-div unav-lg-order-1" id="content-container-x">
106 <div class="row">
107 <p>${entry.getContent()}</p>
108 </div>
109 </div>
110 </div>
111 </article>
112 </div>
113 </div>
114 </#if>
115 </#list>
116 </div>
117 </section>
118 </div>
119</section>
120<style>
121
122<style>
123.pagination-bar nav {
124 margin: auto;
125}
126
127.unav-news-list .unav-news-list__body .row .col-xs-12 article.row div.row.unav-link-row {
128 padding-top: 0 !important;
129}
130.lfr-search-container-wrapper .list-group {
131 display: none;
132}
133.unav-bitacora-image{
134 width: 100%;
135}
136.body.caption{
137 font-size: 30px;
138 font-family: "Roboto Light", sans-serif;
139 font-weight: 300;
140 font-stretch: normal;
141 font-style: normal;
142 line-height: 1.2;
143 letter-spacing: -0.92px;
144}
145.unav-category-text{
146 font-family: "Roboto Regular", "Roboto", sans-serif;
147 font-size: 16px;
148 font-weight: normal;
149 font-stretch: normal;
150 font-style: normal;
151 /*line-height: 1.27; og*/
152 line-height: 1.9;
153}
154.unav-news-list .categories-tags-wrapper a{
155 cursor:pointer;
156 background-color: black;
157 color:white;
158 padding:3px 6px;
159 white-space: nowrap;
160}
161.unav-news-list .categories-tags-wrapper a:hover{
162 cursor:pointer;
163 background-color: initial;
164 color:initial;
165}
166.unav-news-list .categories-tags-wrapper a.selected, .unav-news-list .categories-tags-wrapper a.selected:hover{
167 background-color: #999999;
168 color:white;
169 pointer-events: none;
170 cursor: default;
171}
172.unav-news-list .categories-tags-wrapper p{
173 margin-bottom:0px!important;
174 text-transform:uppercase;
175 padding: 4px 0;
176}
177.unav-link__arrow-bitacora:before{
178 position:relative !important;
179 top:50% !important;
180 left:-60% !important;
181 content:"";
182}
183.unav-link__arrow-bitacora:after{
184 position:relative !important;
185 top:-25% !important;
186 left:-60% !important;
187 content:"";
188}
189.aui .row{
190 width: 100%;
191}
192 .unav-lg-order-1{
193 order:1;
194 }
195 .unav-lg-order-2{
196 order:2;
197 }
198@media (max-width: 768px){
199 .unav-xs-order-1{
200 order:1;
201 }
202 .unav-xs-order-2{
203 order:2;
204 }
205}
206
207 .unav-news-list .unav-news-list__body .row .col-xs-12 article.row div.row {
208 padding: 10px 0 !important;
209 }
210 p#summary {
211 padding: 0px 30px 0px 0px;
212 }
213
214 p.etiquetas {
215 text-align: end;
216 }
217 @media (max-width: 575px){
218 p.etiquetas {
219 text-align: initial;
220 }
221 }
222
223 a.blog-category-link.selected
224
225 /* Estilos puestos en el css de la pagina.
226 TODO: Borrar del css de la pangina al instalar
227 */
228
229.body.col-sm-12.col-xs-12.unav-xs-order-1.unav-lg-order-1 {
230 min-height: unset !important;
231}
232
233.unav-short-div {
234 height: unset !important;
235}
236
237article.row {
238 border-bottom: 1px solid #333 !important;
239}
240
241.unav-category-text {
242 margin: 0px !important;
243}
244
245.unav-buscador-noticia {
246 background-color: white !important;
247}
248</style>
249<script>
250 function goBack(){
251
252 let domains = "*.unav.edu,*.unav.es,*.ceit.es,*.bioma.es,*.idisna.es,*.ceit.es,*.feun.es,*.lfr.cloud";
253 let domainsSplit = domains.split(',');
254 let href = window.location.href.substring(0, window.location.href.indexOf('/-/blogs/'));
255 let isAllowedDomain = false;
256
257 domainsSplit.forEach(function(d){
258 d = d.substring(2, d.length - 1);
259 if(document.referrer.toLowerCase().includes(d)){
260 href = document.referrer;
261 isAllowedDomain = true;
262 }
263 });
264 console.log("Test goBack() allowedDomain = ",document.referrer !== Liferay.ThemeDisplay.getLayoutURL() && isAllowedDomain);
265 //other allowed domains
266 if(document.referrer !== Liferay.ThemeDisplay.getLayoutURL() && isAllowedDomain){
267 history.back();
268 }else{
269 Liferay.Util.navigate(href);
270 }
271 }
272
273
274 function searchByCategory(categoryId) {
275 var href = document.referrer;
276
277 console.log("Test searchByCategory() document.referrer = ",document.referrer !== Liferay.ThemeDisplay.getLayoutURL());
278 if(document.referrer !== Liferay.ThemeDisplay.getLayoutURL()){
279
280 var targetUrl = "";
281 if(targetUrl){
282 href = Liferay.ThemeDisplay.getPortalURL();
283 href += "/web";
284 href += targetUrl;
285 }else{
286 href = Liferay.ThemeDisplay.getLayoutURL();
287 }
288
289 href += "?sort=publishDate_sortable-";//createDate- //modified
290 href += "&type=com.liferay.blogs.model.BlogsEntry";
291 href += "&category="+categoryId;
292 href += "&site="+themeDisplay.getScopeGroupId();
293
294 }else{
295 var params = new URLSearchParams(href.split("?")[1]);
296 params.delete("category");
297 params.append("category", categoryId);
298 href = href.split("?")[0] + "?" + params.toString();
299
300 }
301 Liferay.Util.navigate(href);
302 }
303
304 function searchByTag(tagId) {
305 var href = document.referrer;
306
307 console.log("Test searchByTag() document.referrer = ",document.referrer !== Liferay.ThemeDisplay.getLayoutURL());
308 if(document.referrer !== Liferay.ThemeDisplay.getLayoutURL()){
309 var targetUrl = "";
310 if(targetUrl){
311 href = Liferay.ThemeDisplay.getPortalURL();
312 href += "/web";
313 href += targetUrl;
314 }else{
315 href = Liferay.ThemeDisplay.getLayoutURL();
316 }
317
318 href += "?sort=publishDate_sortable-";//createDate-
319 href += "&type=com.liferay.blogs.model.BlogsEntry";
320 href += "&tag="+tagId;
321 href += "&site="+themeDisplay.getScopeGroupId();
322
323 }else{
324 var params = new URLSearchParams(href.split("?")[1]);
325 params.delete("category");
326 params.delete("tag");
327 params.append("tag", tagId);
328 href = href.split("?")[0] + "?" + params.toString();
329
330 }
331 Liferay.Util.navigate(href);
332 }
333
334 function transformDiv(id, event){
335 var e = event || window.event;
336 e.preventDefault();
337 $('#'+id).toggleClass("unav-short-div");
338 }
339</script>