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 132, 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 132, 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 availablelanguages = FrontendService.article.getAssetEntryToUrl(primaryKey).getAvailableLanguageIds() 
98 
99 title = entry.getTitle(languageId) 
100 data = { 
101 "title": title 
102
103 /> 
104 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" /> 
105 
106 <#if hasContent('untertitel', languageId, json)> 
107 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } > 
108 </#if> 
109 
110 <#if hasContent('detailsubtitle', languageId, json)> 
111 <#assign data = data + { "detailsubtitle": getValueForLanguage('detailsubtitle', languageId, json, "first") } > 
112 </#if> 
113 
114 <#if hasContent('beschreibung', languageId, json)> 
115 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } > 
116 </#if> 
117 
118 <#-- fill meta data --> 
119 <#assign meta = {} /> 
120 
121 <#-- PUBLIKATIONEN DETAIL --> 
122 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
123 
124 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)> 
125 <#assign 
126 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first") 
127 /> 
128 
129 <#if coverBildString?has_content> 
130 <#assign 
131 coverBild = FrontendService.json.parseAsJson(coverBildString) 
132 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) 
133 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid ) 
134 data = data + { "media": linkToDMT, "meta" : dMTJsonObject } 
135 /> 
136 <#if dMTJsonObject.altText?? > 
137 <#assign data = data + {"alt" : dMTJsonObject.altText} /> 
138 </#if> 
139 <#if dMTJsonObject.quelle??> 
140 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } /> 
141 </#if> 
142 </#if> 
143 <#-- uncomment to display pdf cover as Intro Image 
144 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)> 
145 <#assign 
146 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first") 
147 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/> 
148 <#if fileEntry?has_content> 
149 <#assign 
150 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay) 
151 data = data + { "media": linkToThumbnail } 
152 /> 
153 </#if> 
154 --> 
155 </#if> 
156 
157 <#assign 
158 meta = meta + { "orderInfo": "true" } 
159 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!"" 
160 /> 
161 
162 
163 
164 <#if hasContent('erscheinungsdatum', languageId, json)> 
165 <#assign 
166 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
167 /> 
168 <#if erscheinungsdatum?has_content > 
169 <#assign 
170 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId ) 
171 meta = meta + { "date": erscheinungsdatumFormatted } 
172 /> 
173 </#if> 
174 </#if> 
175 
176 <#if verbundJournalArticle?has_content> 
177 <#assign 
178 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey) 
179 verbundJson = FrontendService.json.parseAsJson(verbundJsonString) 
180 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first") 
181 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first") 
182 /> 
183 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" /> 
184 <#assign meta = meta + { "laufendenummer": laufendenummer } > 
185 
186 <#if coverImg?has_content && coverImg.url?has_content > 
187 <#assign meta = meta + { "coverImg": coverImg.url } > 
188 </#if> 
189 </#if> 
190 
191 
192 <#if meta?has_content> 
193 <#assign data = data + {"meta": meta } > 
194 </#if> 
195 
196 </#if> 
197 <#-- PUBLIKATIONEN DETAIL END --> 
198 
199 
200 <#-- VERANSTALTUNGEN DETAIL --> 
201 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
202 <#assign 
203 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!"" 
204 links = [] 
205 /> 
206 <#if availablelanguages?has_content && friendlyUrl?has_content> 
207 <#if (availablelanguages?size > 1) > 
208 <#list availablelanguages as language> 
209 <#assign 
210 defaultLanguage = "de_DE" 
211 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage) 
212 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale 
213 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId) 
214 
215 link = { 
216 "key": language!defaultLanguage, 
217 "value": linkLocale.getDisplayLanguage(languageId), 
218 "url": "/c/portal/update_language?p_l_id=" + 
219 layout.plid + "&redirect=" + langFriendlyUrl + 
220 "&languageId=" + language 
221
222 /> 
223 <#if language == languageId> 
224 <#assign link = link + { "selected": "true" } > 
225 </#if> 
226 <#assign links = links + [link]> 
227 </#list> 
228 <#assign 
229 data = data + { 
230 "languageSelect": { 
231 "id": "languageSelectRedirect", 
232 "name": "languageselectRedirect", 
233 "entries": links, 
234 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar") 
235
236
237 /> 
238 </#if> 
239 </#if> 
240 </#if> 
241 
242 <#if hasContent('erscheinungsdatum', languageId, json)> 
243 <#assign 
244 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
245 meta = meta + { "start": startdate?date.iso, "end": "" } 
246 /> 
247 </#if> 
248 
249 <#if hasContent('startdatum', languageId, json)> 
250 <#assign 
251 startdate = getValueForLanguage('startdatum', languageId, json, "first") 
252 meta = meta + { "start": startdate?date.iso, "end": "" } 
253 /> 
254 </#if> 
255 
256 <#if hasValue('einfuehrungText', locale, json)> 
257 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } > 
258 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")> 
259 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } > 
260 </#if> 
261 
262 <#if hasContent('endedatum', languageId, json)> 
263 <#assign 
264 enddate = getValueForLanguage('endedatum', languageId, json, "first") 
265 meta = meta + { "end": enddate?date.iso } 
266 /> 
267 </#if> 
268 
269 <#if hasContent('startzeit', languageId, json)> 
270 <#assign 
271 startzeit = getValueForLanguage('startzeit', languageId, json, "first") 
272 /> 
273 <#if startzeit?has_content > 
274 <#assign meta = meta + { "startzeit": startzeit } /> 
275 </#if> 
276 </#if> 
277 
278 <#if hasContent('endezeit', languageId, json)> 
279 <#assign 
280 endezeit = getValueForLanguage('endezeit', languageId, json, "first") 
281 meta = meta + { "endezeit": endezeit } 
282 /> 
283 </#if> 
284 
285 <#if hasContent('ortWCSKASDEORT', languageId, json)> 
286 <#assign 
287 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first")) 
288 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number 
289 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!"" 
290 /> 
291 <#if ortWCSKASDEORTWebContent?has_content > 
292 <#assign 
293 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!"" 
294 /> 
295 <#if ortWCSKASDEORTTitle?has_content > 
296 <#assign 
297 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle } 
298 /> 
299 </#if> 
300 </#if> 
301 </#if> 
302 
303 
304 <#if hasContent('veranstaltungsnummer', languageId, json)> 
305 <#assign 
306 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first") 
307 meta = meta + { "verauuid": verauuid } 
308 /> 
309 </#if> 
310 
311 
312 <#if (data.meta)?has_content > 
313 <#assign meta = data.meta /> 
314 </#if> 
315 
316 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)> 
317 <#assign 
318 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first") 
319 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution") 
320 /> 
321 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} > 
322 
323 
324 <#if mediaData.meta?? && mediaData.meta.quelle??> 
325 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } /> 
326 </#if> 
327 </#if> 
328 
329 
330 <#if meta?has_content> 
331 <#assign data = data + {"meta": meta } > 
332 </#if> 
333 
334 <#-- END fill meta data --> 
335 
336 <#if hasContentForSequence('autorenWCSKASDEPERSON', languageId, json)> 
337 <#assign 
338 journalArticles = getValueForLanguageAnsprechpartner('autorenWCSKASDEPERSON', languageId, json) 
339 authors = [] 
340 /> 
341 <#list journalArticles as articleString> 
342 <#assign article = FrontendService.json.parseAsJson(articleString) /> 
343 <#if article?has_content && article?is_hash && article.classPK??> 
344 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" /> 
345 <#if articleDereferenced?has_content > 
346 <#assign 
347 author = "" 
348 articlePrimaryKey = articleDereferenced.classPK?number 
349 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey) 
350 articleJson = FrontendService.json.parseAsJson(articleJsonString) 
351 /> 
352 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" /> 
353 <#if hasValue('anredetitel', languageId, articleJson)> 
354 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " "> 
355 </#if> 
356 <#if hasValue('vorname', languageId, articleJson)> 
357 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " "> 
358 </#if> 
359 <#if hasValue('nachname', languageId, articleJson)> 
360 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " "> 
361 </#if> 
362 
363 <#attempt> 
364 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" > 
365 <#recover> 
366 <#assign href = "#" > 
367 </#attempt> 
368 <#if href?has_content && href != "#" && href != "/_404"> 
369 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'> 
370 </#if> 
371 
372 <#assign authors = authors + [author?trim]> 
373 </#if> 
374 </#if> 
375 </#list> 
376 <#if authors?has_content> 
377 <#assign data = data + { "author": authors?join(", ") } > 
378 </#if> 
379 </#if> 
380 
381 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") > 
382 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! > 
383 <#if categories?has_content && categories[0]?has_content > 
384 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
385 </#if> 
386 
387 <#if hasContent('ausgebucht', languageId, json)> 
388 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }> 
389 </#if> 
390 
391 <#if hasContent('storniert', languageId, json)> 
392 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }> 
393 </#if> 
394 
395 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") > 
396 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! > 
397 <#if categories?has_content && categories[0]?has_content > 
398 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
399 </#if> 
400 <#else> 
401 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! > 
402 <#if categories?has_content && categories[0]?has_content > 
403 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
404 </#if> 
405 </#if> 
406 
407 
408 <#assign 
409 languages = [] 
410 /> 
411 
412 <#attempt> 
413 <#if json["document_pdfDMTBASICDOCUMENT"]?? > 
414 <#if availablelanguages?has_content> 
415 <#list availablelanguages as pdf_language> 
416 <#assign 
417 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first") 
418 docRef = FrontendService.json.parseAsJson(docRefJson) 
419 /> 
420 <#if docRef?is_hash && pdf_language != languageId > 
421 <#assign 
422 lang = FrontendService.language.getLocaleByKey(pdf_language)!"" 
423 docGroupId = docRef["groupId"]?number 
424 docUuid = docRef["uuid"] 
425 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale ) 
426 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject ) 
427 /> 
428 <#if lang?has_content> 
429 <#assign 
430 languages = languages + [ 
431
432 "key": pdf_language, 
433 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(), 
434 "url": dMTLink 
435 }] 
436 /> 
437 </#if> 
438 </#if> 
439 </#list> 
440 </#if> 
441 </#if> 
442 <#recover> 
443 </#attempt> 
444 
445 <#if (languages?size > 0)> 
446 <#attempt> 
447 <#assign 
448 data = data + { "languageSelect": { 
449 "id": "languageSelect", 
450 "name": "languageselect", 
451 "entries": languages, 
452 "documents": "", 
453 "button": "true" 
454 }} 
455 /> 
456 <#recover> 
457 </#attempt> 
458 </#if> 
459 
460 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" /> 
461 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)} 
462 
463 <#if data.meta?has_content> 
464 <#if data.meta.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()> 
465 <div>  
466 <div id="publicationVerbundPagination"> 
467 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg /> 
468 </div> 
469 </div> 
470 </#if> 
471 </#if> 
472 
473<#elseif (editmode?? && editmode)> 
474 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl /> 
475</#if> 

