资产发布器

处理模板时发生错误。
The following has evaluated to null or missing:
==> FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) [in template "252001#252047#252845" at line 128, 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 128, 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('beschreibung', languageId, json)> 
111 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } > 
112 </#if> 
113 
114 <#-- fill meta data --> 
115 <#assign meta = {} /> 
116 
117 <#-- PUBLIKATIONEN DETAIL --> 
118 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
119 
120 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)> 
121 <#assign 
122 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first") 
123 /> 
124 
125 <#if coverBildString?has_content> 
126 <#assign 
127 coverBild = FrontendService.json.parseAsJson(coverBildString) 
128 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) 
129 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid ) 
130 data = data + { "media": linkToDMT, "meta" : dMTJsonObject } 
131 /> 
132 <#if dMTJsonObject.altText?? > 
133 <#assign data = data + {"alt" : dMTJsonObject.altText} /> 
134 </#if> 
135 <#if dMTJsonObject.quelle??> 
136 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } /> 
137 </#if> 
138 </#if> 
139 <#-- uncomment to display pdf cover as Intro Image 
140 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)> 
141 <#assign 
142 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first") 
143 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/> 
144 <#if fileEntry?has_content> 
145 <#assign 
146 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay) 
147 data = data + { "media": linkToThumbnail } 
148 /> 
149 </#if> 
150 --> 
151 </#if> 
152 
153 <#assign 
154 meta = meta + { "orderInfo": "true" } 
155 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!"" 
156 /> 
157 
158 
159 
160 <#if hasContent('erscheinungsdatum', languageId, json)> 
161 <#assign 
162 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
163 /> 
164 <#if erscheinungsdatum?has_content > 
165 <#assign 
166 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId ) 
167 meta = meta + { "date": erscheinungsdatumFormatted } 
168 /> 
169 </#if> 
170 </#if> 
171 
172 <#if verbundJournalArticle?has_content> 
173 <#assign 
174 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey) 
175 verbundJson = FrontendService.json.parseAsJson(verbundJsonString) 
176 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first") 
177 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first") 
178 /> 
179 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" /> 
180 <#assign meta = meta + { "laufendenummer": laufendenummer } > 
181 
182 <#if coverImg?has_content && coverImg.url?has_content > 
183 <#assign meta = meta + { "coverImg": coverImg.url } > 
184 </#if> 
185 </#if> 
186 
187 
188 <#if meta?has_content> 
189 <#assign data = data + {"meta": meta } > 
190 </#if> 
191 
192 </#if> 
193 <#-- PUBLIKATIONEN DETAIL END --> 
194 
195 
196 <#-- VERANSTALTUNGEN DETAIL --> 
197 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
198 <#assign 
199 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!"" 
200 links = [] 
201 /> 
202 <#if availablelanguages?has_content && friendlyUrl?has_content> 
203 <#if (availablelanguages?size > 1) > 
204 <#list availablelanguages 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 <#if availablelanguages?has_content> 
411 <#list availablelanguages as pdf_language> 
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 </#list> 
436 </#if> 
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> 

资产发布器

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.

资产发布器

联系人

Stephan Malerius

Stephan Malerius

Leiter des Regionalprogramms Politischer Dialog Südkaukasus

stephan.malerius@kas.de +995322459112
+995322459113

comment-portlet

Kommentare

Bitte melden Sie sich an, um kommentieren zu können

资产发布器

关于这个系列

德国康拉德•阿登纳基金会在全球五大洲将近70个国家设有自己的代表处。国外工作人员可在现场报告第一手的最新动态和他们驻在国的长期发展。在“国家报道“里,他们提供康拉德•阿登纳基金会网站用户各种独家分析、背景信息和评估。