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>
Anu list
Dogs
Books about vikings
Bøker om økonomi - for deg som har begynt det nye året med å bli flinkere økonomisk
Astrid Lindgren
Astrid Lindgren
Mika's Lindgren
Beklager, fant ingen resultater
Dynamic contant
Beklager, fant ingen resultater
Beklager, fant ingen resultater
Anu anu test
ID lista
Most reserved books last 30 days
16 på topp utlån - se hva som er mest lest på biblioteket
A Dynicamic list for gold
Konto
Logg på