Asset Publisher

Падзяліцца

Wahlergebnis und Analyse

Nach Auszählung von 99,99 Prozent der Wahllokale gaben die Wahlbehörden folgendes vorläufige Ergebnis bekannt:
 

Kandidat Ergebnis % Wählerstimmen
Gustavo Petro 40,32 %  8.527.183
Rodolfo Hernández 28.15 % 5.953.160
Federico Gutiérrez 23, 91 % 5.057.981
Sergio Fajardo 4,20 % 888.537
John Milton Rodríguez 1,29 % 274.235
Enrique Gómez Martínez 0,23 % 50.533
Ingrid Betancourt 0,07 % 14.877
Luis Pérez 0,05 % 12.425

 

Trotz der landesweiten Sozialproteste im vergangenen Jahr, der Unzufriedenheit mit der sozialen Lage und der enormen politischen Polarisierung im Wahlkampf nahmen nur knapp 22 Millionen Wählerinnen und Wählern an den Wahlen teil. Die Wahlbeteiligung lag bei rund 55 Prozent und verharrte damit auf ähnlichem Niveau wie in der Vergangenheit. Gustavo Petro, Senator und ehemaliger Bürgermeister von Bogotá, verfehlte zwar sein erklärtes Ziel eines Wahlsieges mit absoluter Mehrheit im ersten Wahlgang, erzielte für die Linke aber ein historisches Wahlergebnis. Mit über 8,5 Mio. Stimmen übertraf er bereits im ersten Wahlgang sein Ergebnis in der Stichwahl gegen Präsident Duque 2018 (8.04 Mio. Stimmen) deutlich. Noch nie ist es einem linken Präsidentschaftskandidaten in Kolumbien gelungen, so viele Wähler hinter sich zu versammeln.

