The following has evaluated to null or missing: ==> activityDuration [in template "10154#10192#FICHA_ACTIVIDADES_TPL" at line 115, column 19] ---- 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: ${activityDuration.getData()} [in template "10154#10192#FICHA_ACTIVIDADES_TPL" at line 115, column 17] ----
1<#-- get services -->
2<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
3<#assign UtilsService = serviceLocator.findService("com.educaixa.common.service.EduCaixaCommonService")/>
4<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
5<#assign dLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
6<#assign valoracionesDisplay = serviceLocator.findService("com.educaixa.services.service.RatingStatsLocalService")/>
7<#assign LiteralsToolsServiceUtil = serviceLocator.findService("com.aqua.literals.util.LiteralsToolsService")/>
8<#assign language = themeDisplay.getLocale()/>
9<#assign groupId = themeDisplay.getScopeGroupId()/>
10<#assign restultsLiteral = LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.common.link.resultados") />
11<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
12<#assign httpServletRequest = serviceContext.getRequest() />
13<#assign UserBookmarkLocalService = serviceLocator.findService("com.educaixa.services.service.UserBookmarkLocalService") />
14
15<#assign article = journalArticleLocalService.getArticle(getterUtil.getLong(scopeGroupId), .vars['reserved-article-id'].data) />
16<#assign asset = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", article.resourcePrimKey) />
17
18<#-- get the results URL and valoration value-->
19<#assign results_url = "https://${request.serverName}/${locale.getLanguage()}${restultsLiteral}?q=" />
20<#assign valoracionesDisplayAverage = 0/>
21<#if valoracionesDisplay.fetchByResourcePK(scopeGroupId,themeDisplay.getCompanyId(),article.getResourcePrimKey()) ??>
22 <#assign valoracionesDisplayValue = valoracionesDisplay.findByResourcePK(scopeGroupId,themeDisplay.getCompanyId(),article.getResourcePrimKey()) />
23 <#assign valoracionesDisplayAverage = valoracionesDisplayValue.getAverageGlobalScore() />
24</#if>
25
26<#assign journalArticleId = .vars['reserved-article-id'].data/>
27<#assign userId =themeDisplay.getUserId()/>
28<#assign isUserBookmark = UserBookmarkLocalService.isUserBookmark(themeDisplay.getCompanyId(),userId,journalArticleId,groupId)/>
29
30<#-- Escape title text -->
31<#assign titleEscaped = "" />
32<#if title.getData()??>
33 <#assign titleEscaped = title.getData()?replace('<p>','','r')/>
34 <#assign titleEscaped = titleEscaped?replace('</p>','','r')/>
35 <#assign titleEscaped = titleEscaped?replace('<div>','','r')/>
36 <#assign titleEscaped = titleEscaped?replace('</div>','','r')/>
37 <#assign titleEscaped = titleEscaped?replace('<h1>','','r')/>
38 <#assign titleEscaped = titleEscaped?replace('</h1>','','r')/>
39</#if>
40<#assign titleEscapedGTM = titleEscaped?replace('"','','')/>
41
42<#assign subtituloEscaped = "" />
43<#if subtitle.getData()??>
44 <#assign subtituloEscaped = subtitle.getData() />
45 <#assign subtituloEscaped = subtituloEscaped?replace('<p>','','r')/>
46 <#assign subtituloEscaped = subtituloEscaped?replace('</p>','','r')/>
47</#if>
48
49<#-- get image alt -->
50<#-- En PCC no viene ningun alt informado -->
51<#assign altImage = titleEscaped />
52
53<#-- get image banner -->
54<#if bannerImage?? && bannerImage.getData()?? && bannerImage.getData() != "">
55 <#assign imageSrc = bannerImage.getData() />
56<#else>
57 <#assign imageSrc = "/o/educaixa-theme/images/blured-lights-actividades.png" />
58</#if>
59
60<#assign thesaurusCategories = UtilsService.getThesaurusCategories(asset) />
61<#assign tagsCategories = UtilsService.getTagsCategories(asset) />
62<#assign categories = thesaurusCategories + tagsCategories />
63
64<#assign itinerancesActive = UtilsService.getDateRelatedItinerancia(journalArticleId,themeDisplay) />
65<#assign itinerances = UtilsService.getRelatedItinerancia(journalArticleId,themeDisplay) />
66
67<#-- Login -->
68<#assign is_signed_in = themeDisplay.isSignedIn()/>
69<#assign plid = portalUtil.getPlidFromPortletId(themeDisplay.getScopeGroupId(), "EducaixaMyeducaixaLogin") />
70<#assign loginURL = portletURLFactory.create(httpServletRequest, "EducaixaMyeducaixaLogin", plid, "RENDER_PHASE") />
71${loginURL.setParameter("mvcPath", "/login_modal.jsp")}
72${loginURL.setWindowState("POP_UP")}
73
74<#assign language = themeDisplay.getLocale()/>
75<#assign nivel_educativo = []>
76<#assign area_conocimiento = []>
77<#assign competencias = []>
78<#assign objectius = []>
79<#assign idiomas = []>
80
81<#list asset.getCategories() as cur_category>
82 <#if cur_category.vocabularyId == 10515>
83 <#assign nivel_educativo = nivel_educativo + [cur_category.getTitle(language)]>
84 <#elseif cur_category.vocabularyId == 6>
85 <#assign area_conocimiento = area_conocimiento + [cur_category.getTitle(language)]>
86 <#elseif cur_category.vocabularyId == 401>
87 <#assign competencias = competencias + [cur_category.getTitle(language)]>
88 <#elseif cur_category.vocabularyId == 43203>
89 <#assign objectius = objectius + [cur_category.getTitle(language)]>
90 <#elseif cur_category.vocabularyId == 13>
91 <#assign idiomas = idiomas + [cur_category.getTitle(language)]>
92 </#if>
93</#list>
94
95<div class="container vertical image-view">
96 <div class="row">
97 <img src="${imageSrc}" alt="${altImage}" width="900px" height="458px" class="video-player">
98 <div class="box-img col-lg square">
99 <p class="box-img-pre-rec" style="color: #4176DB;">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.actividad")}</p>
100 <#if title?has_content>
101 <h1 class="box-img-title-rec">${titleEscaped}</h1>
102 </#if>
103 <#if subtitle?has_content>
104 <p class="box-img-sub-title-rec">${subtituloEscaped}</p>
105 </#if>
106 <p class="box-img-categ-rec">
107 <#if categories?has_content>
108 <#list categories as category>
109 <#-- redirige la pagina de resultados por tag-->
110 <a onClick="updateTagsCicks('${category.getTitle(locale)}');" href="${results_url}${category.getTitle(locale)}" >${category.getTitle(locale)}</a>
111 </#list>
112 </#if>
113 </p>
114 <p class="box-img-price"><br>
115 ${activityDuration.getData()} <br>
116 <a href="#reservar" style="color: black;">
117 <p class="box-img-more">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.actividad.mas.fechas")}</p>
118 </a>
119 </p>
120 <hr>
121 <#if itinerancesActive>
122 <button onClick="window.location='#reservar'" class="box-img-button color-caixa-bluebox-img-button color-caixa-blue background-white">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.actividad.reservar actividad")}</button>
123 </#if>
124 <div class="card-actions flex">
125 <div class="statistics">
126 <svg viewBox="0 0 36 36" class="circular-chart orange">
127 <path class="circle-bg" d="M18 2.0845
128 a 15.9155 15.9155 0 0 1 0 31.831
129 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
130 <path class="circle" stroke-dasharray="${valoracionesDisplayAverage*20}, 100" d="M18 2.0845
131 a 15.9155 15.9155 0 0 1 0 31.831
132 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
133 <text x="18" y="22" class="percentage">${valoracionesDisplayAverage}</text>
134 </svg>
135 </div>
136 <div class="share">
137 <button id="share"></button>
138 <div class="addthis_inline_share_toolbox tooltip"></div>
139 </div>
140 <div class="bookmark">
141 <#if is_signed_in>
142 <#if isUserBookmark>
143 <button id="bookmark" onClick="updateUserBookmark(${journalArticleId},false);" data-articleid="${journalArticleId}" class="bookmark bookmarked"></button>
144 <#else>
145 <button id="bookmark" onClick="updateUserBookmark(${journalArticleId},true);" data-articleid="${journalArticleId}" class="bookmark"></button>
146 </#if>
147 <#else>
148 <button id="bookmark" onClick="event.stopPropagation();openPopup('${loginURL}','','500', '650')"></button>
149 </#if>
150 </div>
151 </div>
152 </div>
153 </div>
154</div>
155
156<#-- Categories section-->
157<div class="container vertical info-view" style="margin-top:25px;">
158 <div class="row">
159 <#if nivel_educativo?size != 0 >
160 <div class="col-lg col-xs-6 col-sm">
161 <h2 class="purple-title" style="color: #4176DB;">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.ficha.nivel.educativo")}</h2><br>
162 <#assign levels = educationLevel.getData()?replace("<p>", "<li class=\"marked\">") />
163 <#assign levels = levels?replace("</p>", "</li>") />
164 <ul>
165 ${levels}
166 </ul>
167 </div>
168 </#if>
169 <#if area_conocimiento?size != 0 >
170 <div class="col-lg col-xs-6 col-sm">
171 <h2 class="purple-title" style="color: #4176DB;">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.ficha.area.conocimiento")}</h2><br>
172 <ul>
173 <#list area_conocimiento as item>
174 <li class="marked">${item}</li>
175 </#list>
176 </ul>
177 </div>
178 </#if>
179 <#if area_conocimiento?size != 0 >
180 <div class="col-lg col-xs-6 col-sm">
181 <h2 class="purple-title" style="color: #4176DB;">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.ficha.competencias")}</h2><br>
182 <ul>
183 <#list competencias as item>
184 <li class="marked">${item}</li>
185 </#list>
186 </ul>
187 </div>
188 </#if>
189 <#if activityDuration.getData()?? && activityDuration.getData() != "" >
190 <div class="col-lg col-xs-6 col-sm">
191 <h2 class="purple-title" style="color: #4176DB;">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.ficha.duracion")}</h2><br>
192 <ul>
193 <li class="marked">${activityDuration.getData()}</li>
194 </ul>
195 </div>
196 </#if>
197 <#if idiomas?size != 0 >
198 <div class="col-lg col-xs-6 col-sm">
199 <h2 class="purple-title" style="color: #4176DB;">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.recurso.idioma")}</h2><br>
200 <ul>
201 <#list idiomas as item>
202 <li class="marked">${item}</li>
203 </#list>
204 </ul>
205 </div>
206 </#if>
207 </div>
208 <hr class="line-12" style="border: 1px solid #4176DB;">
209</div>
210
211<#-- Content section-->
212<div class="container vertical info-text">
213 <div class="row">
214 <div class="col-lg-7 col-xs-12">
215 <#if description.getData() ?? && description.getData() != "">
216 <p>${description.getData()}</p>
217 </#if>
218 <#if objective.getData() ?? && objective.getData() != "">
219 <h3 style="margin-top:45px;">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.actividad.objetivos")}</h3>
220 <div class="row" style="margin-top: 4%;">
221 <div class="col-lg-12">
222 <p>${objective.getData()}</p>
223 </div>
224 </div>
225 </#if>
226 <#if activityMoreInfo.getData() ?? && activityMoreInfo.getData() != "">
227 <h3 class="info-title" style="margin-top:45px;;color: #4176db;">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.actividad.info.adicional")}</h3>
228 <p>${activityMoreInfo.getData()}</p>
229 </#if>
230 <div class="container vertical">
231 <div class="row">
232 <div class="center-title" style="margin-top: 3%;">
233 <p id="reservar">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.actividad.otra.info")}</p>
234 </a>
235 </div>
236 <#list 0 ..< itinerances.length() as i>
237 <#if itinerances.get(i)?? && itinerances.get(i) != "">
238 <div class="row">
239 <div class="col-lg-8">
240 <#assign centerName = "" />
241 <#if itinerances.get(i).centro?? && itinerances.get(i).centro != "">
242 <#assign centerName = itinerances.get(i).centro?upper_case />
243 <#assign centerName = centerName?replace("-", " ") />
244 </#if>
245 <#if itinerances.get(i).centro?? && itinerances.get(i).centro != "">
246 <a href="/-/${itinerances.get(i).centro}">
247 <#assign centerName = itinerances.get(i).centro?upper_case />
248 <#assign centerName = centerName?replace("-", " ") />
249 <p class="activity-info center-name">${centerName}</p>
250 </a>
251 </#if>
252 <#if itinerances.get(i).dateText?? && itinerances.get(i).dateText != "">
253 <div class="activity-info">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.actividad.fecha")}
254 ${itinerances.get(i).dateText}
255 </div>
256 </#if>
257 <#if itinerances.get(i).timeText?? && itinerances.get(i).timeText != "">
258 <div class="activity-info activity-time">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.actividad.horario")}
259 ${itinerances.get(i).timeText}
260 </div>
261 </#if>
262 <#if itinerances.get(i).duration?? && itinerances.get(i).duration != "">
263 <div class="activity-info">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.actividad.duracion")}
264 ${itinerances.get(i).duration}
265 </div>
266 </#if>
267 </div>
268
269 <#if itinerances.get(i).active>
270 <div class="col-lg-4">
271 <#if itinerances.get(i).url?? && itinerances.get(i).url != "">
272 <#if is_signed_in>
273 <div class="center-link">
274 <a onClick="addGTMEvent('reserva_online', 'boton_ficha', '${titleEscapedGTM}')" href="${itinerances.get(i).url}" class="color-caixa-blue">
275 ${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.actividad.reservar")} ${centerName}
276 </a>
277 </div>
278 <#else>
279 <div class="center-link">
280 <a href="javascript:void(0);" onClick="event.stopPropagation();openPopup('${loginURL}','','500', '650')" class="color-caixa-blue">
281 ${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.actividad.reservar")} ${centerName}
282 </a>
283 </div>
284 </#if>
285 </#if>
286 </div>
287 </#if>
288 </br>
289 </div>
290 <div class=" center-info">
291 <table style="width:100%">
292 <#if itinerances.get(i).aforo?? && itinerances.get(i).aforo != "">
293 <tr>
294 <th><img class="center-info-img" src="/o/educaixa-theme/images/group-icon.PNG" width="50px" alt="grupo actividades EduCaixa"></th>
295 <td><div class="activity-info">${itinerances.get(i).aforo}</div></td>
296 </tr>
297 </#if>
298 <#if itinerances.get(i).price ?? && itinerances.get(i).price != "">
299 <tr>
300 <th><img class="center-info-img" src="/o/educaixa-theme/images/money-icon.PNG" width="50px" alt="precio actividades EduCaixa"></th>
301 <td>
302 <div class="activity-info">
303 <#if itinerances.get(i).priceText?? >
304 ${itinerances.get(i).priceText}
305 <#else>
306 ${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.ficha.gratis")}
307 </#if>
308 <#if itinerances.get(i).offer?? && itinerances.get(i).offer != "">
309 ${itinerances.get(i).offer}
310 </#if>
311 </div>
312 </td>
313 </tr>
314 </#if>
315 <#if itinerances.get(i).description?? && itinerances.get(i).description != "">
316 <tr>
317 <th><img class="center-info-img" src="/o/educaixa-theme/images/info-icon.PNG" width="50px" alt="información actividades EduCaixa"></th>
318 <td><div class="activity-info">${itinerances.get(i).description?replace(".", ".</br>")}</div></td>
319 </tr>
320 </#if>
321 </table>
322 </br>
323 </br>
324 </div>
325 </#if>
326 </#list>
327 </div>
328 </div>
329 </div>
330 <#-- Register content -->
331 <#if journalArticleLocalService.fetchArticle(groupId, "CAPTACION_ACTIVIDAD") ??>
332 <#assign register = journalArticleLocalService.getArticle(groupId, "CAPTACION_ACTIVIDAD")/>
333 <#if register?? && register != "">
334 <#assign registerContent = journalArticleLocalService.getArticleContent(register, register.DDMTemplateKey, "VIEW", themeDisplay.getLocale(), themeDisplay) />
335 </#if>
336 <#assign registerContent = journalArticleLocalService.getArticleContent(register, register.DDMTemplateKey, "VIEW", themeDisplay.getLocale(), themeDisplay) />
337 <div class= "captacion-ficha">
338 ${registerContent}
339 </div>
340 </#if>
341 </div>
342</div>
343
344<style>
345.center-name{
346 text-decoration: underline;
347 color: #4176db;
348}
349.center-link{
350 border-radius: 15px;
351 border: 1px solid #009DDF;
352 width: auto;
353 line-height: 22px;
354 text-align: center;
355}
356.center-info th {
357 width: 15%;
358}
359.center-title{
360 width: 100%;
361}
362.activity-info{
363 width: 100%;
364}
365.activity-time p{
366 display: inline;
367}
368</style>
369
370<script>
371$( document ).ready(function() {
372 initAddThis();
373});
374</script>
Valoración media global sobre 5
Basada en 0 valoraciones