Back IBE in the 1st edition of the Biennal Ciutat i Ciència

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

----
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["Camps_addicionalsb"].getCh...  [in template "10155#10193#NOTICIA" at line 456, 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 
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>${translations["noticies"]}:</p> 
333                        <p><strong>${translations["unitat"]}</strong></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?json_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['separadorimatge']?? ><#if .vars['separadorimatge'].getChild('Imatge_inicial')?? >"image": { 
444     "@type":"ImageObject", 
445    "url":"https://www.upf.edu${.vars['separadorimatge'].getChild('Imatge_inicial').getData()}" 
446    },</#if> </#if>  
447   <#if .vars['Resum']?? >"description":"${.vars['Resum'].getData()?json_string}",</#if> 
448   "publisher":{ 
449      "@type":"Organization", 
450      "name":"Universitat Pompeu Fabra (UPF)", 
451      "logo":{ 
452         "@type":"ImageObject", 
453         "url":"https://www.upf.edu/o/upf-2016-theme/images/upf/logo.png" 
454
455
456<#if .vars['Camps_addicionalsb'].getChild('espremsa').getData() == 'true'> 
457
458   "author":{ 
459    "@type":"Person", 
460    "name" : "Oficina de Comunicació" 
461
462   </#if>   
463
464</script> 
465 
466<style> 
467    /*Xarxes socials*/ 
468    .data_flex { 
469        display: flex; 
470        flex-direction: row; 
471        flex-wrap: nowrap; 
472        align-items: center; 
473        justify-content: space-between; 
474
475    .ft-mol-rrss-column__items span.ft-btn-rrss__text,.ft-mol-rrss-column__items .ft-btn-nav__text { 
476    display: none; 
477
478    .ft-mol-rrss-column__items { 
479        text-align: end; 
480
481    .ft-mol-rrss-column__items a { 
482        text-decoration: none; 
483
484    .ft-mol-rrss-column__items .fa-stack > i { 
485    color: ${colorSite}; 
486
487    .ft-mol-rrss-column__items .fa-stack > i:first-child { 
488        background-color: transparent; 
489        color: transparent; 
490
491    /*Unificar estils de padding*/ 
492    .layout-content > section > div, .layout-content > section > div .row > div, .container.noticia-maximized.nova .left { 
493        padding-left: 0 !important; 
494        padding-right: 0 !important; 
495
496    /*Fix notícies relacionades*/ 
497    ul.list-group.sidebar-list-group .autofit-col .list-group-title:only-child { 
498    height: auto; 
499
500    ul.list-group.sidebar-list-group .text-truncate-inline .text-truncate { 
501        display: inline-block; 
502        color: #363733; 
503        text-decoration: none; 
504        max-width: 100%; 
505        overflow: auto; 
506        text-overflow: initial; 
507        vertical-align: bottom; 
508        white-space: normal; 
509        word-wrap: normal; 
510
511    ul.list-group.sidebar-list-group .text-truncate-inline .text-truncate:hover { 
512        color: #8c8f85; 
513
514    /*FI fix notícies relacionades*/ 
515 
516    #media p { 
517    margin: 10px 0 5px; 
518
519    /* ----- Estil per adaptar a themes que no són UPF 2016 ----- */ 
520    #nom_page h1 { 
521        color: ${colorSite} !important; 
522        font-size: 23px; 
523        font-weight: bold; 
524        line-height: normal; 
525        margin-bottom: 15px; 
526        margin-top: 0; 
527        padding: 0; 
528
529    .contingut.subtitol, .contingut.subtitol p, .contingut.subtitol ul, .contingut.subtitol ol { 
530        color: ${colorSite} !important; 
531
532     
533    .data { 
534        color: #989b8f; 
535
536    #right h2 { 
537        font-weight: normal; 
538        font-size: 20px; 
539        color: ${colorSite}; 
540        line-height: normal; 
541        margin-bottom: 1em !important; 
542        margin-top: 1em !important; 
543        text-decoration: none; 
544        text-transform: none; 
545        padding: 0; 
546
547    #right h2:first-child { 
548        margin-top: 0 !important; 
549
550    .tipus a { 
551        text-decoration: none !important; 
552
553     
554    li.list-group.sidebar-list-group-item a { 
555        color: ${colorSite} !important; 
556
557     
558    span.taglib-text { 
559        color:  ${colorSite}; 
560    }  
561     
562    .categories div.tipus a{ 
563        background-color: ${colorSite}; 
564        margin-bottom: 5px; 
565        margin-right: 5px; 
566        max-width: 100%; 
567        position: relative; 
568        display: inline-block; 
569        text-decoration: none; 
570        color: #FFFFFF; 
571        padding: 5px 10px; 
572    }    
573     
574 
575    /* ----- Fi estil per adaptar a themes que no són UPF 2016 ----- */ 
576 
577    /* En aplicar aquesta class a un div .container, limitem amb auto per no ser sempre 1170px */ 
578    .noticia-maximized{ 
579        max-width: 1280px !important; 
580        width: auto !important; 
581
582    .noticia-maximized .row { 
583        align-items: stretch; 
584        align-content: stretch; 
585
586 
587    #nom_page{ 
588        display:block !important; 
589
590    #contingut > #nom_page{ 
591        display:none !important; 
592
593     
594    /* Per treure la icona de davant del títol Continguts relacionats*/ 
595    .asset-links h2{ 
596        background:none !important; 
597
598    .asset-links{ 
599        padding-left: 4px; 
600        margin-top: 0px; 
601
602    .list-group.sidebar-list-group{ 
603        padding-left: 25px !important; 
604
605    .list-group.sidebar-list-group-item{ 
606        list-style: initial !important; 
607
608    .list-group.sidebar-list-group-item img{ 
609        display:none; 
610
611    .contingut.subtitol, .contingut.subtitol p, .contingut.subtitol ul, .contingut.subtitol ol { 
612        font-weight: normal; 
613        padding-top: 0; 
614        line-height: normal !important; 
615
616     
617    .contingut.subtitol { 
618        border-bottom: 1px solid #ddd; 
619        margin-bottom: 10px; 
620        padding-bottom: 10px; 
621
622    .asset-full-content .tipus > a { 
623        background-color: ${colorSite} !important; 
624        margin-right: 5px; 
625        margin-bottom: 5px; 
626        position: relative; 
627        max-width:100%; 
628        text-decoration:none; 
629
630    .asset-full-content .tipus > a:hover { 
631        color: #ffffff !important; 
632
633     
634    .asset-full-content .tipus{ 
635        display: inline; 
636
637     
638    .taglib-social-bookmarks { 
639        display: block; 
640        float: right; 
641        background:none; 
642        margin-top:0px; 
643
644    .taglib-social-bookmarks a{ 
645        margin-bottom: 0px; 
646
647    .taglib-social-bookmarks ul{ 
648        padding:0px; 
649        margin-bottom:0px; 
650
651    .taglib-social-bookmarks ul li{ 
652        margin-right:0px; 
653
654    .asset-full-content .content { 
655        border-bottom: 0px solid #fff; 
656        margin-bottom: 20px; 
657        padding-bottom: 10px; 
658        padding-left: 12px; 
659        padding-right: 12px; 
660        width: 100%; 
661
662    div#content img { 
663        max-width: 100%; 
664
665    .asset-full-content .content::before { 
666        content: ""; 
667        display: inline-table; 
668        width: 100%; 
669
670    .asset-full-content .content h3 { 
671        font-size: 18px; 
672        font-weight: normal; 
673
674    .categories::after { 
675        content: ""; 
676        display: inline-table; 
677        width: 100%; 
678
679    .categories h2, .sheet-tertiary-title{ 
680        color: ${colorSite} !important; 
681
682 
683     
684    @media (min-width: 979px) and (max-width: 1200px) { 
685         
686
687    @media (max-width: 978px) { 
688        .asset-full-content .data { 
689            display:inline-table;} 
690
691    @media (max-width: 480px) {  
692        .asset-full-content .tipus > a { 
693            float:none;} 
694
695 
696     /*Nova notícia*/ 
697   .nova .names a { 
698    text-decoration: none !important; 
699    transition: 0.4s all; 
700
701    .nova .names a:hover img, .nova .names a:hover i { 
702    transform: translateY(-4px)!important; 
703    transition: 0.2s all; 
704
705    .nova .names { 
706    display: table; 
707    box-sizing: border-box; 
708    width: 100%; 
709
710    .nova .names .nom { 
711    width: 50%; 
712    display: inline-table; 
713
714    .nova .names .xarxes { 
715    width: 50%; 
716    display: inline-table; 
717
718    .nova p.youtube { 
719    margin: 0 0 20px; 
720
721    .nova p.subtitol:after { 
722    content: ""; 
723    width: 100%; 
724    height: 1px; 
725    background-color: #ddd; 
726    position: relative; 
727    display: table; 
728
729    .nova #right { 
730        padding-top: 25px; 
731
732    .nova .asset-full-content figure { 
733    display: inline-block; 
734    margin-bottom: 20px; 
735    border: 1px solid transparent; 
736    margin-right: 0; 
737    margin-left: 0; 
738    margin-top: 0; 
739
740    .nova .asset-full-content figcaption {display: block; text-align: center; font-size: 0.8em; font-style: italic; } 
741    .nova .fa-caret-down:before { 
742        content: "\f0d7" !important; 
743
744    @media (max-width: 480px) {  
745        .nova .asset-full-content figure { 
746        float: none !important; 
747
748
749    .nova .asset-full-content .content .content-body > p:nth-child(1):first-letter { 
750    color: ${colorSite}; 
751    float: left; 
752    font-family: Georgia; 
753    font-size: 5rem; 
754    line-height: 4rem; 
755    padding-top: 0; 
756    padding-right: 1rem; 
757    padding-left: 0px; 
758    padding-bottom: 0px; 
759    margin-top: -1rem; 
760
761     
762    ul.list-group.sidebar-list-group { 
763    list-style: none !important; 
764    margin: 0 !important; 
765    padding: 0 !important; 
766
767.asset-links .list-group.sidebar-list-group-item { 
768    list-style: none !important; 
769
770.asset-links li.list-group.sidebar-list-group-item a { 
771    color: #353430 !important; 
772    text-decoration: none !important; 
773    border: 1px solid #ddd; 
774    border-radius: 4px; 
775    display: block; 
776    padding: 10px; 
777    background-color: #eee; 
778
779.asset-links .list-group.sidebar-list-group-item a:hover { 
780    text-decoration: none !important; 
781
782.asset-links .list-group.sidebar-list-group-item a:before { 
783    content: "\f0c1"; 
784    font-family: 'fontawesome-alloy'; 
785    font-size: 25px; 
786    display: inline-block; 
787    margin-right: 4px; 
788    width: 10%; 
789    vertical-align: middle; 
790
791.asset-links li.list-group.sidebar-list-group-item a span.taglib-text { 
792    color: #353430 !important; 
793    display: inline-block; 
794    width: 80%; 
795    vertical-align: middle; 
796    text-decoration: none; 
797
798 
799.asset-links .list-group.sidebar-list-group-item:hover a, .asset-links .list-group.sidebar-list-group-item:hover a span.taglib-text { 
800    background-color: #353430 !important; 
801    color: #eee !important; 
802    text-decoration: none; 
803
804 
805/*Caixa contacte*/ 
806.caixa-contacte { 
807    border: 1px solid #ddd; 
808    padding: 10px; 
809    margin-bottom: 20px; 
810    margin-top: 30px; 
811    top: 60px; 
812    position: -webkit-sticky; 
813    position: sticky; 
814    box-sizing: border-box !important; 
815
816h2.mark { 
817    display: block; 
818    font-size: 0 !important; 
819    color: #fff !important; 
820    background-color: #fff !important; 
821
822 
823/*Elements notícia*/ 
824/*cita*/ 
825.nova cite { 
826    margin-top: 30px; 
827    margin-bottom: 30px; 
828    font-size: 20px; 
829    color: #666; 
830    padding-left: 10px; 
831    box-sizing: border-box; 
832    vertical-align: middle; 
833    display: inline-block; 
834    border-left: 3px solid #666; 
835    padding-top: 10px; 
836    padding-bottom: 10px; 
837    width: 80%; 
838    margin-left: 20%; 
839    line-height: normal !important; 
840
841 .nova .asset-full-content .content h3 { 
842    font-size: 18px; 
843    font-weight: normal; 
844    line-height: normal; 
845    margin-top: 40px; 
846    margin-bottom: 20px; 
847    color:  ${colorSite}; 
848
849.nova .asset-full-content .content h4 { 
850    font-size: 16px; 
851    font-weight: normal; 
852    line-height: normal; 
853    margin-top: 30px; 
854    margin-bottom: 10px; 
855    color: ${colorSite}; 
856
857 
858/*ODS*/ 
859@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro&display=swap'); 
860 
861[class*=ods_] { 
862    font-family: 'Source Sans Pro', sans-serif; 
863    font-weight: bold; 
864    line-height: normal; 
865    text-transform: uppercase; 
866    font-size: 10px; 
867    color: white; 
868    display: inline-table; 
869    width: calc(50% - 4px); 
870    max-width: 130px; 
871    height: 130px; 
872    padding: 1em; 
873    box-sizing: border-box; 
874    background-color: grey; 
875    background-repeat: no-repeat; 
876    background-position: bottom; 
877    background-size: 100%; 
878    margin-left: 4px; 
879    margin-bottom: 4px; 
880
881.ods_01 { 
882    background-color: #e5233d; 
883    background-image: url(/documents/10193/252729907/ods_01.png); 
884
885.ods_02 { 
886    background-color: #dda73a; 
887     background-image: url(/documents/10193/252729907/ods_02.png); 
888
889.ods_03 { 
890    background-color: #4ca146; 
891     background-image: url(/documents/10193/252729907/ods_03.png); 
892
893.ods_04 { 
894    background-color: #c7212f; 
895     background-image: url(/documents/10193/252729907/ods_04.png); 
896
897.ods_05 { 
898    background-color: #ef402d; 
899     background-image: url(/documents/10193/252729907/ods_05.png); 
900
901.ods_06 { 
902    background-color: #27bfe6; 
903     background-image: url(/documents/10193/252729907/ods_06.png); 
904
905.ods_07 { 
906    background-color: #fbc412; 
907     background-image: url(/documents/10193/252729907/ods_07.png); 
908
909.ods_08 { 
910    background-color: #a31c44; 
911     background-image: url(/documents/10193/252729907/ods_08.png); 
912
913.ods_09 { 
914    background-color: #f26a2e; 
915     background-image: url(/documents/10193/252729907/ods_09.png); 
916
917.ods_10 { 
918    background-color: #dd1667; 
919     background-image: url(/documents/10193/252729907/ods_10.png); 
920
921.ods_11 { 
922    background-color: #f89d2a; 
923     background-image: url(/documents/10193/252729907/ods_11.png); 
924
925.ods_12 { 
926    background-color: #bf8d2c; 
927     background-image: url(/documents/10193/252729907/ods_12.png); 
928
929.ods_13 { 
930    background-color: #407f46; 
931     background-image: url(/documents/10193/252729907/ods_13.png); 
932
933.ods_14 { 
934    background-color: #1f97d4; 
935     background-image: url(/documents/10193/252729907/ods_14.png); 
936
937.ods_15 { 
938    background-color: #59ba47; 
939     background-image: url(/documents/10193/252729907/ods_15.png); 
940
941.ods_16 { 
942    background-color: #136a9f; 
943     background-image: url(/documents/10193/252729907/ods_16.png); 
944
945.ods_17 { 
946    background-color: #14496b; 
947     background-image: url(/documents/10193/252729907/ods_17.png); 
948
949 
950a.btn.button_ods { 
951    position: relative; 
952    display: table !important; 
953    width: auto; 
954    margin-top: 1em; 
955    margin-bottom: 0; 
956    background-image: none; 
957    background-color: ${colorSite}; 
958    color: #fff; 
959    text-shadow: none; 
960    border: none !important; 
961    float: none; 
962    font-size: inherit; 
963    border-radius: 0; 
964
965a.btn.button_ods:hover, a.btn.button_ods:focus { 
966    background-image: none; 
967    background-color: ${colorSite}70; 
968    color: #fff; 
969
970 
971</style>