Schule der Zukunft: Für die Zukunft lernen
Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing: ==> data.meta [in template "20082418#20082464#28263583" at line 459, column 10] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #if data.meta.laufendenummer?has_cont... [in template "20082418#20082464#28263583" at line 459, column 5] ----
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
98 title = entry.getTitle(languageId)
99 data = {
100 "title": title
101 }
102 />
103 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" />
104
105 <#if hasContent('untertitel', languageId, json)>
106 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } >
107 </#if>
108
109 <#if hasContent('beschreibung', languageId, json)>
110 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } >
111 </#if>
112
113 <#-- fill meta data -->
114 <#assign meta = {} />
115
116 <#-- PUBLIKATIONEN DETAIL -->
117 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")>
118
119 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)>
120 <#assign
121 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first")
122 />
123
124 <#if coverBildString?has_content>
125 <#assign
126 coverBild = FrontendService.json.parseAsJson(coverBildString)
127 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale )
128 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid )
129 data = data + { "media": linkToDMT, "meta" : dMTJsonObject }
130 />
131 <#if dMTJsonObject.altText?? >
132 <#assign data = data + {"alt" : dMTJsonObject.altText} />
133 </#if>
134 <#if dMTJsonObject.quelle??>
135 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } />
136 </#if>
137 </#if>
138 <#-- uncomment to display pdf cover as Intro Image
139 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)>
140 <#assign
141 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first")
142 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/>
143 <#if fileEntry?has_content>
144 <#assign
145 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay)
146 data = data + { "media": linkToThumbnail }
147 />
148 </#if>
149 -->
150 </#if>
151
152 <#assign
153 meta = meta + { "orderInfo": "true" }
154 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!""
155 />
156
157
158
159 <#if hasContent('erscheinungsdatum', languageId, json)>
160 <#assign
161 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
162 />
163 <#if erscheinungsdatum?has_content >
164 <#assign
165 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId )
166 meta = meta + { "date": erscheinungsdatumFormatted }
167 />
168 </#if>
169 </#if>
170
171 <#if verbundJournalArticle?has_content>
172 <#assign
173 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey)
174 verbundJson = FrontendService.json.parseAsJson(verbundJsonString)
175 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first")
176 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first")
177 />
178 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" />
179 <#assign meta = meta + { "laufendenummer": laufendenummer } >
180
181 <#if coverImg?has_content && coverImg.url?has_content >
182 <#assign meta = meta + { "coverImg": coverImg.url } >
183 </#if>
184 </#if>
185
186
187 <#if meta?has_content>
188 <#assign data = data + {"meta": meta } >
189 </#if>
190
191 </#if>
192 <#-- PUBLIKATIONEN DETAIL END -->
193
194
195 <#-- VERANSTALTUNGEN DETAIL -->
196 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")>
197 <#assign
198 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!""
199 languages = entry.getAvailableLanguageIds()
200 links = []
201 />
202 <#if languages?has_content && friendlyUrl?has_content>
203 <#if (languages?size > 1) >
204 <#list languages 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 <#list json["document_pdfDMTBASICDOCUMENT"]?keys as pdf_language>
411 <#if pdf_language?has_content >
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 </#if>
436 </#list>
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.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()>
460 <div>
461 <div id="publicationVerbundPagination">
462 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg />
463 </div>
464 </div>
465 </#if>
466
467<#elseif (editmode?? && editmode)>
468 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl />
469</#if>
Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing: ==> item.media [in template "kas-de-theme_SERVLET_CONTEXT_/templates/macros/atomic-modules/AMContentAC.ftl" at line 102, column 26] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #if item.media[i]?has_content [in template "kas-de-theme_SERVLET_CONTEXT_/templates/macros/atomic-modules/AMContentAC.ftl" in macro "repeatableIFrameContent" at line 102, column 21] - Reached through: @repeatableIFrameContent item [in template "kas-de-theme_SERVLET_CONTEXT_/templates/macros/atomic-modules/AMContentAC.ftl" in macro "AMContentAC" at line 33, column 17] - Reached through: @AMContentAC content?first, showSlide... [in template "kas-de-theme_SERVLET_CONTEXT_/templates/macros/page-modules/PMPageContent.ftl" in macro "PMPageContent" at line 492, column 9] - Reached through: @PMPageContent portletId, content, cl... [in template "20082418#20082464#28263424" at line 448, 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
24<#assign
25
26 DLFileEntryLocalService = getDLFileEntryLocalService()
27 JournalArticleService = getJournalArticleService()
28 layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")
29
30 themeDisplay = getThemeDisplay()
31
32 locale = themeDisplay.getLocale()
33 default_locale = FrontendService.language.defaultLocale()
34
35 currentUrl = themeDisplay.getURLCurrent()
36 editmode = FrontendService.user.isPrivilegedUser(themeDisplay)
37
38 layout = themeDisplay.getLayout()
39 layoutUrl = layout.getFriendlyURL(locale)
40 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id")
41/>
42
43<#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")>
44 <#assign
45 classModifier = "c-page-main--veranstaltungedetail"
46 portletId = "ADT_KASDE_VERANSTALTUNGEN_CONTENT"
47 />
48<#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")>
49 <#assign
50 classModifier = "c-page-main--publikationendetail"
51 portletId = "ADT_KASDE_PUBLIKATIONEN_CONTENT"
52 />
53<#elseif layouttpl?contains("LAYOUT_KASDE_THEMEN_DETAIL")>
54 <#assign
55 classModifier = "c-page-main--themadetail"
56 portletId = "ADT_KASDE_THEMA_CONTENT"
57 />
58<#elseif layouttpl?contains("LAYOUT_KASDE_PERSONEN_DETAIL")>
59 <#assign
60 classModifier = "c-page-main--themadetail"
61 portletId = "ADT_KASDE_PERSONEN_CONTENT"
62 />
63<#else>
64 <#assign
65 classModifier = "c-page-main"
66 portletId = "ADT_KASDE_CONTENT"
67 />
68</#if>
69
70<#assign content = [] >
71
72<#-- check if on detail page -->
73<#-- Publikationen, Veranstaltungen -->
74<#-- check if it is a hidden detail page - get article from url -->
75<#if currentUrl?contains("/-/content") >
76
77 <#attempt>
78 <#assign journalArticle = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)!"" >
79 <#recover>
80 <#if (editmode?? && editmode)>
81 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_CONTENT" layouttpl currentUrl />
82 </#if>
83 </#attempt>
84
85 <#if journalArticle?has_content>
86
87 <#if journalArticle.resourcePrimKey??>
88 <#assign primaryKey = journalArticle.resourcePrimKey?number >
89 <#elseif journalArticle.classPK??>
90 <#assign primaryKey = journalArticle.classPK?number >
91 </#if>
92
93 <#assign
94 jsonString = FrontendService.article.getWebcontent(primaryKey)
95 json = FrontendService.json.parseAsJson(jsonString)
96
97 data = {}
98 registerLink = ""
99
100 />
101 <@debugJsonString jsonString "ADT_KASDE_CONTENT" />
102
103 <#-- Personen Detailpage Content renders also the intro -->
104 <#if layouttpl?contains("LAYOUT_KASDE_PERSONEN_DETAIL")>
105 <#-- get general data for PERSON-->
106 <#assign
107 data_person = getRelatedPerson(json, locale, primaryKey, FrontendService, themeDisplay)
108 data_intro = {}
109 data_abteilung = []
110 />
111
112 <#-- get Projekte (Auslandsbüros) for PERSON -->
113 <#assign data_auslandsbuero = getRelatedProjekte(locale, primaryKey, FrontendService, themeDisplay) />
114 <#if data_auslandsbuero?has_content>
115 <#assign data_person = data_person + {"auslandsbuero": data_auslandsbuero} />
116 </#if>
117
118 <#-- get Abteilungen for PERSON -->
119 <#assign abbteilungen = FrontendService.category.getCategoriesToArticle(primaryKey, "ABTEILUNG") />
120 <#if abbteilungen?? >
121 <#list abbteilungen as abteilung >
122 <#assign
123 data_abteilung = data_abteilung + [{
124 "title": abteilung.getTitle(locale),
125 "href": FrontendService.category.getAnzeigeseiteToCategory(abteilung, locale, themeDisplay.getScopeGroupId())!"/_404"
126 }]
127 />
128 </#list>
129 </#if>
130 <#if data_abteilung?has_content>
131 <#assign data_person = data_person + {"abteilung": data_abteilung} />
132 </#if>
133
134 <#-- assign Data for Intro -->
135 <#if data_person.name?? && data_person.lastname?? >
136 <#assign name = data_person.name + " " + data_person.lastname >
137
138 <#if data_person.anredetitel??>
139 <#assign name = data_person.anredetitel + " " + name />
140 </#if>
141 <#assign data_intro = data_intro + { "title" : name } />
142 </#if>
143
144 <#if data_person.subheadline??>
145 <#assign data_intro = data_intro + {"subheadline" : data_person.subheadline} />
146 </#if>
147
148 <#-- render title + function -->
149 <div class="o-page-module o-page-module--full">
150 <@PMIntro "ADT_KASDE_PERSON_INTRO" data_intro AMMetadata AMDatetime/>
151 <#-- render blue box -->
152 <@PMIntroBanner "ADT_KASDE_PERSON_INTRO_BANNER" data_person "" />
153 <#-- render contact data, auslandsbüros, abteilungen -->
154 <@PMPersonContent "ADT_KASDE_PERSON_INFO" data_person "" AMMetadataContact AMAddress />
155 <#-- render persons document -->
156 <#if data_person.documents??>
157 <@PMPersonDocuments "ADT_KASDE_PERSON_DOCUMENT" data_person.documents "" />
158 </#if>
159 </div>
160
161 </#if>
162
163 <#-- Veranstaltungs-Detail only -->
164 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")>
165 <#if isVLCColorScheme()>
166 <#-- Headline "Im Detail" for Veranstaltungs-Detail für VLC -->
167 <#assign data = data + { "headline" : languageUtil.get(locale, "details_vlc") }>
168 <#else>
169 <#-- Headline "Im Detail" for Veranstaltungs-Detail -->
170 <#assign data = data + { "headline" : languageUtil.get(locale, "details") }>
171 </#if>
172
173 <#-- ausgebucht -->
174 <#if hasContent('ausgebucht', locale, json)>
175 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', locale, json, "first") }>
176 </#if>
177
178 <#-- storniert -->
179 <#if hasContent('storniert', locale, json)>
180 <#assign data = data + { "storniert" : getValueForLanguage('storniert', locale, json, "first") }>
181 </#if>
182 <#-- Programm Data -->
183 <#assign program = getProgramm(json) >
184 <#if program?has_content>
185 <#assign data = data + { "program" : program } >
186 </#if>
187
188 <#assign registerLink = FrontendService.event.getEventSignupLink(themeDisplay)!"" />
189 </#if>
190
191 <#-- Beschreibung -->
192 <#if hasContent('beschreibung', locale, json)>
193 <#assign data = data + { "description" : getValueForLanguage('beschreibung', locale, json, "first") }>
194 </#if>
195
196 <#-- Contenttext -->
197 <#if (json["contenttext"][locale])?? >
198 <#assign data = data + { "text": json["contenttext"][locale] } >
199 <#elseif (json["contenttext"][default_locale])??>
200 <#assign data = data + { "text": json["contenttext"][default_locale] } >
201 </#if>
202
203 <#if (json["contentbildunterschrift"][locale])?? >
204 <#assign data = data + { "caption": json["contentbildunterschrift"][locale] } >
205 <#elseif (json["contentbildunterschrift"][default_locale])??>
206 <#assign data = data + { "caption": json["contentbildunterschrift"][default_locale] } >
207 </#if>
208
209 <#-- Bilderstrecke -->
210 <#assign series = getContentBilderstrecke(json) >
211 <#if series?has_content>
212 <#assign data = data + { "series" : series } />
213 </#if>
214
215 <#-- Media -->
216 <#if (json["contentmediumDMTKASDEMEDIUM"][locale])?? >
217 <#assign data = data + { "media": json["contentmediumDMTKASDEMEDIUM"][locale] } >
218 <#elseif (json["contentmediumDMTKASDEMEDIUM"][default_locale])??>
219 <#assign data = data + { "media": json["contentmediumDMTKASDEMEDIUM"][default_locale] } >
220 </#if>
221
222 <#if isACColorScheme() && data.media?? && !portletId?contains("ADT_KASDE_THEMA_CONTENT") >
223 <#if (json["mediumDMTKASDEMEDIUM"][locale])?? >
224 <#assign data = data + { "media": json["mediumDMTKASDEMEDIUM"][locale] } >
225 <#elseif (json["mediumDMTKASDEMEDIUM"][default_locale])?? >
226 <#assign data = data + { "media": json["mediumDMTKASDEMEDIUM"][default_locale] } >
227 </#if>
228 </#if>
229
230 <#-- Programm Download -->
231 <#if hasContent('documentDMTBASICDOCUMENT', locale, json)>
232 <#assign
233 documentDMTBASICDOCUMENTString = getValueForLanguage('documentDMTBASICDOCUMENT', locale, json, "first")
234 documentDMTBASICDOCUMENT = FrontendService.json.parseAsJson(documentDMTBASICDOCUMENTString)
235 dmtJson_doc = FrontendService.media.getDMTJsonObject( documentDMTBASICDOCUMENT.groupId?number, documentDMTBASICDOCUMENT.uuid, locale )!""
236 />
237
238 <#if dmtJson_doc?has_content>
239 <#assign url = FrontendService.media.getLinkToDMT(dmtJson_doc)/>
240 <#if url?has_content>
241 <#assign
242 data = data + {
243 "documentDMTBASICDOCUMENT": {
244 "title": documentDMTBASICDOCUMENT.title,
245 "url": url
246 }
247 }
248 />
249 </#if>
250 </#if>
251 </#if>
252
253 <#-- Biogramm Special Data lebenslauf, veroeffentlichungen, literatur -->
254 <#if hasContent('lebenslauf', locale, json)>
255 <#assign data = data + { "lebenslauf" : getValueForLanguage('lebenslauf', locale, json, "first") }>
256 </#if>
257
258 <#if hasContent('veroeffentlichungen', locale, json)>
259 <#assign data = data + { "veroeffentlichungen" : getValueForLanguage('veroeffentlichungen', locale, json, "first") }>
260 </#if>
261
262 <#if hasContent('literatur', locale, json)>
263 <#assign data = data + { "literatur" : getValueForLanguage('literatur', locale, json, "first") }>
264 </#if>
265
266 <#-- iFrame Content -->
267 <#if (json["contentiframeueberschrift"][locale])?? >
268 <#assign data = data + { "iframeueberschrift": json["contentiframeueberschrift"][locale] } >
269 <#elseif (json["contentiframeueberschrift"][default_locale])??>
270 <#assign data = data + { "iframeueberschrift": json["contentiframeueberschrift"][default_locale] } >
271 </#if>
272
273 <#if (json["einfuehrungText"][locale])?? >
274 <#assign data = data + { "introductoryText": json["einfuehrungText"][locale] } >
275 <#elseif (json["einfuehrungText"][default_locale])?? >
276 <#assign data = data + { "introductoryText": json["einfuehrungText"][default_locale] } >
277 <#elseif (json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][locale])?? >
278 <#assign data = data + { "introductoryText": json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][locale] } >
279 <#elseif (json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][default_locale])?? >
280 <#assign data = data + { "introductoryText": json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][default_locale] } >
281 </#if>
282
283 <#assign themenId = FrontendService.verbund.getThemenverbundByThema(themeDisplay, primaryKey) >
284
285 <#--prevArticle and nextArticle thema links-->
286 <#if isACColorScheme()>
287 <#if themenId?? && themenId?has_content >
288 <#assign data = data + { "nextArticle" : FrontendService.verbund.getThemenverbundNextLink(primaryKey, themenId, layoutUrl, locale, 'modulesKasThema', 'labelmodul', 'modulThemaKasTHEMENKASDESTRUCTURE') } >
289 <#assign data = data + { "prevArticle" : FrontendService.verbund.getThemenverbundPreviousLink(primaryKey, themenId, layoutUrl, locale, 'modulesKasThema', 'labelmodul', 'modulThemaKasTHEMENKASDESTRUCTURE') } >
290 </#if>
291 </#if>
292
293 <#if (json["contentiframeeinbindung"][locale])?? >
294 <#assign data = data + { "iframeeinbindung": json["contentiframeeinbindung"][locale] } >
295 <#elseif (json["contentiframeeinbindung"][default_locale])??>
296 <#assign data = data + { "iframeeinbindung": json["contentiframeeinbindung"][default_locale] } >
297 </#if>
298
299 <#if (json["contentiframeuntertitel"][locale])?? >
300 <#assign data = data + { "iframeuntertitel": json["contentiframeuntertitel"][locale] } >
301 <#elseif (json["contentiframeuntertitel"][default_locale])??>
302 <#assign data = data + { "iframeuntertitel": json["contentiframeuntertitel"][default_locale] } >
303 </#if>
304
305 <#if (json["contentiframequelle"][locale])?? >
306 <#assign data = data + { "iframequelle": json["contentiframequelle"][locale] } >
307 <#elseif (json["contentiframequelle"][default_locale])??>
308 <#assign data = data + { "iframequelle": json["contentiframequelle"][default_locale] } >
309 </#if>
310
311 <#if layouttpl?contains("LAYOUT_KASDE_THEMEN_DETAIL") || layouttpl?contains("LAYOUT_KASDE_STATIC") || layouttpl?contains("LAYOUT_KASDE_STATIC_HIDDEN") >
312 <#-- DropDownMenue Data -->
313 <#assign dropdownmenue = getDropDownMenue(json) >
314 <#if dropdownmenue?has_content>
315 <#assign data = data + { "dropdownmenue" : dropdownmenue } >
316 <#if (json["dropdownheader"][locale])?? >
317 <#assign data = data + { "dropdownheader" : getValueForLanguage('dropdownheader', locale, json, "first") } >
318 <#elseif (json["dropdownheader"][default_locale])??>
319 <#assign data = data + { "dropdownheader": getValueForLanguage('dropdownheader', default_locale, json, "first") } >
320 </#if>
321 </#if>
322 </#if>
323
324 <#if data?has_content>
325 <#assign content = content + [data]>
326 </#if>
327
328 </#if>
329
330<#else>
331 <#list entries as entry>
332
333 <#assign className = entry.getClassName()/>
334 <#if className = 'com.liferay.journal.model.JournalArticle'>
335
336 <#assign
337 primaryKey = entry.classPK?number
338 jsonString = FrontendService.article.getWebcontent(primaryKey)
339 json = FrontendService.json.parseAsJson(jsonString)
340 />
341 <@debugJsonString jsonString "ADT_KASDE_CONTENT" />
342
343 <#assign data = {} >
344
345 <#if (json["contenttext"][locale])?? >
346 <#assign data = data + { "text": json["contenttext"][locale] } >
347 <#elseif (json["contenttext"][default_locale])??>
348 <#assign data = data + { "text": json["contenttext"][default_locale] } >
349 </#if>
350
351 <#-- Bilderstrecke -->
352 <#assign series = getContentBilderstrecke(json) >
353 <#if series?has_content>
354 <#assign data = data + { "series" : series } />
355 </#if>
356
357 <#-- Media -->
358 <#if (json["contentmediumDMTKASDEMEDIUM"][locale])?? >
359 <#assign data = data + { "media": json["contentmediumDMTKASDEMEDIUM"][locale] } >
360 <#elseif (json["contentmediumDMTKASDEMEDIUM"][default_locale])??>
361 <#assign data = data + { "media": json["contentmediumDMTKASDEMEDIUM"][default_locale] } >
362 </#if>
363
364 <#if isACColorScheme() && data.media?? && !portletId?contains("ADT_KASDE_THEMA_CONTENT") >
365 <#if (json["mediumDMTKASDEMEDIUM"][locale])?? >
366 <#assign data = data + { "media": json["mediumDMTKASDEMEDIUM"][locale] } >
367 <#elseif (json["mediumDMTKASDEMEDIUM"][default_locale])?? >
368 <#assign data = data + { "media": json["mediumDMTKASDEMEDIUM"][default_locale] } >
369 </#if>
370 </#if>
371
372 <#if (json["contentbildunterschrift"][locale])?? >
373 <#assign data = data + { "caption": json["contentbildunterschrift"][locale] } >
374 <#elseif (json["contentbildunterschrift"][default_locale])??>
375 <#assign data = data + { "caption": json["contentbildunterschrift"][default_locale] } >
376 </#if>
377
378 <#-- iFrame Content -->
379 <#if (json["contentiframeueberschrift"][locale])?? >
380 <#assign data = data + { "iframeueberschrift": json["contentiframeueberschrift"][locale] } >
381 <#elseif (json["contentiframeueberschrift"][default_locale])??>
382 <#assign data = data + { "iframeueberschrift": json["contentiframeueberschrift"][default_locale] } >
383 </#if>
384
385 <#if (json["einfuehrungText"][locale])?? >
386 <#assign data = data + { "introductoryText": json["einfuehrungText"][locale] } >
387 <#elseif (json["einfuehrungText"][default_locale])?? >
388 <#assign data = data + { "introductoryText": json["einfuehrungText"][default_locale] } >
389 <#elseif (json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][locale])?? >
390 <#assign data = data + { "introductoryText": json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][locale] } >
391 <#elseif (json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][default_locale])?? >
392 <#assign data = data + { "introductoryText": json[FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText')][default_locale] } >
393 </#if>
394
395 <#assign themenId = FrontendService.verbund.getThemenverbundByThema(themeDisplay,primaryKey) >
396
397 <#--prevArticle and nextArticle thema links-->
398 <#if isACColorScheme()>
399 <#if themenId?? && themenId?has_content >
400 <#assign data = data + { "nextArticle" : FrontendService.verbund.getThemenverbundNextLink(primaryKey, themenId, layoutUrl, locale, 'modulesKasThema', 'labelmodul', 'modulThemaKasTHEMENKASDESTRUCTURE') } >
401 <#assign data = data + { "prevArticle" : FrontendService.verbund.getThemenverbundPreviousLink(primaryKey, themenId, layoutUrl, locale, 'modulesKasThema', 'labelmodul', 'modulThemaKasTHEMENKASDESTRUCTURE') } >
402 </#if>
403 </#if>
404
405 <#if (json["contentiframeeinbindung"][locale])?? >
406 <#assign data = data + { "iframeeinbindung": json["contentiframeeinbindung"][locale] } >
407 <#elseif (json["contentiframeeinbindung"][default_locale])??>
408 <#assign data = data + { "iframeeinbindung": json["contentiframeeinbindung"][default_locale] } >
409 </#if>
410
411 <#if (json["contentiframeuntertitel"][locale])?? >
412 <#assign data = data + { "iframeuntertitel": json["contentiframeuntertitel"][locale] } >
413 <#elseif (json["contentiframeuntertitel"][default_locale])??>
414 <#assign data = data + { "iframeuntertitel": json["contentiframeuntertitel"][default_locale] } >
415 </#if>
416
417 <#if (json["contentiframequelle"][locale])?? >
418 <#assign data = data + { "iframequelle": json["contentiframequelle"][locale] } >
419 <#elseif (json["contentiframequelle"][default_locale])??>
420 <#assign data = data + { "iframequelle": json["contentiframequelle"][default_locale] } >
421 </#if>
422
423 <#if layouttpl?contains("LAYOUT_KASDE_THEMEN_DETAIL") || layouttpl?contains("LAYOUT_KASDE_STATIC") || layouttpl?contains("LAYOUT_KASDE_STATIC_HIDDEN") || layouttpl?contains("LAYOUT_KASDE_MICROSITE_HOME") >
424 <#-- DropDownMenue Data -->
425 <#assign dropdownmenue = getDropDownMenue(json) >
426 <#if dropdownmenue?has_content>
427 <#assign data = data + { "dropdownmenue" : dropdownmenue } >
428 <#if (json["dropdownheader"][locale])?? >
429 <#assign data = data + { "dropdownheader" : getValueForLanguage('dropdownheader', locale, json, "first") } >
430 <#elseif (json["dropdownheader"][default_locale])??>
431 <#assign data = data + { "dropdownheader": getValueForLanguage('dropdownheader', default_locale, json, "first") } >
432 </#if>
433 </#if>
434 </#if>
435
436 <#if data?has_content>
437 <#assign content = content + [data]>
438 </#if>
439
440 </#if>
441
442 </#list>
443
444</#if>
445
446<#if content?has_content >
447 <#if !layouttpl?contains("LAYOUT_KASDE_PERSONEN_DETAIL")>
448 <@PMPageContent portletId content classModifier />
449 <@PMShare registerLink />
450 </#if>
451<#elseif (editmode?? && editmode)>
452 <@errorMessage languageUtil.get(locale, "keine.inhalte.vorhanden") "ADT_KASDE_CONTENT" layouttpl currentUrl />
453</#if>