Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> serviceLocator.findService("com.educaixa.utils.service.EduCaixaUtilsService")  [in template "10154#10192#BANNER_FICHA_FORMACION_PROFESORADO" at line 3, column 25]

----
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 UtilsService = serviceLocator...  [in template "10154#10192#BANNER_FICHA_FORMACION_PROFESORADO" at line 3, column 1]
----
1<#-- Services --> 
2<#assign LiteralsToolsServiceUtil = serviceLocator.findService("com.aqua.literals.util.LiteralsToolsService")/> 
3<#assign UtilsService = serviceLocator.findService("com.educaixa.utils.service.EduCaixaUtilsService")/> 
4<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/> 
5<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
6<#assign UserBookmarkLocalService = serviceLocator.findService("com.educaixa.services.service.UserBookmarkLocalService") /> 
7<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
8 
9<#-- Variables --> 
10<#assign article = JournalArticleLocalService.getArticle(getterUtil.getLong(scopeGroupId), .vars['reserved-article-id'].data) /> 
11<#assign asset = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", article.resourcePrimKey) /> 
12<#assign alreadyRated = UtilsService.alreadyRatedContent(themeDisplay, article.getResourcePrimKey(), themeDisplay.getUserId()) /> 
13<#assign rating = UtilsService.getBannerRating(themeDisplay, article.getResourcePrimKey()) /> 
14<#assign httpServletRequest = serviceContext.getRequest() /> 
15 
16<#-- Variables Globales --> 
17<#assign journalArticleId = .vars['reserved-article-id'].data/> 
18<#assign language = themeDisplay.getLocale()/> 
19<#assign groupId = themeDisplay.getScopeGroupId()/> 
20<#assign companyId =themeDisplay.getCompanyId()/> 
21<#assign userId =themeDisplay.getUserId()/> 
22<#assign is_signed_in = themeDisplay.isSignedIn()/> 
23<#assign theme_color = themeDisplay.getColorSchemeId()/> 
24<#assign plid = portalUtil.getPlidFromPortletId(themeDisplay.getScopeGroupId(), "EducaixaMyeducaixaLogin") /> 
25<#assign asset = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", article.resourcePrimKey) /> 
26<#assign loginURL = portletURLFactory.create(httpServletRequest, "EducaixaMyeducaixaLogin", plid, "RENDER_PHASE") /> 
27${loginURL.setParameter("mvcPath", "/login_modal.jsp")} 
28${loginURL.setWindowState("POP_UP")} 
29<#--assign tipologia_id = 21212598/--> 
30<#assign tipologia_id = 2/> 
31<#assign provincia_id = 9/> 
32<#assign centro_flc_id = 18/> 
33 
34<#assign tipo_actividad = ""> 
35<#attempt> 
36    <#list asset.getCategories() as cur_category> 
37    	<#if cur_category.vocabularyId == tipologia_id> 
38    		<#assign tipo_actividad = "- " + cur_category.getTitle(language)> 
39    		<#break> 
40    	</#if> 
41    </#list> 
42<#recover> 
43</#attempt> 
44<#assign bannerImageAlt = title.getData()> 
45<#assign isUserBookmark = UserBookmarkLocalService.isUserBookmark(companyId,userId,journalArticleId,groupId)/> 
46<#assign atualURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
47<#assign readIds = "title-read,subtitle-read,datos-basicos-actividad,descripcion-actividad,objetivos-actividad,trabajo-alumnado-actividad,material-didactico-actividad,fechas-ubicaciones-actividad" > 
48<#attempt> 
49    <#if bannerImage.getData()?has_content && bannerImage.getData()??> 
50        <#assign bannerImageAlt = bannerImage.getAttribute("alt") /> 
51    </#if> 
52<#recover> 
53</#attempt> 
54<div id="banner-ficha-formacion" class="banner-ficha-general"> 
55<#if bannerImage.getData()?? && bannerImage.getData() != ""> 
56	<img class="bg" alt="${bannerImageAlt}" src="${bannerImage.getData()}" /> 
57</#if> 
58 
59<#--<#if ?? && bannerImage.getData() != ""> 
60	<img data-fileentryid="${bannerImage.getAttribute("fileEntryId")}" alt="${bannerImage.getAttribute("alt")}" src="${bannerImage.getData()}" class="bg"/> 
61</#if>--> 
62 
63    <div class="contenido"> 
64        <div class="tipologia-icon-formacion">&nbsp;</div> 
65        <#assign banner_opacity = "" /> 
66        <#attempt> 
67        <#if bannerOpacity?has_content && bannerOpacity.getData()?has_content> 
68            <#assign banner_opacity = "banner-opacity"/> 
69        </#if> 
70        <#recover> 
71        </#attempt> 
72        <div class="widthBannerActivity ${banner_opacity}"> 
73            <p class="tipologia">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.activity")} ${tipo_actividad}</p> 
74            <h1 id="title-read" class="banner-title blanco uppercase">${title.getData()}</h1> 
75            <p id="subtitle-read" class="banner-subtitle blanco margin-top-5 margin-bottom-10">${subtitle.getData()}</p> 
76        	 
77    		<#assign ubicaciones = ""/> 
78    		<#attempt> 
79    		<#if FBLCIDRoaming_.getSiblings()?has_content> 
80    			<#list FBLCIDRoaming_.getSiblings() as cur_FBLCIDRoaming> 
81    				<#assign centro = cur_FBLCIDRoaming.center.getData()/> 
82    				<#assign centro_id_string = centro?keep_after_last(":")?replace('"','')?replace('}','') /> 
83    				<#if centro_id_string != ""> 
84    					<#assign centro_id = centro_id_string?number /> 
85    					<#assign centroJA = JournalArticleLocalService.fetchLatestArticle(centro_id_string?number)/> 
86    					<#assign centroDoc = saxReaderUtil.read(centroJA.getContentByLocale(locale))/> 
87    					<#assign centro_entry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle",centro_id)/> 
88    					<#assign lista_centros_flc_cat = UtilsService.getCategoriesFromAssetEntryByVocabulary(centro_entry, centro_flc_id)> 
89    					<#assign isFLC_center = false/> 
90    					<#if lista_centros_flc_cat?size gt 0> 
91    						<#assign isFLC_center = true/> 
92    					</#if> 
93    					<#assign nombre = centroDoc.valueOf("//dynamic-element[@name='nombre']/dynamic-content/text()") />  
94    					<#assign lista_provincias = UtilsService.getCategoriesFromAssetEntryByVocabulary(centro_entry, provincia_id)> 
95    					<#if lista_provincias?size gt 0> 
96    					    <#assign provincia = lista_provincias[0].name/> 
97    					<#else> 
98    					    <#assign provincia = ""/> 
99    					</#if> 
100    					 
101    					<#-- if ubicaciones?has_content && (!ubicaciones?contains(nombre) || !ubicaciones?contains(provincia))> 
102    						<#assign ubicaciones = ubicaciones + " | "/>					 
103    					</#if --> 
104    					 
105    					<#if isFLC_center && !ubicaciones?contains(nombre)> 
106    						<#assign ubicaciones = ubicaciones + nombre /> 
107    						<#if !cur_FBLCIDRoaming?is_last > 
108    							<#assign ubicaciones = ubicaciones + " | "/>	 
109    						</#if> 
110    					<#else> 
111    						<#if !ubicaciones?contains(provincia) && provincia != ""> 
112    							<#assign ubicaciones = ubicaciones + provincia/> 
113    							<#if !cur_FBLCIDRoaming?is_last > 
114    								<#assign ubicaciones = ubicaciones + " | "/>	 
115    							</#if> 
116    						</#if> 
117    					</#if> 
118    				 
119    				</#if> 
120    			 
121    			</#list> 
122    		</#if> 
123    		<#recover> 
124    		</#attempt> 
125        	<p class="blanco margin-top-5 margin-bottom-10">${ubicaciones}</p> 
126    	</div> 
127		 
128		<p class="acceso"> 
129		<#assign showBooking = false/> 
130		<#attempt> 
131		<#if FBLCIDRoaming_.getSiblings()?has_content && validator.isNotNull(FBLCIDRoaming_.getData())> 
132    		<#list FBLCIDRoaming_.getSiblings() as cur_FBLCIDRoaming> 
133    			<#assign endDateItinerancy_Data = getterUtil.getString(cur_FBLCIDRoaming.endDateItinerancy.getData())> 
134    			<#if validator.isNotNull(endDateItinerancy_Data) && cur_FBLCIDRoaming.url.getData()?has_content> 
135    				<#assign endDateItinerancy_DateObj = dateUtil.parseDate("yyyy-MM-dd", endDateItinerancy_Data, locale)> 
136    				<#if validator.isNotNull(endDateItinerancy_DateObj) && !UtilsService.isExpired(endDateItinerancy_DateObj)> 
137    					<#assign showBooking = true/> 
138    				</#if> 
139    			</#if> 
140    		</#list> 
141		</#if> 
142		<#recover> 
143		</#attempt> 
144		<#if showBooking> 
145			<a onClick="javascript:followHeader();openItineranciasModal();" class="boton large small boton-actividades-formativas width-200 margin-top-50 margin-bottom-10">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.online.booking")}</a> 
146		</#if> 
147				 
148		<#if bannerVideo.getData()?has_content> 
149			<a onclick="javascript:redirectModalRecurso(${article.getResourcePrimKey()}, 'true')" class="ver-video"> 
150				${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.view.video")} 
151			</a> 
152		</#if> 
153         
154        <div id="banner-ficha-opciones"> 
155            <#if rating.hasRatings> 
156                <div class="banner-rating-wrapper margin-right-20 float-l blanco font-small opacity75"> 
157				 
158					<svg viewBox="0 0 36 36" class="banner-rating-circular-chart ${theme_color}">  
159						<path class="circle-bg" stroke-dasharray="50" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path> 
160						<path class="circle" stroke-dasharray="${rating.percentageRating}, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>  
161						<marker id="full-circle" refY="6" markerUnits="userSpaceOnUse" refX="6" markerHeight="9" markerWidth="9"> 
162							<circle cx="4" cy="6" r="2" fill="white" stroke="content-stroke" stroke-width="2"></circle> 
163						</marker> 
164						<foreignObject><span class="banner-valoracion-comentario">#{rating.rating; m1M1}</span></foreignObject>  
165					</svg> 
166 
167					<span class="banner-n-ratings">${rating.numberOfRatings} ${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.evaluations")}</span> 
168					<span class="banner-n-rating-tablet">${rating.numberOfRatings}</span> 
169				</div> 
170            </#if> 
171            <#-- anchor a D29 --> 
172            <div class="hide float-l blanco font-small opacity75"><span class="reservas-realizadas">&nbsp;</span>355 ${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.reservations.made")}</div> 
173            <a class="compartir"><span>${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.share")}</span></a>  
174			<div id="share" class="hide"> 
175				<span class="modal-close"></span> 
176				<p class="negro bold">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.share")}</p> 
177				<p class="margin-bottom-20">${title.getData()}</p> 
178				<div id="share-content"></div> 
179			</div> 
180			 
181			<#-- BOOKMARK -->	 
182			<#if is_signed_in> 
183				<#if isUserBookmark> 
184	                <a onClick="updateUserBookmark(${journalArticleId},false);" data-articleid="${journalArticleId}" class="bookmark bookmarked"></a>  
185	            <#else> 
186	                <a onClick="updateUserBookmark(${journalArticleId},true);" data-articleid="${journalArticleId}" class="bookmark"></a> 
187	            </#if> 
188			<#else> 
189				<a onClick="openPopup('${loginURL}','','500', '650')" class="bookmark"></a> 
190			</#if>		 
191			 
192             
193            <#if !alreadyRated > 
194				<#if is_signed_in> 
195					<a class="comentar" onclick="javascript:showModalValoracion()">&nbsp;</a> 
196				<#else> 
197					<a onClick="openPopup('${loginURL}','','500', '650')" class="comentar"></a> 
198				</#if> 
199            </#if> 
200            <a  href="javascript:window.print()" class="imprimir">&nbsp;</a>  
201            <a class="audio"></a> 
202			<div id="readspeaker_button" class="rs_skip rsbtn rs_preserve hide"> 
203				<a class="rsbtn_play" accesskey="L" title="Escuchar esta p&aacute;gina utilizando ReadSpeaker" 
204				href="https://app-eu.readspeaker.com/cgi-bin/rsent?customerid=9149&amp;lang=${language?lower_case}&amp;readid=${readIds}&amp;url=${atualURL}"> 
205				<span class="rsbtn_left rsimg rspart"> 
206					<span class="rsbtn_text"> 
207					<span>${LiteralsToolsServiceUtil.getLiteral(groupId, language,"com.educaixa.share")}</span> 
208					</span> 
209				</span> 
210				<span class="rsbtn_right rsimg rsplay rspart"></span> 
211				</a> 
212			</div> 
213				 
214            <div class = "banner-dots-wrapper hide-over-980" onclick="showContextualOptions();"> 
215				<svg viewBox="0 0 36 36" class="banner-dots-svg">   
216					<path class="banner-dot-circle" stroke-dasharray="100, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path> 
217				</svg> 
218				<svg viewBox="0 0 36 36" class="banner-dots-svg">   
219					<path class="banner-dot-circle" stroke-dasharray="100, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path> 
220				</svg> 
221				<svg viewBox="0 0 36 36" class="banner-dots-svg">   
222					<path class="banner-dot-circle" stroke-dasharray="100, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path> 
223				</svg> 
224			</div> 
225        </div> 
226    </div> 
227     
228    <#-- Menu contextual para res 320 --> 
229	<div id="banner-opciones-contextual" class="hide"> 
230		<#if !alreadyRated> 
231		<div class="banner-opc-contex-item"> 
232			<#if is_signed_in> 
233				<a class="comentar" onclick="javascript:showModalValoracion()"><span>Valorar</span></a> 
234			<#else> 
235				<a onClick="openPopup('${loginURL}','','500', '650')" class="comentar"></a> 
236			</#if> 
237		</div> 
238		</#if> 
239		<div class="banner-opc-contex-item"> 
240			<a class="imprimir" href="javascript:window.print()"><span>${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.print")}</span></a>  
241		</div> 
242		<div class="banner-opc-contex-item">  
243			<a class="audio"><span>${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.listen.audio")}</span></a> 
244		</div> 
245	</div> 
246     
247    <#-- Menu anclado bottom --> 
248	<div id="banner-ficha-opciones-bottom" class="hide"> 
249	    <span class="banner-title titulo actividades hide-below-980">${title.getData()}</span>  
250 
251		<#if showBooking> 
252			<a onClick="javascript:followFooter();openItineranciasModal();" class="boton medium boton-actividades-formativas width-150">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.online.booking")}</a> 
253		</#if> 
254		 
255	    <#--Compartir--> 
256	    <a class="compartir"><span>${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.share")}</span></a>  
257		<div id="share" class="hide"> 
258			<span class="modal-close"></span> 
259			<p class="negro bold">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.share")}</p> 
260			<p class="margin-bottom-20">${title.getData()}</p> 
261			<div id="share-content"></div> 
262		</div> 
263	     
264		<#-- BOOKMARK -->	 
265		<#if is_signed_in> 
266			<#if isUserBookmark> 
267                <a onClick="updateUserBookmark(${journalArticleId},false);" data-articleid="${journalArticleId}" class="bookmark ${theme_color} bookmarked"></a>  
268            <#else> 
269                <a onClick="updateUserBookmark(${journalArticleId},true);" data-articleid="${journalArticleId}" class="bookmark ${theme_color}"></a> 
270            </#if> 
271		<#else> 
272			<a onClick="openPopup('${loginURL}','','500', '650')" class="bookmark"></a> 
273		</#if>	 
274			 
275	    <#if !alreadyRated > 
276			<#if is_signed_in> 
277				<a class="comentar" onclick="javascript:showModalValoracion()"></a> 
278			<#else> 
279				<a onClick="openPopup('${loginURL}','','500', '650')" class="comentar"></a> 
280			</#if> 
281	    </#if> 
282    </div> 
283     
284</div> 
285 
286<#-- Modal confirmacion eliminar--> 
287<div id="modal-confirm-delete" class="close-modal hide"> 
288    <span class="modal-close" onclick="javascript:closeModal();"></span> 
289	<p class="center uppercase h3-copycat"> 
290		${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.are.you.sure.to.delete")} ${title.getData()}? 
291	</p> 
292	<p class=" button-wrapper center"> 
293        <a onClick="closeModal();" class="cancel uppercase boton width-150 margin-top-20 boton-blanco medium margin-bottom-10"> 
294        	${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.no.cancel")} 
295        </a> 
296        <a data-articleid="" class="delete uppercase boton width-150 margin-top-20 boton-educaixa medium margin-bottom-10"> 
297        	${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.yes.delete")} 
298        </a> 
299	</p> 
300</div> 
301 
302 
303<#-- Modal Itineraria--> 
304<#attempt> 
305<#if FBLCIDRoaming_.getSiblings()?has_content> 
306	<div id="modal-itineraria" class="modal close-modal hide"> 
307		<span class="modal-close" onclick="javascript:closeModal();"></span> 
308		<h3 class="modal-title uppercase">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.dates.and.locations")}</h3> 
309		<h5 class="center margin-top-10 margin-bottom-20">${title.getData()}</h5>		 
310		 
311		<div> 
312			<ul> 
313				<#list FBLCIDRoaming_.getSiblings() as cur_FBLCIDRoaming> 
314					<#assign startDateItinerancy_Data = getterUtil.getString(cur_FBLCIDRoaming.startDateItinerancy.getData())> 
315                    <#if validator.isNotNull(startDateItinerancy_Data)> 
316                    	<#assign startDateItinerancy_DateObj = dateUtil.parseDate("yyyy-MM-dd", startDateItinerancy_Data, locale)> 
317                    	<#assign startDate = dateUtil.getDate(startDateItinerancy_DateObj, "dd/MM/yyyy", locale)/> 
318                    </#if> 
319                     
320                    <#assign endDateItinerancy_Data = getterUtil.getString(cur_FBLCIDRoaming.endDateItinerancy.getData())> 
321                    <#if validator.isNotNull(endDateItinerancy_Data)> 
322                    	<#assign endDateItinerancy_DateObj = dateUtil.parseDate("yyyy-MM-dd", endDateItinerancy_Data, locale)> 
323                    	<#assign endDate = dateUtil.getDate(endDateItinerancy_DateObj, "dd/MM/yyyy", locale)/> 
324                    </#if> 
325 
326				<#if validator.isNotNull(endDateItinerancy_DateObj) && !UtilsService.isExpired(endDateItinerancy_DateObj)> 
327                    <#if cur_FBLCIDRoaming.duration.getData()?has_content> 
328				        <#assign activityDuration = cur_FBLCIDRoaming.duration.getData() /> 
329				    <#else> 
330				        <#assign activityDuration = "" /> 
331				    </#if> 
332					 
333					<#assign descriptionRoaming = cur_FBLCIDRoaming.descriptionRoaming.getData()/> 
334 
335					<#if cur_FBLCIDRoaming.price.priceText.getData()?has_content> 
336	                    <#if cur_FBLCIDRoaming.price.priceText.getData()?index_of("<p>") gte 0> 
337							<#assign price = cur_FBLCIDRoaming.price.priceText.getData()?keep_after("<p>")?keep_before_last("</p>")?replace("</p>","")?replace("<p>","<br>")/> 
338					    <#else> 
339		                    <#assign price = cur_FBLCIDRoaming.price.priceText.getData()/> 
340						</#if> 
341				    <#else> 
342	                    <#assign price = cur_FBLCIDRoaming.price.getData()/> 
343					</#if> 
344 
345                    <#assign aforo = cur_FBLCIDRoaming.aforo.getData() /> 
346					 
347					<#if cur_FBLCIDRoaming.timeText.getData()?has_content> 
348	                    <#if cur_FBLCIDRoaming.timeText.getData()?index_of("<p>") gte 0> 
349							<#assign timeText = cur_FBLCIDRoaming.timeText.getData()?keep_after("<p>")?keep_before_last("</p>")?replace("</p>","")?replace("<p>","<br>") /> 
350					    <#else> 
351							<#assign timeText = cur_FBLCIDRoaming.timeText.getData() /> 
352						</#if> 
353						<#assign timeText += " | "/> 
354					<#else> 
355				        <#assign timeText = "" /> 
356				    </#if> 
357					 
358					<#assign centro = cur_FBLCIDRoaming.center.getData()/> 
359					<#assign centro_id_string = centro?keep_after_last(":")?replace('"','')?replace('}','') /> 
360					 
361					<#if centro_id_string != ""> 
362						<#assign centro_id = centro_id_string?number /> 
363						<#assign centroJA = JournalArticleLocalService.fetchLatestArticle(centro_id_string?number)/> 
364						<#assign centroDoc = saxReaderUtil.read(centroJA.getContentByLocale(locale))/> 
365						<#assign centro_entry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle",centro_id)/> 
366						<#assign lista_centros_flc_cat = UtilsService.getCategoriesFromAssetEntryByVocabulary(centro_entry, centro_flc_id)> 
367						<#assign isFLC_center = false/> 
368						<#if lista_centros_flc_cat?size gt 0> 
369						    <#assign isFLC_center = true/> 
370						</#if> 
371						 
372						<#assign lista_provincias = UtilsService.getCategoriesFromAssetEntryByVocabulary(centro_entry, provincia_id)> 
373						 
374						<#assign email = centroDoc.valueOf("//dynamic-element[@name='email']/dynamic-content/text()") /> 													 
375						<#assign nombre = centroDoc.valueOf("//dynamic-element[@name='nombre']/dynamic-content/text()") /> 						 
376						<#assign telephone = centroDoc.valueOf("//dynamic-element[@name='telephone']/dynamic-content/text()")/>					 
377						<#assign provincia = lista_provincias[0].name/> 
378						<#assign mapURL = centroDoc.valueOf("//dynamic-element[@name='map']/dynamic-content/text()")/> 
379						<#assign centerImage = centroDoc.valueOf("//dynamic-element[@name='bannerImage']/dynamic-content/text()")/> 
380						 
381						<#if isFLC_center> 
382							<input type="hidden" id="modal-center-email" value="${email}"> 
383							<input type="hidden" id="modal-center-name" value="${nombre}"> 
384							<input type="hidden" id="modal-center-tel" value="${telephone}"> 
385						</#if> 
386						 
387						<li class="list-elem-ubicacion">	 
388							<div class="list-elem-ubicacion--info"> 
389								<ul> 
390									<li class="dato--horarios" style="height: 75px;"> 
391										<span class="float-l"> 
392											<p class="list-elem--fechas">${startDate} - ${endDate}</p> 
393											<p class="list-elem--provincia uppercase">${provincia}</p> 
394										</span> 
395										<#if isFLC_center> 
396										    <#if is_signed_in> 
397												<#if cur_FBLCIDRoaming.url.getData()?has_content> 
398													<#assign url_reservar = cur_FBLCIDRoaming.url.getData()/> 
399													<span class="float-r"> 
400														<a onclick="followCardPopup('${provincia}');" href="${url_reservar}" target="_blank" class="boton medium boton-actividades-formativas width-200"> 
401															${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.continue")} 
402														</a> 
403													</span> 
404												</#if>								         
405									        <#else> 
406									            <#assign httpServletRequest = serviceContext.getRequest() /> 
407												<#assign plid = portalUtil.getPlidFromPortletId(themeDisplay.getScopeGroupId(), "EducaixaMyeducaixaLogin") /> 
408												<#assign renderURL = portletURLFactory.create(httpServletRequest, "EducaixaMyeducaixaLogin", plid, "RENDER_PHASE") /> 
409												${renderURL.setParameter("mvcPath", "/login_modal.jsp")} 
410												${renderURL.setWindowState("POP_UP")} 
411									            <span class="float-r"> 
412									            	<a onClick="followCardPopup('${provincia}');openPopup('${renderURL}','','500', '650')" class="boton medium boton-actividades-formativas width-200"> 
413									            		${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.continue")} 
414									            	</a> 
415									            </span> 
416										    </#if> 
417										</#if> 
418									</li> 
419									 
420									<li class="datos-actividad"> 
421										<p class="dato-list-elem list-elem--location">${nombre} | <a href="${mapURL}" class="${theme_color}">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.how.to.get")}</a></p> 
422										<#attempt> 
423										<#if cur_FBLCIDRoaming.dateText?has_content && cur_FBLCIDRoaming.dateText.getData()?has_content> 
424										<p class="dato-list-elem list-elem--year">${cur_FBLCIDRoaming.dateText.getData()}</p> 
425										</#if> 
426										<#recover> 
427										</#attempt> 
428										<p class="dato-list-elem list-elem--duracion">${timeText}${activityDuration}</p> 
429										<#if price?has_content> 
430										    <p class="dato-list-elem list-elem--precio hidden hidden-elem">${price}</p> 
431										</#if> 
432										 
433										<#if cur_FBLCIDRoaming.aforo.getData()?has_content> 
434											<p class="dato-list-elem list-elem--aforo hidden hidden-elem">${aforo} ${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.places")}</p> 
435										</#if> 
436																				 
437										<#if cur_FBLCIDRoaming.offer.getSiblings()?has_content & cur_FBLCIDRoaming.offer.getSiblings()[0].getData()?has_content> 
438                                        	<#list cur_FBLCIDRoaming.offer.getSiblings() as cur_offer> 
439	                    					    <p class="dato-list-elem list-elem--discount hidden hidden-elem"> 
440                                            		<#if cur_offer.getData()?index_of("<p>") gte 0> 
441	                                        		    ${cur_offer.getData()?keep_after("<p>")?keep_before_last("</p>")?replace("</p>","")?replace("<p>","<br>")} 
442                                            		<#else> 
443	                                        		    ${cur_offer.getData()} 
444                                            		</#if> 
445	                                        	</p> 
446                                        	</#list> 
447                                        </#if> 
448										 
449										<#-- No especificado en el pcc--> 
450										<#--<p class="dato-list-elem list-elem--language hidden hidden-elem">${}</p>--> 
451										<#--<p class="dato-list-elem list-elem--accessibility hidden hidden-elem">???</p>--> 
452									    <#if cur_FBLCIDRoaming.group.getData()?has_content> 
453											<p class="dato-list-elem list-elem--info hidden hidden-elem"> 
454												${cur_FBLCIDRoaming.group.getData()} 
455											</p> 
456									    </#if> 
457									    <#if descriptionRoaming?has_content> 
458											<p class="dato-list-elem list-elem--info hidden hidden-elem"> 
459							                    <#if descriptionRoaming?index_of("<p>") gte 0> 
460													${descriptionRoaming?keep_after("<p>")?keep_before_last("</p>")?replace("</p>","")?replace("<p>","<br>")} 
461											    <#else> 
462													${descriptionRoaming} 
463												</#if> 
464											</p> 
465										</#if> 
466									</li> 
467									 
468									<li class="list-elem--show-details"> 
469										<a class="more show-details uppercase">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.show.details")}</a> 
470										<a class="less hide-details uppercase hidden">${LiteralsToolsServiceUtil.getLiteral(groupId, language, "com.educaixa.hide.details")}</a> 
471									</li> 
472									 
473								</ul> 
474							</div> 
475						 
476						</li> 
477					</#if> 
478				</#if> 
479				</#list> 
480			</ul> 
481		</div> 
482	</div> 
483</#if> 
484<#recover> 
485</#attempt> 
486 
487<script> 
488 
489	function openItineranciasModal(){ 
490		$('#modal-itineraria').removeClass("hide"); 
491		$('.overlay-educaixa').removeClass("hide"); 
492
493     
494 
495	AUI().ready(function(A) { 
496	    AUI().use('liferay-util-window', function(A) { 
497	        Liferay.provide(window, 'closePopupAndReload', function(dialogId) { 
498	           var A = AUI(); 
499	           var dialog = Liferay.Util.Window.getById(dialogId); 
500	           dialog.destroy(); 
501	           location.reload(); 
502	       }, 
503	       		['liferay-util-window'] 
504	       ); 
505	       Liferay.provide(window, 'closePopup', function(dialogId) { 
506	           var A = AUI(); 
507	           var dialog = Liferay.Util.Window.getById(dialogId); 
508	           dialog.destroy(); 
509	       }, 
510	       	['liferay-util-window'] 
511	       ); 
512	    });  
513	}); 
514 
515 
516	/* 
517	var title = $('.banner-ficha-general .banner-title').html(); 
518	var subtitle = $('.banner-ficha-general .banner-subtitle').html(); 
519	var image = $('.banner-ficha-general img.bg').attr('src'); 
520	 
521	var fbMetaType = "<meta property='og:type' content='website'>"; 
522	var fbMetaURL = "<meta property='og:url' content='" + atualURL + "'>"; 
523	var fbMetaTitle = "<meta property='og:title' content='" + title + "'>"; 
524	var fbMetaDesc = "<meta property='og:description' content='" + subtitle + "'>"; 
525	var fbMetaImg = "<meta property='og:image' content='https://assets.trome.pe/files/ec_article_multimedia_gallery/uploads/2018/04/17/5ad609d27c1a7.jpeg'>"; 
526	$('head').append(fbMetaType + fbMetaURL + fbMetaTitle + fbMetaDesc  + fbMetaImg); 
527	 
528	var twitterMetaCard = "<meta name='twitter:card' content='summary'>"; 
529	var twitterMetaTitle = "<meta name='twitter:title' content='" + title + "'>"; 
530	var twitterMetaDesc = "<meta name='twitter:description' content='" + subtitle + "'>"; 
531	var twitterMetaImg = "<meta name='twitter:image:src' content='" + image + "'>"; 
532	$('head').append(twitterMetaCard + twitterMetaTitle + twitterMetaDesc + twitterMetaImg); 
533	*/ 
534	 
535	$(".compartir").on('click', function (event) { 
536	 
537		$("#share-content").jsSocials({ 
538			showCount: false, 
539			showLabel: true, 
540			shares: [ { share: "facebook", label: "Facebook" },  
541					  { share: "twitter", label: "Twitter", hashtags: "EduCaixa" },  
542					  "email", "whatsapp"] 
543		}); 
544		if(!isMobile()) { 
545			$('.banner-ficha-general #share .jssocials-share-whatsapp').addClass("hide"); 
546
547		var buttonCopy = "<div class='jssocials-share' style='background-color: gray;'><a class='copyLink jssocials-share-link' onclick='copyLink()'><i class='fa fa-copy jssocials-share-logo'></i><span class='jssocials-share-label'>Copiar enlace</span></a></div>"; 
548		$(".jssocials-share-whatsapp").after(buttonCopy); 
549		$("#share").removeClass("hide"); 
550	}); 
551	 
552	$("#share  .modal-close").on('click', function (event) { 
553	 
554		$("#share").addClass("hide"); 
555	}); 
556	 
557	$(".audio").on('click', function (event) { 
558	 
559		$("#readspeaker_button").removeClass("hide"); 
560		$("#readspeaker_button .rsbtn_right.rsimg.rsplay.rspart").click(); 
561	}); 
562	 
563	$(document).ready(function(){ 
564		//Recorta texto para titulo de las fichas 
565	    if ($('.banner-ficha-general .contenido .banner-title').length) { 
566	    	trimElemAndAddTitleAt($('.banner-ficha-general .contenido .banner-title'), 60); 
567	    	trimElemAndAddTitleAt($('#banner-ficha-opciones-bottom .banner-title'), 60); 
568
569	    //Recorta texto para subtitulo de las fichas 
570	    if ($('.banner-ficha-general .contenido .banner-subtitle').length) { 
571	    	trimElemAndAddTitleAt($('.banner-ficha-general .contenido .banner-subtitle'), 60); 
572
573		 
574		$('.overlay-educaixa').on('click', function (event) { 
575			if (!$("#banner-opciones-contextual").hasClass("hide"))  { 
576				$("#banner-opciones-contextual").addClass("hide"); 
577				$('.overlay-educaixa').addClass("hide"); 
578
579		}); 
580		 
581		dataLayer.push({'idRecurso': '${article.getResourcePrimKey()}'}); 
582        <#assign nivel_educativo = []> 
583        <#assign area_conocimiento = []> 
584        <#attempt> 
585        	<#list asset.getCategories() as cur_category> 
586        	    <#if cur_category.vocabularyId == 10515> 
587        			  <#assign nivel_educativo = nivel_educativo + [cur_category.name]> 
588        	    <#elseif cur_category.vocabularyId == 6> 
589        	        <#assign area_conocimiento = area_conocimiento + [cur_category.name]> 
590        		</#if> 
591            </#list> 
592        <#recover> 
593        </#attempt> 
594        <#assign tipo_actividad1 = ""> 
595        <#attempt> 
596            <#list asset.getCategories() as cur_category> 
597            	<#if cur_category.vocabularyId == tipologia_id> 
598            		<#assign tipo_actividad1 = cur_category.name> 
599            		<#break> 
600            	</#if> 
601            </#list> 
602        <#recover> 
603        </#attempt> 
604        dataLayer.push({'nivelEducativo': '${nivel_educativo?join(";")}'}); 
605        dataLayer.push({'area': '${area_conocimiento?join(";")}'}); 
606        dataLayer.push({'tipoActividad': '${tipo_actividad1}'}); 
607         
608        <#assign pageSearch = article.getDDMStructureKey()  /> 
609        <#assign pageSearch = pageSearch?lower_case /> 
610        <#assign pageSearch = pageSearch?capitalize /> 
611        dataLayer.push({'tipoContenido': '${pageSearch}'}); 
612	}); 
613 
614 
615 
616 
617 
618function followHeader(){ 
619		dataLayer.push({'event': 'reservaonline', 'eventCategory': 'reserva_online', 'eventAction': 'boton_cabecera', eventLabel: document.location.protocol+"//"+document.location.host+document.location.pathname}); 
620
621 
622	function followFooter(){ 
623		dataLayer.push({'event': 'reservaonline', eventCategory: 'reserva_online', 'eventAction': 'boton_footer', 'eventLabel': document.location.protocol+"//"+document.location.host+document.location.pathname}); 
624
625 
626	function followCard(ciudad){ 
627	    dataLayer.push({'ciudad': ciudad}); 
628		dataLayer.push({'event': 'reservaonline', 'eventCategory': 'reserva_online', 'eventAction': 'boton_ficha', 'eventLabel': document.location.protocol+"//"+document.location.host+document.location.pathname}); 
629
630 
631	function followCardPopup(ciudad){ 
632		dataLayer.push({'ciudad': ciudad}); 
633		dataLayer.push({'event': 'reservaonline', 'eventCategory': 'reserva_online', 'eventAction': 'boton_continuar', 'eventLabel': document.location.protocol+"//"+document.location.host+document.location.pathname}); 
634
635</script> 
636 
637<style> 
638.banner-opacity{ 
639    background-color: rgb(100,100,100, 0.7); 
640
641@media only screen and (max-width: 980px) { 
642    .banner-opacity { 
643        background-color: inherit; 
644
645   
646    .widthBannerActivity{ 
647        width: 100%; 
648        padding-left: 0px; 
649
650
651 
652.widthBannerActivity{ 
653    padding-left: 10px; 
654    width:65%; 
655
656.boton.boton-actividades-formativas{ 
657    background-color: #0fb158!important; 
658    color: #fff!important; 
659
660</style> 
0.0
Aún no hay ningún comentario. Sé el primero en enviar comentarios.

Valoración media global sobre 5

Basada en 0 valoraciones