Asset Publisher

An error occurred while processing the template.
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> coverBild [in template "252001#252047#252845" at line 126, column 77]
----
FTL stack trace ("~" means nesting-related):
- Failed at: dMTJsonObject = FrontendService.media... [in template "252001#252047#252845" at line 126, column 21]
----
1<#-- used @ Veranstaltung-Detailseite Intro 
2 used @ Publikation-Detailseite Intro 
3--> 
4 
5<#-- 
6Web content templates to display teaser on thema detail page 
7 
8Generic template for detail pages Intro / Teaser element 
9--> 
10<#-- 
11Display the current page title 
12--> 
13<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" /> 
14<#include "${fullTemplatesPath}/macros/debugging.ftl" /> 
15 
16<#include "${fullTemplatesPath}/macros/page-modules/PMIntro.ftl" /> 
17<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadata.ftl" /> 
18<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" /> 
19 
20 
21<#-- 
22 renders the Intro for nearly all Pages 
23 TODO: remove Share? (was in the designs, but not anymore?) 
24 TODO: check if languageSelect/filter are working (js) 
25 
26 - portletId 
27 - data = { 
28 "media": string (src from image), 
29 "category": string, 
30 "title": string, 
31 "author": string, 
32 "subheadline": string, 
33 "copy": string, 
34 "filter": { 
35 "id": string, 
36 "name": string, 
37 "entries": Array<Object> ({key:value}), 
38 }, 
39 "languageSelect": { 
40 "id": string, 
41 "name": string, 
42 "entries": Array<Object> ({key:value}), 
43 }, 
44 "meta": { 
45 "pos"; string (top/bottom) 
46 "date": string, 
47 "hash": string, 
48 "info": string, (url) 
49 }, 
50 "share" : { 
51 "login": string, 
52 "print": string, 
53 "mail": string, 
54 "multishare": string?? (tbd) 
55
56 - AMMetadata: macro 
57 - position: String ("top") -> defines wether the meta-data should be rendered above or below the intro-content 
58
59--> 
60 
61<#assign 
62 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
63 
64 ServiceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() 
65 DLAPP = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService") 
66 
67 themeDisplay = ServiceContext.getThemeDisplay() 
68 editmode = FrontendService.user.isPrivilegedUser(themeDisplay) 
69 
70 languageId = themeDisplay.getLocale() 
71 groupId = themeDisplay.getScopeGroupId() 
72 currentUrl = themeDisplay.getURLCurrent() 
73 
74 layout = themeDisplay.getLayout() 
75 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id") 
76/> 
77 
78<#setting locale="${languageId}"> 
79 
80<#-- get article from url --> 
81 
82<#assign entry = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! > 
83 
84 
85<#if entry?has_content> 
86 
87 <#if entry.resourcePrimKey??> 
88 <#assign primaryKey = entry.resourcePrimKey?number > 
89 <#elseif entry.classPK??> 
90 <#assign primaryKey = entry.classPK?number > 
91 </#if> 
92 
93 <#assign 
94 jsonString = FrontendService.article.getWebcontent(primaryKey) 
95 json = FrontendService.json.parseAsJson(jsonString) 
96 
97 title = entry.getTitle(languageId) 
98 data = { 
99 "title": title 
100
101 /> 
102 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" /> 
103 
104 <#if hasContent('untertitel', languageId, json)> 
105 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } > 
106 </#if> 
107 
108 <#if hasContent('beschreibung', languageId, json)> 
109 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } > 
110 </#if> 
111 
112 <#-- fill meta data --> 
113 <#assign meta = {} /> 
114 
115 <#-- PUBLIKATIONEN DETAIL --> 
116 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
117 
118 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)> 
119 <#assign 
120 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first") 
121 /> 
122 
123 <#if coverBildString?has_content> 
124 <#assign 
125 coverBild = FrontendService.json.parseAsJson(coverBildString) 
126 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) 
127 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid ) 
128 data = data + { "media": linkToDMT, "meta" : dMTJsonObject } 
129 /> 
130 <#if dMTJsonObject.altText?? > 
131 <#assign data = data + {"alt" : dMTJsonObject.altText} /> 
132 </#if> 
133 <#if dMTJsonObject.quelle??> 
134 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } /> 
135 </#if> 
136 </#if> 
137 <#-- uncomment to display pdf cover as Intro Image 
138 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)> 
139 <#assign 
140 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first") 
141 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/> 
142 <#if fileEntry?has_content> 
143 <#assign 
144 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay) 
145 data = data + { "media": linkToThumbnail } 
146 /> 
147 </#if> 
148 --> 
149 </#if> 
150 
151 <#assign 
152 meta = meta + { "orderInfo": "true" } 
153 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!"" 
154 /> 
155 
156 
157 
158 <#if hasContent('erscheinungsdatum', languageId, json)> 
159 <#assign 
160 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
161 /> 
162 <#if erscheinungsdatum?has_content > 
163 <#assign 
164 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId ) 
165 meta = meta + { "date": erscheinungsdatumFormatted } 
166 /> 
167 </#if> 
168 </#if> 
169 
170 <#if verbundJournalArticle?has_content> 
171 <#assign 
172 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey) 
173 verbundJson = FrontendService.json.parseAsJson(verbundJsonString) 
174 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first") 
175 /> 
176 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" /> 
177 <#assign meta = meta + { "laufendenummer": laufendenummer } > 
178 </#if> 
179 
180 
181 <#if meta?has_content> 
182 <#assign data = data + {"meta": meta } > 
183 </#if> 
184 
185 </#if> 
186 <#-- PUBLIKATIONEN DETAIL END --> 
187 
188 
189 <#-- VERANSTALTUNGEN DETAIL --> 
190 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
191 <#assign 
192 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!"" 
193 languages = entry.getAvailableLanguageIds() 
194 links = [] 
195 /> 
196 <#if languages?has_content && friendlyUrl?has_content> 
197 <#if (languages?size > 1) > 
198 <#list languages as language> 
199 <#assign 
200 defaultLanguage = "de_DE" 
201 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage) 
202 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale 
203 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId) 
204 
205 link = { 
206 "key": language!defaultLanguage, 
207 "value": linkLocale.getDisplayLanguage(languageId), 
208 "url": "/c/portal/update_language?p_l_id=" + 
209 layout.plid + "&redirect=" + langFriendlyUrl + 
210 "&languageId=" + language 
211
212 /> 
213 <#if language == languageId> 
214 <#assign link = link + { "selected": "true" } > 
215 </#if> 
216 <#assign links = links + [link]> 
217 </#list> 
218 <#assign 
219 data = data + { 
220 "languageSelect": { 
221 "id": "languageSelectRedirect", 
222 "name": "languageselectRedirect", 
223 "entries": links, 
224 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar") 
225
226
227 /> 
228 </#if> 
229 </#if> 
230 </#if> 
231 
232 <#if hasContent('erscheinungsdatum', languageId, json)> 
233 <#assign 
234 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
235 meta = meta + { "start": startdate?date.iso, "end": "" } 
236 /> 
237 </#if> 
238 
239 <#if hasContent('startdatum', languageId, json)> 
240 <#assign 
241 startdate = getValueForLanguage('startdatum', languageId, json, "first") 
242 meta = meta + { "start": startdate?date.iso, "end": "" } 
243 /> 
244 </#if> 
245 
246 <#if hasValue('einfuehrungText', locale, json)> 
247 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } > 
248 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")> 
249 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } > 
250 </#if> 
251 
252 <#if hasContent('endedatum', languageId, json)> 
253 <#assign 
254 enddate = getValueForLanguage('endedatum', languageId, json, "first") 
255 meta = meta + { "end": enddate?date.iso } 
256 /> 
257 </#if> 
258 
259 <#if hasContent('startzeit', languageId, json)> 
260 <#assign 
261 startzeit = getValueForLanguage('startzeit', languageId, json, "first") 
262 /> 
263 <#if startzeit?has_content > 
264 <#assign meta = meta + { "startzeit": startzeit } /> 
265 </#if> 
266 </#if> 
267 
268 <#if hasContent('endezeit', languageId, json)> 
269 <#assign 
270 endezeit = getValueForLanguage('endezeit', languageId, json, "first") 
271 meta = meta + { "endezeit": endezeit } 
272 /> 
273 </#if> 
274 
275 <#if hasContent('ortWCSKASDEORT', languageId, json)> 
276 <#assign 
277 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first")) 
278 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number 
279 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!"" 
280 /> 
281 <#if ortWCSKASDEORTWebContent?has_content > 
282 <#assign 
283 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!"" 
284 /> 
285 <#if ortWCSKASDEORTTitle?has_content > 
286 <#assign 
287 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle } 
288 /> 
289 </#if> 
290 </#if> 
291 </#if> 
292 
293 
294 <#if hasContent('veranstaltungsnummer', languageId, json)> 
295 <#assign 
296 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first") 
297 meta = meta + { "verauuid": verauuid } 
298 /> 
299 </#if> 
300 
301 
302 <#if (data.meta)?has_content > 
303 <#assign meta = data.meta /> 
304 </#if> 
305 
306 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)> 
307 <#assign 
308 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first") 
309 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution") 
310 /> 
311 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} > 
312 
313 
314 <#if mediaData.meta?? && mediaData.meta.quelle??> 
315 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } /> 
316 </#if> 
317 </#if> 
318 
319 
320 <#if meta?has_content> 
321 <#assign data = data + {"meta": meta } > 
322 </#if> 
323 
324 <#-- END fill meta data --> 
325 
326 <#if hasContent('autorenWCSKASDEPERSON', languageId, json)> 
327 <#assign 
328 journalArticles = getValueForLanguage('autorenWCSKASDEPERSON', languageId, json) 
329 authors = [] 
330 /> 
331 <#list journalArticles as articleString> 
332 <#assign article = FrontendService.json.parseAsJson(articleString) /> 
333 <#if article?has_content && article?is_hash && article.classPK??> 
334 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" /> 
335 <#if articleDereferenced?has_content > 
336 <#assign 
337 author = "" 
338 articlePrimaryKey = articleDereferenced.classPK?number 
339 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey) 
340 articleJson = FrontendService.json.parseAsJson(articleJsonString) 
341 /> 
342 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" /> 
343 <#if hasValue('anredetitel', languageId, articleJson)> 
344 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " "> 
345 </#if> 
346 <#if hasValue('vorname', languageId, articleJson)> 
347 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " "> 
348 </#if> 
349 <#if hasValue('nachname', languageId, articleJson)> 
350 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " "> 
351 </#if> 
352 
353 <#attempt> 
354 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" > 
355 <#recover> 
356 <#assign href = "#" > 
357 </#attempt> 
358 <#if href?has_content && href != "#" && href != "/_404"> 
359 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'> 
360 </#if> 
361 
362 <#assign authors = authors + [author?trim]> 
363 </#if> 
364 </#if> 
365 </#list> 
366 <#if authors?has_content> 
367 <#assign data = data + { "author": authors?join(", ") } > 
368 </#if> 
369 </#if> 
370 
371 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") > 
372 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! > 
373 <#if categories?has_content && categories[0]?has_content > 
374 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
375 </#if> 
376 
377 <#if hasContent('ausgebucht', languageId, json)> 
378 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }> 
379 </#if> 
380 
381 <#if hasContent('storniert', languageId, json)> 
382 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }> 
383 </#if> 
384 
385 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") > 
386 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! > 
387 <#if categories?has_content && categories[0]?has_content > 
388 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
389 </#if> 
390 <#else> 
391 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! > 
392 <#if categories?has_content && categories[0]?has_content > 
393 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
394 </#if> 
395 </#if> 
396 
397 
398 <#assign 
399 languages = [] 
400 /> 
401 
402 <#attempt> 
403 <#if json["document_pdfDMTBASICDOCUMENT"]?? > 
404 <#list json["document_pdfDMTBASICDOCUMENT"]?keys as pdf_language> 
405 <#if pdf_language?has_content > 
406 <#assign 
407 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first") 
408 docRef = FrontendService.json.parseAsJson(docRefJson) 
409 /> 
410 <#if docRef?is_hash && pdf_language != languageId > 
411 <#assign 
412 lang = FrontendService.language.getLocaleByKey(pdf_language)!"" 
413 docGroupId = docRef["groupId"]?number 
414 docUuid = docRef["uuid"] 
415 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale ) 
416 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject ) 
417 /> 
418 <#if lang?has_content> 
419 <#assign 
420 languages = languages + [ 
421
422 "key": pdf_language, 
423 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(), 
424 "url": dMTLink 
425 }] 
426 /> 
427 </#if> 
428 </#if> 
429 </#if> 
430 </#list> 
431 </#if> 
432 <#recover> 
433 </#attempt> 
434 
435 <#if (languages?size > 0)> 
436 <#attempt> 
437 <#assign 
438 data = data + { "languageSelect": { 
439 "id": "languageSelect", 
440 "name": "languageselect", 
441 "entries": languages, 
442 "documents": "", 
443 "button": "true" 
444 }} 
445 /> 
446 <#recover> 
447 </#attempt> 
448 </#if> 
449 
450 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" /> 
451 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)} 
452 
453<#elseif (editmode?? && editmode)> 
454 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl /> 
455</#if> 

