Presentació del còmic "Dorothea Bate. La caçadora de fòssils que va descobrir el Myotragus Balearicus" de la col·lecció Mallorca té nom de dona

S'ha produït un error mentre es processava la plantilla.
For "#if" condition: Expected a boolean, but this has evaluated to a number (wrapper: f.t.SimpleNumber):
==> hora  [in template "20115#20151#535839" at line 328, column 18]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if hora  [in template "20115#20151#535839" at line 328, column 13]
----
1<#-- ========================================================================= 
2     PLANTILLA: NOTA / CONVOCATÒRIA 
3 
4     COMPATIBILITAT: 
5     - Liferay DXP Q1.2025.14 
6     - Liferay DXP Q1.25 
7 
8     INDEPENDÈNCIA DEL SITE: 
9     La plantilla no depèn de themeDisplay.getScopeGroupId() ni recupera 
10     continguts a partir del groupId del site actual. 
11 
12     Treballa amb els camps que Liferay proporciona directament al context 
13     del contingut que s'està renderitzant. 
14 
15     ADAPTACIONS PRINCIPALS: 
16     1. Camps Select compatibles entre Q1.14 i Q1.25: 
17        - primer getData() 
18        - fallback a getOptions() 
19 
20     2. Imatge: 
21        - no es depèn de getName() per recuperar alineacio/grandaria 
22        - s'accedeix directament als camps 
23        - evita classes incorrectes com "100" 
24 
25     3. Elements relacionats: 
26        - es cerquen els camps fills mitjançant getFieldReference() 
27        - getName() queda només com a fallback per compatibilitat 
28        - els <li> utilitzen clearfix per evitar problemes de float 
29          amb els botons a Q1.14 
30============================================================================ --> 
31 
32 
33<#-- ========================================================================= 
34     FUNCIONS AUXILIARS 
35============================================================================ --> 
36 
37 
38<#-- Recupera el valor d'un camp Select. 
39     Q1.14: habitualment getData(). 
40     Q1.25: getData() pot retornar buit o [] i es prova getOptions(). 
41--> 
42<#function getSelectValue field> 
43 
44    <#if !field??> 
45        <#return ""> 
46    </#if> 
47 
48    <#assign value = field.getData()!"" /> 
49 
50    <#if value?has_content && value != "[]"> 
51 
52        <#return value 
53            ?replace("[", "") 
54            ?replace("]", "") 
55            ?replace("\"", "") 
56            ?trim 
57        > 
58 
59    </#if> 
60 
61    <#attempt> 
62 
63        <#assign options = field.getOptions() /> 
64 
65        <#if options?has_content> 
66 
67            <#return options[0] 
68                ?string 
69                ?replace("[", "") 
70                ?replace("]", "") 
71                ?replace("\"", "") 
72                ?trim 
73            > 
74 
75        </#if> 
76 
77    <#recover> 
78    </#attempt> 
79 
80    <#return ""> 
81 
82</#function> 
83 
84 
85<#-- Recupera getData() d'un camp fill cercant-lo pel fieldReference. 
86     A Q1.25 els noms interns poden ser generats, per tant no depenem 
87     exclusivament de getName(). 
88--> 
89<#function getChildData parentField fieldReference> 
90 
91    <#assign result = "" /> 
92 
93    <#if parentField??> 
94 
95        <#attempt> 
96 
97            <#list parentField.getChildren() as childField> 
98 
99                <#assign childReference = "" /> 
100 
101                <#attempt> 
102 
103                    <#assign childReference = 
104                        childField.getFieldReference()!"" 
105                    /> 
106 
107                <#recover> 
108                </#attempt> 
109 
110 
111                <#-- Fallback per compatibilitat amb Q1.14 / formats antics --> 
112                <#if !childReference?has_content> 
113 
114                    <#assign childReference = 
115                        childField.getName()!"" 
116                    /> 
117 
118                </#if> 
119 
120 
121                <#if childReference == fieldReference> 
122 
123                    <#assign result = 
124                        childField.getData()!"" 
125                    /> 
126 
127                </#if> 
128 
129            </#list> 
130 
131        <#recover> 
132        </#attempt> 
133 
134    </#if> 
135 
136    <#return result> 
137 
138</#function> 
139 
140 
141<#-- Recupera el Friendly URL d'un camp fill de tipus pàgina. --> 
142<#function getChildFriendlyUrl parentField fieldReference> 
143 
144    <#assign result = "" /> 
145 
146    <#if parentField??> 
147 
148        <#attempt> 
149 
150            <#list parentField.getChildren() as childField> 
151 
152                <#assign childReference = "" /> 
153 
154                <#attempt> 
155 
156                    <#assign childReference = 
157                        childField.getFieldReference()!"" 
158                    /> 
159 
160                <#recover> 
161                </#attempt> 
162 
163 
164                <#-- Fallback per Q1.14 / formats antics --> 
165                <#if !childReference?has_content> 
166 
167                    <#assign childReference = 
168                        childField.getName()!"" 
169                    /> 
170 
171                </#if> 
172 
173 
174                <#if childReference == fieldReference> 
175 
176                    <#attempt> 
177 
178                        <#assign result = 
179                            childField.getFriendlyUrl()!"" 
180                        /> 
181 
182                    <#recover> 
183                    </#attempt> 
184 
185                </#if> 
186 
187            </#list> 
188 
189        <#recover> 
190        </#attempt> 
191 
192    </#if> 
193 
194    <#return result> 
195 
196</#function> 
197 
198 
199<#-- ========================================================================= 
200     DADES GENERALS 
201============================================================================ --> 
202 
203<#assign titol = 
204    .vars["reserved-article-title"].getData()!"" 
205/> 
206 
207<#assign etq_descarrega = 
208    languageUtil.get(locale, "descarrega") 
209/> 
210 
211<#assign etq_visita = 
212    languageUtil.get(locale, "visita") 
213/> 
214 
215<#assign etq_inf_rel = 
216    languageUtil.get(locale, "informacio-relacionada") 
217/> 
218 
219 
220<#-- ========================================================================= 
221     TIPUS DE MARC 
222============================================================================ --> 
223 
224<#assign tipusMarcValue = "" /> 
225 
226<#if tipusMarc??> 
227 
228    <#assign tipusMarcValue = 
229        getSelectValue(tipusMarc) 
230    /> 
231 
232</#if> 
233 
234 
235<#if tipusMarcValue == "box-flow"> 
236 
237    <#assign capsa = "box-flow" /> 
238 
239<#elseif tipusMarcValue == "box-muted"> 
240 
241    <#assign capsa = "box-muted" /> 
242 
243<#else> 
244 
245    <#assign capsa = "box-flow" /> 
246 
247</#if> 
248 
249 
250<div class="${capsa} mb-xs-regular mb-md-large"> 
251 
252 
253    <#-- ===================================================================== 
254         TÍTOL 
255    ====================================================================== --> 
256 
257    <#if mostraTitol?? 
258        && getterUtil.getBoolean( 
259            mostraTitol.getData()!false 
260        )> 
261 
262        <div class="heading-wrapper"> 
263 
264            <h3 class="heading"> 
265                ${titol} 
266            </h3> 
267 
268        </div> 
269 
270    </#if> 
271 
272 
273    <#-- ===================================================================== 
274         DATA I HORA 
275    ====================================================================== --> 
276 
277    <#assign data = "" /> 
278    <#assign hora = "" /> 
279    <#assign minut = "" /> 
280 
281    <#assign la_barra = " / " /> 
282    <#assign la_h = " h" /> 
283 
284 
285    <#if Data??> 
286 
287        <#assign Data_Data = 
288            getterUtil.getString( 
289                Data.getData() 
290            ) 
291        /> 
292 
293    <#else> 
294 
295        <#assign Data_Data = "" /> 
296 
297    </#if> 
298 
299 
300    <#if validator.isNotNull(Data_Data)> 
301 
302 
303        <#assign Data_DateObj = 
304            dateUtil.parseDate( 
305                "yyyy-MM-dd", 
306                Data_Data, 
307                locale 
308            ) 
309        /> 
310 
311 
312        <#assign data = 
313            dateUtil.getDate( 
314                Data_DateObj, 
315                "dd-MM-yyyy", 
316                locale 
317            ) 
318        /> 
319 
320 
321        <#if Hora?? 
322            && (Hora.getData()!"")?has_content> 
323 
324            <#assign hora = 
325                Hora.getData()?number 
326            /> 
327 
328            <#if hora >= 0 && hora < 24> 
329 
330                <#assign hora = 
331                    hora?left_pad(2, "0") 
332                /> 
333 
334            </#if> 
335 
336        </#if> 
337 
338 
339        <#if Hora?? 
340            && (Hora.getData()!"")?has_content 
341            && Minut?? 
342            && (Minut.getData()!"")?has_content> 
343 
344            <#assign minut = 
345                Minut.getData()?number 
346            /> 
347 
348            <#if minut >= 0 && minut < 59> 
349 
350                <#if locale == "ca_ES"> 
351 
352                    <#assign minut = 
353                        "." + minut?left_pad(2, "0") 
354                    /> 
355 
356                <#else> 
357 
358                    <#assign minut = 
359                        ":" + minut?left_pad(2, "0") 
360                    /> 
361 
362                </#if> 
363 
364            </#if> 
365 
366        </#if> 
367 
368 
369        <#if hora?has_content 
370            && minut?has_content> 
371 
372            <#assign hora = 
373                la_barra + hora + minut + la_h 
374            /> 
375 
376        <#else> 
377 
378            <#assign hora = "" /> 
379 
380        </#if> 
381 
382 
383        <p> 
384            ${data!""} ${hora!""} 
385        </p> 
386 
387 
388    </#if> 
389 
390 
391    <#-- ===================================================================== 
392         IMATGE I CONTINGUT 
393    ====================================================================== --> 
394 
395    <#if contingut?? 
396        && (contingut.getData()!"")?has_content 
397        && imatge?? 
398        && (imatge.getData()!"")?has_content> 
399 
400 
401        <#-- Valors per defecte vàlids --> 
402        <#assign col_img = "col-md-12" /> 
403        <#assign col_txt = "col-md-12" /> 
404 
405        <#assign col_img_anterior = "" /> 
406        <#assign col_img_posterior = "" /> 
407 
408        <#assign alineacio = "d" /> 
409        <#assign grandaria = "100" /> 
410 
411 
412        <#-- ================================================================= 
413             ALINEACIÓ DE LA IMATGE 
414 
415             e = esquerra 
416             c = centrada 
417             d = dreta 
418        ================================================================== --> 
419 
420        <#if imatge.alineacio??> 
421 
422            <#assign alineacioValue = 
423                getSelectValue( 
424                    imatge.alineacio 
425                ) 
426            /> 
427 
428 
429            <#if alineacioValue == "e"> 
430 
431                <#assign alineacio = "e" /> 
432 
433            <#elseif alineacioValue == "c"> 
434 
435                <#assign alineacio = "c" /> 
436 
437            <#else> 
438 
439                <#assign alineacio = "d" /> 
440 
441            </#if> 
442 
443        </#if> 
444 
445 
446        <#-- ================================================================= 
447             GRANDÀRIA DE LA IMATGE 
448        ================================================================== --> 
449 
450        <#if imatge.grandaria??> 
451 
452            <#assign grandariaValue = 
453                getSelectValue( 
454                    imatge.grandaria 
455                ) 
456            /> 
457 
458            <#if grandariaValue?has_content> 
459 
460                <#assign grandaria = 
461                    grandariaValue 
462                /> 
463 
464            </#if> 
465 
466        </#if> 
467 
468 
469        <#-- ================================================================= 
470             CÀLCUL DE COLUMNES 
471        ================================================================== --> 
472 
473        <#if alineacio != "c"> 
474 
475 
476            <#if grandaria == "25"> 
477 
478                <#assign col_img = "col-md-3" /> 
479                <#assign col_txt = "col-md-9" /> 
480 
481 
482            <#elseif grandaria == "50"> 
483 
484                <#assign col_img = "col-md-6" /> 
485                <#assign col_txt = "col-md-6" /> 
486 
487 
488            <#elseif grandaria == "75"> 
489 
490                <#assign col_img = "col-md-9" /> 
491                <#assign col_txt = "col-md-3" /> 
492 
493 
494            <#elseif grandaria == "100"> 
495 
496                <#assign col_img = "col-md-12" /> 
497                <#assign col_txt = "col-md-0" /> 
498 
499 
500            </#if> 
501 
502 
503        <#else> 
504 
505 
506            <#if grandaria == "25" 
507                || grandaria == "50"> 
508 
509                <#assign col_img_anterior = "col-md-3" /> 
510                <#assign col_img = "col-md-6" /> 
511                <#assign col_img_posterior = "col-md-3" /> 
512                <#assign col_txt = "col-md-0" /> 
513 
514 
515            <#elseif grandaria == "75" 
516                || grandaria == "100"> 
517 
518                <#assign col_img = "col-md-12" /> 
519                <#assign col_txt = "col-md-0" /> 
520 
521 
522            </#if> 
523 
524 
525        </#if> 
526 
527 
528        <#-- ================================================================= 
529             DADES DE LA IMATGE 
530        ================================================================== --> 
531 
532        <#assign img_src = 
533            imatge.getData()!"" 
534        /> 
535 
536        <#assign img_alt = 
537            imatge.getAttribute("alt")!"" 
538        /> 
539 
540 
541        <#-- ================================================================= 
542             IMATGE AL 100% 
543        ================================================================== --> 
544 
545        <#if col_img == "col-md-12"> 
546 
547 
548            <div class="row"> 
549 
550                <div class="col-xs-12 col-md-12"> 
551 
552                    <img 
553                        src="${htmlUtil.escapeAttribute(img_src)}" 
554                        alt="${htmlUtil.escapeAttribute(img_alt)}" 
555                    > 
556 
557                </div> 
558 
559            </div> 
560 
561 
562            <div class="row"> 
563 
564                <div class="col-xs-12 col-md-12"> 
565 
566                    ${contingut.getData()} 
567 
568                </div> 
569 
570            </div> 
571 
572 
573        <#else> 
574 
575 
576            <#-- ============================================================= 
577                 ALINEACIÓ ESQUERRA 
578            ============================================================== --> 
579 
580            <#if alineacio == "e"> 
581 
582 
583                <div class="row"> 
584 
585                    <div class="col-xs-12 ${col_img}"> 
586 
587                        <img 
588                            src="${htmlUtil.escapeAttribute(img_src)}" 
589                            alt="${htmlUtil.escapeAttribute(img_alt)}" 
590                        > 
591 
592                    </div> 
593 
594 
595                    <div class="col-xs-12 ${col_txt}"> 
596 
597                        ${contingut.getData()} 
598 
599                    </div> 
600 
601                </div> 
602 
603 
604            <#-- ============================================================= 
605                 ALINEACIÓ DRETA 
606            ============================================================== --> 
607 
608            <#elseif alineacio == "d"> 
609 
610 
611                <div class="row"> 
612 
613                    <div class="col-xs-12 ${col_txt}"> 
614 
615                        ${contingut.getData()} 
616 
617                    </div> 
618 
619 
620                    <div class="col-xs-12 ${col_img}"> 
621 
622                        <img 
623                            src="${htmlUtil.escapeAttribute(img_src)}" 
624                            alt="${htmlUtil.escapeAttribute(img_alt)}" 
625                        > 
626 
627                    </div> 
628 
629                </div> 
630 
631 
632            <#-- ============================================================= 
633                 ALINEACIÓ CENTRADA 
634            ============================================================== --> 
635 
636            <#else> 
637 
638 
639                <div class="row"> 
640 
641 
642                    <div class="col-xs-12 ${col_img_anterior}"> 
643                    </div> 
644 
645 
646                    <div class="col-xs-12 ${col_img}"> 
647 
648                        <img 
649                            src="${htmlUtil.escapeAttribute(img_src)}" 
650                            alt="${htmlUtil.escapeAttribute(img_alt)}" 
651                        > 
652 
653                    </div> 
654 
655 
656                    <div class="col-xs-12 ${col_img_posterior}"> 
657                    </div> 
658 
659 
660                </div> 
661 
662 
663                <div class="row"> 
664 
665                    <div class="col-xs-12 col-md-12"> 
666 
667                        ${contingut.getData()} 
668 
669                    </div> 
670 
671                </div> 
672 
673 
674            </#if> 
675 
676 
677        </#if> 
678 
679 
680    <#-- ===================================================================== 
681         NOMÉS CONTINGUT, SENSE IMATGE 
682    ====================================================================== --> 
683 
684    <#elseif contingut?? 
685        && (contingut.getData()!"")?has_content> 
686 
687 
688        <div class="row"> 
689 
690            <div class="col-xs-12 col-md-12"> 
691 
692                ${contingut.getData()} 
693 
694            </div> 
695 
696        </div> 
697 
698 
699    </#if> 
700 
701 
702    <#-- ===================================================================== 
703         ELEMENTS RELACIONATS 
704 
705         Compatible Q1.14 / Q1.25. 
706 
707         Els camps fills no es recuperen depenent únicament del getName(). 
708         Es prioritza getFieldReference(). 
709 
710         També s'afegeix clearfix a cada <li> perquè els botons flotats 
711         pel tema no afectin visualment els elements següents. 
712    ====================================================================== --> 
713 
714 
715    <#assign hiHaER = false /> 
716 
717 
718    <#if ElementRelacionat?? 
719        && ElementRelacionat.getSiblings()?has_content> 
720 
721 
722        <#list ElementRelacionat.getSiblings() as cur_ElementRelacionat> 
723 
724 
725            <#assign fet = false /> 
726 
727            <#assign titolElement = 
728                cur_ElementRelacionat.getData()!"" 
729            /> 
730 
731 
732            <#-- ============================================================= 
733                 RECUPERACIÓ DELS CAMPS FILLS 
734            ============================================================== --> 
735 
736            <#assign documentRelacionatValue = 
737                getChildData( 
738                    cur_ElementRelacionat, 
739                    "documentRelacionat" 
740                ) 
741            /> 
742 
743 
744            <#assign paginaRelacionadaValue = 
745                getChildFriendlyUrl( 
746                    cur_ElementRelacionat, 
747                    "paginaRelacionada" 
748                ) 
749            /> 
750 
751 
752            <#assign urlValue = 
753                getChildData( 
754                    cur_ElementRelacionat, 
755                    "URL" 
756                ) 
757            /> 
758 
759 
760            <#-- ============================================================= 
761                 OBERTURA DEL BLOC 
762            ============================================================== --> 
763 
764            <#if titolElement?has_content> 
765 
766 
767                <#if !hiHaER> 
768 
769 
770                    <div 
771                        class="extras extrasInclos" 
772                        style="margin-top: 30px" 
773                    > 
774 
775 
776                        <h4 class="heading mt-xs-0"> 
777                            ${etq_inf_rel} 
778                        </h4> 
779 
780 
781                        <ul> 
782 
783 
784                </#if> 
785 
786 
787                <#assign hiHaER = true /> 
788 
789 
790                <#-- ========================================================= 
791                     DOCUMENT RELACIONAT 
792                ========================================================== --> 
793 
794                <#if !fet 
795                    && documentRelacionatValue?has_content> 
796 
797 
798                    <li class="clearfix"> 
799 
800 
801                        <h4> 
802                            ${titolElement} 
803                        </h4> 
804 
805 
806                        <a 
807                            class="btn btn-primary-o" 
808                            href="${htmlUtil.escapeAttribute(documentRelacionatValue)}" 
809                            target="_blank" 
810                            rel="noopener noreferrer" 
811                        > 
812 
813                            <i class="icon icon-download"></i> 
814 
815                            <span> 
816                                ${etq_descarrega} 
817                            </span> 
818 
819                        </a> 
820 
821 
822                    </li> 
823 
824 
825                    <#assign fet = true /> 
826 
827 
828                </#if> 
829 
830 
831                <#-- ========================================================= 
832                     PÀGINA RELACIONADA 
833                ========================================================== --> 
834 
835                <#if !fet 
836                    && paginaRelacionadaValue?has_content> 
837 
838 
839                    <li class="clearfix"> 
840 
841 
842                        <h4> 
843                            ${titolElement} 
844                        </h4> 
845 
846 
847                        <a 
848                            class="btn btn-primary-o" 
849                            href="${htmlUtil.escapeAttribute(paginaRelacionadaValue)}" 
850                            target="_blank" 
851                            rel="noopener noreferrer" 
852                        > 
853 
854                            <i class="icon icon-open"></i> 
855 
856                            <span> 
857                                ${etq_visita} 
858                            </span> 
859 
860                        </a> 
861 
862 
863                    </li> 
864 
865 
866                    <#assign fet = true /> 
867 
868 
869                </#if> 
870 
871 
872                <#-- ========================================================= 
873                     URL 
874                ========================================================== --> 
875 
876                <#if !fet 
877                    && urlValue?has_content> 
878 
879 
880                    <li class="clearfix"> 
881 
882 
883                        <h4> 
884                            ${titolElement} 
885                        </h4> 
886 
887 
888                        <a 
889                            class="btn btn-primary-o" 
890                            href="${htmlUtil.escapeAttribute(urlValue)}" 
891                            target="_blank" 
892                            rel="noopener noreferrer" 
893                        > 
894 
895                            <i class="icon icon-open"></i> 
896 
897                            <span> 
898                                ${etq_visita} 
899                            </span> 
900 
901                        </a> 
902 
903 
904                    </li> 
905 
906 
907                    <#assign fet = true /> 
908 
909 
910                </#if> 
911 
912 
913            </#if> 
914 
915 
916        </#list> 
917 
918 
919    </#if> 
920 
921 
922    <#-- ===================================================================== 
923         TANCAMENT DEL BLOC D'INFORMACIÓ RELACIONADA 
924    ====================================================================== --> 
925 
926    <#if hiHaER> 
927 
928            </ul> 
929 
930        </div> 
931 
932    </#if> 
933 
934 
935</div>