Heimlicher Wahlgewinner ist jedoch der 77jährige Unternehmer und ehemalige Bürgermeister von Bucaramanga, Rodolfo Hernández, der in den letzten Umfragen zehn Tage vor den Wahlen noch fünf Prozentpunkte hinter Federico Gutiérrez lag. Mitte Mai hatte Hernández noch abgeschlagen unter 15 Prozent gelegen. Die letzten Umfragen bescheinigten ihm zwar einen deutlichen Aufwärtstrend, doch die Mehrheit der Analysten und politischen Beobachter hatte mit einem Einzug von Federico Gutierrez in die Stichwahl gerechnet. Der Überraschungscoup von Hernández und der Wahlerfolg von Petro sind Ausdruck einer gnadenlosen Abrechnung des Wählers mit dem traditionellen politischen Establishment und der Regierung Duque, die historisch schlechte Zustimmungswerte verzeichnet.

Die Regierungspartei Centro Democrático (Demokratisches Zentrum) von Expräsident Uribe und Präsident Duque hatte zwar ihren eigenen chancenlosen Präsidentschaftskandidaten, den ehemaligen Uribe-Minister Ivan Zuluaga, frühzeitig aus dem Rennen genommen und stillschweigend die Kandidatur von Gutiérrez unterstützt. Dem ehemaligen Bürgermeister von Medellín gelang es aber nicht, ein eigenes starkes Profil und Strahlkraft über seine Heimatregion Antioquia hinaus zu entwickeln. Seine Bemühungen, sich als unabhängigen Kandidaten der Mitte zu präsentieren, verfingen beim Wähler nicht. Stattdessen stand er in den Augen der zahlreichen Regierungskritiker als Repräsentant der traditionellen politischen Elite für Kontinuität und ein „Weiter so“.

