Publicador de contenidos

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> entContactUrl.ehucontactdataurlnewtab  [in template "10112#522485#1619238" at line 1114, column 81]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
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 newTab = getterUtil.getBoolea...  [in template "10112#522485#1619238" in macro "contactInfo" at line 1114, column 41]
	- Reached through: @contactInfo 2  [in template "10112#522485#1619238" at line 873, column 25]
----
1<#assign ddmTemplateLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMTemplateLocalService") > 
2<#assign globalGroupId = themeDisplay.getCompanyGroupId() /> 
3<#assign lisTemplates = ddmTemplateLocalService.getTemplatesByGroupId(globalGroupId) > 
4<#assign nombreTpl =  "event-comun"> 
5<#-- LOCALIZACION --> 
6<@upvlibs.VocabFormatCategories vocabularyName="kokalekuak" show=false divClass="location" /> 
7<#assign localization = upvlibs.catString > 
8<#list lisTemplates as template > 
9	<#if validator.isNotNull(locale) > 
10			<#assign templateName = template.getName(locale ) > 
11	<#else> 
12			<#assign templateName = template.getNameCurrentValue() > 
13	</#if> 
14	<#if templateName == nombreTpl > 
15			<#assign templateKey = template.getTemplateKey() > 
16	</#if> 
17</#list> 
18 
19<#include "${templatesPath}/" + "${templateKey}" /> 
20 
21<#-- GENERAL--> 
22<#assign void = ''> 
23<#assign cTxtAuthors		= languageUtil.get( locale, "ehu.authors" ) > 
24<#assign cTxtComInfo		= languageUtil.get( locale, "ehu.communication-information" ) > 
25<#assign cTxtComType		= languageUtil.get( locale, "ehu.communication-type" ) > 
26<#assign cTxtCycle			= languageUtil.get( locale, "ehu.cycle" ) > 
27<#assign cTxtDateFrom		= languageUtil.get( locale, "ehu.From" ) > 
28<#assign cTxtDateTo			= languageUtil.get( locale, "ehu.To" ) > 
29<#assign cTxtDescription	= languageUtil.get( locale, "ehu.description" ) > 
30<#assign cTxtInscription	= languageUtil.get( locale, "ehu.registration" ) > 
31<#assign cTxtMoreInfo		= languageUtil.get( locale, "ehu.more-info" ) > 
32<#assign cTxtPhoto			= languageUtil.get( locale, "ehu.photo" ) > 
33<#assign cTxtSpeaker		= languageUtil.get( locale, "ehu.speaker" ) > 
34<#assign cTxtTitle			= languageUtil.get( locale, "ehu.title" ) > 
35<#assign cTxtUrl			= languageUtil.get( locale, "ehu.url" ) > 
36<#assign cTxtNewWindow		= languageUtil.get( locale, "opens-new-window" ) > 
37<#assign scopeId = themeDisplay.scopeGroupId> 
38<#assign isCampusa = (themeDisplay.getTheme().getContextPath() == "/o/upv-ehu-campusa-theme") > 
39<#assign isGlobal = (themeDisplay.getTheme().getContextPath() == "/o/upv-ehu-global-theme") > 
40<#assign journalLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
41  
42<#if .vars['reserved-article-id']?has_content> 
43	<#assign articleId = .vars['reserved-article-id'] >  
44<#else> 
45	<#assign articleId = "">  
46</#if> 
47 
48 
49<#if !isGlobal > 
50	<#assign articleClass		= "event" > 
51	<#assign preTitleClass		= "pretitle" > 
52	<#assign titleClass			= "event-title" > 
53	<#assign datesClass			= "event_date" > 
54	<#assign cycleClass			= "cycle" > 
55	<#assign descriptionClass	= "description" > 
56	<#assign registrationClass	= "registration" > 
57	<#assign comunicationClass	= "communication" > 
58	<#assign addInfoClass		= "additional-info" > 
59<#else> 
60	<#assign articleClass		= "event-detail" > 
61	<#assign preTitleClass		= "event-detail__pretitle" > 
62	<#assign titleClass			= "event-detail__title" > 
63	<#assign datesClass			= "event-detail__featured-information__date" > 
64	<#assign cycleClass			= "event-detail__featured-information__cycle" > 
65	<#assign descriptionClass	= "event-detail__body__description" > 
66	<#assign registrationClass	= "event-detail__registration" > 
67	<#assign comunicationClass	= "event-detail__communication" > 
68	<#assign addInfoClass		= "event-detail__additional-info" > 
69</#if> 
70 
71<#assign type = "" > 
72<#assign entItem = ehugeneraldataFieldSet.ehutype > 
73<#if entItem?is_hash > 
74	<#assign eventType = entItem.getData() > 
75<#else> 
76	<#assign eventType = getterUtil.getString( entItem ) > 
77</#if> 
78<#if eventType != "" > 
79	<#if eventType != "upv-ehu-other" && eventType != "chooseAnOption"  && eventType != "upv-ehu-blank"  > 
80		<#assign type = '<span class="type">' + languageUtil.get( locale, eventType ) + '</span>' > 
81	</#if> 
82</#if> 
83 
84<#assign scope = "" > 
85<#if ehugeneraldataFieldSet.upvehuscope?? > 
86	<#assign entItem = ehugeneraldataFieldSet.upvehuscope > 
87</#if> 
88<#if entItem?is_hash > 
89	<#assign eventScope = entItem.getData() > 
90<#else> 
91	<#assign eventScope = getterUtil.getString( entItem ) > 
92</#if> 
93<#if eventScope != "" > 
94	<#if eventScope != "chooseAnOption"  && eventType != "chooseAnOption"  && eventScope != "upv-ehu-blank"  > 
95		<#assign scope = '<span class="scope">' + languageUtil.get( locale, eventScope ) + '</span>' > 
96	</#if> 
97</#if> 
98 
99<#if (type?? && type == "") || (scope?? && scope == "")> 
100	<#assign nexo = "" > 
101<#else> 
102	<#assign nexo = " " > 
103</#if> 
104<#if locale == "en_GB"> 
105	<#assign typeAndScope = scope + nexo + type > 
106<#else> 
107	<#assign typeAndScope = type + nexo + scope  > 
108</#if> 
109 
110<#-- HTML--> 
111<article class="${ articleClass }"> 
112	<#-- PRETITLE, TITLE y POSTTITLE --> 
113	<header> 
114	<#assign preTitle = "" > 
115	<#-- Hasta nuevo aviso no se pinta el "Título de la comunicación" 
116	<#if !isGlobal > 
117		<#if hayComTitle > 
118			<#assign preTitle = '<span class="communication">' + comTitle + '</span>' > 
119		</#if> 
120	<#else> 
121		<#assign preTitle = typeAndScope > 
122	</#if> 
123	--> 
124	<#assign preTitle = typeAndScope > 
125	 
126	<#-- Se dejan todos los themes con pretitle y sin (typeAndScope) tras el título --> 
127	<#if preTitle != "" > 
128		<div class="${ preTitleClass }">${ preTitle }</div> 
129	</#if> 
130	<h1 class="${ titleClass }"> 
131		${ title } 
132		<#--  
133		<#if !isGlobal > 
134			<#if typeAndScope != "" > 
135				<span class="posttitle">(${ typeAndScope })</span> 
136			</#if> 
137		</#if> 
138		 --> 
139	</h1>    
140	</header> 
141 
142		<#-- CAMPUSA VOCABULARY --> 
143		<#if !isGlobal > 
144			<#assign vocabularyName = "campusa" > 
145			<#assign tag_init = "<ul></ul>" > 
146			<#assign categories = tag_init > 
147			<@upvlibs.formatVocabularyCategoriesProperties vocabularyName=vocabularyName /> 
148			<#assign categories = upvlibs.categoriesListStr > 
149			<#if categories != tag_init  > 
150				<div class="campusa-category">${ categories }</div> 
151			</#if> 
152		</#if> 
153 
154		<#if isGlobal > 
155			<#-- clase para la informacion general --> 
156			<div class="event-detail__featured-information"> 
157		</#if> 
158 
159		<#-- FECHAS Y LOCALIZACION --> 
160		<#if !isGlobal > 
161			<#-- clase y cabecera para la informacion sobre localizacion y fechas --> 
162			<div class="date-location"> 
163			<h2><@liferay.language key="ehu.when-and-where" /></h2> 
164		</#if> 
165 
166		<#-- FECHAS --> 
167		<#-- clase para la informacion sobre fechas --> 
168		<div class="${ datesClass }"> 
169 
170			<#if isGlobal > 
171				<#-- cabecera para la informacion sobre fechas --> 
172				<h2 class="sr-only"><@liferay.language key="ehu.date" /></h2> 
173				<i class="icon-calendar-empty"></i> 
174			</#if> 
175 
176			<#assign txtDateFrom = "" > 
177			<#if  dateEnd?? && dateStart??> 
178				<#assign daysBetween = dateUtil.getDaysBetween( dateStart, dateEnd ) > 
179				<#if ( daysBetween > 0 ) > 
180					<#assign txtDateFrom = cTxtDateFrom > 
181				</#if>					 
182			<#else> 
183				<#-- Si no hay fecha de fin pintamos igualmente el texto de "Desde: " ya que sí hay fecha de inicio --> 
184				<#assign txtDateFrom = cTxtDateFrom > 
185			</#if>			 
186		 
187			<#if txtDateFrom != ""> 
188				<#assign txtDateTo = cTxtDateTo > 
189			<#else> 
190				<#assign txtDateTo = "" > 
191			</#if> 
192 
193			<#if  txtDateFrom != "" > 
194				<#if !isGlobal> 
195					<#assign txtDateFrom = txtDateFrom + ": " > 
196				<#else> 
197					<#assign txtDateFrom = "<strong>" + txtDateFrom + "</strong>">  
198				</#if> 
199			</#if> 
200			<#if  txtDateTo != "" > 
201				<#if !isGlobal> 
202					<#assign txtDateTo = txtDateTo + ": " > 
203				<#else> 
204					<#assign txtDateTo = "<strong>" + txtDateTo + "</strong>"> 
205				</#if>	 
206 
207			</#if> 
208 
209			<#-- informacion sobre fechas --> 
210			<#if !isGlobal > 
211				<#-- Una de las dos variables tiene que tener valor para no pintar un "p" vacío --> 
212				<#if dateStartStr?? || dateEndStr?? > 
213					<p>					 
214						<#-- Si hay fecha de inicio pero no de fin se pinta la fecha de inicio y la hora de fin. Tampoco se pinta el "Desde". --> 
215						<#if dateStartStr?? && (!dateEndStr?? || dateEndStr == "") > 
216							<span class="date">${ dateStartStr }</span> 
217							<#if dateEndHourStr?? && dateEndMinStr?? > 
218								<span class="date">- ${ dateEndHourStr }:${ dateEndMinStr }</span> 
219							</#if> 
220						</#if> 
221						 
222						<#-- Si hay fecha de inicio y de fin se pintan --> 
223						<#if dateStartStr?? && dateEndStr?? && dateEndStr != "" > 
224							${ txtDateFrom }<span class="date">${ dateStartReduced }</span> 
225							<#-- Si hay hora de inicio hay que pintar una coma dentro de la fecha para que no meta un espacio en blanco por detrás --> 
226							<#if dateStartHourStr?? && dateStartMinStr?? > 
227								${ txtDateTo }<span class="date">${ dateEndReduced + "," }</span> 
228							<#else> 
229								${ txtDateTo }<span class="date">${ dateEndReduced }</span> 
230							</#if> 
231							<#-- Pintamos las horas -->						 
232							<#if dateStartHourStr?? && dateStartMinStr?? >  
233								<span class="date"> ${ dateStartHourStr }:${ dateStartMinStr } </span> 
234							</#if> 
235							<#if dateStartHourStr?? && dateStartMinStr?? && dateEndHourStr?? && dateEndMinStr?? && dateEndHourStr != "" && dateEndMinStr != ""> 
236								<span class="date">- ${ dateEndHourStr }:${ dateEndMinStr }</span> 
237							</#if> 
238						</#if> 
239					</p> 
240				</#if> 
241			<#else> 
242			<#-- Cuando es Global-theme --> 
243				<#-- Una de las dos variables tiene que tener valor para no pintar un "p" vacío --> 
244				<#if dateStartStr?? || dateEndStr?? >								 
245					<p> 
246						 
247						<#-- Si hay fecha de inicio pero no de fin se pinta la fecha de inicio y la hora de fin. Tampoco se pinta el "Desde". --> 
248						<#if dateStartStr?? && (!dateEndStr?? ||  dateEndStr == "") > 
249							<#-- Si hay hora de inicio hay que pintar una coma dentro de la fecha para que no meta un espacio en blanco por detrás --> 
250							<#if dateStartHourStr?? && dateStartMinStr?? > 
251								${ dateStartReduced + "," } 
252							<#else> 
253								${ dateStartReduced } 
254							</#if> 
255							<#if dateStartHourStr?? && dateStartMinStr?? > 
256								${ dateStartHourStr }:${ dateStartMinStr } 
257							</#if>	 
258							<#if dateStartHourStr?? && dateStartMinStr?? && dateEndHourStr?? && dateEndMinStr?? > 
259								- ${ dateEndHourStr }:${ dateEndMinStr } 
260							</#if> 
261						</#if> 
262						 
263						<#-- Si hay fecha de inicio y de fin se pintan --> 
264						<#if dateStartStr?? && dateEndStr?? && dateEndStr != "" > 
265							<#-- Si hay fecha de inicio pero no de fin se pinta la fecha de inicio y la hora de fin. Tampoco se pinta el "Desde". --> 
266							<#if dateStartHourStr?? && dateStartMinStr?? > 
267								${ txtDateFrom } ${ dateStartReduced } ${ txtDateTo } ${ dateEndReduced + ","}							 
268							<#else> 
269								${ txtDateFrom } ${ dateStartReduced } ${ txtDateTo } ${ dateEndReduced } 
270							</#if> 
271							<#if dateStartHourStr?? && dateStartMinStr?? > 
272								${ dateStartHourStr }:${ dateStartMinStr }								 
273							</#if>	 
274							<#if dateStartHourStr?? && dateStartMinStr?? && dateEndHourStr?? && dateEndMinStr?? && dateEndHourStr != "" && dateEndMinStr != ""> 
275								- ${ dateEndHourStr }:${ dateEndMinStr } 
276							</#if> 
277						</#if>						 
278					</p> 
279				</#if> 
280			</#if> 
281		</div> <#-- cierra clase para la informacion sobre fechas --> 
282 
283 
284 
285		<#-- NUEVO EN EVENTO REDUCED --> 
286		<#-- Horario --> 
287		<#if ehugeneraldataFieldSet.ehudayhoursFieldSet?? && validator.isNotNull (ehugeneraldataFieldSet.ehudayhoursFieldSet) > 
288			<#assign nexoHoraMin = ":" > 
289			<#assign nexoRangoHoras = ", " > 
290			<#assign cont = 1> 
291			<#-- Lista de días --> 
292			<#list ehugeneraldataFieldSet.ehudayhoursFieldSet.getSiblings() as currentehudayhours > 
293				<#if currentehudayhours.ehuday?? && currentehudayhours.ehuday.getData()?has_content && currentehudayhours.ehuday.getData() !="chooseAnOption"> 
294					<#assign ehuday = currentehudayhours.ehuday.getData() >	 
295					<#assign strehuDay =  "ehu." + ehuday >	 
296					<#if strehuDay != "ehu."> 
297						<#-- Lista de horas en un día determinado --> 
298						<#if cont == 1 > 
299							<div class="event-detail__featured-information__time"> 
300								<h2 class="sr-only"><@liferay.language key="ehu.horario" /></h2> 
301								<i class="icon-time"></i> 
302								<div class="event-detail__featured-information__time--list"> 
303						</#if>	 
304								<p><strong> <@liferay.language key="${strehuDay}" /> </strong> 
305								<#assign firstHour = true >	 
306								<#if ehugeneraldataFieldSet.ehudayhoursFieldSet.initendhourFieldSet?? > 
307									<#if ehugeneraldataFieldSet.ehudayhoursFieldSet.initendhourFieldSet.inithour.getData()??  
308										&&  ehugeneraldataFieldSet.ehudayhoursFieldSet.initendhourFieldSet.inithour.getData() != "" 
309										&& ehugeneraldataFieldSet.ehudayhoursFieldSet.initendhourFieldSet.inithour.getData() !="chooseAnOption"> 
310									<strong>:</strong> 
311									</#if> 
312									<#assign count = 0 > 
313									<#list currentehudayhours.initendhourFieldSet.getSiblings() as currentinitendhour > 
314	 
315											<#if ehuday != "" > 
316												<#if currentinitendhour.inithour?? && currentinitendhour.inithour.getData() !="chooseAnOption"> 
317													<#assign inithour = currentinitendhour.inithour.getData() > 
318												</#if> 
319												<#if currentinitendhour.endhour?? && currentinitendhour.endhour.getData() !="chooseAnOption"> 
320													<#assign endhour = currentinitendhour.endhour.getData() >											 
321												</#if> 
322												<#assign txtHoraIni = '' > 
323												<#assign txtHoraFin = '' > 
324												 
325												<#if inithour?has_content && inithour?? && inithour != "[\"\"]"> 
326													<#assign txtHoraIni = inithour?substring(0,2) + nexoHoraMin + inithour?substring(2,4) > 
327												</#if> 
328												<#-- Si hay varias horas hay que pintar una coma para cada hora menos la última sin dejar espacio --> 
329												<#if endhour?has_content && endhour?? && endhour != "[\"\"]"> 
330													<#assign count = count + 1 > 
331													<#if (currentehudayhours.initendhourFieldSet.getSiblings()?size = 1)> 
332														<#assign txtHoraFin = endhour?substring(0,2) + nexoHoraMin + endhour?substring(2,4) > 
333													<#elseif (currentehudayhours.initendhourFieldSet.getSiblings()?size > 1)>													 
334														<#if count = currentehudayhours.initendhourFieldSet.getSiblings()?size > 
335															<#assign txtHoraFin = endhour?substring(0,2) + nexoHoraMin + endhour?substring(2,4) > 
336														<#else> 
337															<#assign txtHoraFin = endhour?substring(0,2) + nexoHoraMin + endhour?substring(2,4) + "," > 
338														</#if> 
339													</#if> 
340												</#if> 
341												<#if firstHour> 
342													<#assign firstHour = false >	 
343												</#if>																						 
344												<#if txtHoraIni?has_content && txtHoraFin?has_content> 
345													${ txtHoraIni } - ${ txtHoraFin }  
346												<#else> 
347													<#if txtHoraIni?has_content> 
348														${ txtHoraIni } 
349													</#if> 
350													<#if txtHoraFin?has_content> 
351														${ txtHoraFin }  
352													</#if> 
353												</#if> 
354											</#if>	 
355									</#list>	 
356								</#if> 
357								</p> 
358						 
359						<#assign cont = cont + 1> 
360					</#if>	 
361				</#if> 
362			</#list> 
363			<#if (cont > 1) > 
364						</div> 
365					</div> 
366			</#if>		 
367		</#if> 
368		 
369			 
370			 
371		<#-- LOCALIZACION --> 
372		<#if localization != "" > 
373			<#if isGlobal > 
374				<#-- clase y cabecera para la informacion sobre localizacion --> 
375				<div class="event-detail__featured-information__location"> 
376					<h2 class="sr-only"><@liferay.language key="ehu.location" /></h2> 
377					<i class="icon-map-marker"></i> 
378			</#if> 
379			${ localization } 
380			<#if isGlobal > 
381				</div> <#-- cierra clase para la informacion sobre localizacion --> 
382			</#if> 
383		</#if> 
384		<#if !isGlobal > 
385			</div> <#-- cierra clase para la informacion sobre localizacion y fechas --> 
386		</#if> 
387 
388		<#-- CICLO --> 
389		<#if ehugeneraldataFieldSet.ehucycle?is_hash > 
390			<#assign eventCycle = ehugeneraldataFieldSet.ehucycle.getData() > 
391		<#else> 
392			<#assign eventCycle = getterUtil.getString( ehugeneraldataFieldSet.ehucycle ) > 
393		</#if>			 
394		<#if eventCycle != "" > 
395			<div class="${ cycleClass }"> 
396				<#if !isGlobal > 
397					<h2>${ cTxtCycle }</h2> 
398				<#else> 
399					<h2 class="sr-only">${ cTxtCycle }</h2> 
400					<i class="icon-refresh"></i> 
401				</#if> 
402				<p>${ eventCycle }</p> 
403			</div> 
404		</#if> 
405 
406		<#-- RECEPTORES --> 
407		<#if isGlobal > 
408			<@upvlibs.VocabFormatCategories vocabularyName="hartzaileak" show=false divClass="receivers" /> 
409			<#assign catString = upvlibs.catString > 
410			<#if  catString != "" > 
411				<div class="event-detail__featured-information__receivers"> 
412						<h2 class="sr-only"><@liferay.language key="ehu.receivers" /></h2> 
413						<i class="icon-user"></i> 
414						${ catString } 
415				</div> 
416			</#if> 
417		<#else> 
418			<@upvlibs.VocabFormatCategories vocabularyName="hartzaileak" show=true divClass="receivers" /> 
419			 
420				 
421		</#if> 
422 
423		<#if isGlobal > 
424			<#-- clase para la informacion general --> 
425			</div> <#-- cierra clase para toda la informacion --> 
426		</#if> 
427 
428		<#-- REDES SOCIALES -->	 
429		<!-- Si está marcado el check de redes sociales las pintamos --> 
430		<#if ehugeneraldataFieldSet.ehusocialbookmarks?? && ehugeneraldataFieldSet.ehusocialbookmarks.getData()?has_content && ehugeneraldataFieldSet.ehusocialbookmarks.getData()=="true" >		 
431			<#assign classRS = "share-social-bar__item" >			 
432			<#assign urlEnCurso = themeDisplay.getURLPortal() + themeDisplay.getURLCurrent() > 
433			<div class="event-detail__share"> 
434				<#-- SHARE SOCIAL BAR --> 
435				<div class="share-social-bar"> 
436					<a href="https://www.facebook.com/share.php?u=${urlEnCurso?replace(' ','%20')}&amp;t=www.ehu.eus" target="_blank" title='<@liferay.language key="ehu.social-bookmark.facebook" />' class="${ classRS } svg-icon"> 
437						<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M80 299.3V512H196V299.3h86.5l18-97.8H196V166.9c0-51.7 20.3-71.5 72.7-71.5c16.3 0 29.4 .4 37 1.2V7.9C291.4 4 256.4 0 236.2 0C129.3 0 80 50.5 80 159.4v42.1H14v97.8H80z"/></svg> 
438						<span class="sr-only"><@liferay.language key="ehu.social-bookmark.facebook" /> - ${ cTxtNewWindow }</span> 
439					</a> 
440					<a href="https://bsky.app/intent/compose?text=${urlEnCurso?replace(' ','%20')}%20-%20www.ehu.eus%20" target="_blank" title='<@liferay.language key="ehu.social-bookmark.bluesky" />' class="${ classRS } svg-icon"> 
441						<svg height="16" viewBox="0 0 512 512" width="16" xmlns="http://www.w3.org/2000/svg"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M111.8 62.2C170.2 105.9 233 194.7 256 242.4c23-47.6 85.8-136.4 144.2-180.2c42.1-31.6 110.3-56 110.3 21.8c0 15.5-8.9 130.5-14.1 149.2C478.2 298 412 314.6 353.1 304.5c102.9 17.5 129.1 75.5 72.5 133.5c-107.4 110.2-154.3-27.6-166.3-62.9l0 0c-1.7-4.9-2.6-7.8-3.3-7.8s-1.6 3-3.3 7.8l0 0c-12 35.3-59 173.1-166.3 62.9c-56.5-58-30.4-116 72.5-133.5C100 314.6 33.8 298 15.7 233.1C10.4 214.4 1.5 99.4 1.5 83.9c0-77.8 68.2-53.4 110.3-21.8z"></path></svg> 
442						<span class="sr-only"><@liferay.language key="ehu.social-bookmark.bluesky" /> - ${ cTxtNewWindow }</span> 
443					</a> 
444					<a href="https://www.linkedin.com/shareArticle?mini=true&amp;url=${urlEnCurso?replace(' ','%20')}&amp;title=${title?replace(' ','%20')}&amp;summary=" target="_blank" title='<@liferay.language key="ehu.social-bookmark.linkedin" />' class="${ classRS } svg-icon"> 
445						<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M100.3 448H7.4V148.9h92.9zM53.8 108.1C24.1 108.1 0 83.5 0 53.8a53.8 53.8 0 0 1 107.6 0c0 29.7-24.1 54.3-53.8 54.3zM447.9 448h-92.7V302.4c0-34.7-.7-79.2-48.3-79.2-48.3 0-55.7 37.7-55.7 76.7V448h-92.8V148.9h89.1v40.8h1.3c12.4-23.5 42.7-48.3 87.9-48.3 94 0 111.3 61.9 111.3 142.3V448z"/></svg> 
446						<span class="sr-only"><@liferay.language key="ehu.social-bookmark.linkedin" /> - ${ cTxtNewWindow }</span> 
447					</a> 
448					<a href="whatsapp://send?text=${ urlEnCurso }" data-action="share/whatsapp/share" target="_blank" class="${ classRS } svg-icon" title='<@liferay.language key="ehu.social-bookmark.whatsapp" />'> 
449						<svg class="svg-whatsapp" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7 .9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"/></svg>  
450						<span class="sr-only"><@liferay.language key="ehu.social-bookmark.whatsapp" /> - ${ cTxtNewWindow }</span> 
451					</a> 
452					<a href="https://t.me/share/url?url=${ urlEnCurso }&text=${ title }" target="_blank" class="${ classRS } svg-icon" title='<@liferay.language key="ehu.social-bookmark.telegram" />'> 
453						<svg class="svg-telegram" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M248 8C111 8 0 119 0 256S111 504 248 504 496 393 496 256 385 8 248 8zM363 176.7c-3.7 39.2-19.9 134.4-28.1 178.3-3.5 18.6-10.3 24.8-16.9 25.4-14.4 1.3-25.3-9.5-39.3-18.7-21.8-14.3-34.2-23.2-55.3-37.2-24.5-16.1-8.6-25 5.3-39.5 3.7-3.8 67.1-61.5 68.3-66.7 .2-.7 .3-3.1-1.2-4.4s-3.6-.8-5.1-.5q-3.3 .7-104.6 69.1-14.8 10.2-26.9 9.9c-8.9-.2-25.9-5-38.6-9.1-15.5-5-27.9-7.7-26.8-16.3q.8-6.7 18.5-13.7 108.4-47.2 144.6-62.3c68.9-28.6 83.2-33.6 92.5-33.8 2.1 0 6.6 .5 9.6 2.9a10.5 10.5 0 0 1 3.5 6.7A43.8 43.8 0 0 1 363 176.7z"/></svg>  
454						<span class="sr-only"><@liferay.language key="ehu.social-bookmark.telegram" /> - ${ cTxtNewWindow }</span> 
455					</a> 
456					<a href="mailto:?subject=${title?replace(' ','%20')}&amp;body=%20-%20${urlEnCurso?replace(' ','%20')}" target="_blank" title='<@liferay.language key="ehu.send-email" />' class="${ classRS } svg-icon"> 
457						<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM0 176L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-208L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"/></svg> 
458						<span class="sr-only"><@liferay.language key="ehu.send-email" /> - ${ cTxtNewWindow }</span> 
459					</a> 
460					<a href="javascript:void(0)" onclick="copyCurrentUrl()" title='<@liferay.language key="copy-link" />' class="${ classRS } svg-icon"> 
461						<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z"/></svg> 
462						<span class="sr-only"><@liferay.language key="copy-link" /> - ${ cTxtNewWindow }</span> 
463					</a> 
464				</div> 
465			</div> 
466		</#if> 
467		 
468 
469		<#if isGlobal > 
470			<div class="event-detail__body"> 
471		</#if> 
472 
473		<#-- IMAGE--> 
474		 
475		<#assign entImage = ehugeneraldataFieldSet.ehugeneraldataimageFieldSet > 
476		<#if entImage?is_hash > 
477			<#assign imageSrc = entImage.ehugeneraldataimage.getData() > 
478		<#else> 
479			<#assign imageSrc = getterUtil.getString( entImage.ehugeneraldataimage ) > 
480		</#if> 
481		<#if imageSrc != "" > 
482			<#if isGlobal > 
483				<div class="event-detail__body__main-image"> 
484			</#if> 
485			 
486			<#if entImage.ehuimagedescription?? > 
487				<#if entImage.ehuimagedescription?is_hash > 
488					<#assign imageAltTextStr = entImage.ehuimagedescription.getData() > 
489				<#else> 
490					<#assign imageAltTextStr = getterUtil.getString( entImage.ehuimagedescription ) > 
491				</#if> 
492			</#if> 
493			<#if !imageAltTextStr?has_content && imageAltTextStr != ""> 
494				<#assign imageAltText = imageAltTextStr> 
495			<#else> 
496				<#assign imageAltText = ""> 
497			</#if> 
498			 
499			<#if entImage.ehuimagefoot?? > 
500				<#if entImage.ehuimagefoot?is_hash > 
501					<#assign imageFootTextStr = entImage.ehuimagefoot.getData() > 
502				<#else> 
503					<#assign imageFootTextStr = getterUtil.getString( entImage.ehuimagefoot ) > 
504				</#if> 
505			</#if> 
506			<#if imageFootTextStr?has_content && imageFootTextStr != ""> 
507				<#assign imageFootText = imageFootTextStr>				 
508			<#else> 
509				<#assign imageFootText = "" > 
510			</#if> 
511			 
512			<#if entImage.ehuimageauthor?? > 
513				<#if entImage.ehuimageauthor?is_hash > 
514					<#assign imageAuthorTextStr = entImage.ehuimageauthor.getData() > 
515				<#else> 
516					<#assign imageAuthorTextStr = getterUtil.getString( entImage.ehuimageauthor ) > 
517				</#if>	 
518			</#if>		 
519			<#if imageAuthorTextStr?has_content && imageAuthorTextStr != ""> 
520				<#assign imageAuthorText = imageAuthorTextStr> 
521			<#else> 
522				<#assign imageAuthorText = "" > 
523			</#if> 
524			 
525			 
526			<#assign imageAlign = "center" > 
527			<#assign entImageUrl = "" > 
528			<#assign imageUrlTitle = "" > 
529			<#assign imageUrlNewTab = false > 
530			<#assign imageClass = "img-main" > 
531 
532			<#-- Pasamos la imagen del evento directamente al og:image para que no haya problemas al compartir 
533				 el evento en redes sociales (Trello 273 - Trello 637) -->	 
534			<@liferay_util["html-top"]> 
535				<meta property="og:image" content="${ portalUtil.getAbsoluteURL( request, imageSrc ) }"> 
536			</@> 
537			<#if !isGlobal > 
538				<@upvlibs.imageAuthorSection image=imageSrc altText=imageAltText footText=imageFootText imageAuthor=imageAuthorText 
539					imageDisposition=imageAlign elemImageUrl=entImageUrl imageUrlTitle=imageUrlTitle imageUrlNewTab=imageUrlNewTab imgClass=imageClass /> 
540			<#else> 
541			   <img src="${ upvlibs.getImageURL(imageSrc) }" alt="${ imageAltText }"/>  
542			</#if> 
543 
544			<#if isGlobal > 
545				<#if imageFootText != "" || imageAuthorText != "" > 
546					<div class="main-image__footer"> 
547						<#if imageFootText == ""> 
548							<#assign txtPhoto = "" > 
549						<#else> 
550							<#assign txtPhoto = imageFootText > 
551						</#if>	 
552						<#if imageAuthorText != "" > 
553							<#if imageFootText == ""> 
554								<#assign txtPhotoAux = "" > 
555							<#else> 
556								<#assign txtPhotoAux =  " | "  > 
557							</#if>	 
558							<#assign txtPhoto = txtPhoto + txtPhotoAux + cTxtPhoto + ": " + imageAuthorText > 
559						</#if> 
560						<#if txtPhoto != "" > 
561							<p>${txtPhoto}</p> 
562						</#if> 
563				   </div> 
564				</#if> 
565			</#if> 
566			<#if isGlobal > 
567				</div> <#-- class="event-detail__body__main-image" --> 
568			</#if> 
569		<#else> 
570			<#-- Si el evento no tiene imagen metemos como imagen para redes sociales el logo de la universidad 
571				 proporcionado por la oficina de comunicación (Trello 565 - Trello 637) -->	 
572			<@liferay_util["html-top"]> 
573					<meta property="og:image" content="https://www.ehu.eus/documents/522485/1339603/avatar.jpg"> 
574			</@> 
575		</#if> 
576		 
577 
578		<#-- DESCRIPCION--> 
579		<#assign description = ""> 
580		<#if  ehugeneraldataFieldSet.ehudescription??> 
581			<#if ehugeneraldataFieldSet.ehudescription?is_hash > 
582				<#assign aux = ehugeneraldataFieldSet.ehudescription.getData() > 
583			<#else> 
584				<#assign aux = getterUtil.getString( ehugeneraldataFieldSet.ehudescription ) > 
585			</#if> 
586			<#if aux?has_content && aux != ""> 
587				<#assign description = aux> 
588			<#else> 
589				<#assign description = ""> 
590			</#if> 
591		</#if> 
592		<#if description != "" > 
593			<div class="${ descriptionClass }"> 
594				<#if !isGlobal > 
595					<h2 class="sr-only">${ cTxtDescription }</h2> 
596				</#if> 
597				${ description } 
598			</div> 
599		</#if> 
600		<#if isGlobal > 
601			</div> <#-- class="event-detail__body" --> 
602		</#if> 
603 
604		<#-- REGISTRO / INSCRIPCION --> 
605		<#if ehuregistrationFieldSet?? > 
606			<#assign entRegistration = ehuregistrationFieldSet > 
607			<#if entRegistration.ehuregistrationlinkFieldSet??> 
608				<#assign entRegistrationUrl = entRegistration.ehuregistrationlinkFieldSet > 
609			</#if> 
610			<#assign registrationUrl = ""> 
611			<#assign description = ""> 
612			<#assign registrationDescr = ""> 
613			<#assign registrationUrlTitle = ""> 
614			<#if entRegistrationUrl.ehuregistrationlink??> 
615				<#if entRegistrationUrl.ehuregistrationlink?is_hash > 
616					<#assign aux = entRegistrationUrl.ehuregistrationlink.getData() > 
617				<#else> 
618					<#assign aux = getterUtil.getString( entRegistrationUrl.ehuregistrationlink ) > 
619				</#if> 
620				<#if aux?has_content && aux != ""> 
621					<#assign registrationUrl = aux> 
622				<#else> 
623					<#assign registrationUrl = ""> 
624				</#if> 
625			</#if> 
626			 
627			<#-- No se utiliza 
628			<#if entRegistration.ehuregistrationdescription??> 
629				<#if entRegistration.ehuregistrationdescription?is_hash > 
630					<#assign aux = entRegistration.ehuregistrationdescription.getData() > 
631				<#else> 
632					<#assign aux = getterUtil.getString( entRegistration.ehuregistrationdescription ) > 
633				</#if> 
634				<#if aux?has_content && aux != ""> 
635					<#assign description = aux> 
636				<#else> 
637					<#assign description = ""> 
638				</#if> 
639			</#if> 
640			--> 
641			 
642			<#if entRegistrationUrl??> 
643				<#if entRegistrationUrl.ehuregistrationlinktitle??> 
644					<#if entRegistrationUrl.ehuregistrationlinktitle?is_hash > 
645						<#assign aux = entRegistrationUrl.ehuregistrationlinktitle.getData() > 
646					<#else> 
647						<#assign aux = getterUtil.getString( entRegistrationUrl.ehuregistrationlinktitle ) > 
648					</#if> 
649					<#if aux?has_content && aux != ""> 
650						<#assign registrationUrlTitle = aux> 
651					<#else> 
652						<#assign registrationUrlTitle = ""> 
653					</#if> 
654				</#if> 
655			</#if> 
656			<#if entRegistration.ehuregistrationdescription??> 
657				<#if entRegistration.ehuregistrationdescription?is_hash > 
658					<#assign aux = entRegistration.ehuregistrationdescription.getData() > 
659				<#else> 
660					<#assign aux = getterUtil.getString( entRegistration.ehuregistrationdescription ) > 
661				</#if> 
662				<#if aux?has_content && aux != ""> 
663					<#assign registrationDescr = aux> 
664				<#else> 
665					<#assign registrationDescr = ""> 
666				</#if> 
667			</#if> 
668			 
669			<#if (registrationUrl?has_content && registrationUrl != "") || (registrationDescr?has_content && registrationDescr != "") >				 
670				<#if !isGlobal >					 
671					<div class="registration"> 
672					<h2><@liferay.language key="ehu.registration"/></h2>					 
673					 
674						<#-- Descripción --> 
675						<#if registrationDescr != "" >						 
676							<#assign regDescription = "<p>" + registrationDescr + "</p>" >							 
677								<#assign aux = cTxtDescription > 
678								${ regDescription }			 
679						</#if> 
680						 
681						<#if registrationUrl?has_content && registrationUrl != "" > 
682							<#-- URL --> 
683							<#assign url = registrationUrl> 
684							<#assign formatedURL = "" > 
685							<#if url?is_hash > 
686								<#assign aux = url.getData() > 
687							<#else> 
688								<#assign aux = getterUtil.getString(url) > 
689							</#if> 
690							<#if aux?has_content && aux != ""> 
691								<#assign formatedURL = aux> 
692							</#if> 
693							 
694							<#assign text = "" > 
695							<#if entRegistrationUrl.ehuregistrationlinktitle?? > 
696								<#if entRegistrationUrl.ehuregistrationlinktitle?is_hash> 
697									<#assign text = entRegistrationUrl.ehuregistrationlinktitle.getData() > 
698								<#else> 
699									<#assign text = getterUtil.getString(entRegistrationUrl.ehuregistrationlinktitle) > 
700								</#if> 
701							</#if>							 
702																						 
703							<#assign newTab = getterUtil.getBoolean( "false") > 
704							<#if entRegistrationUrl.ehuregistrationlinknewtab?is_hash > 
705								<#assign aux = entRegistrationUrl.ehuregistrationlinknewtab.getData() > 
706							<#else> 
707								<#assign aux = getterUtil.getString( entRegistrationUrl.ehuregistrationlinknewtab ) > 
708							</#if> 
709							<#if aux?has_content && aux != ""> 
710								<#assign newTab = getterUtil.getBoolean(aux) > 
711							</#if> 
712								 
713							<p> 
714								<strong>${cTxtUrl}:</strong>								 
715									 
716								<#if newTab > 
717									<#assign target = ' target="_blank"'>									 
718								<#else> 
719									<#assign target = ""> 
720								</#if>	 
721														 
722								<a href="${ formatedURL }" class="bullet bullet-url"${ target }> 
723									 
724								<#if newTab > 
725									<span class="sr-only"><@liferay.language key="opens-new-window"/></span> 
726								</#if> 
727									 
728								<#if text == ""> 
729									${formatedURL} 
730								<#else> 
731									${text} 
732								</#if> 
733									 
734								<#if newTab > 
735									<span class="icon-external-link"></span> 
736								</#if> 
737								</a> 
738							</p> 
739						</#if> 
740										 
741					</div> 
742						 									 
743				</#if>	<#-- !isGlobal --> 
744					 
745				<#-- Si es tema global  --> 
746				<#if isGlobal > 
747					<div class="${ registrationClass }"> 
748						<h2>${ cTxtInscription }</h2> 
749						 
750						<#-- Si no hay descripción y hay URL --> 
751						<#if registrationDescr == "" && registrationUrl?has_content && registrationUrl != ""> 
752							<#assign aux = cTxtUrl > 
753							<strong>${aux}:</strong> 
754										 
755							<#if registrationUrlTitle != ""> 
756								<a href="${ registrationUrl }">${ registrationUrlTitle } <span class="icon-external-link"></span></a> 
757							<#else> 
758								<a href="${ registrationUrl }">${ registrationUrl } <span class="icon-external-link"></span></a> 
759							</#if> 
760						 
761						<#-- Si hay descripción y hay URL --> 
762						<#elseif registrationDescr != "" && registrationUrl?has_content && registrationUrl != ""> 
763							<#assign regDescription = registrationDescr >						 
764							<p> 
765								${ regDescription } 
766							</p> 
767							<p> 
768								<strong> ${ cTxtUrl }:</strong> 
769								<#if registrationUrlTitle != ""> 
770									<a href="${ registrationUrl }">${ registrationUrlTitle } <span class="icon-external-link"></span></a> 
771								<#else> 
772									<a href="${ registrationUrl }">${ registrationUrl } <span class="icon-external-link"></span></a> 
773								</#if> 
774							</p> 
775						 
776						<#-- Si hay descripción pero no hay URL --> 
777						<#else> 
778							<#assign regDescription = registrationDescr >	 
779							<p> 
780								${ regDescription } 
781							</p>						 
782						</#if>										 
783					</div> 
784				</#if> <#--  isGlobal --> 
785				 
786			</#if> <#--  registrationUrl != ""  --> 
787		</#if><#--  ehuregistration?? --> 
788 
789		<#-- INFORMACION DE COMUNICACION --> 
790		 
791		<#if ehucommunicationinformationFieldSet?? > 
792			<#assign entComInformation = ehucommunicationinformationFieldSet > 
793			<#if entComInformation.ehucommunicationauthors??> 
794				<#if  entComInformation.ehucommunicationauthors?is_hash >					 
795					<#assign aux = entComInformation.ehucommunicationauthors.getData() > 
796				<#else> 
797					<#assign aux = getterUtil.getString( entComInformation.ehucommunicationauthors ) > 
798				</#if> 
799				<#if aux?has_content && aux != ""> 
800					<#assign comunicationAuthors = aux> 
801				<#else> 
802					<#assign comunicationAuthors = ""> 
803				</#if> 
804			</#if> 
805			<#if entComInformation.ehuspeakers??> 
806				<#if entComInformation.ehuspeakers?is_hash > 
807					<#assign aux = entComInformation.ehuspeakers.getData() > 
808				<#else> 
809					<#assign aux = getterUtil.getString( entComInformation.ehuspeakers ) > 
810				</#if> 
811				<#if aux?has_content && aux != ""> 
812					<#assign comunicationSpeakers = aux> 
813				<#else> 
814					<#assign comunicationSpeakers = ""> 
815				</#if> 
816			</#if> 
817			<#if entComInformation.upvehucommunicationtype??>				 
818				<#if entComInformation.upvehucommunicationtype?is_hash > 
819					<#assign aux = entComInformation.upvehucommunicationtype.getData() > 
820				<#else> 
821					<#assign aux = getterUtil.getString( entComInformation.upvehucommunicationtype ) > 
822				</#if>				 
823				<#if aux?has_content && aux != ""> 
824					<#assign comunicationType = aux> 
825				<#else> 
826					<#assign comunicationType = ""> 
827				</#if> 
828			</#if> 
829			<#if comunicationAuthors?? && (comunicationAuthors != "")> 
830				<#assign hayComAuthors = getterUtil.getBoolean("true" ) > 
831			<#else> 
832				<#assign hayComAuthors = getterUtil.getBoolean("false" ) > 
833			</#if> 
834			<#if comunicationSpeakers?? && (comunicationSpeakers != "") > 
835				<#assign hayComSpeakers = getterUtil.getBoolean("true" ) > 
836			<#else> 
837				<#assign hayComSpeakers = getterUtil.getBoolean("false" ) > 
838			</#if> 
839			<#if comunicationType?? && (comunicationType != "") && comunicationType != "upv-ehu-blank"   > 
840				<#assign hayComType = getterUtil.getBoolean("true" )> 
841			<#else> 
842				<#assign hayComType = getterUtil.getBoolean("false" ) > 
843			</#if> 
844			 
845			<#if hayComTitle?? || hayComAuthors?? ||  hayComSpeakers?? || hayComType??> 
846				<#assign hayCom = hayComTitle || hayComAuthors || hayComSpeakers || hayComType > 
847				<#if hayCom > 
848					<div class="${ comunicationClass }"> 
849						<h2>${ cTxtComInfo }</h2> 
850						<ul> 
851							<#if hayComTitle> 
852								<li><strong>${cTxtTitle}:</strong> ${entComInformation.ehucommunicationtitle.getData()}</li>		 
853							</#if> 
854							<#if hayComAuthors> 
855								<li><strong>${cTxtAuthors}:</strong> ${entComInformation.ehucommunicationauthors.getData()}</li>		 
856							</#if> 
857							<#if hayComSpeakers > 
858								<li><strong>${cTxtSpeaker}:</strong> ${entComInformation.ehuspeakers.getData()}</li>		 
859							</#if> 
860							<#if hayComType > 
861								<li> 
862									<strong>${cTxtComType}:</strong> 
863									<@liferay.language key="${ comunicationType }" /> 
864								</li> 
865							</#if> 
866						</ul> 
867					</div> 
868				</#if> 
869			</#if> 
870		</#if> 
871 
872		<#if !isGlobal > 
873			<@contactInfo 2/> 
874			<@aditionalInfo /> 
875			<#if ehuimagegalleryFieldSet?? >			 
876				<#if ehuimagegalleryFieldSet.ehuslideFieldSet??> 
877					<@upvlibs.imageGallerySection ehuimagegalleryFieldSet.ehuslideFieldSet articleId 4 /> 
878				</#if> 
879			</#if>		 
880		<#else> 
881			<#if ehuimagegalleryFieldSet?? > 
882				<#if ehuimagegalleryFieldSet.ehuslideFieldSet?? && ehuimagegalleryFieldSet.ehuslideFieldSet?has_content && ehuimagegalleryFieldSet.ehuslideFieldSet.ehuimagegalleryimage.getData() !="" > 
883				<div class="event-detail__image-gallery"> 
884					<@upvlibs.imageGallerySection ehuimagegalleryFieldSet.ehuslideFieldSet articleId 4 /> 
885				</div> 
886				</#if> 
887			</#if>			 
888			<@aditionalInfo />			 
889            <#if checkH3??> 
890                <@contactInfo 3/> 
891            <#else> 
892                <@contactInfo 2/> 
893            </#if> 
894			 
895		</#if> 
896				 
897		 
898		<#-- LAST MODIFICATION DATE--> 
899		<#assign showLastModifDate = getterUtil.getBoolean( "false")> 
900		<#if ehugeneraldataFieldSet.ehulastmodificationdate??> 
901			<#if ehugeneraldataFieldSet.ehulastmodificationdate?is_hash > 
902				<#assign aux = ehugeneraldataFieldSet.ehulastmodificationdate.getData() >				 
903			<#else> 
904				<#assign aux = getterUtil.getString( ehugeneraldataFieldSet.ehulastmodificationdate ) > 
905			</#if> 
906			<#if aux?has_content && aux != ""> 
907				<#assign showLastModifDate = getterUtil.getBoolean(aux) > 
908			</#if> 
909			 
910		</#if> 
911		<#if showLastModifDate >	 
912			<div class="content-footer"> 
913				<#assign articleModifiedDate = .vars['reserved-article-modified-date'].data!"" > 
914				<#if locale == "eu_ES"> 
915					<#assign dateFormat = "yyyy/MM/dd"> 
916				<#else> 
917				    <#assign dateFormat = "dd/MM/yyyy"> 
918				</#if> 
919				<#setting date_format=dateFormat > 
920				<#assign currentLocale = locale> 
921				<#setting locale = localeUtil.getDefault() > 
922				<#if articleModifiedDate?? && articleModifiedDate != "" > 
923					<#assign modifiedDate = ( articleModifiedDate?datetime( "EEE, dd MMM yyyy hh:mm:ss" ) )?date > 
924					<#assign modifiedDateStr = modifiedDate?string > 
925				<#else> 
926						<#assign modifiedDateStr = ""  > 
927				</#if> 
928				<#setting locale = currentLocale> 
929				 
930				<#if modifiedDateStr != "" > 
931					<p class="modification_date"> 
932						<strong class="text"> <@liferay.language key="ehu.last-modification-date" />:</strong> 
933						<span class="date">${ modifiedDateStr }</span> 
934					</p> 
935				</#if> 
936			</div> 
937		</#if> 
938		 
939 
940</article>	 
941 
942<#-- 
943 # ------------------------------------------------------------------------------ 
944 # A partir de la informacion recibida en el parametro "slides" genera el codigo 
945 # para visualizar dicha informacion como una galeria de imagenes. 
946 # Mas informacion en la macro "imageGallerySection". 
947 # Parametros: 
948 #	ident			identificador para personalizar el codigo que se genera 
949 #	slides			estructura con la informacion para la galeria de imagenes 
950 #	[__showFoot]	indica si se quiere mostrar el pie de las imagenes o no 
951 #	[__elemsRow]	indica el numero de imagenes a mostrar por linea 
952 # Salida: 
953 # ------------------------------------------------------------------------------ 
954--> 
955<#-- 
956 # ------------------------------------------------------------------------------ 
957 # Genera el codigo html para la informacion adicional presente en el contenido 
958 # de tipo "Evento". 
959 # La generacion de codigo es diferente si el tema es el global o no. 
960 # Parametros: 
961 # Salida: 
962 # ------------------------------------------------------------------------------ 
963--> 
964<#macro aditionalInfo > 
965	<#local esGlobal = (themeDisplay.getTheme().getContextPath() == "/o/upv-ehu-global-theme") > 
966	<#local entAditionalInfo = ehuaditionalinfoFieldSet > 
967	<#if entAditionalInfo.ehuaditionaldescription?? > 
968		<#if entAditionalInfo.ehuaditionaldescription?is_hash > 
969			<#assign aux = entAditionalInfo.ehuaditionaldescription.getData() > 
970		<#else> 
971			<#assign aux = getterUtil.getString( entAditionalInfo.ehuaditionaldescription ) > 
972		</#if> 
973	</#if> 
974	<#if aux?has_content && aux != ""> 
975		<#local aditionalDesc = aux> 
976	<#else> 
977		<#local aditionalDesc = ""> 
978	</#if> 
979	<#local hayAditionalDesc = aditionalDesc != "" > 
980 
981	<#local entAditionalDocs = entAditionalInfo.ehudocumentFieldSet > 
982	<#assign hayAditionalDocs = getterUtil.getBoolean("false")> 
983	<#if entAditionalDocs??> 
984		<@upvlibs.validarLista lista=entAditionalDocs campo="ehudocument" /> 
985		<#local listaValidadDocuments = upvlibs.valida />	 
986		<#local hayAditionalDocs = entAditionalDocs?? && listaValidadDocuments > 
987	</#if> 
988	 
989 
990	<#local entAditionalLinks = entAditionalInfo.ehuaditionalinfourlFieldSet >	 
991	<#assign hayAditionalLinks = getterUtil.getBoolean("false")> 
992	<#if entAditionalLinks?? >		 
993		<@upvlibs.validarLista lista=entAditionalLinks campo="ehuaditionalinfourl" /> 
994		<#local listaValidaLinks = upvlibs.valida />	 
995		<#local hayAditionalLinks = entAditionalLinks?? && listaValidaLinks > 
996	</#if>		 
997	 
998	 
999    <#assign checkH3=false /> 
1000 
1001	<#local hayAditionalInfo = hayAditionalDesc || hayAditionalDocs || hayAditionalLinks > 
1002	<#if hayAditionalInfo >	 
1003		<#if !esGlobal || hayAditionalDesc > 
1004			<div class="${ addInfoClass }"> 
1005				<h2>${ cTxtMoreInfo }</h2> 
1006                <#if cTxtMoreInfo?has_content> 
1007                    <#assign checkH3=true /> 
1008                </#if> 
1009 
1010				<#if hayAditionalDesc > 
1011					<p> ${aditionalDesc} </p> 
1012				</#if> 
1013				<#if esGlobal > 
1014			</div> 
1015				</#if> 
1016		</#if> 
1017		<#if hayAditionalDocs> 
1018			 
1019	        <#if checkH3> 
1020	            <@upvlibs.writeHtmlForDocumentsNew documents=entAditionalDocs nivel=3 encabezado="document" campo="ehudocument" titulo="ehudocumentname" tipo=3 adicional=0/> 
1021	        <#else> 
1022				<@upvlibs.writeHtmlForDocumentsNew documents=entAditionalDocs nivel=2 encabezado="document" campo="ehudocument" titulo="ehudocumentname" tipo=3 adicional=0/> 
1023	        </#if> 
1024 
1025		</#if> 
1026		 
1027		<#if hayAditionalLinks> 
1028			 
1029	        <#if checkH3> 
1030				<@upvlibs.writeHtmlForLinksNew links=entAditionalLinks nivel=3 encabezado="ehu.link" campo="ehuaditionalinfourl" titulo="ehuaditionalinfourldescription" newTab="ehuaditionalinfourlnewtab" tipo=3 adicional=0 />  
1031				 
1032			<#else>  
1033				<@upvlibs.writeHtmlForLinksNew links=entAditionalLinks nivel=2 encabezado="ehu.link" campo="ehuaditionalinfourl" titulo="ehuaditionalinfourldescription" newTab="ehuaditionalinfourlnewtab" tipo=3 adicional=0/> 
1034	       	</#if> 
1035			 
1036	    </#if>       	 
1037		 
1038	</#if> 
1039</#macro> 
1040 
1041 
1042<#-- 
1043 # ------------------------------------------------------------------------------ 
1044 # Genera el codigo html para la informacion de contacto presente en el contenido 
1045 # de tipo "Evento". 
1046 # La generacion de codigo es diferente si el tema es el global o no. 
1047 # Parametros: 
1048 # Salida: 
1049 # ------------------------------------------------------------------------------ 
1050--> 
1051<#macro contactInfo type> 
1052	<#local esGlobal = (themeDisplay.getTheme().getContextPath() == "/o/upv-ehu-global-theme") > 
1053	<#if !esGlobal > 
1054		<#local contactClass = "contact" > 
1055		<#local cTxtContacto = languageUtil.get( locale, "ehu.contact-data" ) > 
1056	<#else> 
1057		<#local contactClass = "event-detail__contact" > 
1058		<#local cTxtContacto = languageUtil.get( locale, "ehu.contacto" ) > 
1059	</#if> 
1060 
1061	<#local entContact = ehucontactdataFieldSet > 
1062	<#local entContactResponsible = entContact.ehuresponsible > 
1063	<#local entContactDept = entContact.ehudepartmentservice > 
1064	<#local entContactEmail = entContact.ehucontactemail > 
1065	<#local entContactPhone = entContact.ehucontactphone > 
1066	<#local entContactUrl = entContact.ehucontactdataurlFieldSet > 
1067 
1068	<#local hayContactResponsible = getterUtil.getBoolean("false")> 
1069	<#if entContactResponsible??> 
1070		<#local hayContactResponsible = entContactResponsible.getData()?? && entContactResponsible.getData()?has_content> 
1071	</#if>	 
1072	<#local hayContactDept = getterUtil.getBoolean("false")> 
1073	<#if entContactDept??> 
1074		<#local hayContactDept = entContactDept.getData()??  && entContactDept.getData()?has_content> 
1075	</#if>	 
1076	<#local hayContactEmail = getterUtil.getBoolean("false")> 
1077	<#if entContactEmail??> 
1078		<#local hayContactEmail = entContactEmail.getData()?? && entContactEmail.getData()?has_content> 
1079	</#if> 
1080	<#local hayContactPhone = getterUtil.getBoolean("false")> 
1081	<#if entContactPhone??> 
1082		<#local hayContactPhone = entContactPhone.getData()??  && entContactPhone.getData()?has_content> 
1083	</#if> 
1084	<#local hayContactUrl = getterUtil.getBoolean("false")> 
1085	<#if entContactUrl??> 
1086		<#local hayContactUrl =  entContactUrl.ehucontactdataurl.getData()??  && entContactUrl.ehucontactdataurl.getData()?has_content> 
1087	</#if> 
1088	<#local hayContact = hayContactResponsible || hayContactDept || hayContactEmail || hayContactPhone || hayContactUrl > 
1089	<#if hayContact > 
1090		<div class="${ contactClass }"> 
1091            <#if type?? && type==3> 
1092                <h3>${ cTxtContacto }</h3> 
1093            <#else> 
1094                <h2>${ cTxtContacto }</h2> 
1095            </#if> 
1096			 
1097			<ul> 
1098				<#if hayContactResponsible> 
1099					<li><strong>${languageUtil.get( locale, "ehu.responsible" )}:</strong> ${entContactResponsible.getData()}</li>			 
1100				</#if> 
1101				<#if hayContactDept> 
1102					<#assign defecto = languageUtil.get(locale, "ehu.departamento" ) + " - " + languageUtil.get( locale, "service" )> 
1103					 
1104					<li><strong>${defecto}:</strong> ${entContactDept.getData()}</li>		 
1105				</#if> 
1106				<#if hayContactEmail> 
1107					<li><strong>${languageUtil.get( locale, "ehu.email" )}:</strong> <a href="mailto:${entContactEmail.getData()}">${entContactEmail.getData()}</a></li> 
1108				</#if> 
1109				<#if hayContactPhone> 
1110					<li><strong>${languageUtil.get( locale, "ehu.phone" )}:</strong><@upvlibs.writePhoneValidated valor=entContactPhone.getData() /></li> 
1111				</#if> 
1112	 
1113				<#if hayContactUrl>				 
1114					<#assign newTab = getterUtil.getBoolean(entContactUrl.ehucontactdataurlnewtab.getData()) > 
1115					<#if newTab> 
1116						<#assign target = ' target="_blank"'> 
1117					<#else> 
1118						<#assign target = ''> 
1119					</#if> 
1120					<li> 
1121						<strong>${languageUtil.get( locale, "ehu.web-page" )}:</strong> 
1122						<#assign formatedURL = entContactUrl.ehucontactdataurl.getData() > 
1123						<#if entContactUrl.ehucontactdataurldescripction?? 
1124							&& entContactUrl.ehucontactdataurldescripction.getData()??  
1125							&& entContactUrl.ehucontactdataurldescripction.getData()?has_content> 
1126							<#assign text = entContactUrl.ehucontactdataurldescripction.getData()> 
1127						<#else> 
1128							<#assign text = formatedURL> 
1129						</#if>		 
1130						 
1131						<a href="${ formatedURL }" class="bullet bullet-url"${ target }> 
1132							<#if newTab > 
1133								<span class="sr-only"><@liferay.language key="opens-new-window"/></span> 
1134							</#if> 
1135							${ text } 
1136							<#if newTab > 
1137								<span class="icon-external-link"></span> 
1138						</a> 
1139							</#if> 
1140					</li> 
1141				</#if> 
1142			</ul> 
1143		</div> 
1144	</#if> 
1145</#macro> 
1146 
1147<#-- Script para copiar al portapapeles la URL actual --> 
1148 
1149<script> 
1150function copyCurrentUrl() { 
1151    const successMessage = '<@liferay.language key="copied-link-to-the-clipboard" />'; 
1152    const errorMessage = '<@liferay.language key="element-cannot-be-copied" />'; 
1153 
1154    if (navigator.clipboard && window.isSecureContext) { 
1155        navigator.clipboard.writeText(window.location.href) 
1156            .then(() => alert(successMessage)) 
1157            .catch(() => alert(errorMessage)); 
1158    } else { 
1159        const textArea = document.createElement("textarea"); 
1160        textArea.value = window.location.href; 
1161        document.body.appendChild(textArea); 
1162        textArea.focus(); 
1163        textArea.select(); 
1164        try { 
1165            const successful = document.execCommand('copy'); 
1166            alert(successful ? successMessage : errorMessage); 
1167        } catch (err) { 
1168            alert(errorMessage); 
1169        } 
1170        document.body.removeChild(textArea); 
1171    } 
1172
1173</script>