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>
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>
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>
Topics
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>
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>