Youth Start: premiant el talent de joves que emprenen
S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing: ==> bannerImage.getAttribute("alt") [in template "76121110924137#32361#FICHA_EXPERIENCIA_TPL" at line 48, column 50] ---- 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: #if bannerImage?? && bannerImage.getD... [in template "76121110924137#32361#FICHA_EXPERIENCIA_TPL" at line 48, column 1] ----
1<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
2<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
3<#assign UtilsService = serviceLocator.findService("com.educaixa.common.service.EduCaixaCommonService")/>
4<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/>
5<#assign valoracionesDisplay = serviceLocator.findService("com.educaixa.services.service.RatingStatsLocalService")/>
6<#assign LiteralsToolsServiceUtil = serviceLocator.findService("com.aqua.literals.util.LiteralsToolsService")/>
7<#assign language = themeDisplay.getLocale()/>
8<#assign groupId = themeDisplay.getScopeGroupId()/>
9<#assign restultsLiteral = LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.common.link.resultados") />
10<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
11<#assign httpServletRequest = serviceContext.getRequest() />
12<#assign UserBookmarkLocalService = serviceLocator.findService("com.educaixa.services.service.UserBookmarkLocalService") />
13
14<#-- get the content categories -->
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 = "${themeDisplay.getPortalURL()}/${locale.getLanguage()}${restultsLiteral}?q=" /><#assign valoracionesDisplayAverage = 0/>
20<#if valoracionesDisplay.fetchByResourcePK(themeDisplay.getScopeGroupId(),themeDisplay.getCompanyId(),article.getResourcePrimKey()) ??>
21 <#assign valoracionesDisplayValue = valoracionesDisplay.findByResourcePK(themeDisplay.getScopeGroupId(),themeDisplay.getCompanyId(),article.getResourcePrimKey()) />
22 <#assign valoracionesDisplayAverage = valoracionesDisplayValue.getAverageGlobalScore() />
23</#if>
24
25<#assign journalArticleId = .vars['reserved-article-id'].data/>
26<#assign userId =themeDisplay.getUserId()/>
27<#assign isUserBookmark = UserBookmarkLocalService.isUserBookmark(themeDisplay.getCompanyId(),userId,journalArticleId,groupId)/>
28
29<#assign resourceType = LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.seccion.experiencia") >
30
31<#-- Escape title text -->
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
41<#if subtitle.getData()??>
42 <#assign subtituloEscaped = subtitle.getData() />
43 <#assign subtituloEscaped = subtituloEscaped?replace('<p>','','r')/>
44 <#assign subtituloEscaped = subtituloEscaped?replace('</p>','','r')/>
45</#if>
46
47<#-- get image alt -->
48<#if bannerImage?? && bannerImage.getData()?? && bannerImage.getAttribute("alt") != "">
49 <#assign altImage = bannerImage.getAttribute("alt") />
50<#else>
51 <#assign altImage = titleEscaped />
52</#if>
53
54<#-- get image banner -->
55<#if bannerImage ?? && bannerImage.getData() != "" && bannerImage.getData() != "">
56 <#assign imagenthumbnailSrc = bannerImage.getData() />
57<#else>
58 <#assign imagenthumbnailSrc = "/o/educaixa-theme/images/blured-lights-experiencia.png" />
59</#if>
60
61<#assign thesaurusCategories = UtilsService.getThesaurusCategories(asset) />
62<#assign tagsCategories = UtilsService.getTagsCategories(asset) />
63<#assign categories = thesaurusCategories + tagsCategories />
64
65<#assign language = themeDisplay.getLocale()/>
66<#assign nivel_educativo_vocabularyId = assetVocabularyLocalService.getGroupVocabulary(groupId, "Nivel educativo").getVocabularyId() />
67<#assign area_conocimiento_vocabularyId = assetVocabularyLocalService.getGroupVocabulary(groupId, "Área de conocimiento").getVocabularyId() />
68<#assign competencias_vocabularyId = assetVocabularyLocalService.getGroupVocabulary(groupId, "Competencias clave").getVocabularyId() />
69
70
71<#assign nivel_educativo = []>
72<#assign area_conocimiento = []>
73<#assign competencias = []>
74<#assign objectius = []>
75
76
77<#list asset.getCategories() as cur_category>
78 <#if cur_category.vocabularyId == nivel_educativo_vocabularyId>
79 <#assign nivel_educativo = nivel_educativo + [cur_category.getTitle(language)]>
80 <#elseif cur_category.vocabularyId == area_conocimiento_vocabularyId>
81 <#assign area_conocimiento = area_conocimiento + [cur_category.getTitle(language)]>
82 <#elseif cur_category.vocabularyId == competencias_vocabularyId>
83 <#assign competencias = competencias + [cur_category.getTitle(language)]>
84 </#if>
85
86</#list>
87
88
89<#-- Login -->
90<#assign is_signed_in = themeDisplay.isSignedIn()/>
91<#assign plid = portalUtil.getPlidFromPortletId(themeDisplay.getScopeGroupId(), "EducaixaMyeducaixaLogin") />
92<#assign loginURL = portletURLFactory.create(httpServletRequest, "EducaixaMyeducaixaLogin", plid, "RENDER_PHASE") />
93${loginURL.setParameter("mvcPath", "/login_modal.jsp")}
94${loginURL.setWindowState("POP_UP")}
95
96<div class="container vertical image-view" style="padding: 0px;">
97 <div class="row">
98 <img alt="${altImage}" src="${imagenthumbnailSrc}" class="img-fluid col-lg-7" style="padding: 0px; width: auto; flex-basis: auto;" width="900" height="548">
99 <div class="box-img col-lg square">
100 <p class="box-img-pre-o color-caixa-red">${resourceType}</p>
101 <#if title?has_content>
102 <h3 class="element-title">${titleEscaped}</h3>
103 </#if>
104 <#if subtitle?has_content>
105 <p class="element-body">${subtituloEscaped}</p>
106 </#if>
107
108 <div class="valoration-row">
109 <div class="links-wrapper">
110 <#if categories?has_content>
111 <div class="bloque hide-below-980">
112 <div class="tags">
113 <#list categories as category>
114 <#-- redirects to the results page with the tag-->
115 <a onClick="updateTagsCicks('${category.getTitle(locale)}');" href="${results_url}${category.getTitle(locale)}" >${category.getTitle(locale)}</a>
116 </#list>
117 </div>
118 </div>
119 </#if>
120 </div>
121 </div>
122 <div>
123 <p></p>
124 <div class="card-share flex">
125 <div class="card-actions flex">
126 <div class="statistics">
127 <svg viewBox="0 0 36 36" class="circular-chart orange"><line x1="18" y1="-5" x2="18" y2="5" stroke="black" stroke-width="2"></line>
128 <path class="circle-bg" d="M18 2.0845
129 a 15.9155 15.9155 0 0 1 0 31.831
130 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
131 <path class="circle" stroke-dasharray="${valoracionesDisplayAverage*20}, 100" d="M18 2.0845
132 a 15.9155 15.9155 0 0 1 0 31.831
133 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
134 <text x="18" y="22" class="percentage">${valoracionesDisplayAverage}</text>
135 </svg>
136 </div>
137 <div class="share">
138 <button id="share"></button>
139 <div class="a2a_kit a2a_kit_size_32 a2a_default_style tooltip" data-a2a-title="${titleEscaped}" data-a2a-icon-color="#009AD8">
140 <a class="a2a_button_facebook"></a>
141 <a class="a2a_button_x"></a>
142 <a class="a2a_button_whatsapp"></a>
143 <a class="a2a_button_email"></a>
144 </div>
145 </div>
146 <div class="bookmark">
147 <#if is_signed_in>
148 <#if isUserBookmark>
149 <button id="bookmark" onClick="updateUserBookmark(${journalArticleId},false);" data-articleid="${journalArticleId}" class="bookmark bookmarked"></button>
150 <#else>
151 <button id="bookmark" onClick="updateUserBookmark(${journalArticleId},true);" data-articleid="${journalArticleId}" class="bookmark"></button>
152 </#if>
153 <#else>
154 <button id="bookmark" onClick="event.stopPropagation();openPopup('${loginURL}','','500', '650')"></button>
155 </#if>
156 </div>
157 </div>
158 </div>
159 </div>
160 </div>
161 </div>
162</div>
163
164<div class="container">
165 <div class="row" style="margin-top: 4%;">
166 <div class="col-lg-7">
167 <#if interviewTitle.getData()?? && interviewTitle.getData() != "">
168 <p class="main-text-title color-caixa-red">${interviewTitle.getData()}</p>
169 <p class="main-text">${interviewTitle.inteview.getData()?replace('<iframe','<iframe sandbox="allow-scripts allow-same-origin"')}</p>
170 </#if>
171 <#if highlightTitle.getData()?? && highlightTitle.getData() != "">
172 <p class="main-text-title color-caixa-red">${highlightTitle.getData()}</p>
173 <p class="main-text">${highlightTitle.highlightText.getData()?replace('<iframe','<iframe sandbox="allow-scripts allow-same-origin"')}</p>
174 <#if highlightTitle.highlightInternalFile.getData()?? && highlightTitle.highlightInternalFile.getData() != "">
175 <img alt="${title.getData()}" class="img-fluid col-lg" src="${highlightTitle.highlightInternalFile.getData()}">
176 </#if>
177 </#if>
178 <#if carrouselTitle.getData()?? && carrouselTitle.getData() != "">
179 <p class="main-text-title color-caixa-red">${carrouselTitle.getData()}</p>
180 <p class="main-text">${carrouselTitle.carrouselTxt.getData()}</p>
181 </#if>
182 <#if highlightTitle.highlightExternalVideoLink.getData()?has_content>
183 <#assign YTVideo = highlightTitle.highlightExternalVideoLink.getData()/>
184 <div class="yt-video-wrapper hide-print">
185 <iframe src="https://www.youtube.com/embed/${YTVideo}?rel=0" allowfullscreen webkitallowfullscreen mozallowfullscreen frameborder='0'></iframe>
186 </div>
187 <#elseif highlightTitle.highlightInternalFile.getData()?has_content >
188 <#assign file = DLFileEntryLocalService.getFileEntryByUuidAndGroupId(highlightTitle.highlightInternalFile.getData()?keep_after_last("/")?keep_before("?"),groupId)/>
189 <#assign mimeType = file.getMimeType()?keep_before("/")/>
190 <#if mimeType == "image">
191 <img src="${highlightTitle.highlightInternalFile.getData()}" alt="">
192 <#elseif mimeType == "video">
193 <div class="video-wrapper hide-print">
194 <video controls="" controlsList="nodownload">
195 <source src="${highlightTitle.highlightInternalFile.getData()}" type="${file.getMimeType()}">
196 </video>
197 <div class="playpause"></div>
198 </div>
199 </#if>
200 </#if>
201 </div>
202 <#-- Register content -->
203 <#if journalArticleLocalService.fetchArticle(groupId, "CAPTACION_EXPERIENCIA") ??>
204 <#assign register = journalArticleLocalService.getArticle(groupId, "CAPTACION_EXPERIENCIA")/>
205 <#if register?? && register != "">
206 <#assign registerContent = journalArticleLocalService.getArticleContent(register, register.DDMTemplateKey, "VIEW", themeDisplay.getLocale(),NULL, themeDisplay) />
207 </#if>
208 <#assign registerContent = journalArticleLocalService.getArticleContent(register, register.DDMTemplateKey, "VIEW", themeDisplay.getLocale(),NULL, themeDisplay) />
209 <div class= "captacion-ficha">
210 ${registerContent}
211 </div>
212 </#if>
213 </div>
214</div>
215
216<script>
217$( document ).ready(function() {
218 initAddThis();
219 $("a.header-back-to").attr('onClick','');
220 $("a.header-back-to").attr("href","/es/experiencias");
221 <#if language=='ca_ES'>
222 $("a.header-back-to ").attr("href","/ca/experiencias");
223 </#if>
224});
225</script>
226
227<style>
228.yt-video-wrapper iframe {
229 position: absolute;
230 top: 0;
231 left: 0;
232 width: 100%;
233 height: 100%;
234}
235.image-wrapper, .video-wrapper, .yt-video-wrapper {
236 position: relative;
237}
238.yt-video-wrapper {
239 position: relative;
240 padding-bottom: 56.25%;
241 padding-top: 25px;
242 height: 0;
243}
244.contenido-dcha-item > span {
245 width: 100%;
246 height: 1px;
247 display: inline-block;
248}
249.asset-full-content.clearfix.mb-5.default-asset-publisher.no-title > .align-items-center.d-flex.mb-2 {
250 max-width: 1140px;
251 margin: 0 auto;
252 margin-bottom: 0px;
253 margin-top:20px;
254}
255
256p.component-title.h4 span.header-back-to > a.taglib-icon::after {
257 content: "${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.atras")}";
258 color:#009AD8;
259}
260
261
262.asset-full-content.clearfix.mb-5.default-asset-publisher.no-title > .align-items-center.d-flex.mb-2 .lexicon-icon.lexicon-icon-angle-left {
263 fill: #009AD8;
264 width: 15px;
265 height: 15px;
266 margin-right: 10px;
267}
268.container.vertical.image-view.ficha-evidencias .box-img.col-lg.square {
269 box-shadow: 1px 1px 8px #d0d0d0;
270}
271
272.journal-content-article .col-lg-7 {
273 font-size: 17px;
274 line-height: 27px;
275}
276.journal-content-article p.main-text-title {
277 font-weight: bold;
278 margin-bottom: 20px;
279 font-size: 20px;
280 line-height: 30px;
281}
282
283.journal-content-article a:not([class]) {
284 color: #006fe7;
285}
286.journal-content-article a:not([class]):hover {
287 color: #0056b3;
288}
289
290.has-control-menu .lfr-asset-anchor {
291 display:inline-block;
292}
293
294.register-content a.register-button {
295 display: inline-flex;
296 justify-content: center;
297 align-items: center;
298}
299.journal-content-article .tags a {
300 color: #000000;
301}
302
303.journal-content-article .yt-video-wrapper.hide-print { margin-top:20px;}
304
305</style>