Publicador de contenidos

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

Publicador de contenidos

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> FrontendService.verbund [in template "252001#252047#252761" at line 283, column 29]
----
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: #assign themenId = FrontendService.ve... [in template "252001#252047#252761" at line 283, 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?? > 
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?? > 
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> 

Publicador de contenidos

Personas de contacto

Lina Rühl

Klima, Landwirtschaft und Umwelt

lina.ruehl@kas.de +49 30 26996-3502
Personas de contacto

Gunter Rieck Moncayo

Gunter Rieck Moncayo

Economía y comercio

gunter.rieck@kas.de +49 30 26996-3828 +49 30 26996-53828

Publicador de contenidos

Sobre esta serie

Conciso, reducido a lo esencial, pero siempre de gran actualidad. En la serie "en breve", nuestros expertos resumen un tema o problema en un máximo de dos páginas.