Asset Publisher

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

Asset Publisher

Ausgangslage

Nachdem der damalige Präsident Mel Zelaya aus der Liberalen Partei (Partido Liberal de Honduras, PLH), im Juni 2009 kurz vor Ende seiner Amtszeit mehr in einem Staatsstreich als aus guten Gründen vom Parlament mit Unterstützung des Militärs und des Obersten Gerichtshofes abgesetzt worden war, überstand Honduras einige Monate der Unsicherheit, bevor aus den regulären Wahlen im November desselben Jahres der Politiker der Nationalpartei (Partido Nacional de Honduras, PNH), Porfirio Lobo Sosa, als Sieger hervorging und im Januar 2010 als Präsident vereidigt wurde. Begründung für den Putsch gegen Zelaya war der Vorwurf, er wolle sich eine zweite Amtszeit sichern, was die Verfassung von Honduras ausschließt. Zelaya verließ die PLH und gründete die Partei Libertad y Refundación (Libre). Diese konnte sich bereits bei den Wahlen im Jahr 2013 als zweitstärkste politische Kraft etablieren. Damit war im Grunde das alte politische Duopol von PNH und PLH beendet. Die volle Wirkung sollte sich aber erst acht Jahre später zeigen.

Auf Lobo folgte 2014 sein Parteikollege Juan Orlando Hernández, der im Jahr 2017 genau das tat, wessen man Zelaya verdächtigt hatte: Mithilfe eines zuvor nach seinen Wünschen neu besetzten Obersten Gerichtshofes erreichte er eine weitere Kandidatur. Als schärfster Konkurrent erwies sich der TV-Präsentator Salvador Nasralla, der auch von der Libre unterstützt wurde: Er hatte Xiomara Castro für das Amt einer Vizepräsidentin nominiert. Unter zweifelhaften Umständen erreichte Hernández schließlich doch seine Wiederwahl, konnte aber nun im Jahr 2021 nicht noch ein weiteres Mal antreten, unter anderem, weil sein Bruder in den USA wegen Drogenhandels im Gefängnis sitzt und auch Juan Orlando selbst vorgeworfen wird, seine politische Karriere mit Drogengeldern finanziert zu haben.

Bei den Vorwahlen, die die drei großen Parteien im März 2021 durchführten, wurden der Bürgermeister von Tegucigalpa, Nasry Asfura, für die PNH, der Unternehmer Yani Rosenthal für die PLH und Xiomara Castro für die Libre als Präsidentschaftskandidaten nominiert. Für den amtierenden Präsidenten war die Nominierung von Asfura bereits die erste Niederlage, da er bei den Vorwahlen der PNH den Parlamentspräsidenten Mauricio Oliva unterstützt hatte. In der PLH führte der Sieg von Yani Rosenthal zu einer Quasi-Spaltung der Partei, da sein Gegenkandidat und dessen Anhänger das Ergebnis nicht akzeptierten. Nur die Nominierung von Xiomara Castro mit mehr als 80 Prozent der Stimmen schuf in der Libre von Beginn an klare Verhältnisse. Castro erreichte kurz vor den Wahlen sogar, dass Salvador Nasralla auf eine eigene Präsidentschaftskandidatur verzichtete, stattdessen diesmal sie unterstützte und sich von ihr als Kandidat für eine Vizepräsidentenposition nominieren ließ.

 

Vorläufiges Wahlergebnis

Nach den bislang aus gut der Hälfte der Wahllokale vorliegenden Ergebnissen hat Xiomara Castro die Präsidentenwahl klar gewonnen. Mit rund 53,5 Prozent der Stimmen steuert sie nicht nur auf eine absolute Mehrheit zu[1], sie liegt auch fast 20 Prozent vor dem stärksten Herausforderer, Nasry Asfura, der derzeit auf 34 Prozent kommt. Weit abgeschlagen ist der Kandidat der PLH, Yani Rosenthal, der nur einen Anteil von 9,2 Prozent verzeichnet. Er hat der Konkurrentin bereits gratuliert und seine Zusammenarbeit angeboten. Der Kandidat der PNH, Nasry Asfura, hat Castro gar zu Hause besucht, um ihr zum Wahlsieg zu gratulieren.

