Escuela de Lideres ADI Budi en Temuco - Oficina de la Fundación en Chile
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>
El 27 de octubre de 2018, finalizó el primer ciclo de la Serie de Seminarios de la Escuela de Lideres ADI Budi en Temuco, organizado por la Fundación Konrad Adenauer en cooperación con la Fundación REIS. El programa de dos días incluyó las palabras de bienvenidad de Mónica Tejos, Fundadora de la Fundación Reis, y Annika Hermann, Coordinadora de Proyectos en KAS Chile. Entre otras cosas, los organizadores ofrecieron un taller sobre "Gobernanza territorial", en el que se desarrollaron habilidades administrativas y de gestión territorial para fortalecer el desarrollo autónomo, integral y local de los participantes y sus comunidades. El segundo taller "Desarrollo sostenible" abordó la identificación de problemas y enfatizó la recuperación de los métodos de producción y organización tradicionales. Los días 16 y 17 de noviembre, el segundo ciclo de la serie de seminarios siguió con talleres sobre fortalecimiento del liderazgo social, la asociatividad y la creación de redes para el desarrollo, así como educación financiera y microfinanzas.
El objetivo de la serie de seminarios de la escuela de administración ADI Budi es desarrollar posibles mecanismos para la administración y protección del área Lafquenche en el lago Budi, que debería permitir a las comunidades circundantes administrar de manera autónoma y efectiva su área territorial y municipios. Además, se trata del intercambio de experiencias y conocimientos aprendidos entre los participantes.
En diciembre, sigue el último ciclo de la serie de seminarios.