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 128, column 77]
----
FTL stack trace ("~" means nesting-related):
- Failed at: dMTJsonObject = FrontendService.media... [in template "252001#252047#252845" at line 128, 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/AMPublicationCarousel.ftl" /> 
18<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadata.ftl" /> 
19<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" /> 
20 
21 
22<#-- 
23 renders the Intro for nearly all Pages 
24 TODO: remove Share? (was in the designs, but not anymore?) 
25 TODO: check if languageSelect/filter are working (js) 
26 
27 - portletId 
28 - data = { 
29 "media": string (src from image), 
30 "category": string, 
31 "title": string, 
32 "author": string, 
33 "subheadline": string, 
34 "copy": string, 
35 "filter": { 
36 "id": string, 
37 "name": string, 
38 "entries": Array<Object> ({key:value}), 
39 }, 
40 "languageSelect": { 
41 "id": string, 
42 "name": string, 
43 "entries": Array<Object> ({key:value}), 
44 }, 
45 "meta": { 
46 "pos"; string (top/bottom) 
47 "date": string, 
48 "hash": string, 
49 "info": string, (url) 
50 }, 
51 "share" : { 
52 "login": string, 
53 "print": string, 
54 "mail": string, 
55 "multishare": string?? (tbd) 
56
57 - AMMetadata: macro 
58 - position: String ("top") -> defines wether the meta-data should be rendered above or below the intro-content 
59
60--> 
61 
62<#assign 
63 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
64 
65 ServiceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() 
66 DLAPP = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService") 
67 
68 themeDisplay = ServiceContext.getThemeDisplay() 
69 editmode = FrontendService.user.isPrivilegedUser(themeDisplay) 
70 
71 languageId = themeDisplay.getLocale() 
72 groupId = themeDisplay.getScopeGroupId() 
73 currentUrl = themeDisplay.getURLCurrent() 
74 
75 layout = themeDisplay.getLayout() 
76 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id") 
77/> 
78 
79<#setting locale="${languageId}"> 
80 
81<#-- get article from url --> 
82 
83<#assign entry = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! > 
84 
85 
86<#if entry?has_content> 
87 
88 <#if entry.resourcePrimKey??> 
89 <#assign primaryKey = entry.resourcePrimKey?number > 
90 <#elseif entry.classPK??> 
91 <#assign primaryKey = entry.classPK?number > 
92 </#if> 
93 
94 <#assign 
95 jsonString = FrontendService.article.getWebcontent(primaryKey) 
96 json = FrontendService.json.parseAsJson(jsonString) 
97 availablelanguages = FrontendService.article.getAssetEntryToUrl(primaryKey).getAvailableLanguageIds() 
98 
99 title = entry.getTitle(languageId) 
100 data = { 
101 "title": title 
102
103 /> 
104 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" /> 
105 
106 <#if hasContent('untertitel', languageId, json)> 
107 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } > 
108 </#if> 
109 
110 <#if hasContent('beschreibung', languageId, json)> 
111 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } > 
112 </#if> 
113 
114 <#-- fill meta data --> 
115 <#assign meta = {} /> 
116 
117 <#-- PUBLIKATIONEN DETAIL --> 
118 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
119 
120 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)> 
121 <#assign 
122 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first") 
123 /> 
124 
125 <#if coverBildString?has_content> 
126 <#assign 
127 coverBild = FrontendService.json.parseAsJson(coverBildString) 
128 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) 
129 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid ) 
130 data = data + { "media": linkToDMT, "meta" : dMTJsonObject } 
131 /> 
132 <#if dMTJsonObject.altText?? > 
133 <#assign data = data + {"alt" : dMTJsonObject.altText} /> 
134 </#if> 
135 <#if dMTJsonObject.quelle??> 
136 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } /> 
137 </#if> 
138 </#if> 
139 <#-- uncomment to display pdf cover as Intro Image 
140 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)> 
141 <#assign 
142 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first") 
143 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/> 
144 <#if fileEntry?has_content> 
145 <#assign 
146 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay) 
147 data = data + { "media": linkToThumbnail } 
148 /> 
149 </#if> 
150 --> 
151 </#if> 
152 
153 <#assign 
154 meta = meta + { "orderInfo": "true" } 
155 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!"" 
156 /> 
157 
158 
159 
160 <#if hasContent('erscheinungsdatum', languageId, json)> 
161 <#assign 
162 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
163 /> 
164 <#if erscheinungsdatum?has_content > 
165 <#assign 
166 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId ) 
167 meta = meta + { "date": erscheinungsdatumFormatted } 
168 /> 
169 </#if> 
170 </#if> 
171 
172 <#if verbundJournalArticle?has_content> 
173 <#assign 
174 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey) 
175 verbundJson = FrontendService.json.parseAsJson(verbundJsonString) 
176 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first") 
177 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first") 
178 /> 
179 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" /> 
180 <#assign meta = meta + { "laufendenummer": laufendenummer } > 
181 
182 <#if coverImg?has_content && coverImg.url?has_content > 
183 <#assign meta = meta + { "coverImg": coverImg.url } > 
184 </#if> 
185 </#if> 
186 
187 
188 <#if meta?has_content> 
189 <#assign data = data + {"meta": meta } > 
190 </#if> 
191 
192 </#if> 
193 <#-- PUBLIKATIONEN DETAIL END --> 
194 
195 
196 <#-- VERANSTALTUNGEN DETAIL --> 
197 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
198 <#assign 
199 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!"" 
200 links = [] 
201 /> 
202 <#if availablelanguages?has_content && friendlyUrl?has_content> 
203 <#if (availablelanguages?size > 1) > 
204 <#list availablelanguages as language> 
205 <#assign 
206 defaultLanguage = "de_DE" 
207 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage) 
208 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale 
209 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId) 
210 
211 link = { 
212 "key": language!defaultLanguage, 
213 "value": linkLocale.getDisplayLanguage(languageId), 
214 "url": "/c/portal/update_language?p_l_id=" + 
215 layout.plid + "&redirect=" + langFriendlyUrl + 
216 "&languageId=" + language 
217
218 /> 
219 <#if language == languageId> 
220 <#assign link = link + { "selected": "true" } > 
221 </#if> 
222 <#assign links = links + [link]> 
223 </#list> 
224 <#assign 
225 data = data + { 
226 "languageSelect": { 
227 "id": "languageSelectRedirect", 
228 "name": "languageselectRedirect", 
229 "entries": links, 
230 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar") 
231
232
233 /> 
234 </#if> 
235 </#if> 
236 </#if> 
237 
238 <#if hasContent('erscheinungsdatum', languageId, json)> 
239 <#assign 
240 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
241 meta = meta + { "start": startdate?date.iso, "end": "" } 
242 /> 
243 </#if> 
244 
245 <#if hasContent('startdatum', languageId, json)> 
246 <#assign 
247 startdate = getValueForLanguage('startdatum', languageId, json, "first") 
248 meta = meta + { "start": startdate?date.iso, "end": "" } 
249 /> 
250 </#if> 
251 
252 <#if hasValue('einfuehrungText', locale, json)> 
253 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } > 
254 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")> 
255 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } > 
256 </#if> 
257 
258 <#if hasContent('endedatum', languageId, json)> 
259 <#assign 
260 enddate = getValueForLanguage('endedatum', languageId, json, "first") 
261 meta = meta + { "end": enddate?date.iso } 
262 /> 
263 </#if> 
264 
265 <#if hasContent('startzeit', languageId, json)> 
266 <#assign 
267 startzeit = getValueForLanguage('startzeit', languageId, json, "first") 
268 /> 
269 <#if startzeit?has_content > 
270 <#assign meta = meta + { "startzeit": startzeit } /> 
271 </#if> 
272 </#if> 
273 
274 <#if hasContent('endezeit', languageId, json)> 
275 <#assign 
276 endezeit = getValueForLanguage('endezeit', languageId, json, "first") 
277 meta = meta + { "endezeit": endezeit } 
278 /> 
279 </#if> 
280 
281 <#if hasContent('ortWCSKASDEORT', languageId, json)> 
282 <#assign 
283 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first")) 
284 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number 
285 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!"" 
286 /> 
287 <#if ortWCSKASDEORTWebContent?has_content > 
288 <#assign 
289 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!"" 
290 /> 
291 <#if ortWCSKASDEORTTitle?has_content > 
292 <#assign 
293 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle } 
294 /> 
295 </#if> 
296 </#if> 
297 </#if> 
298 
299 
300 <#if hasContent('veranstaltungsnummer', languageId, json)> 
301 <#assign 
302 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first") 
303 meta = meta + { "verauuid": verauuid } 
304 /> 
305 </#if> 
306 
307 
308 <#if (data.meta)?has_content > 
309 <#assign meta = data.meta /> 
310 </#if> 
311 
312 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)> 
313 <#assign 
314 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first") 
315 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution") 
316 /> 
317 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} > 
318 
319 
320 <#if mediaData.meta?? && mediaData.meta.quelle??> 
321 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } /> 
322 </#if> 
323 </#if> 
324 
325 
326 <#if meta?has_content> 
327 <#assign data = data + {"meta": meta } > 
328 </#if> 
329 
330 <#-- END fill meta data --> 
331 
332 <#if hasContentForSequence('autorenWCSKASDEPERSON', languageId, json)> 
333 <#assign 
334 journalArticles = getValueForLanguageAnsprechpartner('autorenWCSKASDEPERSON', languageId, json) 
335 authors = [] 
336 /> 
337 <#list journalArticles as articleString> 
338 <#assign article = FrontendService.json.parseAsJson(articleString) /> 
339 <#if article?has_content && article?is_hash && article.classPK??> 
340 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" /> 
341 <#if articleDereferenced?has_content > 
342 <#assign 
343 author = "" 
344 articlePrimaryKey = articleDereferenced.classPK?number 
345 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey) 
346 articleJson = FrontendService.json.parseAsJson(articleJsonString) 
347 /> 
348 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" /> 
349 <#if hasValue('anredetitel', languageId, articleJson)> 
350 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " "> 
351 </#if> 
352 <#if hasValue('vorname', languageId, articleJson)> 
353 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " "> 
354 </#if> 
355 <#if hasValue('nachname', languageId, articleJson)> 
356 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " "> 
357 </#if> 
358 
359 <#attempt> 
360 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" > 
361 <#recover> 
362 <#assign href = "#" > 
363 </#attempt> 
364 <#if href?has_content && href != "#" && href != "/_404"> 
365 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'> 
366 </#if> 
367 
368 <#assign authors = authors + [author?trim]> 
369 </#if> 
370 </#if> 
371 </#list> 
372 <#if authors?has_content> 
373 <#assign data = data + { "author": authors?join(", ") } > 
374 </#if> 
375 </#if> 
376 
377 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") > 
378 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! > 
379 <#if categories?has_content && categories[0]?has_content > 
380 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
381 </#if> 
382 
383 <#if hasContent('ausgebucht', languageId, json)> 
384 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }> 
385 </#if> 
386 
387 <#if hasContent('storniert', languageId, json)> 
388 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }> 
389 </#if> 
390 
391 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") > 
392 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! > 
393 <#if categories?has_content && categories[0]?has_content > 
394 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
395 </#if> 
396 <#else> 
397 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! > 
398 <#if categories?has_content && categories[0]?has_content > 
399 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
400 </#if> 
401 </#if> 
402 
403 
404 <#assign 
405 languages = [] 
406 /> 
407 
408 <#attempt> 
409 <#if json["document_pdfDMTBASICDOCUMENT"]?? > 
410 <#if availablelanguages?has_content> 
411 <#list availablelanguages as pdf_language> 
412 <#assign 
413 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first") 
414 docRef = FrontendService.json.parseAsJson(docRefJson) 
415 /> 
416 <#if docRef?is_hash && pdf_language != languageId > 
417 <#assign 
418 lang = FrontendService.language.getLocaleByKey(pdf_language)!"" 
419 docGroupId = docRef["groupId"]?number 
420 docUuid = docRef["uuid"] 
421 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale ) 
422 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject ) 
423 /> 
424 <#if lang?has_content> 
425 <#assign 
426 languages = languages + [ 
427
428 "key": pdf_language, 
429 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(), 
430 "url": dMTLink 
431 }] 
432 /> 
433 </#if> 
434 </#if> 
435 </#list> 
436 </#if> 
437 </#if> 
438 <#recover> 
439 </#attempt> 
440 
441 <#if (languages?size > 0)> 
442 <#attempt> 
443 <#assign 
444 data = data + { "languageSelect": { 
445 "id": "languageSelect", 
446 "name": "languageselect", 
447 "entries": languages, 
448 "documents": "", 
449 "button": "true" 
450 }} 
451 /> 
452 <#recover> 
453 </#attempt> 
454 </#if> 
455 
456 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" /> 
457 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)} 
458 
459 <#if data.meta?has_content> 
460 <#if data.meta.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()> 
461 <div>  
462 <div id="publicationVerbundPagination"> 
463 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg /> 
464 </div> 
465 </div> 
466 </#if> 
467 </#if> 
468 
469<#elseif (editmode?? && editmode)> 
470 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl /> 
471</#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<#-- used @ Veranstaltungen-Detailseite, Main Content --> 
2<#-- used @ Themen-Detailseite, Main Content --> 
3<#-- used @ Publikationen-Detailseite, Main Content --> 
4<#-- used @ Personen-Detailseite, Main Content --> 
5 
6<#include "${fullTemplatesPath}/functions/liferayServicesUtil.ftl" /> 
7<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" /> 
8<#include "${fullTemplatesPath}/macros/debugging.ftl" /> 
9 
10<#include "${fullTemplatesPath}/macros/page-modules/PMPageContent.ftl" /> 
11 
12<#-- additional intro+special content for personen-detailpage --> 
13<#include "${fullTemplatesPath}/macros/page-modules/PMShare.ftl" /> 
14<#include "${fullTemplatesPath}/macros/page-modules/PMIntro.ftl" /> 
15<#include "${fullTemplatesPath}/macros/page-modules/PMIntroBanner.ftl" /> 
16<#include "${fullTemplatesPath}/macros/page-modules/PMPersonContent.ftl" /> 
17<#include "${fullTemplatesPath}/macros/page-modules/PMPersonDocuments.ftl" /> 
18<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadata.ftl" /> 
19<#include "${fullTemplatesPath}/macros/atomic-modules/AMAddress.ftl" /> 
20<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" /> 
21<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadataContact.ftl" /> 
22<#include "${fullTemplatesPath}/functions/content-functions/CFRelatedMediaObject.ftl" /> 
23<#include "${fullTemplatesPath}/functions/content-functions/CFRelatedVeranstaltung.ftl" />  
24 
25<#assign 
26 
27 DLFileEntryLocalService = getDLFileEntryLocalService() 
28 JournalArticleService = getJournalArticleService() 
29 layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") 
30 
31 themeDisplay = getThemeDisplay() 
32 
33 locale = themeDisplay.getLocale() 
34 default_locale = FrontendService.language.defaultLocale() 
35 
36 currentUrl = themeDisplay.getURLCurrent() 
37 editmode = FrontendService.user.isPrivilegedUser(themeDisplay) 
38 
39 layout = themeDisplay.getLayout() 
40 layoutUrl = layout.getFriendlyURL(locale) 
41 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id") 
42/> 
43 
44<#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
45 <#assign 
46 classModifier = "c-page-main--veranstaltungedetail" 
47 portletId = "ADT_KASDE_VERANSTALTUNGEN_CONTENT" 
48 /> 
49<#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
50 <#assign 
51 classModifier = "c-page-main--publikationendetail" 
52 portletId = "ADT_KASDE_PUBLIKATIONEN_CONTENT" 
53 /> 
54<#elseif layouttpl?contains("LAYOUT_KASDE_THEMEN_DETAIL")> 
55 <#assign 
56 classModifier = "c-page-main--themadetail" 
57 portletId = "ADT_KASDE_THEMA_CONTENT" 
58 /> 
59<#elseif layouttpl?contains("LAYOUT_KASDE_PERSONEN_DETAIL")> 
60 <#assign 
61 classModifier = "c-page-main--themadetail" 
62 portletId = "ADT_KASDE_PERSONEN_CONTENT" 
63 /> 
64<#else> 
65 <#assign 
66 classModifier = "c-page-main" 
67 portletId = "ADT_KASDE_CONTENT" 
68 /> 
69</#if> 
70 
71<#assign content = [] > 
72 
73<#-- check if on detail page --> 
74<#-- Publikationen, Veranstaltungen --> 
75<#-- check if it is a hidden detail page - get article from url --> 
76<#if currentUrl?contains("/-/content") > 
77 
78 <#attempt> 
79 <#assign journalArticle = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)!"" > 
80 <#recover> 
81 <#if (editmode?? && editmode)> 
82 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_CONTENT" layouttpl currentUrl /> 
83 </#if> 
84 </#attempt> 
85 
86 <#if journalArticle?has_content> 
87 
88 <#if journalArticle.resourcePrimKey??> 
89 <#assign primaryKey = journalArticle.resourcePrimKey?number > 
90 <#elseif journalArticle.classPK??> 
91 <#assign primaryKey = journalArticle.classPK?number > 
92 </#if> 
93 
94 <#assign 
95 jsonString = FrontendService.article.getWebcontent(primaryKey) 
96 json = FrontendService.json.parseAsJson(jsonString) 
97 
98 data = {} 
99 registerLink = "" 
100  
101 /> 
102 <@debugJsonString jsonString "ADT_KASDE_CONTENT" /> 
103 
104 <#-- Personen Detailpage Content renders also the intro --> 
105 <#if layouttpl?contains("LAYOUT_KASDE_PERSONEN_DETAIL")> 
106 <#-- get general data for PERSON--> 
107 <#assign 
108 data_person = getRelatedPerson(json, locale, primaryKey, FrontendService, themeDisplay) 
109 data_intro = {} 
110 data_abteilung = [] 
111 /> 
112 
113 <#-- get Projekte (Auslandsbüros) for PERSON --> 
114 <#assign data_auslandsbuero = getRelatedProjekte(locale, primaryKey, FrontendService, themeDisplay) /> 
115 <#if data_auslandsbuero?has_content> 
116 <#assign data_person = data_person + {"auslandsbuero": data_auslandsbuero} /> 
117 </#if> 
118 
119 <#-- get Abteilungen for PERSON --> 
120 <#assign abbteilungen = FrontendService.category.getCategoriesToArticle(primaryKey, "ABTEILUNG") /> 
121 <#if abbteilungen?? > 
122 <#list abbteilungen as abteilung > 
123 <#assign 
124 data_abteilung = data_abteilung + [{ 
125 "title": abteilung.getTitle(locale), 
126 "href": FrontendService.category.getAnzeigeseiteToCategory(abteilung, locale, themeDisplay.getScopeGroupId())!"/_404" 
127 }] 
128 /> 
129 </#list> 
130 </#if> 
131 <#if data_abteilung?has_content> 
132 <#assign data_person = data_person + {"abteilung": data_abteilung} /> 
133 </#if> 
134 
135 <#-- assign Data for Intro --> 
136 <#if data_person.name?? && data_person.lastname?? > 
137 <#assign name = data_person.name + " " + data_person.lastname > 
138 
139 <#if data_person.anredetitel??> 
140 <#assign name = data_person.anredetitel + " " + name /> 
141 </#if> 
142 <#assign data_intro = data_intro + { "title" : name } /> 
143 </#if> 
144 
145 <#if data_person.subheadline??> 
146 <#assign data_intro = data_intro + {"subheadline" : data_person.subheadline} /> 
147 </#if> 
148 
149 <#-- render title + function --> 
150 <div class="o-page-module o-page-module--full"> 
151 <@PMIntro "ADT_KASDE_PERSON_INTRO" data_intro AMMetadata AMDatetime/> 
152 <#-- render blue box --> 
153 <@PMIntroBanner "ADT_KASDE_PERSON_INTRO_BANNER" data_person "" /> 
154 <#-- render contact data, auslandsbüros, abteilungen --> 
155 <@PMPersonContent "ADT_KASDE_PERSON_INFO" data_person "" AMMetadataContact AMAddress /> 
156 <#-- render persons document --> 
157 <#if data_person.documents??> 
158 <@PMPersonDocuments "ADT_KASDE_PERSON_DOCUMENT" data_person.documents "" /> 
159 </#if> 
160 </div> 
161 
162 </#if> 
163 
164 <#-- Publikations-Detail only --> 
165 
166 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
167 <#assign data = data + getRelatedPublication(json, locale, primaryKey, themeDisplay, FrontendService, ['primaryKey', 'title', 'href', 'subtitle', 'description', 'author', 'erscheinungsdatum', 'category', 'image', 'imagetype', 'meta', 'publicationSeriesCategory'])> 
168 </#if> 
169 
170 <#-- Veranstaltungs-Detail only --> 
171 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
172 
173 <#assign data = data + getRelatedVeranstaltung(json, locale, primaryKey, FrontendService)> 
174 
175 <#if isVLCColorScheme()> 
176 <#-- Headline "Im Detail" for Veranstaltungs-Detail für VLC --> 
177 <#assign data = data + { "headline" : languageUtil.get(locale, "details_vlc") }> 
178 <#else>  
179 <#-- Headline "Im Detail" for Veranstaltungs-Detail --> 
180 <#assign data = data + { "headline" : languageUtil.get(locale, "details") }> 
181 </#if> 
182 
183 <#-- ausgebucht --> 
184 <#if hasContent('ausgebucht', locale, json)> 
185 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', locale, json, "first") }> 
186 </#if> 
187 
188 <#-- storniert --> 
189 <#if hasContent('storniert', locale, json)> 
190 <#assign data = data + { "storniert" : getValueForLanguage('storniert', locale, json, "first") }> 
191 </#if> 
192 <#-- Programm Data --> 
193 <#assign program = getProgramm(json) > 
194 <#if program?has_content> 
195 <#assign data = data + { "program" : program } > 
196 </#if> 
197 
198 <#assign registerLink = FrontendService.event.getEventSignupLink(themeDisplay)!"" /> 
199 </#if> 
200 
201 <#-- Beschreibung --> 
202 <#if hasContent('beschreibung', locale, json)> 
203 <#assign data = data + { "description" : getValueForLanguage('beschreibung', locale, json, "first") }> 
204 </#if> 
205 
206 <#-- Contenttext --> 
207 <#if (json["contenttext"][locale])?? > 
208 <#assign data = data + { "text": json["contenttext"][locale] } > 
209 <#elseif (json["contenttext"][default_locale])??> 
210 <#assign data = data + { "text": json["contenttext"][default_locale] } > 
211 </#if> 
212 
213 <#if (json["contentbildunterschrift"][locale])?? > 
214 <#assign data = data + { "caption": json["contentbildunterschrift"][locale] } > 
215 <#elseif (json["contentbildunterschrift"][default_locale])??> 
216 <#assign data = data + { "caption": json["contentbildunterschrift"][default_locale] } > 
217 </#if> 
218 
219 <#-- Bilderstrecke --> 
220 <#assign series = getContentBilderstrecke(json) > 
221 <#if series?has_content> 
222 <#assign data = data + { "series" : series } /> 
223 </#if> 
224 
225 <#-- Media --> 
226 <#if (json["contentmediumDMTKASDEMEDIUM"][locale])?? > 
227 <#assign data = data + { "media": json["contentmediumDMTKASDEMEDIUM"][locale] } > 
228 <#elseif (json["contentmediumDMTKASDEMEDIUM"][default_locale])??> 
229 <#assign data = data + { "media": json["contentmediumDMTKASDEMEDIUM"][default_locale] } > 
230 </#if> 
231 
232 <#-- Programm Download --> 
233 <#if hasContent('documentDMTBASICDOCUMENT', locale, json)> 
234 <#assign 
235 documentDMTBASICDOCUMENTString = getValueForLanguage('documentDMTBASICDOCUMENT', locale, json, "first") 
236 documentDMTBASICDOCUMENT = FrontendService.json.parseAsJson(documentDMTBASICDOCUMENTString) 
237 dmtJson_doc = FrontendService.media.getDMTJsonObject( documentDMTBASICDOCUMENT.groupId?number, documentDMTBASICDOCUMENT.uuid, locale )!"" 
238 /> 
239 
240 <#if dmtJson_doc?has_content> 
241 <#assign url = FrontendService.media.getLinkToDMT(dmtJson_doc)/> 
242 <#if url?has_content> 
243 <#assign 
244 data = data + { 
245 "documentDMTBASICDOCUMENT": { 
246 "title": documentDMTBASICDOCUMENT.title, 
247 "url": url 
248
249
250 /> 
251 </#if> 
252 </#if> 
253 </#if> 
254 
255 <#-- Biogramm Special Data lebenslauf, veroeffentlichungen, literatur --> 
256 <#if hasContent('lebenslauf', locale, json)> 
257 <#assign data = data + { "lebenslauf" : getValueForLanguage('lebenslauf', locale, json, "first") }> 
258 </#if> 
259 
260 <#if hasContent('veroeffentlichungen', locale, json)> 
261 <#assign data = data + { "veroeffentlichungen" : getValueForLanguage('veroeffentlichungen', locale, json, "first") }> 
262 </#if> 
263 
264 <#if hasContent('literatur', locale, json)> 
265 <#assign data = data + { "literatur" : getValueForLanguage('literatur', locale, json, "first") }> 
266 </#if> 
267 
268 <#-- iFrame Content --> 
269 <#if (json["contentiframeueberschrift"][locale])?? > 
270 <#assign data = data + { "iframeueberschrift": json["contentiframeueberschrift"][locale] } > 
271 <#elseif (json["contentiframeueberschrift"][default_locale])??> 
272 <#assign data = data + { "iframeueberschrift": json["contentiframeueberschrift"][default_locale] } > 
273 </#if> 
274 
275 <#if (json["einfuehrungText"][locale])?? > 
276 <#assign data = data + { "introductoryText": json["einfuehrungText"][locale] } > 
277 <#elseif (json["einfuehrungText"][default_locale])?? > 
278 <#assign data = data + { "introductoryText": json["einfuehrungText"][default_locale] } > 
279 <#elseif (json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][locale])?? > 
280 <#assign data = data + { "introductoryText": json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][locale] } > 
281 <#elseif (json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][default_locale])?? > 
282 <#assign data = data + { "introductoryText": json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][default_locale] } > 
283 </#if> 
284 
285 <#assign themenId = FrontendService.verbund.getThemenverbundByThema(themeDisplay, primaryKey) > 
286 
287 <#--prevArticle and nextArticle thema links--> 
288 <#if isACColorScheme()> 
289 <#if themenId?? && themenId?has_content > 
290 <#assign data = data + { "nextArticle" : FrontendService.verbund.getThemenverbundNextLink(primaryKey, themenId, layoutUrl, locale, 'modulesKasThema', 'labelmodul', 'modulThemaKasTHEMENKASDESTRUCTURE') } > 
291 <#assign data = data + { "prevArticle" : FrontendService.verbund.getThemenverbundPreviousLink(primaryKey, themenId, layoutUrl, locale, 'modulesKasThema', 'labelmodul', 'modulThemaKasTHEMENKASDESTRUCTURE') } > 
292 </#if> 
293 </#if> 
294 
295 <#if (json["contentiframeeinbindung"][locale])?? > 
296 <#assign data = data + { "iframeeinbindung": json["contentiframeeinbindung"][locale] } > 
297 <#elseif (json["contentiframeeinbindung"][default_locale])??> 
298 <#assign data = data + { "iframeeinbindung": json["contentiframeeinbindung"][default_locale] } > 
299 </#if> 
300 
301 <#if (json["contentiframeuntertitel"][locale])?? > 
302 <#assign data = data + { "iframeuntertitel": json["contentiframeuntertitel"][locale] } > 
303 <#elseif (json["contentiframeuntertitel"][default_locale])??> 
304 <#assign data = data + { "iframeuntertitel": json["contentiframeuntertitel"][default_locale] } > 
305 </#if> 
306 
307 <#if (json["contentiframequelle"][locale])?? > 
308 <#assign data = data + { "iframequelle": json["contentiframequelle"][locale] } > 
309 <#elseif (json["contentiframequelle"][default_locale])??> 
310 <#assign data = data + { "iframequelle": json["contentiframequelle"][default_locale] } > 
311 </#if> 
312 
313 <#if layouttpl?contains("LAYOUT_KASDE_THEMEN_DETAIL") || layouttpl?contains("LAYOUT_KASDE_STATIC") || layouttpl?contains("LAYOUT_KASDE_STATIC_HIDDEN") > 
314 <#-- DropDownMenue Data --> 
315 <#assign dropdownmenue = getDropDownMenue(json) > 
316 <#if dropdownmenue?has_content> 
317 <#assign data = data + { "dropdownmenue" : dropdownmenue } > 
318 <#if (json["dropdownheader"][locale])?? > 
319 <#assign data = data + { "dropdownheader" : getValueForLanguage('dropdownheader', locale, json, "first") } > 
320 <#elseif (json["dropdownheader"][default_locale])??> 
321 <#assign data = data + { "dropdownheader": getValueForLanguage('dropdownheader', default_locale, json, "first") } > 
322 </#if>  
323 </#if> 
324 </#if> 
325 
326 <#if data?has_content> 
327 <#assign content = content + [data]> 
328 </#if> 
329 
330 </#if> 
331 
332<#else> 
333 <#list entries as entry> 
334  
335 <#assign className = entry.getClassName()/> 
336 <#if className = 'com.liferay.journal.model.JournalArticle'> 
337  
338 <#assign 
339 primaryKey = entry.classPK?number 
340 jsonString = FrontendService.article.getWebcontent(primaryKey) 
341 json = FrontendService.json.parseAsJson(jsonString) 
342 /> 
343 <@debugJsonString jsonString "ADT_KASDE_CONTENT" /> 
344 
345 <#assign data = {} > 
346 
347 <#if (json["contenttext"][locale])?? > 
348 <#assign data = data + { "text": json["contenttext"][locale] } > 
349 <#elseif (json["contenttext"][default_locale])??> 
350 <#assign data = data + { "text": json["contenttext"][default_locale] } > 
351 </#if> 
352 
353 <#-- Bilderstrecke --> 
354 <#assign series = getContentBilderstrecke(json) > 
355 <#if series?has_content> 
356 <#assign data = data + { "series" : series } /> 
357 </#if> 
358 
359 <#-- Media --> 
360 <#if (json["contentmediumDMTKASDEMEDIUM"][locale])?? > 
361 <#assign data = data + { "media": json["contentmediumDMTKASDEMEDIUM"][locale] } > 
362 <#elseif (json["contentmediumDMTKASDEMEDIUM"][default_locale])??> 
363 <#assign data = data + { "media": json["contentmediumDMTKASDEMEDIUM"][default_locale] } > 
364 </#if> 
365 
366 <#if (json["contentbildunterschrift"][locale])?? > 
367 <#assign data = data + { "caption": json["contentbildunterschrift"][locale] } > 
368 <#elseif (json["contentbildunterschrift"][default_locale])??> 
369 <#assign data = data + { "caption": json["contentbildunterschrift"][default_locale] } > 
370 </#if> 
371 
372 <#-- iFrame Content --> 
373 <#if (json["contentiframeueberschrift"][locale])?? > 
374 <#assign data = data + { "iframeueberschrift": json["contentiframeueberschrift"][locale] } > 
375 <#elseif (json["contentiframeueberschrift"][default_locale])??> 
376 <#assign data = data + { "iframeueberschrift": json["contentiframeueberschrift"][default_locale] } > 
377 </#if> 
378 
379 <#if (json["einfuehrungText"][locale])?? > 
380 <#assign data = data + { "introductoryText": json["einfuehrungText"][locale] } > 
381 <#elseif (json["einfuehrungText"][default_locale])?? > 
382 <#assign data = data + { "introductoryText": json["einfuehrungText"][default_locale] } > 
383 <#elseif (json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][locale])?? > 
384 <#assign data = data + { "introductoryText": json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][locale] } > 
385 <#elseif (json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][default_locale])?? > 
386 <#assign data = data + { "introductoryText": json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][default_locale] } > 
387 </#if> 
388 
389 <#assign themenId = FrontendService.verbund.getThemenverbundByThema(themeDisplay,primaryKey) > 
390 
391 <#--prevArticle and nextArticle thema links--> 
392 <#if isACColorScheme()> 
393 <#if themenId?? && themenId?has_content > 
394 <#assign data = data + { "nextArticle" : FrontendService.verbund.getThemenverbundNextLink(primaryKey, themenId, layoutUrl, locale, 'modulesKasThema', 'labelmodul', 'modulThemaKasTHEMENKASDESTRUCTURE') } > 
395 <#assign data = data + { "prevArticle" : FrontendService.verbund.getThemenverbundPreviousLink(primaryKey, themenId, layoutUrl, locale, 'modulesKasThema', 'labelmodul', 'modulThemaKasTHEMENKASDESTRUCTURE') } > 
396 </#if> 
397 </#if> 
398 
399 <#if (json["contentiframeeinbindung"][locale])?? > 
400 <#assign data = data + { "iframeeinbindung": json["contentiframeeinbindung"][locale] } > 
401 <#elseif (json["contentiframeeinbindung"][default_locale])??> 
402 <#assign data = data + { "iframeeinbindung": json["contentiframeeinbindung"][default_locale] } > 
403 </#if> 
404 
405 <#if (json["contentiframeuntertitel"][locale])?? > 
406 <#assign data = data + { "iframeuntertitel": json["contentiframeuntertitel"][locale] } > 
407 <#elseif (json["contentiframeuntertitel"][default_locale])??> 
408 <#assign data = data + { "iframeuntertitel": json["contentiframeuntertitel"][default_locale] } > 
409 </#if> 
410 
411 <#if (json["contentiframequelle"][locale])?? > 
412 <#assign data = data + { "iframequelle": json["contentiframequelle"][locale] } > 
413 <#elseif (json["contentiframequelle"][default_locale])??> 
414 <#assign data = data + { "iframequelle": json["contentiframequelle"][default_locale] } > 
415 </#if> 
416 
417 <#if layouttpl?contains("LAYOUT_KASDE_THEMEN_DETAIL") || layouttpl?contains("LAYOUT_KASDE_STATIC") || layouttpl?contains("LAYOUT_KASDE_STATIC_HIDDEN") || layouttpl?contains("LAYOUT_KASDE_MICROSITE_HOME") > 
418 <#-- DropDownMenue Data --> 
419 <#assign dropdownmenue = getDropDownMenue(json) > 
420 <#if dropdownmenue?has_content> 
421 <#assign data = data + { "dropdownmenue" : dropdownmenue } > 
422 <#if (json["dropdownheader"][locale])?? > 
423 <#assign data = data + { "dropdownheader" : getValueForLanguage('dropdownheader', locale, json, "first") } > 
424 <#elseif (json["dropdownheader"][default_locale])??> 
425 <#assign data = data + { "dropdownheader": getValueForLanguage('dropdownheader', default_locale, json, "first") } > 
426 </#if>  
427 </#if> 
428 </#if> 
429 
430 <#if data?has_content> 
431 <#assign content = content + [data]> 
432 </#if> 
433  
434 </#if> 
435 
436 </#list> 
437 
438</#if> 
439 
440<#if content?has_content > 
441 <#if !layouttpl?contains("LAYOUT_KASDE_PERSONEN_DETAIL")> 
442 <@PMShare content registerLink /> 
443 <@PMPageContent portletId content classModifier /> 
444 </#if> 
445<#elseif (editmode?? && editmode)> 
446 <@errorMessage languageUtil.get(locale, "keine.inhalte.vorhanden") "ADT_KASDE_CONTENT" layouttpl currentUrl /> 
447</#if> 

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 hasContentForSequence('partnerWCSKASDEPARTNER', locale, json)> 
53 <#assign 
54 partner = [] 
55 partners = getValueForLanguageAnsprechpartner('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 hasContentForSequence('partnerWCSKASDEPARTNER', locale, json)> 
137 <#assign 
138 partner = [] 
139 partners = getValueForLanguageAnsprechpartner('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>