Weniger klar ist die Lage derzeit noch im Blick auf die Zusammensetzung des Parlaments. Castro wird sich sicher nicht allein auf eine Mehrheit ihrer Partei Libre stützen können, sondern darauf angewiesen sein, dass die Allianz mit Salvador Nasralla und dessen Partei hält. Selbst dass beide zusammen über eine Mehrheit der Sitze im Kongress verfügen, ist noch ungewiss. Damit fiele der Liberalen Partei eine entscheidende Rolle zu, weil sie dann die für die Verabschiedung einfacher Gesetzesvorhaben notwendige Mehrheit (mayoría simple) von 64 Stimmen (bei 128 Sitzen) sichern müsste. Auf jeden Fall hat die PLH trotz ihres sehr schwachen Abschneidens bei der Präsidentenwahl dadurch genügend Gewicht, um bei der Besetzung wichtiger Ämter der drei Staatsgewalten nicht völlig leer auszugehen.
Die für weitergehende Gesetzesinitiativen notwendige Mehrheit von 86 Stimmen (mayoría calificada) – zum Beispiel zur Aufhebung des Gesetzes über die umstrittenen ZEDE (Zona de Empleo y Desarrollo Económico, Sonderwirtschaftszonen) – könnte für Castro sogar gänzlich unerreichbar sein, da die PNH voraussichtlich über mindestens 42 Sitze verfügen wird und schon damit lediglich eine weitere Stimme für eine Blockade benötigen würde.

Das gesamte Ausmaß der Niederlage der derzeitigen Regierungspartei zeigt sich in den Ergebnissen der Bürgermeisterwahlen, vor allem in den beiden größten Städten des Landes, Tegucigalpa und San Pedro Sula. Beide verlor die PNH an die Libre. In der Hauptstadt stellt sie überhaupt zum ersten Mal nicht den Bürgermeister, seit diese vom Volk direkt gewählt werden, d.h. seit 1998. Auch in den Städten mittlerer Größe konnte die Nationalpartei kein einziges Bürgermeisteramt erobern. Davon, dass sie in gut 40 Prozent der Kommunen regiert, darf man sich also nicht täuschen lassen. Die beiden unterlegenen Kandidaten in der Hauptstadt und dem Wirtschaftszentrum des Landes haben ihre Niederlagen eingeräumt; auch andere Vertreter der PNH haben den Machtwechsel anerkannt, darunter auch der Generalsekretär der Partei.

 

Folgen

Die Wählerinnen und Wähler in Honduras haben dem gesamten etablierten System der Politik eine deutliche Abfuhr erteilt und dabei ihr ganzes Vertrauen in die Libre gesetzt. Zu den Verlierern gehören nämlich nicht nur die beiden sich traditionell im Präsidentenamt abwechselnden Parteien PNH und PLH, sondern auch das Dutzend Kleinparteien, die einen Präsidentschaftskandidaten ins Rennen geschickt hatten. Für sie stimmten insgesamt nicht einmal so viele Stimmberechtigte, wie einen leeren Wahlschein abgegeben haben.

Dennoch ist mit dem Ergebnis nicht das komplette politische Establishment abgewählt oder beseitigt. Denn die Libre trägt nicht nur die DNS der Liberalen Partei in sich, der ihr Gründer Mel Zelaya früher angehörte. Dieser ist auch der Ehemann der neuen Präsidentin Xiomara Castro und bestimmt die politische Linie von Libre entscheidend mit. Tochter und Schwager der künftigen Präsidentin sitzen im Kongress. Man könnte daher sogar sagen, dass das Volk in seinem Wunsch nach Veränderung über das Ziel hinausgeschossen ist und der Libre zu viel der politischen Macht hat zufallen lassen. Denn ob die neue Regierung in Tegucigalpa sich gegen den Einfluss der Drogenkartelle wehren wird, ob sie die Korruption bekämpft, ob sie die politische Beteiligung insbesondere der Indigenen und anderer benachteiligter Gruppen fördert und schließlich vor allem ob sie die Rechtsstaatlichkeit stärkt bzw. wiederherstellt, all das sind derzeit offene Fragen.