Petro und Hernández verkörperten dagegen in ihrem Wahlkampf die Wechselstimmung in der Bevölkerung. Hernández sprach dabei vor allem die Wähler an, die dem traditionellen Mitte-Rechts-Lager kritisch gegenüberstanden, die sich aber auch von der linken Rhetorik Petros und seiner Vizepräsidentschaftskandidatin Francia Márquez abgeschreckt fühlten. Im Zuge der zunehmenden Polarisierung zwischen dem linken und rechten politischen Lager entfaltete seine Kandidatur immer stärkere Zugkraft, angetrieben durch ein geschicktes politisches Marketing und eine Low-Budget-Kampagne, die stark auf soziale Netzwerke, insbesondere Tictoc, setzte. Bemerkenswert ist der Erfolg von Hernández auch deshalb, weil er bis zum Wahltag nur 70 Prozent der Kolumbianer überhaupt bekannt war. Als ehemaliger Bürgermeister von Bucaramanga, der Hauptstadt der Region Santander, hatte er in der nationalen Politik bis zu seiner Kandidatur keine Rolle gespielt und gehörte auch keiner Partei an, die seine Kampgange hätte unterstützen können. Überregionale Bekanntheit erlangte der Unternehmer, als er als Bürgermeister vor laufenden Kameras einen Stadtrat in seinem Büro ohrfeigte und dafür von seinem Amt suspendiert wurde. Mit volksnaher Sprache und oft polemischen Äußerungen wetterte Hernández gegen die Korruption und die gesamte politische Klasse des Landes und traf damit offenbar bei vielen Wählern den richtigen Nerv. Dass er wegen fragwürdiger Vergabe öffentlicher Aufträge als Bürgermeister selbst in einen Korruptionsprozess verwickelt ist, konnte den Hype um Hernández nicht bremsen. Im Endspurt des Wahlkampfes entzog sich der Unternehmer den Kandidatendebatten und verbreitete stattdessen über die sozialen Netzwerke kostspielige Wahlkampfversprechen. Finanziert würden diese durch den Stopp von Korruption und öffentlicher Geldverschwendung unter seiner Regierung, so Hernández.

