Asset-Herausgeber

Fehler bei der Verarbeitung der Vorlage.
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-Herausgeber

Die Neuwahl der moldauischen Legislative stellt eine Zäsur für die ehemalige Sowjetrepublik dar – und zwar in mehrfacher Hinsicht. Zum einen hat PAS das beste prozentuale Ergebnis nach Stimmen aller Zeiten für eine politische Partei in der Republik Moldau erzielen können. Zum anderen ist dieser Erfolg u.a. darauf zurückzuführen, dass – wie schon im letzten Präsidentschaftswahlkampf – nicht mehr die bis dato klassischen geopolitischen Differenzen zwischen einer Ausrichtung in Richtung Europa oder Russland die Agenda bestimmt hatten. Vielmehr setze sich PAS glaubwürdig für Reformen zu Demokratie, Rechtsstaat und Marktwirtschaft ein – während die Sozialisten vor allem gegen Sandu und eine angeblich mit ihr verbundene Einmischung westlicher Mächte in die inneren Angelegenheiten der Republik Moldau Stellung bezogen.

Die Präsidentin deutete am Wahlabend das Ergebnis als „Ende der Regierung der Diebe“ – mit Verweis auf das im Februar 2019 gewählte Parlament, das unter demokratisch fragwürdigen Umständen noch unter dem Regime des Oligarchen Plahotniuc gewählt worden war. Dessen Demokratische Partei (PDM) war mit abhängigen „Unabhängigen“ und Proxy-Parteien auf de facto 40 Mandate gekommen – und hat nun unter demokratischeren Bedingungen nicht einmal mehr zwei Prozent der Stimmen auf sich vereinen können. Auch in dieser Hinsicht stellt der Wahlsieg von PAS eine Zäsur dar: erstmals hat mit PAS eine Partei eine Wahl gewonnen, die nicht unter dem Einfluss oligarchischer Strukturen steht.

Als Präsidentin ist Maia Sandu mittlerweile parteilos. Den Vorsitz von PAS hat der langjährige Generalsekretär Igor Grosu übernommen. In entscheidenden Wählerschichten war die Wahl aber eine Art Referendum über Sandus Kurs. Mit PAS verbindet ein erheblicher Teil der Bevölkerung das positive Image von Maia Sandu, die bereits als Premierministerin (Juni – November 2019) und früher als Bildungsministerin konsequent und glaubwürdig für Integrität und Korruptionsbekämpfung eingetreten ist.

Nun steht PAS vor der Herausforderung, das bereits vor der Pandemie wirtschaftlich und sozial angeschlagene Land auf einen gründlichen Reformkurs zu bringen. Dabei dürfte vor allem eine Reform des in erheblichen Teilen mit Korruption verbundenen Justizwesens eine zentrale Rolle spielen. Aber auch in ökonomischer Hinsicht braucht die Republik Moldau dringend Strukturreformen. Bereits der hohe Anteil der Diaspora-Stimmen weist darauf hin, dass vor allem junge, gut ausgebildete Menschen für sich keine Zukunft mehr im Inland sehen. Zwar ist mit einer Annäherung an die EU und entsprechender Unterstützung zu rechnen, jedoch sind die wirtschaftlichen Rückstände kaum in einer Legislaturperiode aufzuholen. Darüber hinaus wird es für PAS auch schwierig sein, in größerem Umfang hinreichend qualifiziertes und verlässliches Personal für Regierung und Verwaltung zu finden, weil große Teile der Eliten ausgewandert sind. Charakteristisch für den Zustand der moldauischen Demokratie ist zudem nach wie vor, dass immerhin noch mehr als fünf Prozent der Wähler für die Shor-Partei gestimmt haben – die sich mittels eines Netzwerks aus sog. „Sozialgeschäften“ durch materielle Zuwendung die Loyalität armer Wähler gesichert hat.

Mit nur drei Parteien im Parlament erfolgt auch eine Konsolidierung des seit Jahren fragmentierten politischen Spektrums der Republik Moldau. U.a. scheiterte an der gesetzlich festgelegten Hürde das Bündnis des Bürgermeisters der zweitgrößten Stadt Balti, Renato Usatii, der in der ersten Wahlrunde der Präsidentschaftswahl immerhin auf 17 Prozent der Stimmen gekommen war und sich als Alternative v.a. für die russischsprachige Wählerschaft präsentiert hatte. Auch die Plattform Würde und Wahrheit (PDA), die ebenso wie PAS der EVP angehört und 2019 mit PAS einen gemeinsamen Wahlblock gebildet hatte, verpasste den Einzug ins Parlament mit weniger als drei Prozent der Stimmen.

Asset-Herausgeber

Kontakt

Dr. Martin Sieg

martin.sieg@kas.de

comment-portlet

Asset-Herausgeber