Asset-Herausgeber

Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) [in template "252001#252047#252845" at line 126, column 37]
----
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: dMTJsonObject = FrontendService.media... [in template "252001#252047#252845" at line 126, column 21]
----
1<#-- used @ Veranstaltung-Detailseite Intro 
2 used @ Publikation-Detailseite Intro 
3--> 
4 
5<#-- 
6Web content templates to display teaser on thema detail page 
7 
8Generic template for detail pages Intro / Teaser element 
9--> 
10<#-- 
11Display the current page title 
12--> 
13<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" /> 
14<#include "${fullTemplatesPath}/macros/debugging.ftl" /> 
15 
16<#include "${fullTemplatesPath}/macros/page-modules/PMIntro.ftl" /> 
17<#include "${fullTemplatesPath}/macros/atomic-modules/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> 

Asset-Herausgeber

Am 27 Oktober 2018, ging der erste Zyklus der Seminarreihe Führungskräfteschule ADI Budi im Bereich Kommunalpolitik in Temuco, organisiert von der Konrad-Adenauer-Stiftung in Zusammenarbeit mit der der Stiftung REIS, zu Ende. Das zweitägige Programm enthielt Begrüßungen von Mónica Tejos, Gründerin der Stiftung Reis und Annika Hermann, wissenschaftliche Mitarbeiterin bei der Konrad-Adenauer-Stiftung. Unter anderem boten die Organisatoren einen Workshop über „Territoriale Governance“ an, bei dem territorialen Verwaltungs- und Managementfähigkeiten erarbeitet wurden, um die autonome, integrale und lokale Entwicklung der Teilnehmer und deren Kommunen zu stärken. Der zweite Workshop „Nachhaltige Entwicklung“ befasste sich mit der Problemidentifizierung und betonte die Wiedergewinnung traditioneller Produktionsmethoden und Lebensweisen. Am 16 und 17 November folgte der zweite Zyklus der Seminarreihe mit Workshops über Stärkung der sozialen Führung, Assoziativität und die Schaffung von Netzwerken für die Entwicklung, sowie Finanzielle Bildung und Micro Finanzierung.


Ziel der Seminarreihe der Führungskräfteschule ADI Budi ist es, mögliche Mechanismen für die Verwaltung und den Schutz des Lafquenche-Gebiets am Budi-See, zu erarbeiten, die es der umgebenden Gemeinden ermöglichen soll,  ihr territoriales Gebiet und Kommunen autonom und effektiv zu verwalten. Darüber hinaus geht es um den Austausch von Erfahrungen und angelerntem Wissen unter den Teilnehmern.


Im Dezember folgt der letzte Zyklus der Seminarreihe. 

Asset-Herausgeber

comment-portlet

Asset-Herausgeber

Asset-Herausgeber

Über diese Reihe

Die Konrad-Adenauer-Stiftung, ihre Bildungsforen und Auslandsbüros bieten jährlich mehrere tausend Veranstaltungen zu wechselnden Themen an. Über ausgewählte Konferenzen, Events, Symposien etc. berichten wir aktuell und exklusiv für Sie unter www.kas.de. Hier finden Sie neben einer inhaltlichen Zusammenfassung auch Zusatzmaterialien wie Bilder, Redemanuskripte, Videos oder Audiomitschnitte.

Asset-Herausgeber