Agenda

No hay resultados para esta búsqueda

Els bibliotecaris recomanen

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> saxReaderUtil.createXPath("dynamic-element
                                [@field-reference='new' ]
                                /dynamic-content").selectSingleNode(rootElement)  [in template "10901#10934#414832502" at line 36, column 26]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign new = saxReaderUtil.createXPa...  [in template "10901#10934#414832502" at line 36, column 13]
----
1<#assign DlAppServiceUtil=staticUtil["com.liferay.document.library.kernel.service.DLAppServiceUtil"] /> 
2<#assign JSONFactoryUtil=staticUtil["com.liferay.portal.kernel.json.JSONFactoryUtil"] /> 
3<#assign DLFileEntryLocalServiceUtil=staticUtil["com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil"] /> 
4<#assign AssetLinkManagerUtil=staticUtil["com.liferay.asset.kernel.manager.AssetLinkManagerUtil"] /> 
5<#assign AssetEntryLocalServiceUtil=staticUtil["com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil"] /> 
6<#assign JournalArticleLocalService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
7<#assign LocaleUtil=staticUtil["com.liferay.portal.kernel.util.LocaleUtil"] /> 
8<#if locale=="es_ES"> 
9    <#assign icono="ic_nuevo.png"> 
10<#elseif locale=="ca_ES"> 
11    <#assign icono="ic_neu.png"> 
12<#else>    
13    <#assign icono="ic_new.png"> 
14</#if> 
15<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/6.8.4/swiper-bundle.min.css" /> 
16<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/6.8.4/swiper-bundle.min.js" type="text/javascript"></script> 
17<#assign portletId=themeDisplay.getPortletDisplay().getId()?keep_after_last("_") /> 
18<#assign cont=0> 
19<div class="swiper-recomanacions"> 
20<div class="swiper-container swiper-recomanacions-${portletId}"> 
21    <div class="swiper-wrapper"> 
22        <#list entries as curEntry> 
23 
24            <#assign 
25                assetRenderer=curEntry.getAssetRenderer() 
26                journalArticle=assetRenderer.getAssetObject() /> 
27            <#assign document=saxReaderUtil.read(journalArticle.getContentByLocale(locale))> 
28            <#assign rootElement=document.getRootElement()> 
29            <#assign fechaAssetEntry=curEntry.getPublishDate()> 
30            <#assign caducado=0> 
31            <#if dateUtil.getDaysBetween(.now?date,fechaAssetEntry?date) gte 90> 
32                <#assign caducado=1> 
33            </#if> 
34            <#assign dlfile=""> 
35            <#assign urlExterna=""> 
36            <#assign new=saxReaderUtil.createXPath("dynamic-element 
37                            [@field-reference='new' ] 
38                            /dynamic-content").selectSingleNode(rootElement).getStringValue()> 
39            <#assign title=saxReaderUtil.createXPath("dynamic-element 
40                [@field-reference='title' ] 
41                /dynamic-content").selectSingleNode(rootElement).getStringValue()> 
42            <#assign relatedLinks=AssetLinkManagerUtil.getRelatedDirectLinksIds(curEntry.getEntryId())>   
43            <#-- Miramos que tenga Document_recomanat asociado para crear el swiper-slide --> 
44             
45 
46            <#if relatedLinks?has_content> 
47                <#list relatedLinks as link>     
48                    <#attempt> 
49                     
50                    <#assign relatedEntry=AssetEntryLocalServiceUtil.getAssetEntry(link?number)> 
51                    <#assign relatedJournal=JournalArticleLocalService.getLatestArticle(relatedEntry.getClassPK())>                     
52                    <#if relatedJournal.getDDMStructureKey()=="DOCUMENT_RECOMANAT"> 
53                        <#assign relatedDocument=saxReaderUtil.read(relatedJournal.getContent())> 
54                        <#assign relatedRootElement=relatedDocument.getRootElement()>   
55                        <#assign urlImageFieldSet=saxReaderUtil.createXPath("dynamic-element 
56                            [@field-reference='urlImageFieldSet' ]").selectSingleNode(relatedRootElement)> 
57                        <#assign image=saxReaderUtil.createXPath("dynamic-element 
58                            [@field-reference='urlImage' ] 
59                            /dynamic-content").selectSingleNode(urlImageFieldSet).getStringValue()> 
60                        <#assign urlExterna=saxReaderUtil.createXPath("dynamic-element 
61                            [@field-reference='urlExterna' ] 
62                            /dynamic-content").selectSingleNode(urlImageFieldSet).getStringValue()> 
63                        <#assign autor=saxReaderUtil.createXPath("dynamic-element 
64                         [@field-reference='Autor' ] 
65                                    /dynamic-content").selectSingleNode(rootElement).getStringValue()> 
66                        <#assign imageJson=JSONFactoryUtil.createJSONObject(image)> 
67                 
68                        <#if imageJson.has("uuid") && imageJson.has("groupId")> 
69                            <#assign dlfile=DLFileEntryLocalServiceUtil.getDLFileEntryByUuidAndGroupId(imageJson.getString("uuid"),imageJson.getLong("groupId"))> 
70                        </#if> 
71                     
72 
73                        <div class="swiper-slide d-flex justify-content-center">                                                                                                                                   
74                            <button data-toggle="modal" data-target="#recomanacioModal${portletId}-${cont}" class="modalRecomanacio p-3 d-flex flex-column" data-id="${journalArticle.getArticleId()}"> 
75                                <#if caducado==0 && new=="Sí"> 
76                                    <img class="icono-nuevo" src="/o/Bibliotecas-theme/images/bibliotecas/${icono}"> 
77                                </#if>  
78                                <#if dlfile!="">																	 
79                                    <@adaptive_media_image["img"] 
80                                        alt="Imatge recomanacio de ${title}" class="mb-2 imatge-recomanacio" fileVersion=DlAppServiceUtil.getFileEntry(dlfile.fileEntryId?number).getFileVersion() /> 
81                                </#if> 
82                                <#if urlExterna!="">																	 
83                                    <img class="w-100 mb-2"src="${urlExterna}" alt="Imatge recomanacio de ${title}" loading="lazy"> 
84                                </#if> 
85                                <div class="height-104"> 
86                                <span class="line-clamp-3  recomanacio-title w-100 text-left font-weight-bold"> 
87                                    ${title} 
88                                </span> 
89                                <span class="mt-1 text-left line-clamp-1  w-100 recomanacio-title-small font-italic"> 
90                                    ${autor} 
91                                </span> 
92                                </div> 
93                            </button> 
94                        </div> 
95                        <#assign cont++> 
96                    </#if>    
97                    <#recover> 
98                    </#attempt>    
99                </#list> 
100            </#if> 
101        </#list> 
102    </div> 
103    <div class="mt-3 mb-3 swiper-recomanacions-pagination-${portletId} recomanacions-pagination"></div> 
104</div> 
105<div class="swiper-button-prev prev-recomanacions-${portletId}"></div> 
106<div class="swiper-button-next next-recomanacions-${portletId}"></div> 
107<div class="d-flex justify-content-end"> 
108    <a href="/les-biblioteques-recomanen"> 
109        <button class="botonMesDestacats w-auto"> 
110            <@liferay.language key="publisher.viewallrecommendations"/> 
111        </button> 
112    </a> 
113</div> 
114<#assign cont=0> 
115<#list entries as curEntry> 
116    <#assign 
117        assetRenderer=curEntry.getAssetRenderer() 
118        journalArticle=assetRenderer.getAssetObject() />     
119    <#assign document=saxReaderUtil.read(journalArticle.getContentByLocale(locale))> 
120    <#assign rootElement=document.getRootElement()> 
121    <#assign friendlyMap=journalArticle.getFriendlyURLMap()> 
122    <#assign friendlyUrlDefault=""> 
123    <#assign friendlyUrl=""> 
124    <#list friendlyMap as key,value> 
125        <#if key==LocaleUtil.getDefault()> 
126            <#assign friendlyUrlDefault=value> 
127        </#if> 
128        <#if key==locale> 
129            <#assign friendlyUrl=value> 
130        </#if> 
131    </#list> 
132    <#if friendlyUrl==""> 
133        <#assign friendlyUrl=friendlyUrlDefault> 
134    </#if> 
135    <#assign urlExterna=""> 
136    <#assign dlfile=""> 
137    <#assign relatedLinks=AssetLinkManagerUtil.getRelatedDirectLinksIds(curEntry.getEntryId())>     
138    <#assign title=saxReaderUtil.createXPath("dynamic-element 
139        [@field-reference='title' ] 
140        /dynamic-content").selectSingleNode(rootElement).getStringValue()>                                                         
141    <#assign recomanacioText=saxReaderUtil.createXPath("dynamic-element 
142        [@field-reference='recomendationText' ] 
143        /dynamic-content").selectSingleNode(rootElement).getStringValue()> 
144    <#assign autor=saxReaderUtil.createXPath("dynamic-element 
145        [@field-reference='Autor' ] 
146        /dynamic-content").selectSingleNode(rootElement).getStringValue()> 
147     
148    <#-- Miramos que tenga Document_recomanat asociado para crear el modal correspondiente--> 
149    <#if relatedLinks?has_content> 
150        <#list relatedLinks as link> 
151            <#attempt> 
152            <#assign relatedEntry=AssetEntryLocalServiceUtil.getAssetEntry(link)> 
153            <#assign relatedJournal=JournalArticleLocalService.getLatestArticle(relatedEntry.getClassPK())> 
154            <#if relatedJournal.getDDMStructureKey()=="DOCUMENT_RECOMANAT"> 
155                <#assign relatedDocument=saxReaderUtil.read(relatedJournal.getContent())> 
156                <#assign relatedRootElement=relatedDocument.getRootElement()> 
157                <#assign urlImageFieldSet=saxReaderUtil.createXPath("dynamic-element 
158                    [@field-reference='urlImageFieldSet' ]").selectSingleNode(relatedRootElement)> 
159                <#assign image=saxReaderUtil.createXPath("dynamic-element 
160                    [@field-reference='urlImage' ] 
161                    /dynamic-content").selectSingleNode(urlImageFieldSet).getStringValue()> 
162                <#assign urlExterna=saxReaderUtil.createXPath("dynamic-element 
163                    [@field-reference='urlExterna' ] 
164                    /dynamic-content").selectSingleNode(urlImageFieldSet).getStringValue()>                 
165                <#assign imageJson=JSONFactoryUtil.createJSONObject(image)> 
166                <#assign dlfile=""> 
167                <#if imageJson.has("uuid") && imageJson.has("groupId")> 
168                    <#assign dlfile=DLFileEntryLocalServiceUtil.getDLFileEntryByUuidAndGroupId(imageJson.getString("uuid"),imageJson.getLong("groupId"))> 
169                </#if> 
170                <#assign id=""> 
171                <#assign biblioDigital=""> 
172                <#assign pubinfoa=""> 
173                <#assign pubinfob=""> 
174                <#assign pubinfoc=""> 
175                <#if (saxReaderUtil.createXPath("dynamic-element 
176                    [@field-reference='pubinfoa' ] 
177                    /dynamic-content").selectSingleNode(relatedRootElement))??> 
178                    <#assign pubinfoa=saxReaderUtil.createXPath("dynamic-element 
179                        [@field-reference='pubinfoa' ] 
180                        /dynamic-content").selectSingleNode(relatedRootElement).getStringValue()> 
181                </#if> 
182                <#if (saxReaderUtil.createXPath("dynamic-element 
183                    [@field-reference='pubinfob' ] 
184                    /dynamic-content").selectSingleNode(relatedRootElement))??> 
185                    <#assign pubinfob=saxReaderUtil.createXPath("dynamic-element 
186                        [@field-reference='pubinfob' ] 
187                        /dynamic-content").selectSingleNode(relatedRootElement).getStringValue()> 
188                </#if> 
189                <#if (saxReaderUtil.createXPath("dynamic-element 
190                    [@field-reference='pubinfoc' ] 
191                    /dynamic-content").selectSingleNode(relatedRootElement))??> 
192                    <#assign pubinfoc=saxReaderUtil.createXPath("dynamic-element 
193                        [@field-reference='pubinfoc' ] 
194                        /dynamic-content").selectSingleNode(relatedRootElement).getStringValue()> 
195                </#if> 
196                <#if (saxReaderUtil.createXPath("dynamic-element 
197                    [@field-reference='biblioDigital' ] 
198                    /dynamic-content").selectSingleNode(relatedRootElement))??> 
199                    <#assign biblioDigital=saxReaderUtil.createXPath("dynamic-element 
200                        [@field-reference='biblioDigital' ] 
201                        /dynamic-content").selectSingleNode(relatedRootElement).getStringValue()> 
202                </#if> 
203                <#if (saxReaderUtil.createXPath("dynamic-element 
204                    [@field-reference='bibliographicid' ] 
205                    /dynamic-content").selectSingleNode(relatedRootElement))??> 
206                    <#assign id=saxReaderUtil.createXPath("dynamic-element 
207                        [@field-reference='bibliographicid' ] 
208                        /dynamic-content").selectSingleNode(relatedRootElement).getStringValue()> 
209                </#if> 
210             
211                <div class="modal fade" id="recomanacioModal${portletId}-${cont}" data-backdrop="static" tabindex="-1" aria-labelledby="recomanacioModal${portletId}-${cont}" aria-hidden="true"> 
212                    <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable modal-lg"> 
213                        <div class="modal-content"> 
214                            <div class="modal-header"> 
215                                <h5 class="modal-title" id="staticBackdropLabel"></h5> 
216                                <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
217                                    <span aria-hidden="true">&times;</span> 
218                                </button> 
219                            </div> 
220                            <div class="modal-body"> 
221                                 
222                                <div class="row mb-3"> 
223                                    <div class="col-3"> 
224                                        <#if dlfile!=""> 
225                                            <@adaptive_media_image["img"] 
226                                                alt="${title}" fileVersion=DlAppServiceUtil.getFileEntry(dlfile.fileEntryId?number).getFileVersion() /> 
227                                        </#if> 
228                                        <#if urlExterna!=""> 
229                                            <img class="w-100" alt="Imatge portada ${title}" loading="lazy" src="${urlExterna}"> 
230                                        </#if> 
231                                    </div> 
232                                    <div class="col-9"> 
233                                        <p class="mb-1 font-weight-bold font-18"> 
234                                            ${title} 
235                                        </p> 
236                                        <#if autor!=""> 
237                                            <p class="mb-1"><i> 
238                                                    ${autor} 
239                                                </i></p> 
240                                        </#if> 
241                                        <p class="mb-1"> 
242                                            ${pubinfoa} ${pubinfob} ${pubinfoc} 
243                                        </p> 
244                                        <div class="d-flex flex-column"> 
245                                            <#if id!=""> 
246                                                <#if locale=="ca_ES"> 
247                                                    <div class="d-flex align-items-center mb-1">>&nbsp;<a href="https://aladi.diba.cat/record=${id}~S171*cat" target="_blank">Veure disponibilitat al catàleg Aladí</a></div> 
248                                                    <#elseif locale=="es_ES"> 
249                                                        <div class="d-flex align-items-center mb-1">>&nbsp;<a href="https://aladi.diba.cat/record=${id}~S171*spi" target="_blank">Ver disponibilidad en catálogo Aladí</a></div> 
250                                                        <#else> 
251                                                            <div class="d-flex align-items-center mb-1">>&nbsp;<a href="https://aladi.diba.cat/record=${id}~S171*cat" target="_blank">Check availability in Aladí</a></div> 
252                                                </#if> 
253                                            </#if> 
254                                            <#if biblioDigital!=""> 
255                                                <#if locale=="ca_ES"> 
256                                                    <div class="d-flex align-items-center mb-1">>&nbsp;<a href="${biblioDigital}" target="_blank">Veure disponibilitat a Biblio Digital</a></div> 
257                                                    <#elseif locale=="es_ES"> 
258                                                        <div class="d-flex align-items-center mb-1">>&nbsp;<a href="${biblioDigital}" target="_blank">Ver disponibilitat en Biblio Digital</a></div> 
259                                                        <#else> 
260                                                            <div class="d-flex align-items-center mb-1">>&nbsp;<a href="${biblioDigital}" target="_blank">Check availability in Biblio Digital</a></div> 
261                                                </#if> 
262                                            </#if> 
263                                        </div> 
264                                    </div> 
265                                </div> 
266                                <div class="texte"> 
267                                    ${recomanacioText} 
268                                </div> 
269                                <div class="mb-1"> 
270                                    ${journalArticle.getModifiedDate()?string["dd/MM/yyyy"]} 
271                                </div> 
272                                <div class="valoraciones"> 
273                                    <div class="w-100 py-2 a2a_kit a2a_kit_size_32 a2a_default_style" data-a2a-url="https://bibliotecavirtual.diba.cat/detall-recomanacio/-/contingut/${curEntry.getGroupId()}/${friendlyUrl}" data-a2a-title="${title}" style="background-color: #e6e6e6;display: inline-block;" data-a2a-icon-color="#e6e6e6,#000000"> 
274                                        <div class="a2a_kit a2a_kit_size_32 a2a_default_style"> 
275                                            <a class="a2a_dd" href="https://www.addtoany.com/share#url=https://bibliotecavirtual.diba.es/detall-recomanacio/-/contingut/${curEntry.getGroupId()}/${friendlyUrl}"></a> 
276                                            <a class="a2a_button_email"></a> 
277                                            <a class="a2a_button_print"></a> 
278                                        </div> 
279                                    </div> 
280                                </div> 
281                            </div> 
282                        </div> 
283                    </div> 
284                </div> 
285                <#assign cont++> 
286            </#if> 
287            <#recover> 
288            </#attempt> 
289    </#list> 
290    </#if> 
291</#list> 
292</div> 
293<style> 
294.swiper-recomanacions .icono-nuevo{ 
295    position:absolute; 
296    left:0; 
297    top:0; 
298    aspect-ratio: 1/1; 
299
300.swiper-recomanacions .botonMesDestacats { 
301    display: block; 
302    font-family: "Lato", sans-serif; 
303    border: 1px solid #811424; 
304    background: #fff; 
305    color: #811424; 
306    padding: 10px; 
307    font-size: 18px; 
308    margin-bottom: 15px; 
309
310 
311.swiper-recomanacions .botonMesDestacats:focus { 
312    background: #fff; 
313    color: #811424; 
314
315 
316.swiper-recomanacions .botonMesDestacats:hover { 
317    background: #811424; 
318    color: #fff; 
319    text-decoration: none; 
320
321 
322.swiper-recomanacions .height-104 { 
323    height: 104px; 
324
325.swiper-recomanacions .height-23 { 
326    height: 23px; 
327
328 
329.swiper-recomanacions .line-clamp-3 { 
330    display: -webkit-box; 
331    -webkit-line-clamp: 3; 
332    -webkit-box-orient: vertical; 
333    overflow: hidden; 
334
335	 
336	 
337.swiper-recomanacions .line-clamp-1 { 
338    display: -webkit-box; 
339    -webkit-line-clamp: 1; 
340    -webkit-box-orient: vertical; 
341    overflow: hidden; 
342
343 
344.swiper-recomanacions { 
345    position: relative; 
346
347 
348@media (min-width: 576px) { 
349    .swiper-recomanacions .swiper-button-next { 
350        right: -35px; 
351
352 
353    .swiper-recomanacions .swiper-button-prev { 
354        left: -35px; 
355
356
357 
358@media (max-width: 575.99px) { 
359    .swiper-recomanacions .swiper-button-next { 
360        right: -30px; 
361
362 
363    .swiper-recomanacions .swiper-button-prev { 
364        left: -30px; 
365
366
367 
368.modalRecomanacio img { 
369    aspect-ratio: 1/1.4141; 
370
371 
372.recomanacio-title { 
373    text-transform: none; 
374    font-size: 18px; 
375    color: #4A4A4A; 
376
377	 
378.recomanacio-title-small { 
379    text-transform: none; 
380    font-size: 14px; 
381    color: #4A4A4A; 
382
383 
384.modalRecomanacio:focus { 
385    background-color: #e6e6e6; 
386    color: black; 
387
388 
389.modalRecomanacio { 
390    background-color: #e6e6e6; 
391
392 
393.modalRecomanacio:hover { 
394    background-color: #811424; 
395
396 
397.modalRecomanacio:hover span { 
398    color: white; 
399
400 
401.swiper-recomanacions .font-18 { 
402    font-size: 18px; 
403
404 
405.swiper-recomanacions .recomanacions-pagination { 
406    display: flex; 
407    justify-content: center; 
408
409 
410.swiper-recomanacions .modalRecomanacio:hover:after { 
411    content: "+"; 
412    padding: 5px; 
413    font-size: 24px; 
414    color: #fff; 
415    border: 0; 
416    width: auto; 
417    height: auto; 
418    position: absolute; 
419    right: 0; 
420    bottom: 0; 
421
422 
423.swiper-recomanacions .modalRecomanacio:not(:hover):after { 
424    content: ""; 
425    width: 0; 
426    height: 0; 
427    position: absolute; 
428    right: 0; 
429    bottom: 0; 
430    border-left: 10px solid #b3b3b3; 
431    border-top: 10px solid #b3b3b3; 
432    border-right: 10px solid transparent; 
433    border-bottom: 10px solid transparent; 
434
435 
436.swiper-recomanacions .modalRecomanacio:not(:hover):before { 
437    content: ""; 
438    width: 0; 
439    height: 0; 
440    position: absolute; 
441    right: 0; 
442    bottom: 0; 
443    border-left: 10px solid transparent; 
444    border-top: 10px solid transparent; 
445    border-right: 10px solid #fff; 
446    border-bottom: 10px solid #fff; 
447
448 
449.swiper-recomanacions .text-black { 
450    color: black; 
451
452 
453.swiper-recomanacions .modal { 
454    display: none; 
455
456 
457.swiper-recomanacions .swiper-button-next { 
458    color: #a71b2e !important; 
459
460 
461.swiper-recomanacions .swiper-button-prev { 
462    color: #a71b2e !important; 
463
464 
465.swiper-recomanacions .swiper-pagination-bullet-active { 
466    background-color: #811424 !important; 
467
468 
469.swiper-recomanacions .swiper-pagination-bullet { 
470    outline: 1px solid #fff; 
471
472</style> 
473<script async src="https://static.addtoany.com/menu/page.js"></script> 
474<script> 
475var swiper = new Swiper(".swiper-recomanacions-${portletId}", { 
476    pagination: { 
477        el: ".swiper-recomanacions-pagination-${portletId}", 
478        clickable:true, 
479    }, 
480    navigation: { 
481        nextEl: ".next-recomanacions-${portletId}", 
482        prevEl: ".prev-recomanacions-${portletId}", 
483    }, 
484    breakpoints: { 
485        0: { 
486            slidesPerView: 1, 
487            slidesPerGroup: 1, 
488            spaceBetween: 0, 
489        }, 
490        576: { 
491            slidesPerView: 2, 
492            slidesPerGroup: 2, 
493            spaceBetween: 10, 
494        }, 
495        768: { 
496            slidesPerView: 3, 
497            slidesPerGroup: 3, 
498            spaceBetween: 10, 
499        }, 
500        992: { 
501            slidesPerView: 4, 
502            slidesPerGroup: 4, 
503            spaceBetween: 10, 
504        }, 
505        1200: { 
506            slidesPerView: 5, 
507            slidesPerGroup: 5, 
508            spaceBetween: 10, 
509        }, 
510    }, 
511}); 
512</script> 

Novedades

Ahora se está devolviendo

Fondos especiales

Guías de lectura

Clubs de lectura

Ventajas del carné

No hay resultados.

Webs locales