Ziemlich sicher wird sich Honduras jedoch in die Hände Chinas begeben. Damit gehören auch die USA und Taiwan zu den Verlierern dieser Wahlen. Letzterem bleiben dann in Mittelamerika nur noch zwei Verbündete: das diktatorisch regierte Nicaragua und das demokratisch schwächelnde Guatemala. Die USA, die mit Honduras eine gemeinsame Militärbasis unweit der Hauptstadt Tegucigalpa betreiben, werden zumindest damit leben müssen, sich den Einfluss auf die Geschicke des Landes mit China zu teilen; und das ist schon das beste Szenario, das sie erwartet. Es könnte auch dazu kommen, dass sie ihre Militärpräsenz aufgeben müssen, was für die Statik der Sicherheit auf dem amerikanischen Kontinent gravierende Folgen hätte.

 

Aufgaben für die kommenden vier Jahre

An die neue Präsidentin sind jedoch vor allem innenpolitisch hohe Erwartungen gerichtet. An erster Stelle steht die Bekämpfung von Hunger und Armut. Mehr als 70 Prozent der Bevölkerung von Honduras gelten als arm; auch von der Corona-Pandemie ist die Wirtschaft des Landes stark getroffen worden. Die wirtschaftliche Perspektivlosigkeit gehört zu den wichtigsten Ursachen der starken Abwanderungsbewegungen vor allem unter jungen Menschen. Ihren Stimmen, besonders denen der jungen Frauen, hat Xiomara Castro jedoch ihren Wahlsieg im Wesentlichen zu verdanken. Ihnen muss sie nun etwas zurückgeben.

Dieselbe Gruppe von Wählerinnen und Wählern erwartet auch einen entschlossenen Kampf gegen die Korruption, transparente politische Entscheidungsprozesse und eine starke unabhängige Justiz. Geht Castro in diesem Punkt auf die internationale Gemeinschaft zu und sucht deren Unterstützung, beispielsweise für die Neuauflage einer Anti-Korruptionsmission, wäre das ein starkes Signal nach innen und nach außen.

Die Wahlen haben gezeigt, dass es in Honduras eine lebendige Demokratie gibt, weil die Bevölkerung wach und engagiert ist. Der Machtübergang scheint friedlich und geordnet zu verlaufen. Gelingt es der designierten Präsidentin, diese Energie zu nutzen, könnte es in den kommenden vier Jahren tatsächlich zu einem demokratischen Aufschwung des Landes kommen.

 

[1] In Honduras gibt es bei der Präsidentenwahl nur einen einzigen Wahlgang, so dass die Siegerin oder der Sieger nicht unbedingt die absolute Mehrheit der Stimmen erreichen muss.

Asset Publisher

איש קשר

Prof. Dr. Stefan Jost

Prof. Dr

Leiter der Auslandsbüros Guatemala und Honduras

stefan.jost@kas.de +63 2 8539 38-41, -42, -43, -44 ,-45 +63 2 8893 6199

comment-portlet

Asset Publisher

מסופק על ידי

Auslandsbüro Guatemala

Asset Publisher

על סדרה זו

לקרן קונרד אדנאואר סניפים בשבעים מדינות

המצויות בחמש יבשות.

דיווחיהם של עובדינו המוצבים בחו"ל מבוססים

על מידע ממקור ראשון בנושאי האירועים

השוטפים, והתפתחויות ארוכות הטווח בארצות מושבם. הם עורכים סקירות על המדינות כולל: ניתוחים, חומר רקע והערכות. כל החומר מוגש כאן כשירות מיוחד לגולשי אתרינו