Vés enrere Obertes les inscripcions per al primer MOOC sobre llengua de signes catalana

S'ha produït un error mentre es processava la plantilla.
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>