Mit populistischen Heilsversprechen gelang es Petro und Hernández, den stark ausgeprägten Wechselwillen in der Bevölkerung und die Wut auf die traditionellen politischen Eliten aufzufangen und in Wählerstimmen umzumünzen. Neben Fico Gutiérrez, dem vermeintlichen Vertreter des politischen Establishments, erlitt auch Sergio Fajardo, ehemaliger Bürgermeister von Medellín, ehemaliger Gouverneur von Antioquia und Präsidentschaftskandidat 2021 ein verheerendes Wahldebakel. Nachdem Fajardo 2018 als aussichtsreicher Kandidat noch knapp die Stichwahl verpasst hatte, erzielte er diesmal nur 4,2 Prozent der Wählerstimmen und lag damit nur geringfügig über der wichtigen 4-Prozent-Hürde, die zur staatlichen Rückerstattung der Wahlkampfkosten berechtigt. Die anderen Kandidaten spielten keine Rolle. Ingrid Betancourt, die internationale Bekanntheit erlangte, als sie als Präsidentschaftskandidatin 2002 von den FARC entführt und bis zu ihrer Befreiung 2008 im Dschungel als Geisel gehalten wurde, stand zwar noch auf dem Wahlzettel. Doch sie hatte ihre Kandidatur wenige Tage vor dem Wahltag zurückgezogen und ihre Unterstützung für Hernández erklärt.

Kolumbien hat für einen radikalen Politikwechsel und gegen das politische Establishment gestimmt und folgt damit einer Tendenz in der Region. Ein gradueller Wandel, wie ihn Federico Gutiérrez oder Sergio Fajardo vorgeschlagen hatten, überzeugte die Wähler nicht. Kurioserweise liegt für Gustavo Petro in der Stunde seines größten Triumpfes bereits der bittere Beigeschmack einer möglichen Niederlage. Denn der heimliche Gewinner des Abends, Rodolfo Hernández, geht aufgrund der wahrscheinlichen Wahlallianzen nun als Favorit in die Stichwahl.

 

Reaktionen und Ausblick auf die Stichwahl

