Discovering Life

Who we are

Unraveling Evolution

Who we are

Conserving Biodiversity

Who we are

Back Two IBE papers highlighted at Nature Communications webpage

An error occurred while processing the template.
The following has evaluated to null or missing:
==> .vars['separadorimatge']  [in template "10155#10193#NOTICIA" at line 453, column 8]

----
Tip: It's the final [] step 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: #if .vars["separadorimatge"].getChild...  [in template "10155#10193#NOTICIA" at line 453, column 3]
----
1<#assign colorSite = getterUtil.getString(themeDisplay.getThemeSetting("color-site")) /> 
2<script type="text/javascript" src="/documents/6323808/129176989/jquery.captionate.js"></script> 
3<script> 
4function extractYouTubeParameter(url) { 
5    // Expresión regular para YouTube y Shorts 
6    var regExp = /(?:youtube\.com\/(?:shorts\/|watch\?v=)|youtu\.be\/)([^&?#]+)/; 
7    var match = url.match(regExp); 
8 
9    if (match && match[1]) { 
10        // Devuelve el ID del video con cualquier parámetro de consulta adicional 
11        var paramIndex = url.indexOf('?'); 
12        return paramIndex !== -1 ? match[1] + url.substring(paramIndex) : match[1]; 
13    } else { 
14        return null; 
15
16
17</script> 
18<#assign zona = timeZoneUtil.getTimeZone("Europe/Madrid") /> 
19 
20<#assign AssetEntryLocalservice = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
21<#assign journalLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
22<#assign viewURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
23<#assign groupId = getterUtil.getLong(groupId)/> 
24 
25 
26<#-- apliquem les traduccions -->  
27 
28<#switch themeDisplay.getLocale()> 
29<#case "ca_ES"> 
30    <#assign translations = { 
31        "categories", "Categories", 
32        "multimedia", "Multimèdia",  
33        "perfils", "Perfils dels protagonistes",  
34        "info", "Per a més informació",  
35        "noticies", "Notícia publicada per",  
36        "unitat", "Oficina de Comunicació", 
37        "ods", "ODS - Objectius de desenvolupament sostenible", 
38        "odsupf","Els ODS a la UPF" 
39    }/> 
40        <#break> 
41<#case "es_ES"> 
42    <#assign translations = { 
43        "categories", "Categorías", 
44        "multimedia", "Multimedia",  
45        "perfils", "Perfiles de los protagonistas",  
46        "info", "Para más información",  
47        "noticies", "Noticia publicada por",  
48        "unitat", "Oficina de Comunicación", 
49        "ods", "ODS - Objetivos de desarrollo sostenible", 
50        "odsupf","Els ODS a la UPF" 
51    }/> 
52        <#break> 
53<#default> 
54<#assign translations = { 
55        "categories", "Categories", 
56        "multimedia", "Multimedia",  
57        "perfils", "Profiles of the protagonists",  
58        "info", "For more information",  
59        "noticies", "News published by",  
60        "unitat", "Communication Office", 
61        "ods", "SDG - Sustainable Development Goals", 
62        "odsupf","Els ODS a la UPF" 
63    }/> 
64</#switch> 
65 
66<#--<#assign site = groupId />--> 
67<#assign site = groupId /> 
68 
69<#if ( site?is_number) > 
70    <#assign resourcePrimKey =  
71    journalLocalService.getArticle(getterUtil.getLong(site), .vars['reserved-article-id'].data).resourcePrimKey /> 
72    <#assign entry = AssetEntryLocalservice.getEntry("com.liferay.journal.model.JournalArticle", getterUtil.getLong(resourcePrimKey)) /> 
73   <#if entry.getPublishDate()?? > 
74     <#assign fecha_de_creacion = entry.getPublishDate()?string("dd.MM.yyyy")/> 
75   <#else> 
76     <#assign fecha_de_creacion = .now?string("dd.MM.yyyy")/> 
77   </#if> 
78 
79   <#if entry.getModifiedDate()?? > 
80     <#assign fecha_de_modificacion = entry.getModifiedDate()?string("dd.MM.yyyy")/> 
81   <#else> 
82     <#assign fecha_de_modificacion = .now?string("dd.MM.yyyy")/> 
83   </#if> 
84</#if> 
85 
86<#assign cat = "" /> 
87<#assign listaCategorias = entry.getCategories() /> 
88<#list listaCategorias as categoria > 
89    <#if stringUtil.equalsIgnoreCase("OpenCms", categoria.name) > 
90        <#assign cat = categoria.name /> 
91    </#if> 
92</#list> 
93<div class="container noticia-maximized nova"> 
94            <div id="nom_page"> 
95                <h1>${.vars['reserved-article-title'].data}</h1> 
96            </div> 
97            <div class="contingut subtitol"> 
98        <#if .vars['Resum']?? > 
99                    ${.vars['Resum'].getData()} 
100        </#if> 
101            </div> 
102            <div class="data_flex"> 
103        <#if ( fecha_de_creacion?length == 10) > 
104        <div class="data">${fecha_de_creacion}</div> 
105        </#if> 
106         <div class="xarxes-socials"> 
107         <script type="text/javascript"> 
108            var url_link = window.location.href; 
109            var encode_url_link = encodeURIComponent(url_link); 
110            var titular = `${.vars['reserved-article-title'].data}`; 
111            var encode_titular = encodeURIComponent(titular); 
112            function copiar() { 
113                navigator.clipboard.writeText(url_link); 
114
115            function carrega() { 
116                document.querySelectorAll('.ft-btn-rrss--whatsapp').forEach(function(element) { 
117                    element.href = `https://api.whatsapp.com/send?text='%C2%BF`+encode_titular+`%22%20`+encode_url_link+`%3Futm_source%3Dwhatsapp%26utm_medium%3Dsocial%26utm_campaign%3Dbtn-share`; 
118                }); 
119                document.querySelectorAll('.ft-btn-rrss--facebook').forEach(function(element) { 
120                    element.href = `https://www.facebook.com/sharer/sharer.php?u=`+encode_url_link; 
121                    element.setAttribute('data-href', url_link);  
122                }); 
123                document.querySelectorAll('.ft-btn-rrss--twitter').forEach(function(element) { 
124                    element.href = `https://twitter.com/intent/tweet?original_referer=https%3A%2F%2Fupf.edu%2F&ref_src=twsrc%5Etfw%7Ctwcamp%5Ebuttonembed%7Ctwterm%5Eshare%7Ctwgr%5E&text=`+encode_titular+`&url=`+encode_url_link; 
125                }); 
126                document.querySelectorAll('.ft-btn-rrss--email').forEach(function(element) { 
127                    element.href = `mailto:?subject=`+encode_titular+`&body=`+url_link; 
128                }); 
129            }; 
130            if (document.readyState !== "loading") { 
131                carrega(); 
132            }  
133            document.addEventListener("DOMContentLoaded", function(){ 
134                carrega(); 
135            }); 
136        </script> 
137        <div class="ft-mol-rrss-column__items"> 
138            <a href="#" target="_blank" title="WhatsApp" class="ft-btn-rrss ft-btn-rrss--whatsapp" rel="nofollow" data-share-button="whatsapp"> 
139                <span class="fa-stack"><i class="fa-solid fa-circle fa-stack-2x"></i><i class="fa-brands fa-whatsapp fa-stack-1x"></i></span> 
140                <span class="ft-btn-rrss__text"> RRSS WhatsApp</span> 
141            </a> 
142            <a href="#" target="_blank" title="Twitter" class="ft-btn-rrss ft-btn-rrss--twitter" rel="nofollow" data-share-button="twitter"> 
143                <span class="fa-stack"><i class="fa-solid fa-circle fa-stack-2x"></i><i class="fa-brands fa-x-twitter fa-stack-1x "></i></span> 
144                <span class="ft-btn-rrss__text"> RRSS Twitter</span> 
145            </a> 
146            <a href="#" target="_blank" title="Facebook" class="fb-share-button ft-btn-rrss--facebook" rel="nofollow" data-share-button="facebook" data-type="facebook"> 
147                <span class="fa-stack"><i class="fa-solid fa-circle fa-stack-2x"></i><i class="fa-brands fa-facebook-f fa-stack-1x "></i></span> 
148                <span class="ft-btn-rrss__text"> RRSS Facebook</span> 
149            </a> 
150            <a href="#" target="_blank" title="email" class="ft-btn-rrss ft-btn-rrss--email" rel="nofollow" data-share-button="mail"> 
151                 <span class="fa-stack"><i class="fa-solid fa-circle fa-stack-2x"></i><i class="fa-regular fa-envelope fa-stack-1x"></i></span> 
152                <span class="ft-btn-rrss__text"> RRSS email</span> 
153            </a> 
154            <a href="javascript: copiar()" title="Copiar URL" class="ft-btn-nav ft-btn-nav--copy ft-btn-nav--bordered" data-share-button="url"> 
155               <span class="fa-stack"><i class="fa-solid fa-circle fa-stack-2x"></i><i class="fa-regular fa-copy fa-stack-1x"></i></span> 
156                <span class="ft-btn-nav__text">Copiar URL</span> 
157            </a> 
158        </div> 
159            </div> 
160        </div> 
161<div class="row"> 
162    <div class="asset-full-content col-md-8 left"> 
163        <#-- end xarxes socials--> 
164        <div class="content" id="content"> 
165        <#if .vars['separadorimatge']?? > 
166            <#attempt> 
167                <#if ( .vars['separadorimatge'].getChild('url_youtube').getData() != "") > 
168                <!--zona youtube--> 
169                <p id="youtube" class="youtube"> 
170                    <script type="text/javascript"> 
171                        function getYoutube() { 
172                        var id = $(this).parent('p').attr("id"); 
173                        var url = "${.vars['separadorimatge'].getChild('url_youtube').getData()}" 
174                        var parm_youtube = extractYouTubeParameter(url) 
175                        if (parm_youtube.length != 0 ) { 
176                        return '<iframe title="Youtube video player" width="560" height="315" src="https://www.youtube.com/embed/'+ parm_youtube +'" frameborder="0" allowfullscreen></iframe>'; 
177                        } else { 
178                        return ''; 
179
180
181                        document.getElementById("youtube").innerHTML = getYoutube(); 
182                    </script> 
183                </p> 
184                <#elseif (.vars['separadorimatge'].getChild('Imatge_inicial').getData() != "" && .vars['separadorimatge'].getChild('url_youtube').getData() == "" ) > 
185                <p><img alt="Imatge inicial - ${.vars['separadorimatge'].getChild('Imatge_inicial').getChild('peufoto').getData()}" title="${.vars['separadorimatge'].getChild('Imatge_inicial').getChild('peufoto').getData()}" src="${.vars['separadorimatge'].getChild('Imatge_inicial').getData()}" width="100%" /></p> 
186                </#if> 
187            <#recover> 
188            </#attempt> 
189        </#if> 
190        <#if .vars['Noticia']?? > 
191            <div class="content-body">${.vars['Noticia'].getData()}</div> 
192        </#if> 
193        </div> 
194    </div> 
195 
196        <#-- Mostrem les categories que siguin filles de la categoria "Notícies"--> 
197        <#-- Preparació url dels enllaços a les categories--> 
198        <#assign wordCategories = languageUtil.get(locale, "categories-nom-page")> 
199        <#assign wordCategories = wordCategories?lower_case /> 
200        <#assign catUrl = "/web/focus/" + wordCategories + "?p_p_id=122_INSTANCE_4xkc6d8xhKAC&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_r_p_564233524_resetCur=true&p_r_p_564233524_categoryId=" /> 
201        <#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
202    
203<div class="col-md-4" id="right"> 
204        <#if  .vars['Camps_addicionalsb']?? && .vars['Camps_addicionalsb'].getChild('text_dreta')??> 
205            ${.vars['Camps_addicionalsb'].getChild('text_dreta').getData()} 
206        </#if> 
207         <h2 class="audio">${translations["multimedia"]}</h2> 
208          <div class="audio"> 
209                        <div id="media"></div> 
210                    </div> 
211        <#if .vars['Camps_addicionalsb']?? > 
212            <#attempt> 
213                <#assign prota = .vars['Camps_addicionalsb'].getChild('Protagonistes') /> 
214                <#if ( prota.getChild('nomperfil').getData() != "") > 
215                <h2>${translations["perfils"]}:</h2> 
216                <#list prota.getChild('nomperfil').getSiblings() as perfil > 
217                        <div class="names"> 
218                        <div class="nom">  
219                            ${perfil.getData()} 
220                        </div> 
221                        <div class="xarxes"> 
222                        <#list perfil.getChild('urlperfil').getSiblings() as sub_element > 
223                     
224                            <#-- Formatem l'enllaç perquè no el tracti com si fos una subpàgina --> 
225                            <#assign enllac = sub_element.getData() /> 
226                            <#if !enllac?starts_with("http")  >              
227                                <#assign enllac = "http://" + enllac />  
228                            </#if> 
229                     
230                            <a href="${enllac}" title="${enllac}" target="_blank"> 
231                                <#if (enllac?contains("facebook") ) > 
232                                    <img alt="Facebook UPF" height="16" src="//www.upf.edu/documents/213531008/213545108/facebook.png" width="16"> 
233                                <#elseif ( enllac?contains("twitter") ) > 
234                                    <img alt="Twitter UPF" height="16" src="//www.upf.edu/documents/213531008/213545108/twitter.png" width="16"> 
235                                <#elseif ( enllac?contains("instagram") ) > 
236                                    <img alt="Instagram UPF" height="16" src="//www.upf.edu/documents/213531008/213545108/instagram.png" width="16"> 
237                                <#elseif ( enllac?contains("youtube") ) > 
238                                    <img alt="Youtube UPF" height="16" src="//www.upf.edu/documents/213531008/213545108/youtube_new.png" width="16"> 
239                                <#elseif ( enllac?contains("linkedin") ) > 
240                                    <img alt="Linkedin UPF" height="16" src="//www.upf.edu/documents/213531008/213545108/linkedin.png" width="16"> 
241                                <#elseif ( enllac?contains("flickr") ) > 
242                                    <img alt="Flickr UPF" height="16" src="//www.upf.edu/documents/213531008/213545108/flickr.png" width="16"> 
243                                <#elseif ( enllac?contains("vimeo") ) > 
244                                    <img alt="Vimeo UPF" height="16" src="//www.upf.edu/documents/213531008/213545108/vimeo.png" width="16"> 
245                                <#elseif ( enllac?contains("pinterest") ) > 
246                                    <img alt="Pinterest UPF" height="16" src="//www.upf.edu/documents/213531008/213545108/pinterest.png" width="16"> 
247                                <#else> 
248                                <i class="fa-solid fa-link" aria-label="enllacos"></i> 
249                                 
250                                </#if> 
251                            </a> 
252                    </#list> 
253                        </div> 
254                        </div> 
255                </#list> 
256                </#if> 
257            <#recover>    
258            </#attempt> 
259        </#if>     
260        <div class="categories"> 
261            <h2>${translations["categories"]}:</h2> 
262             
263            <#list listaCategorias as categoria > 
264 
265            <#if categoria.getParentCategoryId() != 0 > <#--arreglo CG --> 
266             
267                <#assign assetCategory = "" /> 
268                <#assign assetCategory = assetCategoryLocalService.getCategory(categoria.getParentCategoryId()) />   
269                <#if (assetCategory.getName() == "Notícies") > 
270                    <div class="tipus"><a href="${catUrl}${categoria.getCategoryId()}">${categoria.getTitle(locale)}</a></div> 
271                </#if> 
272                 
273            </#if>   
274             
275            </#list> 
276        </div> 
277 
278     <div class="block_ods"> 
279         <h2>${translations["ods"]}:</h2> 
280                   <#list listaCategorias as categoria > 
281            <#if categoria.getParentCategoryId() != 0 > <#--arreglo CG --> 
282                <#assign assetCategory = "" /> 
283                <#assign assetCategory = assetCategoryLocalService.getCategory(categoria.getParentCategoryId()) />   
284                <#if (assetCategory.getName() == "ODS") > 
285                 
286                    <#if categoria.getTitle(locale)?contains('01.')> 
287                    <div class="ods_01">${categoria.getTitle(locale)}</div> 
288                    <#elseif categoria.getTitle(locale)?contains('02.')> 
289                    <div class="ods_02">${categoria.getTitle(locale)}</div> 
290                     <#elseif categoria.getTitle(locale)?contains('03.')> 
291                    <div class="ods_03">${categoria.getTitle(locale)}</div> 
292                     <#elseif categoria.getTitle(locale)?contains('04.')> 
293                    <div class="ods_04">${categoria.getTitle(locale)}</div> 
294                     <#elseif categoria.getTitle(locale)?contains('05.')> 
295                    <div class="ods_05">${categoria.getTitle(locale)}</div> 
296                     <#elseif categoria.getTitle(locale)?contains('06.')> 
297                    <div class="ods_06">${categoria.getTitle(locale)}</div> 
298                     <#elseif categoria.getTitle(locale)?contains('07.')> 
299                    <div class="ods_07">${categoria.getTitle(locale)}</div> 
300                     <#elseif categoria.getTitle(locale)?contains('08.')> 
301                    <div class="ods_08">${categoria.getTitle(locale)}</div> 
302                     <#elseif categoria.getTitle(locale)?contains('09.')> 
303                    <div class="ods_09">${categoria.getTitle(locale)}</div> 
304                     <#elseif categoria.getTitle(locale)?contains('10.')> 
305                    <div class="ods_10">${categoria.getTitle(locale)}</div> 
306                     <#elseif categoria.getTitle(locale)?contains('11.')> 
307                    <div class="ods_11">${categoria.getTitle(locale)}</div> 
308                     <#elseif categoria.getTitle(locale)?contains('12.')> 
309                    <div class="ods_12">${categoria.getTitle(locale)}</div> 
310                     <#elseif categoria.getTitle(locale)?contains('13.')> 
311                    <div class="ods_13">${categoria.getTitle(locale)}</div> 
312                     <#elseif categoria.getTitle(locale)?contains('14.')> 
313                    <div class="ods_14">${categoria.getTitle(locale)}</div> 
314                     <#elseif categoria.getTitle(locale)?contains('15.')> 
315                    <div class="ods_15">${categoria.getTitle(locale)}</div> 
316                     <#elseif categoria.getTitle(locale)?contains('16.')> 
317                    <div class="ods_16">${categoria.getTitle(locale)}</div> 
318                     <#elseif categoria.getTitle(locale)?contains('17.')> 
319                    <div class="ods_17">${categoria.getTitle(locale)}</div> 
320                    </#if> 
321                </#if> 
322                 
323            </#if>   
324            </#list> 
325            <a href="/web/responsabilitat-social/agenda-2030-ods" target="_blank" class="btn button_ods">${translations["odsupf"]} <i class="fa-solid fa-chevron-right" aria-hidden="true"></i></a> 
326    </div> 
327<h2 class="mark">Contact</h2> 
328<#if .vars['Camps_addicionalsb']?? > 
329    <#attempt> 
330    <#if .vars['Camps_addicionalsb'].getChild('espremsa').getData() == "true"> 
331        <div class="caixa-contacte"> 
332                <p><strong>${translations["noticies"]}:</strong></p> 
333                <p>${translations["unitat"]}</p> 
334                        <ul> 
335                            <li><a href="tel:616107518">616 107 518</a></li> 
336                            <li><a class="correuContacte" href="mailto:[email protected]">[email protected]</a></li> 
337                        </ul> 
338        </div> 
339             
340    </#if> 
341    <#recover> 
342    </#attempt> 
343</#if> 
344 
345    </div>    
346</div> 
347</div> 
348 
349   
350<#-- decidim si pintem la zona youtube o ivoox  --> 
351        <#if .vars['Camps_addicionalsb']?? > 
352            <#attempt> 
353                <#assign multi = .vars['Camps_addicionalsb'].getChild('Multimedia') /> 
354                <#list multi.getChild('youtubelist').getSiblings() as videos > 
355                    <#if ( videos.getChild('urlyoutubelist').getData()?contains("youtu") ) > 
356                        <script type="text/javascript"> 
357                        function getYoutube() { 
358                        var id = $(this).parent('p').attr("id"); 
359                        var url = "${videos.getChild('urlyoutubelist').getData()}" 
360                        var parm_youtube = extractYouTubeParameter(url) 
361                        if (parm_youtube.length != 0) { 
362                                return "<p>${videos.getChild("titolyoutubelist").getData()}</p><iframe title='Youtube video player' width='560' height='315' src='https://www.youtube.com/embed/"+ parm_youtube +"' frameborder='0' allowfullscreen></iframe>"; 
363                        } else { 
364                        return 'error'; 
365
366
367                        document.getElementById("media").innerHTML += getYoutube(); 
368                        </script> 
369                    <#elseif ( videos.getChild('urlyoutubelist').getData()?contains("ivoox") ) > 
370                        <script type="text/javascript"> 
371                                function getIvoox() { 
372                                if (!"${videos.getChild('urlyoutubelist').getData()}".includes("rf_")) {                           
373                                return "<p class='titol'>${videos.getChild("titolyoutubelist").getData()}</p><br /> Error. Use a valid audio URL";                             
374                                } else {             
375                                var Y = "rf_" 
376                                var X = "${videos.getChild('urlyoutubelist').getData()}" 
377                                var Z = X.slice(X.indexOf(Y) + Y.length) 
378                                return "<p class='titol'>${videos.getChild("titolyoutubelist").getData()}</p><iframe title='Youtube video player' width='238' height='48' frameborder='0' allowfullscreen='' scrolling='no' src='https://www.ivoox.com/player_ek_" + Z + "'></iframe>"; 
379
380
381                                document.getElementById("media").innerHTML += getIvoox(); 
382                        </script> 
383                    </#if>                        
384                </#list> 
385            <#recover> 
386            </#attempt> 
387        </#if> 
388<script> 
389 
390    if (!('remove' in Element.prototype)) { 
391        Element.prototype.remove = function() { 
392            if (this.parentNode) { 
393                this.parentNode.removeChild(this); 
394
395        }; 
396
397    // Si tenim els bookmarks posicionats d forma horitzontal, els movem 
398    if($(".taglib-social-bookmarks").length != 0){ 
399        $(".taglib-social-bookmarks").prependTo(".asset-full-content"); 
400        $(".taglib-social-bookmarks").get(0).remove(); 
401
402     
403    ajustaRelatedContentFullSize(); 
404     
405 
406    // Eliminem seccions si no n'hi ha cap 
407    if ($(".categories div").length == 0){ 
408        $(".categories").remove(); 
409
410    if ($(".block_ods div").length == 0){ 
411        $(".block_ods").remove(); 
412
413    if($('#media').is(':empty')) { 
414    $("h2.audio").hide(); 
415
416   
417   $('#content img[title]').captionate(); // imatges amb class caption mostraran la descripció 
418   
419    function ajustaRelatedContentFullSize(){ 
420        if ($(".list-group.sidebar-list-group").length!= 0){ 
421                $(".asset-links").appendTo("#right").insertAfter('.categories'); 
422                $(".asset-links").css("padding-left","0px !important");          
423        }else{ 
424            setTimeout(function(){ajustaRelatedContentFullSize();},100); 
425
426
427         
428/*Treure el títol de la pàgina 7.2*/ 
429 
430document.querySelector(".upf__titol-pagina")?.remove() 
431</script> 
432 
433<script type="application/ld+json"> 
434
435   "@context": "https://schema.org", 
436   "@type": "NewsArticle", 
437   "mainEntityOfPage":"${viewURL}", 
438   <#if .vars['reserved-article-title']?? >"headline":"${.vars['reserved-article-title'].data?js_string}",</#if> 
439   <#if entry.getPublishDate()?? > 
440   "datePublished":"${entry.getPublishDate()?datetime?iso_utc}", 
441   "dateModified":"${entry.getModifiedDate()?datetime?iso_utc}", 
442   </#if> 
443   <#if .vars['Resum']?? >"description":"${.vars['Resum'].getData()?js_string}",</#if> 
444   "publisher":{ 
445      "@type":"Organization", 
446      "name":"Universitat Pompeu Fabra (UPF)", 
447      "logo":{ 
448         "@type":"ImageObject", 
449         "url":"https://www.upf.edu/o/upf-2016-theme/images/upf/logo.png" 
450
451   }, 
452   
453  <#if .vars['separadorimatge'].getChild('Imatge_inicial')?? >"image": { 
454     "@type":"ImageObject", 
455    "url":"https://www.upf.edu${.vars['separadorimatge'].getChild('Imatge_inicial').getData()}"</#if>  
456
457  
458
459</script> 
460 
461<style> 
462    /*Xarxes socials*/ 
463    .data_flex { 
464        display: flex; 
465        flex-direction: row; 
466        flex-wrap: nowrap; 
467        align-items: center; 
468        justify-content: space-between; 
469
470    .ft-mol-rrss-column__items span.ft-btn-rrss__text,.ft-mol-rrss-column__items .ft-btn-nav__text { 
471    display: none; 
472
473    .ft-mol-rrss-column__items { 
474        text-align: end; 
475
476    .ft-mol-rrss-column__items a { 
477        text-decoration: none; 
478
479    .ft-mol-rrss-column__items .fa-stack > i { 
480    color: ${colorSite}; 
481
482    .ft-mol-rrss-column__items .fa-stack > i:first-child { 
483        background-color: transparent; 
484        color: transparent; 
485
486    /*Unificar estils de padding*/ 
487    .layout-content > section > div, .layout-content > section > div .row > div, .container.noticia-maximized.nova .left { 
488        padding-left: 0 !important; 
489        padding-right: 0 !important; 
490
491    /*Fix notícies relacionades*/ 
492    ul.list-group.sidebar-list-group .autofit-col .list-group-title:only-child { 
493    height: auto; 
494
495    ul.list-group.sidebar-list-group .text-truncate-inline .text-truncate { 
496        display: inline-block; 
497        color: #363733; 
498        text-decoration: none; 
499        max-width: 100%; 
500        overflow: auto; 
501        text-overflow: initial; 
502        vertical-align: bottom; 
503        white-space: normal; 
504        word-wrap: normal; 
505
506    ul.list-group.sidebar-list-group .text-truncate-inline .text-truncate:hover { 
507        color: #8c8f85; 
508
509    /*FI fix notícies relacionades*/ 
510 
511    #media p { 
512    margin: 10px 0 5px; 
513
514    /* ----- Estil per adaptar a themes que no són UPF 2016 ----- */ 
515    #nom_page h1 { 
516        color: ${colorSite} !important; 
517        font-size: 23px; 
518        font-weight: bold; 
519        line-height: normal; 
520        margin-bottom: 15px; 
521        margin-top: 0; 
522        padding: 0; 
523
524    .contingut.subtitol, .contingut.subtitol p, .contingut.subtitol ul, .contingut.subtitol ol { 
525        color: ${colorSite} !important; 
526
527     
528    .data { 
529        color: #989b8f; 
530
531    #right h2 { 
532        font-weight: normal; 
533        font-size: 20px; 
534        color: ${colorSite}; 
535        line-height: normal; 
536        margin-bottom: 1em !important; 
537        margin-top: 1em !important; 
538        text-decoration: none; 
539        text-transform: none; 
540        padding: 0; 
541
542    #right h2:first-child { 
543        margin-top: 0 !important; 
544
545    .tipus a { 
546        text-decoration: none !important; 
547
548     
549    li.list-group.sidebar-list-group-item a { 
550        color: ${colorSite} !important; 
551
552     
553    span.taglib-text { 
554        color:  ${colorSite}; 
555    }  
556     
557    .categories div.tipus a{ 
558        background-color: ${colorSite}; 
559        margin-bottom: 5px; 
560        margin-right: 5px; 
561        max-width: 100%; 
562        position: relative; 
563        display: inline-block; 
564        text-decoration: none; 
565        color: #FFFFFF; 
566        padding: 5px 10px; 
567    }    
568     
569 
570    /* ----- Fi estil per adaptar a themes que no són UPF 2016 ----- */ 
571 
572    /* En aplicar aquesta class a un div .container, limitem amb auto per no ser sempre 1170px */ 
573    .noticia-maximized{ 
574        max-width: 1280px !important; 
575        width: auto !important; 
576
577    .noticia-maximized .row { 
578        align-items: stretch; 
579        align-content: stretch; 
580
581 
582    #nom_page{ 
583        display:block !important; 
584
585    #contingut > #nom_page{ 
586        display:none !important; 
587
588     
589    /* Per treure la icona de davant del títol Continguts relacionats*/ 
590    .asset-links h2{ 
591        background:none !important; 
592
593    .asset-links{ 
594        padding-left: 4px; 
595        margin-top: 0px; 
596
597    .list-group.sidebar-list-group{ 
598        padding-left: 25px !important; 
599
600    .list-group.sidebar-list-group-item{ 
601        list-style: initial !important; 
602
603    .list-group.sidebar-list-group-item img{ 
604        display:none; 
605
606    .contingut.subtitol, .contingut.subtitol p, .contingut.subtitol ul, .contingut.subtitol ol { 
607        font-weight: normal; 
608        padding-top: 0; 
609        line-height: normal !important; 
610
611     
612    .contingut.subtitol { 
613        border-bottom: 1px solid #ddd; 
614        margin-bottom: 10px; 
615        padding-bottom: 10px; 
616
617    .asset-full-content .tipus > a { 
618        background-color: ${colorSite} !important; 
619        margin-right: 5px; 
620        margin-bottom: 5px; 
621        position: relative; 
622        max-width:100%; 
623        text-decoration:none; 
624
625    .asset-full-content .tipus > a:hover { 
626        color: #ffffff !important; 
627
628     
629    .asset-full-content .tipus{ 
630        display: inline; 
631
632     
633    .taglib-social-bookmarks { 
634        display: block; 
635        float: right; 
636        background:none; 
637        margin-top:0px; 
638
639    .taglib-social-bookmarks a{ 
640        margin-bottom: 0px; 
641
642    .taglib-social-bookmarks ul{ 
643        padding:0px; 
644        margin-bottom:0px; 
645
646    .taglib-social-bookmarks ul li{ 
647        margin-right:0px; 
648
649    .asset-full-content .content { 
650        border-bottom: 0px solid #fff; 
651        margin-bottom: 20px; 
652        padding-bottom: 10px; 
653        padding-left: 12px; 
654        padding-right: 12px; 
655        width: 100%; 
656
657    div#content img { 
658        max-width: 100%; 
659
660    .asset-full-content .content::before { 
661        content: ""; 
662        display: inline-table; 
663        width: 100%; 
664
665    .asset-full-content .content h3 { 
666        font-size: 18px; 
667        font-weight: normal; 
668
669    .categories::after { 
670        content: ""; 
671        display: inline-table; 
672        width: 100%; 
673
674    .categories h2, .sheet-tertiary-title{ 
675        color: ${colorSite} !important; 
676
677 
678     
679    @media (min-width: 979px) and (max-width: 1200px) { 
680         
681
682    @media (max-width: 978px) { 
683        .asset-full-content .data { 
684            display:inline-table;} 
685
686    @media (max-width: 480px) {  
687        .asset-full-content .tipus > a { 
688            float:none;} 
689
690 
691     /*Nova notícia*/ 
692   .nova .names a { 
693    text-decoration: none !important; 
694    transition: 0.4s all; 
695
696    .nova .names a:hover img, .nova .names a:hover i { 
697    transform: translateY(-4px)!important; 
698    transition: 0.2s all; 
699
700    .nova .names { 
701    display: table; 
702    box-sizing: border-box; 
703    width: 100%; 
704
705    .nova .names .nom { 
706    width: 50%; 
707    display: inline-table; 
708
709    .nova .names .xarxes { 
710    width: 50%; 
711    display: inline-table; 
712
713    .nova p.youtube { 
714    margin: 0 0 20px; 
715
716    .nova p.subtitol:after { 
717    content: ""; 
718    width: 100%; 
719    height: 1px; 
720    background-color: #ddd; 
721    position: relative; 
722    display: table; 
723
724    .nova #right { 
725        padding-top: 25px; 
726
727    .nova .asset-full-content figure { 
728    display: inline-block; 
729    margin-bottom: 20px; 
730    border: 1px solid transparent; 
731    margin-right: 0; 
732    margin-left: 0; 
733    margin-top: 0; 
734
735    .nova .asset-full-content figcaption {display: block; text-align: center; font-size: 0.8em; font-style: italic; } 
736    .nova .fa-caret-down:before { 
737        content: "\f0d7" !important; 
738
739    @media (max-width: 480px) {  
740        .nova .asset-full-content figure { 
741        float: none !important; 
742
743
744    .nova .asset-full-content .content .content-body > p:nth-child(1):first-letter { 
745    color: ${colorSite}; 
746    float: left; 
747    font-family: Georgia; 
748    font-size: 5rem; 
749    line-height: 4rem; 
750    padding-top: 0; 
751    padding-right: 1rem; 
752    padding-left: 0px; 
753    padding-bottom: 0px; 
754    margin-top: -1rem; 
755
756     
757    ul.list-group.sidebar-list-group { 
758    list-style: none !important; 
759    margin: 0 !important; 
760    padding: 0 !important; 
761
762.asset-links .list-group.sidebar-list-group-item { 
763    list-style: none !important; 
764
765.asset-links li.list-group.sidebar-list-group-item a { 
766    color: #353430 !important; 
767    text-decoration: none !important; 
768    border: 1px solid #ddd; 
769    border-radius: 4px; 
770    display: block; 
771    padding: 10px; 
772    background-color: #eee; 
773
774.asset-links .list-group.sidebar-list-group-item a:hover { 
775    text-decoration: none !important; 
776
777.asset-links .list-group.sidebar-list-group-item a:before { 
778    content: "\f0c1"; 
779    font-family: 'fontawesome-alloy'; 
780    font-size: 25px; 
781    display: inline-block; 
782    margin-right: 4px; 
783    width: 10%; 
784    vertical-align: middle; 
785
786.asset-links li.list-group.sidebar-list-group-item a span.taglib-text { 
787    color: #353430 !important; 
788    display: inline-block; 
789    width: 80%; 
790    vertical-align: middle; 
791    text-decoration: none; 
792
793 
794.asset-links .list-group.sidebar-list-group-item:hover a, .asset-links .list-group.sidebar-list-group-item:hover a span.taglib-text { 
795    background-color: #353430 !important; 
796    color: #eee !important; 
797    text-decoration: none; 
798
799 
800/*Caixa contacte*/ 
801.caixa-contacte { 
802    border: 1px solid #ddd; 
803    padding: 10px; 
804    margin-bottom: 20px; 
805    margin-top: 30px; 
806    top: 60px; 
807    position: -webkit-sticky; 
808    position: sticky; 
809    box-sizing: border-box !important; 
810
811h2.mark { 
812    display: block; 
813    font-size: 0 !important; 
814    color: #fff !important; 
815    background-color: #fff !important; 
816
817 
818/*Elements notícia*/ 
819/*cita*/ 
820.nova cite { 
821    margin-top: 30px; 
822    margin-bottom: 30px; 
823    font-size: 20px; 
824    color: #666; 
825    padding-left: 10px; 
826    box-sizing: border-box; 
827    vertical-align: middle; 
828    display: inline-block; 
829    border-left: 3px solid #666; 
830    padding-top: 10px; 
831    padding-bottom: 10px; 
832    width: 80%; 
833    margin-left: 20%; 
834    line-height: normal !important; 
835
836 .nova .asset-full-content .content h3 { 
837    font-size: 18px; 
838    font-weight: normal; 
839    line-height: normal; 
840    margin-top: 40px; 
841    margin-bottom: 20px; 
842    color:  ${colorSite}; 
843
844.nova .asset-full-content .content h4 { 
845    font-size: 16px; 
846    font-weight: normal; 
847    line-height: normal; 
848    margin-top: 30px; 
849    margin-bottom: 10px; 
850    color: ${colorSite}; 
851
852 
853/*ODS*/ 
854@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro&display=swap'); 
855 
856[class*=ods_] { 
857    font-family: 'Source Sans Pro', sans-serif; 
858    font-weight: bold; 
859    line-height: normal; 
860    text-transform: uppercase; 
861    font-size: 10px; 
862    color: white; 
863    display: inline-table; 
864    width: calc(50% - 4px); 
865    max-width: 130px; 
866    height: 130px; 
867    padding: 1em; 
868    box-sizing: border-box; 
869    background-color: grey; 
870    background-repeat: no-repeat; 
871    background-position: bottom; 
872    background-size: 100%; 
873    margin-left: 4px; 
874    margin-bottom: 4px; 
875
876.ods_01 { 
877    background-color: #e5233d; 
878    background-image: url(/documents/10193/252729907/ods_01.png); 
879
880.ods_02 { 
881    background-color: #dda73a; 
882     background-image: url(/documents/10193/252729907/ods_02.png); 
883
884.ods_03 { 
885    background-color: #4ca146; 
886     background-image: url(/documents/10193/252729907/ods_03.png); 
887
888.ods_04 { 
889    background-color: #c7212f; 
890     background-image: url(/documents/10193/252729907/ods_04.png); 
891
892.ods_05 { 
893    background-color: #ef402d; 
894     background-image: url(/documents/10193/252729907/ods_05.png); 
895
896.ods_06 { 
897    background-color: #27bfe6; 
898     background-image: url(/documents/10193/252729907/ods_06.png); 
899
900.ods_07 { 
901    background-color: #fbc412; 
902     background-image: url(/documents/10193/252729907/ods_07.png); 
903
904.ods_08 { 
905    background-color: #a31c44; 
906     background-image: url(/documents/10193/252729907/ods_08.png); 
907
908.ods_09 { 
909    background-color: #f26a2e; 
910     background-image: url(/documents/10193/252729907/ods_09.png); 
911
912.ods_10 { 
913    background-color: #dd1667; 
914     background-image: url(/documents/10193/252729907/ods_10.png); 
915
916.ods_11 { 
917    background-color: #f89d2a; 
918     background-image: url(/documents/10193/252729907/ods_11.png); 
919
920.ods_12 { 
921    background-color: #bf8d2c; 
922     background-image: url(/documents/10193/252729907/ods_12.png); 
923
924.ods_13 { 
925    background-color: #407f46; 
926     background-image: url(/documents/10193/252729907/ods_13.png); 
927
928.ods_14 { 
929    background-color: #1f97d4; 
930     background-image: url(/documents/10193/252729907/ods_14.png); 
931
932.ods_15 { 
933    background-color: #59ba47; 
934     background-image: url(/documents/10193/252729907/ods_15.png); 
935
936.ods_16 { 
937    background-color: #136a9f; 
938     background-image: url(/documents/10193/252729907/ods_16.png); 
939
940.ods_17 { 
941    background-color: #14496b; 
942     background-image: url(/documents/10193/252729907/ods_17.png); 
943
944 
945a.btn.button_ods { 
946    position: relative; 
947    display: table !important; 
948    width: auto; 
949    margin-top: 1em; 
950    margin-bottom: 0; 
951    background-image: none; 
952    background-color: ${colorSite}; 
953    color: #fff; 
954    text-shadow: none; 
955    border: none !important; 
956    float: none; 
957    font-size: inherit; 
958    border-radius: 0; 
959
960a.btn.button_ods:hover, a.btn.button_ods:focus { 
961    background-image: none; 
962    background-color: ${colorSite}70; 
963    color: #fff; 
964
965 
966</style> 

Connect with IBE

Stay tuned to the most important news and events at the institute

Subscribe

Trustees

 
Universitat Pompeu FabraCSICMinisterio de ciencia, innovación y universidades


 

With the support of

 


 


 
Member of

Associate
member of


Distinctions