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')}&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&url=${urlEnCurso?replace(' ','%20')}&title=${title?replace(' ','%20')}&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')}&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>