Nachdem die Auszählungen so weit fortgeschrittenen waren, dass die von der Wahlbehörde veröffentlichten Ergebnisse als gesichert gelten konnten, wandte sich Rodolfo Hernández als erster an die Öffentlichkeit und blieb auch dabei seinem Kommunikationsstil treu. Im charakteristischen gelben Hemd verlas er per Facebookübertragung aus der Küche seines Hauses eine Erklärung vom Blatt, in der er seinen Unterstützern dankte und ein Ende der Korruption unter seiner Regierung ankündigte. Heute hätten die verloren, die glaubten, ewig regieren zu können, so Hernández. Die nüchterne Videobotschaft stand im krassen Gegensatz zu den spontanen Straßenfesten und Auto- und Motorradkorsos in Bucaramanga, die den Wahlerfolg des „Ingenieurs“ – wie seine Anhänger Hernández nennen – bejubelten. Wenig später trat Frederico Gutiérrez in Bogotá vor die Kameras, gestand seine Wahlniederlage ein und erklärte seinen Unterstützern, dass er zwar noch nicht mit Hernández gesprochen habe, dass er aber, um Freiheit und Demokratie in Kolumbien zu schützen, diesen unterstützen werde. Der Wahlsieger des ersten Wahlgangs, Gustavo Petro, trat erst am späten Abend vor seine Anhänger und die Medien. Denn der überraschende Wahlerfolg von Hernández stellte seine bisherige Wahlkampstrategie auf den Kopf. Die eigene Inszenierung als Kandidat des Wandels gegen einen Kandidaten des verkrusteten, politischen Establishments und der Kontinuität, die auf Gutiérrez gemünzt war, läuft gegen das Phänomen Hernández ins Leere. In seiner Ansprache dankte Petro seinen Unterstützern, verwies auf den historischen Wahlerfolg seines Wahlbündnisses und setzte erste Attacken auf den unerwarteten Konkurrenten. Korruption bekämpfe man nicht mit Phrasen auf Tictoc, so Petro. Er und seine politischen Wegbegleiter hätten ihr Leben riskiert, um Korruption aufzudecken und zu bekämpfen. Petro verwies zudem auf das laufende Korruptionsverfahren gegen Hernández. Doch so richtig überzeugend wirkte der bisherige Wahlfavorit nicht. Die Bilder vom verhaltenen Jubel bei Petros Anhängern im Saal einerseits sowie die spontanen Straßenpartys und Jubelszenen in Bucaramanga andererseits standen sinnbildlich für die neuen Kräfteverhältnisse auf der Zielgeraden der Präsidentschaftswahlen.

Petro und seine Wahlkampfstrategen wissen, dass die Chancen in einer Stichwahl mit Hernández schlechter stehen als in dem ursprünglich erwarteten Duell mit Gutiérrez. Nun ist es plötzlich Petro, der sich als seriöser Gegenentwurf zu einem Populisten präsentieren muss, der politisch-ideologisch kaum greifbar ist und der dem lange eingeübten Wahlkampfnarrativ Petros wenig Angriffsfläche bietet. Ein Strategiewechsel könnte darin bestehen, sich künftig als Garanten eines realen und verantwortungsvollen Wandels zu präsentieren, und Hernández Vorschläge als unverantwortlich und nicht umsetzbar zu kritisieren, um damit wieder die alleinige Deutungshoheit über das Zauberwort dieses Wahlkampfes „cambio“ (Wechsel) zu gewinnen. Angesichts der erklärten Unterstützung von Fico Gutierrez für Hernández dürfte Petro zudem versuchen, diesen als Kandidaten von Uribe und der politischen Rechten zu brandmarken. Ob diese Rechnung aufgeht, ist fraglich. Denn der ehemalige Bürgermeister von Bucaramanga gilt als echter Self-made-Politiker ohne Verbindungen in die traditionelle politische Klasse des Landes. Seine Berater werden ihm ohnehin von einem offenen Schulterschluss mit dem Mitte-Rechts-Lager abraten, um seine Unabhängigkeit nicht zu gefährden.

