Back Tomàs Marquès, New Academic Member of the Royal Academy of Sciences

An error occurred while processing the template.
The following has evaluated to null or missing:
==> assetEntryLocalservice  [in template "10155#10193#NOTICIA" at line 24, column 23]

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