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>
GD bleibt insgesamt stärkste Kraft - UNM mit Achtungserfolgen in den Städten
Die UNM stabilisiert sich weiter als wichtigste Oppositionskraft. Auch andere Oppositionsparteien gewinnen an Einfluss. Auch wenn es für diese nicht gereicht hat, den „Georgischen Traum“ unter 43 % zu drücken, um damit eine Neuwahl des nationalen Parlaments herbeizuführen, kann zumindest die UNM bei diesen Kommunalwahlen durchaus Erfolge vorweisen. Die UNM hat es nicht nur geschafft, sich weiter zu stabilisieren. Sie konnte noch mehr Stimmen als bei den Parlamentswahlen 2020 für sich verbuchen und liegt nun landesweit über 30%. Hinzu kommt, dass die UNM es nicht nur in zahlreichen Städten geschafft hat, übermächtige GD-Kandidaten in eine Stichwahl zu zwingen. In der Hauptstadt Tbilisi stellte sich der neue UNM-Vorsitzende Nikanori Melia als Oberbürgermeister zur Wahl. Der Abstand zum prominenten GD-Kandidaten, dem ehemaligen Fußballprofi Kakha Kaladze war mit elf Prozentpunkten zugunsten des Letzteren noch am größten. Aber in Kutaissi und Batumi erreichten die UNM-Kandidaten Khatia Dekanoidze und Giorgie Kirtadze größeren Zuspruch als die von GD. In Rustavi betrug der Vorsprung des GD-Kandidaten Nico Lacabidze gegenüber Davit Kirkitadze von der UNM lediglich 1,4 Prozentpunkte. Gibt es in absehbarer Zeit wieder UNM-Bürgermeister in Kutaissi, Batumi oder Rustavi, Städte, die nicht nur strategisch, sondern auch wirtschaftlich von großer Bedeutung sind? Die entscheidende Frage wird sein, wie sich die kleineren Oppositionsparteien diesbezüglich positionieren. Da zeichnet sich nach den Ergebnissen vom vergangenen Samstag ein „Königsmacher“ ab.
Ehemaliger Premierminister als „Königsmacher“
Giorgi Gakharia, der vormalige Premierminister mit durchaus seriöser internationaler Reputation, trat Anfang des Jahres überraschend zurück, verließ GD und gründete eine neue Partei: „Für Georgien“. Er oder besser gesagt, dessen Wähler könnten nun die Königsmacher in den betreffenden Städten sein, da allein deren Stimmen reichen würden, um jeweils die Mehrheit zu erreichen. Aber natürlich sind das reine Rechenspiele. Giorgi Gakharia hat bereits angekündigt, für keine Seite eine Wahlempfehlung abgeben zu wollen. Auch andere kleine Parteien wie „Lelo“ oder „Girchi“ könnten insbesondere in den Stadträten in Zukunft eine Rolle als Mehrheitsbeschaffer spielen. Der „Georgische Traum“ allein hat keine Mehrheit mehr!
Ein weiterer Trend sollte erwähnt werden. Die EVP-Partnerpartei „European Georgia“ rutscht trotz prominenter Mitglieder und langjähriger Politikerfahrung ihres Personals immer mehr in die Bedeutungslosigkeit ab. Nach den Ergebnissen vom Samstag spielt diese 2017 von der UNM abgespaltene Partei mit Politikern und ehemaligen engen Vertrauten Saakashvilis keine Rolle mehr. Giga Bokeria, Giorgi Kandelaki oder Giorgi Tsereteli scheinen sich endgültig verzockt zu haben.
Die Rückkehr: kalkulierter „Coup“ oder endgültige Niederlage?
All diese Überlegungen über Mehrheitsverhältnisse in den Provinzparlamenten etc. sollten nicht darüber hinwegtäuschen, dass für ganz Georgien die extrem polarisierte Situation bestehen bleibt. Die Frage, ob eventuell Vertreter der UNM durch den Gewinn von Bürgermeisterposten die Allmacht der Regierungspartei GD brechen könnten, verblasste spätestens mit der Ankündigung, der ehemalige Präsident Mikheil Saakashvili wolle am Wahltag wieder georgischen Boden betreten. Nach einem scheinbar von ihm selbst abgesetzten Post wollte er zwei Stunden nach Schließung der Wahlkabinen in Georgien persönlich erscheinen, acht Jahre nach Beginn seines politischen Exils.
Am Wahltag machte im Internet ein Video die Runde, das ihn nachts angeblich in Batumi zeigte, also auf georgischem Boden. Andere Bilder ließen ihn vor aktuellen Wahlplakaten auf anonymen Straßen in die Kamera lachen. Zwei Stunden später sah man den ehemaligen Staatspräsidenten stolz lachend, wie er von zwei Sicherheitsbeamten abgeführt wurde und zwar in der Hauptstadt Tbilisi. Nach offiziellen Informationen sitzt er seither in einem Gefängnis in Rustavi ein. Eine von Saakashvili angekündigte Kundgebung für Sonntag, den 3. Oktober im Zentrum Tbilisis kam nicht zustande. Zu einer Kundgebung der UNM in der Nähe des Gefängnisses in Rustavi kamen deutlich weniger Teilnehmer als zuvor angenommen. Ist der „Micha-Effekt“ verpufft und nur noch eine leere Drohung der Opposition?
Georgiens politische Elite und deren fataler Hang zur „Abrechnung“
Sprechen die durchaus positiven UNM-Wahlergebnisse vom vergangenen Samstag für oder gegen Mikheil Saakashvilis hoch riskantes Spiel? Oder platzt da gerade nur eine mediale „Blase“? Die Wahlbeteiligung von gerade mal 51 Prozent macht nicht den Eindruck, als ließe sich ein Großteil der Bevölkerung von der ewigen „Bidzina versus Micha“ - Rhetorik groß beeindrucken. Wenn oben von einer „polarisierten Situation“ die Rede war, so bezieht sich das nur auf den politisch aktiven Teil der Bevölkerung. Am Sonntag, dem Tag nach der Wahl und der Festnahme M. Saakashvilis, äußerte der amtierende Premierminister Irakli Garibashvili, dies sei der „Tag von Bidzina…“. Gemeint war damit, dass mit der Verhaftung Saakashvilis und der Androhung einer langjährigen Haftstrafe der Oligarch und tatsächliche politische Strippenzieher in Georgien, Mäzen, Gründer und Finanzier der Partei GD, Bidzina Ivanishvili, die Auseinandersetzung mit dem vormaligen Präsidenten endgültig gewonnen habe. Die Alltagssorgen der georgischen Bürger hingegen fanden kaum Aufmerksamkeit, trotz wirtschaftlicher Krise und einem dramatischen Verlauf der Pandemie.
Georgien bleibt politisches Hochdruckgebiet
All dies sind zwar nur Momentaufnahmen. Aber es ist noch nicht abzusehen, wie diese Situation den öffentlichen Diskurs weiter beeinflusst. Damit bleibt es weiter spannend! Gleichzeitig bleiben strukturelle Probleme weiter unangetastet und verschärfen sich zum Teil weiter. Dazu gehört, dass die Regierungspartei auf finanzielle und administrative Ressourcen zugreift, die für die anderen Parteien unerreichbar sind und auch vor dem Rückgriff auf Geheimdienste nicht zurückzuscheuen zu scheint. So kostete der Wahlkampf von GD beispielsweise mehr als 5 Millionen Lari (entspricht ca. 1,4 Millionen Euro), die größte Oppositionspartei UNM dagegen konnte nur etwa 66.000 Lari (entspricht ca. 18.000 Euro) für ihren Wahlkampf aufbringen. Darüber hinaus versucht die Regierungspartei weiterhin durch einen Diskurs, der vor Beschimpfungen wie „Verräter“ oder „Feind“ oder „Bolschewik“ nicht zurückschreckt und Vertretern der Opposition damit droht, nach den Wahlen mit ihnen „aufzuräumen“, die eigene Wählerschaft zu mobilisieren. Auch Vertreter anderer politischer Parteien befleißigen sich einer Rhetorik, die Zweifel aufkommen lässt, ob Georgiens Demokratie bereits auf festen Fundamenten steht. Inakzeptable personelle Beleidigungen, Androhung und offen zur Schau getragene Bereitschaft zur Gewalt waren leider auch Komponenten in diesem Wahlkampf. Aber die politische Elite eines Landes, das seit Jahren die Aufnahme in die EU zu einem wichtigen außenpolitischen Narrativ erklärt hat, muss sich daran messen lassen. Sowohl internationale Wahlbeobachtermissionen der OSZE, aber beispielsweise auch die US-Botschaft in Tbilisi monierten in offiziellen Statements ganz klar diese Formen des Wahlkampfes.
Zusammenfassung
Abschließend bleibt festzustellen, dass GD keine alleinige Mehrheit mehr hat. Gleichzeitig dominieren GD und UNM weiter die politische Landschaft.
Ist Mikheil Saakashvilis Weg vom erfolgreichen Volkstribun und Reformator in der eigentlichen postsowjetischen Zeit von 2003 bis 2013 hin zum prominenten Insassen einer traurigen Gefängniszelle in Rustavi damit politisch am Ende? Dann wäre dieser Tag eine ernstzunehmende Zäsur nicht nur für die ehemalige Reformerpartei UNM, sondern für ganz Georgien. Sollte die UNM sich selbst eingestehen, nach der letzten Parlamentswahl einen weiteren, erfolgreichen Wahlkampf geführt zu haben, dann müssen sich deren Führungskader die Frage beantworten, ob sie dies wegen oder trotz ihres bisherigen Heroen Mikheil Saakashvili erreicht haben.
Теми
Предоставена от
Regionalprogramm Politischer Dialog Südkaukasus
За тази поредица
Фондация „Конрад Аденауер“ разполага със собствени представителства в 70 държави на пет континента. Чуждестранните локални сътрудници могат да ви информира от първа ръка относно актуалните събития и пълносрочните проекти във вашата държава. В „Локална информация“ те предлагат на потребителите на уебсайта на фондация „Конрад Аденауер“ ексклузивни анализи, историческа информация и оценки.
Моля регистрирайте се, за да можете да коментирате.