Atrás Announcement Doctoral Thesis defense: MARTA MELÈ

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