Asset Publisher

Please click here to view the contents.
Or adjust your cookie settings under privacy policy.

null

null

null

null

Asset Publisher

An error occurred while processing the template.
'article' parameter of getJsonFromArticle() was not a hash / object with member 'classPK' and also not an empty string (maybe you forgot a 'FrontendService.json.parseAsJson()' to deserialize json earlier?): "null"
----
FTL stack trace ("~" means nesting-related):
- Failed at: #stop ("'article' parameter of getJso... [in template "kas-de-theme_SERVLET_CONTEXT_/templates/functions/relatedContentUtil.ftl" in function "getJsonFromArticle" at line 283, column 5]
----
1<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" /> 
2<#include "${fullTemplatesPath}/functions/freemarkerUtil.ftl" /> 
3<#include "${fullTemplatesPath}/macros/debugging.ftl" /> 
4<#include "${fullTemplatesPath}/functions/liferayServicesUtil.ftl" /> 
5 
6<#include "${fullTemplatesPath}/macros/page-modules/PMNavigation.ftl" /> 
7<#include "${fullTemplatesPath}/macros/page-modules/PMMarginalspalte.ftl" /> 
8<#include "${fullTemplatesPath}/macros/atomic-modules/AMVenue.ftl" /> 
9<#include "${fullTemplatesPath}/macros/atomic-modules/AMMarginalContent.ftl" /> 
10<#include "${fullTemplatesPath}/macros/atomic-modules/AMPricing.ftl" /> 
11<#include "${fullTemplatesPath}/macros/atomic-modules/AMPerson.ftl" /> 
12<#include "${fullTemplatesPath}/macros/atomic-modules/AMMediaElement.ftl" /> 
13<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" /> 
14<#include "${fullTemplatesPath}/macros/atomic-modules/AMMap.ftl" /> 
15<#include "${fullTemplatesPath}/macros/atomic-modules/AMMarginalLinks.ftl" /> 
16<#include "${fullTemplatesPath}/macros/atomic-modules/AMCollapsibleListItem.ftl" /> 
17 
18<#assign 
19 JournalArticleLocalService = getJournalArticleLocalService() 
20  
21  
22 
23 themeDisplay = getThemeDisplay() 
24 languageId = themeDisplay.getLocale() 
25 editmode = FrontendService.user.isPrivilegedUser(themeDisplay) 
26 
27 groupId = themeDisplay.getScopeGroupId() 
28 currentUrl = themeDisplay.getURLCurrent() 
29 
30 layout = themeDisplay.getLayout() 
31 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id") 
32 
33 isMicrosite = FrontendService.site.isMicrosite(groupId)!false 
34/> 
35 
36<#-- Veranstaltungen-Detail, Publikationen-Detail --> 
37<#if currentUrl?contains("/-/content") > 
38 
39 <#assign journalArticle = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! > 
40 
41 <#if journalArticle?has_content> 
42 <#if journalArticle.resourcePrimKey??> 
43 <#assign primaryKey = journalArticle.resourcePrimKey?number > 
44 <#elseif journalArticle.classPK??> 
45 <#assign primaryKey = journalArticle.classPK?number > 
46 </#if> 
47 
48 <#assign 
49 jsonString = FrontendService.article.getWebcontent(primaryKey) 
50 json = FrontendService.json.parseAsJson(jsonString) 
51 /> 
52 
53 
54 <@debugJsonString jsonString "ADT_KASDE_MARGINALSPALTE" /> 
55 
56 <#if hasContent('title', locale, json)> 
57 <#assign 
58 pageName = "" 
59 title = " - " + getValueForLanguage("title", languageId, json, "first") 
60 /> 
61 <#if isMicrosite > 
62 <#assign 
63 pageGroup = layout.getGroup() 
64 pageName = " - " + htmlUtil.escape(pageGroup.getDescriptiveName()) 
65 /> 
66 </#if> 
67  
68 </#if> 
69 
70 <#assign content = getMarginalContent(json, locale, primaryKey, FrontendService, JournalArticleLocalService, themeDisplay) >  
71 
72 
73 <#if hasContent('ausgebucht', locale, json)> 
74 <#assign content = content + { "ausgebucht" : getValueForLanguage('ausgebucht', locale, json, "first") }> 
75 </#if> 
76 
77 <#if hasContent('storniert', locale, json)> 
78 <#assign content = content + { "storniert" : getValueForLanguage('storniert', locale, json, "first") }> 
79 </#if> 
80 
81 <#if hasContent('document_pdfDMTBASICDOCUMENT', locale, json)> 
82 <#assign 
83 pdfDocumentString = getValueForLanguage('document_pdfDMTBASICDOCUMENT', locale, json, "first") 
84 pdfDocument = FrontendService.json.parseAsJson(pdfDocumentString) 
85 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, pdfDocument.groupId?number)!/> 
86 <#if fileEntry?has_content> 
87 <#assign 
88 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay) 
89 covermedia = getDefaultMediaObject(linkToThumbnail, "pdf cover") 
90 covermedia = covermedia + {"hrefSource" : content.pdfBasicDocumentUrl.url } 
91 content = content + { "covermedia": covermedia } 
92 /> 
93 </#if> 
94 </#if> 
95 
96 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
97 <#assign calendar = FrontendService.event.createCalendarFile(primaryKey, locale) /> 
98 <#assign content = content + {"calendar": calendar } /> 
99 </#if> 
100 <#elseif (editmode?? && editmode)> 
101 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_MARGINALSPALTE" layouttpl /> 
102 </#if> 
103 
104<#-- Themen-Detail and others --> 
105<#else> 
106 <#-- content in marginalspalte --> 
107 <#if entries?has_content> 
108 <#assign 
109 entry = entries?first 
110 primaryKey = entry.classPK?number 
111 
112 jsonString = FrontendService.article.getWebcontent(primaryKey) 
113 json = FrontendService.json.parseAsJson(jsonString) 
114 /> 
115 <@debugJsonString jsonString "ADT_KASDE_MARGINALSPALTE" /> 
116 <@debugJson json "MARGINALSPALTE_CONTENT_JSON" /> 
117 
118 <#assign content = getMarginalContent(json, locale, primaryKey, FrontendService, JournalArticleLocalService, themeDisplay) > 
119 <#elseif (editmode?? && editmode)> 
120 <@errorMessage languageUtil.get(locale, "es.existieren.keine.entries") "ADT_KASDE_MARGINALSPALTE" layouttpl /> 
121 </#if> 
122</#if> 
123 
124 
125<#if content??> 
126 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
127 <#assign type = "veranstaltung" /> 
128 
129 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
130 <#assign type = "publikation" /> 
131 <#elseif layouttpl?contains("LAYOUT_KASDE_THEMEN_DETAIL")> 
132 <#assign type = "thema" /> 
133 <#else> 
134 <#assign type = "default" /> 
135 </#if> 
136 
137 <#assign content = content + {"type": type } /> 
138 <@debugJsonString content "ADT_KASDE_MARGINALSPALTE_CONTENT" /> 
139 <@PMMarginalspalte "ADT_KASDE_MARGINALSPALTE" content AMArticle AMPerson AMVenue AMPricing AMMediaElement AMDatetime AMMap AMMarginalContent AMMarginalLinks/> 
140<#elseif (editmode?? && editmode)> 
141 <@errorMessage languageUtil.get(locale, "entries.enthalten.keinen.content") "ADT_KASDE_MARGINALSPALTE" layouttpl /> 
142</#if> 

