What is
the CBIO?
The Center for Biomedical Engineering of the University of Navarra (CBIO) integrates the research and transfer that is developed in Tecnun-School of Engineering at the interface between engineering and biomedicine in partnership with others. Schoolsthe Clínica Universidad de Navarra y Cima.
Research areas
An error occurred while processing the template.
The following has evaluated to null or missing:
==> foto [in template "10136#10174#153676878" at line 190, column 118]
----
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: ${foto} [in template "10136#10174#153676878" at line 190, column 116]
----
1<#assign dateFormat = "dd|MM|yyyy">
2<#if (locale == "en_US")>
3 <#assign dateFormat = "yyyy|MM|dd">
4<#elseif (locale == "eu_ES")>
5 <#assign dateFormat = "MM|dd|yyyy">
6</#if>
7<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
8<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
9<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
10
11<#assign groupFriendlyURL = themeDisplay.getScopeGroup().getFriendlyURL() />
12<#assign friendlyURL = themeDisplay.getScopeGroup().getPathFriendlyURL(false,themeDisplay) + groupFriendlyURL />
13<#assign actualURLFriendly = portalUtil.getHost(request) + friendlyURL />
14
15
16<#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
17<#assign URLEncoder = staticUtil["java.net.URLEncoder"] />
18<#assign Normalizer = staticUtil["java.text.Normalizer"] />
19<#assign currentGroupSite = themeDisplay.getLayout().getGroup().getFriendlyURL() />
20<#if themeDisplay.getLayout().getPrivateLayout() == true >
21 <#assign state = themeDisplay.getPathFriendlyURLPrivateGroup()/>
22<#else>
23 <#assign state = themeDisplay.getPathFriendlyURLPublic()/>
24</#if>
25
26
27
28<#assign readMore = languageUtil.get(locale, "leer.mas")>
29<#assign instanceId = themeDisplay.getPortletDisplay().getId()?replace("com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_", "")>
30<#assign currentPageUrl = PortalUtil.getLayoutURL(themeDisplay.getLayout(),themeDisplay)>
31
32
33<#assign instanceId ="lovPblW1fC70">
34
35
36
37<#if entries?has_content>
38 <div class="container">
39 <div class="row">
40 <#list entries as curEntry>
41 <#assign article = journalArticleLocalService.fetchLatestArticle(curEntry.getClassPK()) />
42 <#assign assetRendererDate = curEntry.getAssetRenderer() />
43 <#assign contentFecha = article.getDisplayDate()?date />
44 <#assign contentFechaURLString = contentFecha?date?string["dd/MM/yyyy"] />
45 <#assign contentFechaString = contentFecha?date?string["dd | MM | yyyy"] />
46
47 <#assign aArticleXML = saxReaderUtil.read(article.getContentByLocale(locale)) />
48 <#assign tituloNoticia = aArticleXML.valueOf("//dynamic-element[@name='Titulo_noticia']/dynamic-content/text()") />
49 <#assign entradilla = aArticleXML.valueOf("//dynamic-element[@name='subtitulo']/dynamic-content/text()") />
50 <#assign autorNombre = aArticleXML.valueOf("//dynamic-element[@name='Nombre_autor']/dynamic-content/text()") />
51 <#assign autorImagen = aArticleXML.valueOf("//dynamic-element[@name='Autor_imagen']/dynamic-content/text()") />
52 <#assign jsonObjectString = aArticleXML.valueOf("//dynamic-element[@name='Imagen']/dynamic-content/text()") />
53 <#assign journalArticleStructure = article.getDDMStructure().getName(locale)/>
54 <#assign dateToUse = article.getDisplayDate()/>
55 <#if journalArticleStructure = "7_Noticia">
56 <#assign rawDate = aArticleXML.valueOf("//dynamic-element[@name='Fecha_noticia']/dynamic-content/text()") />
57
58<#if rawDate?has_content>
59 <#assign parsedDate = rawDate?date("yyyy-MM-dd") />
60
61 <#assign dateToUse = parsedDate />
62 <#assign contentFechaURLString = parsedDate?string["dd/MM/yyyy"] />
63 <#assign contentFechaString = parsedDate?string["dd | MM | yyyy"] />
64<#else>
65 <#assign dateToUse = article.getDisplayDate() />
66 <#assign contentFechaURLString = dateToUse?string["dd/MM/yyyy"] />
67 <#assign contentFechaString = dateToUse?string["dd | MM | yyyy"] />
68</#if>
69 </#if>
70
71 <#assign idNoticia = curEntry.getClassPK()/>
72
73 <#assign video = aArticleXML.valueOf("//dynamic-element[@name='Video_youtube']/dynamic-content/text()") />
74
75 <#assign friendlyContentURL = assetPublisherHelper.getAssetViewURL(portalUtil.getLiferayPortletRequest(renderRequest), portalUtil.getLiferayPortletResponse(renderResponse), curEntry,true) />
76
77 <#assign tituloNoticiaEncoded = friendlyUrlDecode(tituloNoticia)>
78
79 <#-- Urls generated always the same page for unav requirements -->
80 <#assign urlNews = languageUtil.get(locale, "url.news.details", "/noticias")>
81
82
83
84 <#-- WORKAROUND FOR TEMPORAL SITES GO LIVE -->
85
86 <#if scopeGroupId = 11140003>
87
88 <#assign urlNews = "/unidad-de-cultura-cientifica/noticias">
89 <#if actualURLFriendly?contains("lfr.cloud")>
90 <#assign urlNews = "/web"+groupFriendlyURL + "/unidad-de-cultura-cientifica/noticias">
91 </#if>
92
93 <#assign instanceId = "yhapDUuDh4hp">
94 </#if>
95 <#if scopeGroupId = 5284696>
96 <#if actualURLFriendly?contains("lfr.cloud")>
97 <#assign urlNews = "/web"+groupFriendlyURL + "/noticias">
98 </#if>
99 <#assign instanceId = "J0z0CEIllYkO">
100 </#if>
101 <#if scopeGroupId = 18305454>
102 <#if actualURLFriendly?contains("lfr.cloud")>
103 <#assign urlNews = "/web"+groupFriendlyURL + "/noticias">
104 </#if>
105 <#assign instanceId = "LafHSsNmQzOW">
106 </#if>
107 <#if scopeGroupId = 24729411>
108 <#if actualURLFriendly?contains("lfr.cloud")>
109 <#assign urlNews = "/web"+groupFriendlyURL + "/news">
110 </#if>
111 <#assign instanceId = "X6fAQfzqF5af">
112 </#if>
113 <#if scopeGroupId = 31657203>
114 <#if actualURLFriendly?contains("lfr.cloud")>
115 <#assign urlNews = "/web"+groupFriendlyURL + "/noticias">
116 </#if>
117 <#assign instanceId = "ja3fYkrbU86Q">
118 </#if>
119 <#if scopeGroupId = 24233193>
120 <#if actualURLFriendly?contains("lfr.cloud")>
121 <#assign urlNews = "/web"+groupFriendlyURL + "/sala-de-prensa/noticias-y-eventos">
122 </#if>
123 <#assign instanceId = "1tZ9oin6Nj8k">
124 </#if>
125 <#if scopeGroupId = 23796512>
126 <#if actualURLFriendly?contains("lfr.cloud")>
127 <#assign urlNews = "/web"+groupFriendlyURL + "/noticias">
128 </#if>
129 <#assign instanceId = "jlsoUQnQ3VKq">
130 </#if>
131 <#if scopeGroupId = 20757644>
132 <#if actualURLFriendly?contains("lfr.cloud")>
133 <#assign urlNews = "/web"+groupFriendlyURL + "/noticias">
134 </#if>
135 <#assign instanceId = "Hy05yqXifLyo">
136 </#if>
137 <#if scopeGroupId = 19239240>
138 <#if actualURLFriendly?contains("lfr.cloud")>
139 <#assign urlNews = "/web"+groupFriendlyURL + "/noticias">
140 </#if>
141 <#assign instanceId = "4CDvZCujBWZJ">
142 </#if>
143 <#if scopeGroupId = 25489263>
144 <#if actualURLFriendly?contains("lfr.cloud")>
145 <#assign urlNews = "/web"+groupFriendlyURL + "/noticias">
146 </#if>
147 <#assign instanceId = "Hk7OgfYuivNX">
148 </#if>
149 <#if scopeGroupId = 5318873>
150 <#if actualURLFriendly?contains("lfr.cloud")>
151 <#assign urlNews = "/web"+groupFriendlyURL + "/el-museo/noticias">
152 </#if>
153 <#assign instanceId = "Hw8G">
154 </#if>
155 <#assign urlDetail = urlNews+"/-/contents/"+contentFechaURLString+"/"+tituloNoticiaEncoded+"/content/"+instanceId+"/"+curEntry.getEntryId()>
156
157
158
159
160
161
162
163 <#if validator.isNotNull(video)>
164
165
166 <#assign foto = "http://img.youtube.com/vi/"+video+"/0.jpg">
167
168 <#else>
169
170 <#if jsonObjectString?? && jsonObjectString?has_content>
171 <#attempt>
172 <#assign jsonObject = jsonObjectString?eval>
173 <#assign entryUuid = jsonObject.uuid />
174 <#assign entryGroupId = getterUtil.getLong(jsonObject.groupId) />
175 <#assign dlFileEntry = dlFileEntryLocalService.getDLFileEntryByUuidAndGroupId(entryUuid, entryGroupId) />
176 <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.document.library.kernel.model.DLFileEntry", dlFileEntry.fileEntryId) />
177 <#assign assetRenderer = assetEntry.assetRenderer />
178 <#assign foto = assetRenderer.getURLDownload(themeDisplay) />
179
180
181 <#recover>
182 <#assign foto = "" />
183
184 </#attempt>
185
186 </#if>
187 </#if>
188 <a id="${idNoticia}" class="col-xs-12 col-md-4 noticia-secundaria" href="${urlDetail}" alt="" title="">
189 <div class="col-xs-12 panel panel panel-default">
190 <div class="col-xs-12 col-sm-6 col-md-12 img-responsive noticia-img" style="background:url(${foto}) no-repeat"></div>
191 <div class="col-xs-12 col-sm-6 col-md-12 panel-body">
192 <p class="fecha">${dateUtil.getDate(dateToUse, dateFormat, locale)}</p>
193 <p class="antetitulo">${autorNombre}</p>
194 <h3 class="titulo">
195 <#if (tituloNoticia?length > 200)>
196 ${newsTitle[0..199]}
197 <#else>
198 ${newsTitle}
199 </#if>
200 </h3>
201 <p class="visible-md visible-lg entradilla">
202 <#if (entradilla?length > 135)>
203 ${entradilla[0..134]}
204 <#else>
205 ${intro}
206 </#if>
207 </p>
208 </div>
209 <p class="col-xs-12 col-sm-6 col-sm-offset-6 col-md-12 col-md-offset-0 enlace">
210
211 <span href="${urlDetail}">${readMore}</span>
212 </p>
213 </div>
214 </a>
215
216 <#if validator.isNotNull(video)>
217 <!-- Modal de video -->
218 <div class="modal fade modal-unav" id="noticia_${idNoticia}_modal_video" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
219 <div class="modal-dialog" role="document">
220 <div class="modal-content">
221 <div class="modal-body">
222 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
223 <span aria-hidden="true">×</span>
224 </button>
225 <div class="embed-responsive embed-responsive-16by9">
226 <iframe class="embed-responsive-item" src="" id="noticia_${idNoticia}_video_iframe" allowscriptaccess="always" allow="autoplay"></iframe>
227 </div>
228 </div>
229 </div>
230 </div>
231 </div>
232
233 <script>
234 $(document).ready(function() {
235 var $videoSrc;
236 $('#${idNoticia}.modal_opener').click(function(e) {
237 e.preventDefault();
238 $videoSrc = $(this).getData()( "src" );
239 $("#noticia_${idNoticia}_video_iframe").attr('src',$videoSrc + "?autoplay=1&modestbranding=1&showinfo=0" );
240 });
241
242 $('#noticia_${idNoticia}_modal_video button').click(function(e) {
243 $("#noticia_${idNoticia}_video_iframe").attr('src', '');
244 });
245 });
246 </script>
247 </#if>
248 </#list>
249 </div>
250 </div>
251</#if>
252
253<#function friendlyUrlDecode title>
254
255 <#assign titleFriendly = title?replace("[^A-Za-z0-9À-ú ]", "", "r")?lower_case>
256 <#assign titleFriendly = titleFriendly?replace("á", "a", "r")>
257 <#assign titleFriendly = titleFriendly?replace("é", "e", "r")>
258 <#assign titleFriendly = titleFriendly?replace("í", "i", "r")>
259 <#assign titleFriendly = titleFriendly?replace("ó", "o", "r")>
260 <#assign titleFriendly = titleFriendly?replace("ú", "u", "r")>
261 <#assign titleFriendly = titleFriendly?replace("ñ", "n", "r")>
262 <#assign titleFriendly = URLEncoder.encode(titleFriendly)>
263 <#assign titleFriendly = titleFriendly?replace("\\+", "-","r")>
264 <#return titleFriendly>
265</#function>