Back Identificada la signatura genètica neandertal en els pobles nord-africans actuals

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>