En feil oppsto under behandling av malen.
The following has evaluated to null or missing:
==> hit.entity.agencyId  [in template "29767924528592#240049#250919" at line 176, column 109]

----
Tip: It's the step after the last dot 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: ${hit.entity.agencyId}  [in template "29767924528592#240049#250919" at line 176, column 107]
----
1<#-- Assigning Values from Input --> 
2<#assign modeValue = mode.getData()?string> 
3<#assign displayOptionValue = displayOptions.getData()?string?trim> 
4<#assign widthOptionsValue = widthOptions.getData()?string?trim> 
5<#assign searchResult = {} /> 
6<#assign listTitle = .vars['reserved-article-title'].data> 
7<#assign sanitizedTitle = listTitle?replace(" ", "-")?replace("[^a-zA-Z0-9\\-]", "")?lower_case> 
8<#-- Get the appropriate result based on mode --> 
9<#if modeValue == "query"> 
10    <#assign queryValue = searchQuery.getData()> 
11    <#assign numberOfItemsValue = numberOfItems.getData()?number> 
12    <#assign showViewAllLink = showViewAll.getData()=="true"> 
13<#-- Check if queryValue contains advanced search filters (e.g., c=), sourceId, or sort --> 
14    <#if queryValue?contains("c=") || queryValue?contains("source=") || queryValue?contains("sort=")> 
15    <#-- Decode the queryValue after potentially modifying it --> 
16        <#assign decodedQueryValue = queryValue 
17        ?replace("%3A", ":") 
18        ?replace("%2C", ",") 
19        ?replace("%5B", "[") 
20        ?replace("%5D", "]") 
21        ?replace("%5C\"", "\"") 
22        ?replace('""', '"') /> 
23 
24    <#-- Check if searchText is empty, if so, prepend "&" to queryValue --> 
25        <#assign splitQuery = decodedQueryValue?split("&")> 
26        <#assign searchText = ''> 
27        <#assign sourceId = ''> 
28        <#assign filterParams = []> 
29        <#assign searchTextFound = false> 
30        <#assign sortParameter = "" /> 
31        <#assign orderParameter = "" /> 
32 
33        <#list splitQuery as param> 
34        <#-- Check if the parameter is a filter (c=) --> 
35            <#if param?starts_with("c=")> 
36                <#assign filterParams += [param]> 
37            <#elseif param?starts_with("source=")> 
38            <#-- Extract the sourceId from the parameter --> 
39                <#assign sourceId = param?replace("source=", "")> 
40            <#elseif param?starts_with("sort=")> 
41            <#-- Extract the sort value --> 
42                <#assign sortParameter = param?replace("sort=", "")> 
43            <#elseif param?starts_with("order=")> 
44            <#-- Extract the order value --> 
45            <#elseif !searchTextFound && !param?contains("=")> 
46            <#-- If param does not contain "=", treat it as main search text --> 
47                <#assign searchTextFound = true> 
48                <#assign searchText = param> 
49            </#if> 
50        </#list> 
51 
52    <#-- If no search text was found, prepend "&" to queryValue --> 
53        <#if !searchTextFound> 
54            <#assign queryValue = "&" + queryValue> 
55        </#if> 
56 
57    <#-- Combine sort and order into a single sortValue, handling cases where one might be empty --> 
58        <#if sortParameter?has_content && orderParameter?has_content> 
59            <#assign sortValue = "sort=" + sortParameter + "&order=" + orderParameter> 
60        <#elseif sortParameter?has_content> 
61            <#assign sortValue = "sort=" + sortParameter> 
62        <#elseif orderParameter?has_content> 
63            <#assign sortValue = "order=" + orderParameter> 
64        <#else> 
65            <#assign sortValue = "" /> 
66        </#if> 
67    <#-- Join filter parameters into a single string for the 'c' parameter --> 
68        <#assign filterParamsString = "&" + filterParams?join("&") > 
69 
70        <#attempt> 
71           <#-- Use the extracted values in ArenaFederatedSearchService.getRecords --> 
72            <#assign searchResult = ArenaFederatedSearchService.getRecords( 
73            sourceId,                            <!-- String sourceId --> 
74            0,                                   <!-- Integer start --> 
75            numberOfItemsValue,                  <!-- Integer size --> 
76            0,                                   <!-- Integer facetSize --> 
77            searchText,                          <!-- String q (search text) --> 
78            filterParamsString,                   <!-- List<String> c (filters) --> 
79            '',                                  <!-- List<String> fc (filter constraints) --> 
80            '',                                  <!-- List<String> facetField --> 
81            ''                                   <!-- List<String> sort --> 
82            )!> 
83            <#recover> 
84                <p><@liferay.language key="dynamic.list.invalid.list.id"/></p> 
85        </#attempt> 
86    <#else> 
87       <#-- Handle simple text query without additional filters or sorting --> 
88        <#attempt> 
89             <#assign searchResult = ArenaFederatedSearchService.getRecords( 
90            null,                                <!-- String sourceId --> 
91            0,                                   <!-- Integer start --> 
92            numberOfItemsValue,                  <!-- Integer size --> 
93            0,                                   <!-- Integer facetSize --> 
94            queryValue,                          <!-- String q (simple query) --> 
95            '',                                  <!-- List<String> c (no filters) --> 
96            '',                                  <!-- List<String> fc (filter constraints) --> 
97            '',                                  <!-- List<String> facetField --> 
98            ''                                   <!-- List<String> sort --> 
99            )!> 
100            <#recover> 
101                <p><@liferay.language key="dynamic.list.invalid.list.id"/></p> 
102        </#attempt> 
103    </#if> 
104<#elseif modeValue == "toplist"> 
105    <#assign numberOfItemsValue = numberOfItems.getData()?number> 
106    <#assign queryValue = listFromBackend.getData()> 
107    <#attempt> 
108        <#assign searchResult = ArenaFederatedSearchService.getRecordsByLMSSearchIds(queryValue, "NAMED_LIST", 0, numberOfItemsValue)!> 
109        <#recover> 
110            <p><@liferay.language key="dynamic.list.invalid.list.id"/></p> 
111    </#attempt> 
112<#elseif modeValue == "ids"> 
113    <#if recordId.getSiblings()?has_content> 
114        <#assign queryValue = ""> 
115        <#list recordId.getSiblings() as cur_recordId> 
116            <#if (cur_recordId.getData())??> 
117                <#assign queryValue = queryValue + cur_recordId.getData() /> 
118                <#if cur_recordId_has_next> 
119                    <#assign queryValue = queryValue + ", " /> 
120                </#if> 
121            </#if> 
122        </#list> 
123    </#if> 
124    <#attempt> 
125        <#assign searchResult = ArenaFederatedSearchService.getRecordsByAlmaRecordIds(queryValue, 0, 99)> 
126        <#recover> 
127            <p><@liferay.language key="dynamic.list.invalid.list.id"/></p> 
128    </#attempt> 
129</#if> 
130 
131<#-- Parse JSON response if content is available --> 
132<#if searchResult?has_content && searchResult.list?has_content> 
133    <#assign parsedJson = searchResult.list[0].json?eval /> 
134    <#assign sourceId = parsedJson.sourceId> 
135    <#assign portalSiteID = ArenaCentralSettingsService.getCentralSettings(groupId).getPortalSiteId()> 
136    <#if displayOptionValue == "masonry"> 
137        <#assign displayVariable = displayOptionValue + " masonry-grid"> 
138    <#else> 
139        <#assign displayVariable = displayOptionValue + " flickity-carousel"> 
140    </#if> 
141    <div class="arena-dynamic-list-container <#if widthOptionsValue == "full">break-out</#if>"> 
142        <h2 class="d-block text-center my-4"> 
143            ${listTitle} 
144        </h2> 
145        <div> 
146            <a class="quick-access-nav-above" id="arena-dynamic-list-above-${sanitizedTitle}" 
147               href="#arena-dynamic-list-below-${sanitizedTitle}" 
148               tabindex="0"><span class="icon-angle-down" aria-hidden="true"></span> 
149                <@liferay.language_format arguments="${listTitle}" key="dynamic.list.skip.past.the.list.below" /> 
150            </a> 
151        </div> 
152        <!-- start of list --> 
153        <#if displayOptionValue == "carousel"> 
154        <div class="arena-dynamic-list arena-dynamic-list-display-${displayVariable}" tabindex="-1"> 
155            <#else> 
156            <ul class="arena-dynamic-list arena-dynamic-list-display-${displayVariable}" tabindex="-1"> 
157                </#if> 
158                <#if parsedJson.hits?has_content> 
159                    <#list parsedJson.hits as hit> 
160                        <li class="arena-dynamic-list-item"> 
161                            <div class="arena-record"> 
162                                <a class="arena-record-cover" 
163                                   href="/web/arena/search#/entity/${sourceId}/${hit.entity.id}"> 
164                                    <#if hit.entity.media?? && (hit.entity.media?size > 0)> 
165                                        <#assign foundImage = false> 
166                                        <#list hit.entity.media as media> 
167                                            <#if media.mediaType == "image" && !foundImage> 
168                                                <img src="${media.url}" alt="" loading="lazy"/> 
169                                                <#assign foundImage = true> 
170                                            </#if> 
171                                        </#list> 
172                                        <#if !foundImage> 
173                                            <img src="/local-rest/api/v1/portalsites/${portalSiteID}/agencies/${hit.entity.agencyId}/records/${hit.entity.almaId}/cover" alt="" loading="lazy"/> 
174                                        </#if> 
175                                    <#else> 
176                                        <img src="/local-rest/api/v1/portalsites/${portalSiteID}/agencies/${hit.entity.agencyId}/records/${hit.entity.almaId}/cover" alt="" loading="lazy"/> 
177                                    </#if> 
178                                    <div class="arena-record-details"> 
179                                        <div class="arena-dynamic-list-title">${hit.entity.name}</div> 
180                                        <div class="arena-dynamic-list-author"> 
181                                            <#if hit.entity.creator?? && (hit.entity.creator?size > 0)> 
182                                                <#list hit.entity.creator as creatorType, creators> 
183                                                    ${creators[0].value} 
184                                                    <#break> 
185                                                </#list> 
186                                            <#elseif hit.entity.contributor?? && (hit.entity.contributor?size > 0)> 
187                                                <#list hit.entity.contributor as contributorType, contributors> 
188                                                    ${contributors[0].value} 
189                                                    <#break> 
190                                                </#list> 
191                                            </#if> 
192                                        </div> 
193                                    </div> 
194                                </a> 
195                            </div> 
196                        </li> 
197                    </#list> 
198                <#else> 
199                    <p><@liferay.language key="dynamic.list.no.hits"/></p> 
200                </#if> 
201                <li class="masonry-grid-sizer"></li> 
202                <#if displayOptionValue == "carousel"> 
203        </div> <!-- Closing div for carousel --> 
204    <#else> 
205        </ul> <!-- Closing ul for non-carousel --> 
206        </#if> 
207        <!-- end of list --> 
208 
209        <#if modeValue == "query" && showViewAllLink> 
210            <div class="arena-dynamic-list-view-all-container text-right text-end"> 
211                <#assign currentUrl = themeDisplay.getURLCurrent()> 
212                <#if currentUrl?contains("web/arena")> 
213                    <a href='/web/arena/search#/?q=${queryValue}'><@liferay.language key="view-all" /></a> 
214                <#else> 
215                    <a href='/web/quria/search/?q=${queryValue}'><@liferay.language key="view-all" /></a> 
216                </#if> 
217            </div> 
218        </#if> 
219        <div> 
220            <a class="quick-access-nav-below" id="arena-dynamic-list-below-${sanitizedTitle}" 
221               href="#arena-dynamic-list-above-${sanitizedTitle}" 
222               tabindex="0"><span class="icon-angle-up" aria-hidden="true"></span> 
223                <@liferay.language_format arguments="${listTitle}" key="dynamic.list.skip.past.the.list.above"/> 
224            </a> 
225        </div> 
226    </div> 
227 
228<#else> 
229    <p><@liferay.language key="dynamic.list.no.hits"/></p> 
230</#if> 

Beklager, fant ingen resultater

Beklager, fant ingen resultater

Beklager, fant ingen resultater

Konto

Språkvelger