Jenseits offener Wahlallianzen dürfte die überwältigende Mehrheit des Mitte-Rechts-Lagers im zweiten Wahlgang den Unternehmer aus Bucaramanga unterstützen, um Petro zu verhindern. Hernández und Gutiérrez vereinigten im ersten Wahlgang 52 Prozent und 11 Millionen Stimmen auf sich. Experten halten Petros Potential für Zugewinne in der Stichwahl in dieser Konstellation für sehr beschränkt. Selbst wenn Petro die 4 Prozent und 888.000 Stimmen von Fajardo für sich gewinnen könnte, bliebe er weit von einer Mehrheit entfernt. Er müsste zusätzliche Stimmen aus dem Lager der Nichtwähler sowie von Gutiérrez und Hernández anziehen. Derzeit erscheint es wahrscheinlicher, dass sich nicht nur die Petrokritiker aus dem rechten Lager hinter Hernández versammeln, sondern dass auch wichtige Figuren aus der Mitte-Links-Allianz von Sergio Fajardo ins Lager des Unternehmers wandern. Einflussreiche Politiker wie die Senatorin Angélica Lonzano oder der ehemalige Gouverneur von Boyacá, Carlos Amaya, haben sich bereits entsprechend geäußert.

Auch wenn das Momentum und die Wahlarithmetik in der Stichwahl am 19. Juni für Hernández zu sprechen scheinen, bleibt das Rennen offen. Hinter den Kulissen wird in den künftigen Tagen eifrig verhandelt, um offene oder heimliche Allianzen und Unterstützung zu sichern. Spannend bleibt die Frage, ob es Petro gelingen kann, Hernández in einer offenen Debatte zu stellen und dessen Unkenntnis in vielen Politikfeldern und fehlende programmatische Tiefe vorzuführen, oder ob Hernández sich einer öffentlichen Debatte weiter entzieht. Jetzt, wo der einstige Außenseiter im Rampenlicht steht, könnten ihm seine fehlende Sachkenntnis und sein impulsives Naturell zum Nachteil werden.

 

Fazit

Der Linkspopulist Petro erzielt im ersten Wahlgang ein historisches Stimmergebnis und droht dennoch in der Stichwahl an Überraschungsgegner Hernández zu scheitern. Die überwältigende Mehrheit der Kolumbianer wählt den radikalen Wechsel und beendet die Ära Uribe. Traditionelle politische Parteien und Eliten sowie die Regierung Duque werden abgestraft und bringen keinen eigenen Kandidaten in die Stichwahl. Die im Nachgang zu den Kongresswahlen wegen zahlreicher Fehler stark kritisierten Wahlbehörden haben für einen transparenten Wahlprozess und die zügige Veröffentlichung der Wahlergebnisse gesorgt und damit wichtiges Vertrauenskapital wiederhergestellt. Die Wahlergebnisse wurden noch am Wahlabend von den Hauptakteuren akzeptiert und nicht in Frage gestellt. Der Wahltag verlief weitgehend ohne Zwischenfälle. Angriffe auf Repräsentanten der Wahlkampagnen oder Mitglieder von Polizei und Sicherheitskräften wurden am Wahltag nicht gemeldet. Mit dem Wahldebakel für die traditionelle politische Elite und der Stichwahl zwischen zwei erklärten Gegnern des politischen Establishments folgt Kolumbien einem regionalen Trend. In der Stichwahl am 19. Juni könnte mit Rodolfo Hernández erstmals ein politischer Außenseiter ohne Parteizugehörigkeit ins Präsidentenamt gewählt werden.

Asset Publisher

кантактная асоба

Stefan Reith

Portrait von Stefan Reith

Leiter EIZ Abteilung Inlandsprogramme

stefan.reith@kas.de +57 601 7430947

comment-portlet

Asset Publisher

Пададзена

Auslandsbüro Kolumbien

Asset Publisher

Пра гэтую серыю

Фонд імя Конрада Адэнаўэра мае ўласныя прадстаўніцтвы прыкладна ў 70 краінах свету на пяці кантынентах. Супрацоўнікі замежных прадстаўніцтваў могуць з першых рук праінфармаваць аб актуальных мерапрыемствах ці доўгатэрміновых зменах у краіне ажыццяўлення Вашай дзейнасці. У форме "справаздач па краінах" яны эксклюзіўна прадастаўляюць карыстальнікам веб-сайта Фонда імя Конрада Адэнаўэра аналізы, фонавую інфармацыю і ацэнкі.