Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing: ==> bild.label [in template "kas-de-theme_SERVLET_CONTEXT_/templates/macros/atomic-modules/AMBilderstrecke.ftl" at line 88, column 72] ---- 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: ${bild.label?html} [in template "kas-de-theme_SERVLET_CONTEXT_/templates/macros/atomic-modules/AMBilderstrecke.ftl" in macro "AMBilderstrecke" at line 88, column 70] - Reached through: @AMBilderstrecke i, item.series[i] [in template "kas-de-theme_SERVLET_CONTEXT_/templates/macros/page-modules/PMPageContent.ftl" in macro "repeatableContent" at line 647, column 17] - Reached through: @repeatableContent item [in template "kas-de-theme_SERVLET_CONTEXT_/templates/macros/page-modules/PMPageContent.ftl" in macro "PMPageContent" at line 517, column 25] - Reached through: @PMPageContent portletId, content, cl... [in template "252001#252047#252761" at line 443, 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>