comment-portlet

Asset Publisher

An error occurred while processing the template.
'json' parameter of getRelatedMediaObject() was not a hash / object and also not an empty string (maybe you forgot a 'FrontendService.json.parseAsJson()' to deserialize json earlier?): "null"
----
FTL stack trace ("~" means nesting-related):
- Failed at: #stop ("'json' parameter of getRelate... [in template "kas-de-theme_SERVLET_CONTEXT_/templates/functions/content-functions/CFRelatedMediaObject.ftl" in function "getRelatedMediaObject" at line 66, column 9]
----
1<#-- 
2 used @ Detailseite, PARTNER 
3 used @ Veranstaltungs-Detailseite, PARTNER + Bereitgestellt von 
4--> 
5 
6<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" /> 
7<#include "${fullTemplatesPath}/functions/contentUtil.ftl" /> 
8<#include "${fullTemplatesPath}/macros/debugging.ftl" /> 
9 
10<#include "${fullTemplatesPath}/macros/page-modules/PMContextPartner.ftl" /> 
11<#include "${fullTemplatesPath}/macros/page-modules/PMPartner.ftl" /> 
12<#include "${fullTemplatesPath}/macros/page-modules/PMContext.ftl" /> 
13<#include "${fullTemplatesPath}/macros/page-modules/PMPromo.ftl" /> 
14 
15<#include "${fullTemplatesPath}/macros/atomic-modules/AMPartner.ftl" /> 
16<#include "${fullTemplatesPath}/macros/atomic-modules/AMMediaElement.ftl" /> 
17 
18<#assign 
19  
20  
21 JournalArticleLocalService = getJournalArticleLocalService() 
22 
23 themeDisplay = getThemeDisplay() 
24 currentUrl = themeDisplay.getURLCurrent() 
25 locale = themeDisplay.getLocale() 
26 layout = themeDisplay.getLayout() 
27 
28 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id") 
29 editmode = FrontendService.user.isPrivilegedUser(themeDisplay) 
30/> 
31 
32<#-- PARTNER + "Bereitgestellt von" (Veranstaltungs-Detail) --> 
33<#-- check if it is a hidden detail page - get article from url --> 
34<#if currentUrl?contains("/-/content") > 
35 <#assign journalArticle = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)!"" > 
36 
37 <#if journalArticle?has_content > 
38 <#assign 
39 primaryKey = journalArticle.resourcePrimKey?number 
40 jsonString = FrontendService.article.getWebcontent(primaryKey) 
41 json = FrontendService.json.parseAsJson(jsonString) 
42 
43 title = journalArticle.getTitle(locale) 
44 data = { 
45 "title": title 
46
47 /> 
48 <@debugJsonString jsonString "ADT_KASDE_CONTEXT" /> 
49 
50 <#assign content = getRelatedPublication(json, locale, primaryKey, themeDisplay, FrontendService ) > 
51 
52 <#if hasValue('partnerWCSKASDEPARTNER', locale, json)> 
53 <#assign 
54 partner = [] 
55 partners = getValueForLanguage('partnerWCSKASDEPARTNER', locale, json) 
56 /> 
57 
58 <#list partners as partnerEntry> 
59 <#if partnerEntry?has_content > 
60 <#assign 
61 partnerJson = getJsonFromArticle(FrontendService.json.parseAsJson(partnerEntry), JournalArticleLocalService, FrontendService) 
62 partnerData = getRelatedPartner(partnerJson, themeDisplay, locale, FrontendService)!"" 
63 /> 
64 <@debugJson partnerJson "ADT_KASDE_CONTEXT-partnerWCSKASDEPARTNER" /> 
65 
66 <#if partnerData?has_content > 
67 <#assign 
68 partner = partner + [partnerData] 
69 /> 
70 </#if> 
71 </#if> 
72 </#list> 
73 <#assign content = content + {"partner": partner} > 
74 </#if> 
75 
76 <#if content?has_content> 
77 
78 <#-- PARTNER --> 
79 <#if content.partner?? > 
80 <div class="o-page-module o-page-module--border"> 
81 <@PMContextPartner "ADT_KASDE_PARTNER_CONTEXT" content.partner PMPartner AMPartner AMMediaElement languageUtil.get(locale, "partner") "c-page-context--veranstaltungdetail" /> 
82 </div> 
83 <#elseif (editmode?? && editmode)> 
84 <@errorMessage languageUtil.get(locale, "keine.partner.zum.thema") "ADT_KASDE_CONTEXT" layouttpl currentUrl /> 
85 </#if> 
86 
87 <#if hasValue('bereitgestelltvon', locale, json)> 
88 <#assign 
89 bereitgestelltvon = getValueForLanguage('bereitgestelltvon', locale, json, "first") 
90 /> 
91 
92 <#-- "Bereitsgestellt von" --> 
93 <#if bereitgestelltvon?has_content > 
94 <#assign 
95 data = { 
96 "title": languageUtil.get(locale, "bereitgestellt.von"), 
97 "copy": bereitgestelltvon 
98
99 /> 
100 
101 <#if hasValue('bereitgestelltvonlink', locale, json)> 
102 <#assign data = data + { "href" : getValueForLanguage('bereitgestelltvonlink', locale, json, "first") } /> 
103 </#if> 
104 
105 <#assign data = data + { "uniquename" : "presented-by" } /> 
106 
107 <div class="o-page-module o-page-module--border"> 
108 <@PMContext "ADT_KASDE_ABOUT_CONTEXT" data "c-page-context--veranstaltungdetail c-page-context--presented-by" /> 
109 </div> 
110 <#elseif (editmode?? && editmode)> 
111 <@errorMessage languageUtil.get(locale, "es.existieren.keine.entries") "ADT_KASDE_CONTEXT" layouttpl currentUrl /> 
112 </#if> 
113 <#elseif (editmode?? && editmode)> 
114 <@errorMessage languageUtil.get(locale, "es.existieren.keine.entries") "ADT_KASDE_CONTEXT" layouttpl currentUrl /> 
115 </#if> 
116 <#elseif (editmode?? && editmode)> 
117 <@errorMessage languageUtil.get(locale, "es.existieren.keine.entries") "ADT_KASDE_CONTEXT" layouttpl currentUrl /> 
118 </#if> 
119 </#if> 
120 
121<#-- PARTNER --> 
122<#elseif entries?has_content> 
123 <#assign content = [] > 
124 
125 <#list entries as entry> 
126 <#assign 
127 primaryKey = entry.classPK?number 
128 jsonString = FrontendService.article.getWebcontent(primaryKey) 
129 json = FrontendService.json.parseAsJson(jsonString) 
130 
131 headline = languageUtil.get(locale, "partner") 
132 /> 
133 <@debugJsonString jsonString "ADT_KASDE_CONTEXT" /> 
134 
135 <#-- "PARTNER List" --> 
136 <#if hasValue('partnerWCSKASDEPARTNER', locale, json)> 
137 <#assign 
138 partner = [] 
139 partners = getValueForLanguage('partnerWCSKASDEPARTNER', locale, json) 
140 /> 
141 
142 <#list partners as partnerEntry> 
143 <#if partnerEntry?has_content > 
144 <#assign 
145 partnerJson = getJsonFromArticle(partnerEntry, JournalArticleLocalService, FrontendService) 
146 partnerData = getRelatedPartner(partnerJson, themeDisplay, locale, FrontendService)!"" 
147 /> 
148 <#if partnerData?has_content > 
149 <#assign 
150 partner = partner + [partnerData] 
151 /> 
152 </#if> 
153 </#if> 
154 </#list> 
155 
156 <#if partner?has_content> 
157 <div class="o-page-module o-page-module--border"> 
158 <@PMContextPartner "ADT_KASDE_PARTNER_CONTEXT" partner PMPartner AMPartner AMMediaElement headline "c-page-context--themadetail" /> 
159 </div> 
160 <#elseif (editmode?? && editmode && entry?is_first)> 
161 <@errorMessage languageUtil.get(locale, "keine.partner.zum.thema") "ADT_KASDE_CONTEXT" layouttpl currentUrl /> 
162 </#if> 
163 <#elseif (editmode?? && editmode && entry?is_first)> 
164 <@errorMessage languageUtil.get(locale, "keine.partner.zum.thema") "ADT_KASDE_CONTEXT" layouttpl currentUrl /> 
165 </#if> 
166 
167 </#list> 
168<#elseif (editmode?? && editmode)> 
169 <@errorMessage languageUtil.get(locale, "es.existieren.keine.entries") "ADT_KASDE_CONTEXT" layouttpl currentUrl /> 
170</#if> 

Asset Publisher

An error occurred while processing the template.
'json' parameter of getRelatedMediaObject() was not a hash / object and also not an empty string (maybe you forgot a 'FrontendService.json.parseAsJson()' to deserialize json earlier?): "null"
----
FTL stack trace ("~" means nesting-related):
- Failed at: #stop ("'json' parameter of getRelate... [in template "kas-de-theme_SERVLET_CONTEXT_/templates/functions/content-functions/CFRelatedMediaObject.ftl" in function "getRelatedMediaObject" at line 66, column 9]
----
1<#-- 
2 used @ Publikationsreihe, "Über diese Reihe", "Bestellinformationen", "Kontakte 
3--> 
4 
5<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" /> 
6<#include "${fullTemplatesPath}/functions/freemarkerUtil.ftl" /> 
7<#include "${fullTemplatesPath}/macros/debugging.ftl" /> 
8 
9<#include "${fullTemplatesPath}/macros/page-modules/PMContext.ftl" /> 
10<#include "${fullTemplatesPath}/macros/page-modules/PMContextContacts.ftl" /> 
11<#include "${fullTemplatesPath}/macros/atomic-modules/AMPerson.ftl" /> 
12<#include "${fullTemplatesPath}/macros/atomic-modules/AMMediaElement.ftl" /> 
13 
14<#assign 
15 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
16  
17 ServiceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() 
18 
19 themeDisplay = ServiceContext.getThemeDisplay() 
20 languageId = themeDisplay.getLocale() 
21 currentUrl = themeDisplay.getURLCurrent() 
22 editmode = FrontendService.user.isPrivilegedUser(themeDisplay) 
23 
24 layout = themeDisplay.getLayout() 
25 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id") 
26 
27 content = [] 
28 
29 einzeltitel = FrontendService.constant.EINZELTITEL 
30 PUBLIKATIONSREIHE = FrontendService.constant.PUBLIKATIONSREIHE 
31/> 
32 
33<#function getUrlFromArticleLink index json languageId themeDisplay FrontendService > 
34 <#local 
35 url = "" 
36 journalArticle = getLinkArticleForIndex(index, languageId, json, FrontendService)! 
37 /> 
38 <#if journalArticle?? && journalArticle.classPK??> 
39 <#local 
40 jsonString = FrontendService.article.getWebcontent(journalArticle.classPK?number) 
41 json = FrontendService.json.parseAsJson(jsonString) 
42 url = FrontendService.article.getFriendlyUrl(journalArticle.classPK?number, languageId, themeDisplay.getScopeGroupId())!"" 
43 /> 
44 </#if> 
45 
46 <#return url> 
47</#function> 
48 
49<#function getPromoData json languageId themeDisplay FrontendService > 
50 <#local 
51 contentlinks = [] 
52 labels = getValueForLanguage('linkslinklabel', languageId, json) 
53 /> 
54 <#list labels as label> 
55 <#if label?has_content> 
56 <#local mediaObject = getLinkImageForIndex(label?index, languageId, json, themeDisplay, languageId, FrontendService) > 
57 <#if mediaObject?? && mediaObject?is_hash> 
58 <#local href = getLinkRefForIndex(label?index, languageId, json) > 
59 <#if href == "#" || !href?has_content> 
60 <#local href = getUrlFromArticleLink(label?index, json, languageId, themeDisplay, FrontendService) > 
61 </#if> 
62 <#local 
63 contentlinks = contentlinks + [{ 
64 "title": label, 
65 "href": href, 
66 "image": mediaObject.url 
67 }] 
68 /> 
69 </#if> 
70 </#if> 
71 </#list> 
72 
73 <#return contentlinks> 
74</#function> 
75 
76<#if entries?has_content> 
77 <#list entries as entry> 
78 <#assign 
79 primaryKey = entry.classPK?number 
80 jsonString = FrontendService.article.getWebcontent(primaryKey) 
81 json = FrontendService.json.parseAsJson(jsonString) 
82 /> 
83 <@debugJsonString jsonString "ADT_KASDE_REIHE_CONTEXT" /> 
84 <#assign contentData = getRelatedPublication(json, languageId, primaryKey, themeDisplay, FrontendService ) > 
85 
86 <#if hasValue('kontakteWCSKASDEPERSON', languageId, json)> 
87 <#assign 
88 contacts = [] 
89 journalArticles = getValueForLanguage('kontakteWCSKASDEPERSON', languageId, json) 
90 /> 
91 <#list journalArticles as articleOriginalString> 
92 <#assign 
93 articleOriginal = FrontendService.json.parseAsJson(articleOriginalString)  
94 article = FrontendService.person.resolveContactInstanceToPerson(articleOriginal, languageId)!"" 
95 /> 
96 <#if article?has_content && article.classPK??> 
97 <#assign  
98 articlePrimaryKey = article.classPK?number 
99 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey) 
100 articleJson = FrontendService.json.parseAsJson(articleJsonString) 
101 
102 contacts = contacts + [getRelatedPerson(articleJson, languageId, articlePrimaryKey, FrontendService, themeDisplay)] 
103 /> 
104 <@debugJsonString articleJsonString "ADT_KASDE_REIHE_CONTEXT--kontakteWCSKASDEPERSON" /> 
105 </#if> 
106 </#list> 
107 
108 <#assign contentData = contentData + {"contacts": contacts} > 
109 </#if> 
110 
111 <#-- Promo Teaser --> 
112 <#if hasValue('linkslinklabel', languageId, json) > 
113 <#assign contentlinks = getPromoData(json, languageId, themeDisplay, FrontendService)> 
114 <#if contentlinks?has_content> 
115 <#assign contentData = contentData + {"contentlinks": contacts} > 
116 </#if> 
117 </#if> 
118 
119 <#assign content = content + [contentData]> 
120 </#list> 
121 
122 <#if content?has_content> 
123 <#assign content = content?first /> 
124 <#assign pubReiheCategories = FrontendService.category.getCategoriesToArticle(primaryKey, PUBLIKATIONSREIHE) />  
125  
126 <#-- Ueber diese Reihe --> 
127 <#if content.copy?? && !(pubReiheCategories?has_content && pubReiheCategories[0].getName() == einzeltitel ) > 
128 
129 <#assign 
130 data = { 
131 "title": languageUtil.get(locale, "ueber.diese.reihe"), 
132 "copy": content.copy 
133
134 /> 
135 <#assign data = data + { "uniquename" : "about-this-series" } /> 
136 <@PMContext "ADT_KASDE_REIHE_CONTEXT_ABOUT" data "c-page-context--highlighted c-page-context--publikationsreihe" /> 
137 </#if> 
138 
139 
140 <#-- Bestellinformationen --> 
141 <#if content.orderinfo?? && content.orderinfo?has_content > 
142 <#attempt> 
143 <#-- remove empty p tags --> 
144 <#assign orderinfo = content.orderinfo?replace('^<p>\\s*</p>|<p/>', '', 'r')!"" /> 
145 <#recover> 
146 </#attempt> 
147 </#if> 
148 
149 <#assign data = { "title": languageUtil.get(locale, "bestellinformationen") } > 
150 
151 <#-- if publikations-detailseite: get bestellinfo from publikation --> 
152 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
153 <#assign contentPublikation = {} /> 
154 <#attempt> 
155 <#assign journalArticle = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)!"" > 
156 <#recover> 
157 <#if (editmode?? && editmode)>  
158 <div class="alert alert-info -hide-live"> 
159 <p><strong>${languageUtil.get(locale,"fehler")}</strong>: ${languageUtil.get(locale, "es.existieren.keine.entries")}</p> 
160 <p><strong>ADT:</strong> ADT_KASDE_REIHE_CONTEXT</p> 
161 <p><strong>Layout:</strong> ${layouttpl}</p> 
162 </div> 
163 </#if> 
164 </#attempt> 
165 
166 <#if journalArticle?has_content> 
167 
168 <#if journalArticle.resourcePrimKey??> 
169 <#assign primaryKey = journalArticle.resourcePrimKey?number > 
170 <#elseif journalArticle.classPK??> 
171 <#assign primaryKey = journalArticle.classPK?number > 
172 </#if> 
173 
174 <#assign 
175 jsonString_publikation = FrontendService.article.getWebcontent(primaryKey) 
176 json_publikation = FrontendService.json.parseAsJson(jsonString_publikation) 
177 /> 
178 <@debugJsonString jsonString_publikation "ADT_KASDE_REIHE_CONTEXT--publikation" /> 
179 <#assign contentPublikation = getRelatedPublication(json_publikation, languageId, primaryKey, themeDisplay, FrontendService ) > 
180 
181 </#if> 
182 
183 <#if orderinfo?? && orderinfo?has_content > 
184 <#assign data = data + { "copy": orderinfo }> 
185 </#if> 
186 
187 <#if contentPublikation.herausgeber?? && contentPublikation.herausgeber?has_content> 
188 <#assign data = data + { "herausgeber": contentPublikation.herausgeber }> 
189 </#if> 
190  
191 <#if contentPublikation.isbn?? && contentPublikation.isbn?has_content > 
192 <#assign data = data + { "isbn": contentPublikation.isbn }> 
193 </#if> 
194 
195 <#if contentPublikation.erscheinungsort?? && contentPublikation.erscheinungsort?has_content > 
196 <#assign data = data + { "erscheinungsort": contentPublikation.erscheinungsort }> 
197 </#if> 
198 
199 <#if contentPublikation.seitenzahl?? && contentPublikation.seitenzahl?has_content > 
200 <#assign data = data + { "seitenzahl": contentPublikation.seitenzahl }> 
201 </#if> 
202 
203 <#if contentPublikation.verlag?? && contentPublikation.verlag?has_content > 
204 <#assign data = data + { "verlag": contentPublikation.verlag }> 
205 </#if> 
206 
207 <#if contentPublikation.preis?? && contentPublikation.preis?has_content > 
208 <#assign data = data + { "preis": contentPublikation.preis }> 
209 </#if> 
210 
211 <#--<#if contentPublikation.author?? && contentPublikation.author?has_content > 
212 <#assign data = data + { "author": contentPublikation.author }> 
213 </#if>--> 
214 
215 <#-- else: use bestellinfo daten from reihe -->  
216 <#else> 
217 
218 <#if orderinfo?? && orderinfo?has_content > 
219 <#assign data = data + { "copy": orderinfo }> 
220 </#if> 
221 
222 <#if content.herausgeber?? && content.herausgeber?has_content > 
223 <#assign data = data + { "herausgeber": content.herausgeber }> 
224 </#if> 
225  
226 <#if content.issn?? && content.issn?has_content > 
227 <#assign data = data + { "issn": content.issn }> 
228 </#if> 
229 
230 <#if content.isbn?? && content.isbn?has_content > 
231 <#assign data = data + { "isbn": content.isbn }> 
232 </#if> 
233 
234 <#if content.erscheinungsort?? && content.erscheinungsort?has_content > 
235 <#assign data = data + { "erscheinungsort": content.erscheinungsort }> 
236 </#if> 
237 
238 <#if content.seitenzahl?? && content.seitenzahl?has_content > 
239 <#assign data = data + { "seitenzahl": content.seitenzahl }> 
240 </#if> 
241 
242 <#if content.verlag?? && content.verlag?has_content > 
243 <#assign data = data + { "verlag": content.verlag }> 
244 </#if> 
245 
246 <#if content.preis?? && content.preis?has_content > 
247 <#assign data = data + { "preis": content.preis }> 
248 </#if> 
249 
250 <#--<#if content.author?? && content.author?has_content > 
251 <#assign data = data + { "author": content.author }> 
252 </#if>--> 
253 </#if> 
254 
255  
256 <#-- if any bestellinformation is available --> 
257 <#if data.issn?has_content || data.isbn?has_content || data.copy?has_content || data.preis?has_content || data.herausgeber?has_content || data.seitenzahl?has_content || data.erscheinungsort?has_content > 
258 <#assign data = data + { "uniquename" : "order-info" } /> 
259 <@PMContext "ADT_KASDE_REIHE_CONTEXT_ORDER" data "c-page-context--publikationsreihe c-page-context--order" /> 
260 </#if> 
261 
262 <#-- Kontakte --> 
263 <#if content.contacts?? > 
264 <div class="o-page-module o-page-module--border"> 
265 <@PMContextContacts "ADT_KASDE_REIHE_CONTEXT_CONTACT" content.contacts AMPerson AMMediaElement /> 
266 </div> 
267 </#if> 
268 </#if> 
269<#elseif (editmode?? && editmode)> 
270 <@errorMessage languageUtil.get(locale, "es.existieren.keine.entries") "ADT_KASDE_REIHE_CONTEXT" layouttpl /> 
271</#if>