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

Am Freitag wählen Iranerinnen und Iraner zum 13. Mal seit der Islamischen Revolution 1979 einen neuen Präsidenten. Nach zwei Amtsperioden darf der amtierende Präsident Hassan Rohani qua Verfassung nicht für eine weitere Amtszeit antreten. Rohani – der als Pragmatiker gilt und 2013 und 2017 mit großem Vorsprung gegen seine Gegner aus dem konservativen Lager gewann – konnte mit Blick auf seine reformpolitischen Versprechen, den Iran der Welt gegenüber zu öffnen, nur begrenzte Erfolge erzielen. Nach der erneuten Verhängung von US-Sanktionen und einer sich verschlechternden Wirtschaftslage, geben viele Iranerinnen und Iraner seiner Regierung die Schuld an der aktuellen Notlage.

Eine politische Vorauswahl

Zu den Besonderheiten der Wahlen im Iran gehört, dass mögliche Kandidaten vom Wächterrat auf die „Konformität“ ihrer ideologischen Haltung und Loyalität gegenüber der politischen Ordnung geprüft und nur eine kleine Auswahl zur Wahl zugelassen werden. Der zwölfköpfige Wächterrat – ein Kontrollgremium, das de facto unter der Kontrolle des Obersten Führers Ayatollah Ali Khamenei steht – fungiert als eine Art „Politbüro“ und Verfassungsgericht der Islamischen Republik. Ausgesprochene Regierungs-gegner und religiöse Minderheiten können nicht kandidieren, Frauen wurden bisher immer ausgeschlossen – der Überprüfungs- und Entscheidungsprozess ist hochgradig intransparent. Während der Wächterrat in der Vergangenheit auch reform-orientierte Politiker zur Wahl zuließ und damit zumindest die Auswahl zwischen unterschiedlichen politischen Strömungen ermöglichte, lehnte er bereits bei den Parlamentswahlen im Februar 2020 zahlreiche Kandidatinnen und Kandidaten der Moderaten und Reformkräfte ab. Als der Rat am 25. Mai schließlich die finale Kandidatenliste für die diesjährige Präsidentschaftswahl bekannt gab, hagelte es von vielen Seiten Erstaunen und Kritik. Von den hunderten für die Wahlen registrierten Kandidaten wurden sieben zugelassen – fünf von ihnen gelten als „Hardliner“.

Die Entscheidung des Rates, prominente und einflussreiche politische Persönlichkeiten wie Ali Laridschani, einen zentristischen Konservativen und ehemaligen Parlamentssprecher, den derzeitigen Vizepräsidenten Eshaq Jahangiri und den ehemaligen Präsidenten Mahmoud Ahmadinedschad von der Wahl auszuschließen, hat auch konservative politische Kreise im Iran aufgeschreckt. Der aus einer prominenten politischen Familie stammende Laridschani gilt als enger Verbündeter des amtierenden Präsidenten Rouhani und unterstützt die Wieder-belebung des Atomabkommens. Nachdem er Teherans Hauptverhandlungsführer im Atomabkommen von 2015 gewesen war, wurde er erst letztes Jahr von Ayatollah Khamenei ernannt, um die Verhandlungen für ein 25-jähriges Wirtschaftsabkommen zwischen dem Iran und China zu führen. Er war der gemäßigte Kandidat, dem die besten Chancen auf die Nachfolge von Rohani eingeräumt wurden. Dass seine Kandidatur trotz seiner Nähe zum Establishment abgelehnt wurde, spricht für den Versuch mächtiger Fraktionen der Revolutionsgarden in Zusammenarbeit mit Khamenei, ihre Macht zu konsolidieren und das politische System noch weiter zu vereinheitlichen. Die konservativen Verbündeten Khameneis und der erweiterte Dunstkreis der Revolutionsgarden dominieren schon jetzt das Parlament und die Justiz.

Der auch im Westen gut bekannte iranische Außenminister Mohammad Javad Zarif sprach auf einer im April durchgesickerten Gesprächsaufzeichnung über eben diese innen- wie außenpolitischen Machtbestrebungen der Revolutionsgarden. Seine Kommentare schlugen im Land hohe Wellen und der ebenfalls als potenzieller reformistischer Kandidat gehandelte Zarif trat nicht zur Wahl an.

Breite Kritik und Boykottaufrufe

Protest an der Einschränkung durch den Wächterrat kommt gleichermaßen aus reformistischen und konservativen Kreisen sowie der Bevölkerung. In einem Brief an Khamenei drängte Präsident Rohani darauf, die Entscheidung des Wächterrats zu überdenken: „Der Kern von Wahlen ist der Wettbewerb. Nimmt man ihn weg, werden sie zu einer Leiche“. Auch der Chefredakteur der den Revolutionsgarden nahestehenden Nachrichtenagentur Tasnim kritisierte die Entscheidung des Rates und auch Spitzenkandidat Ebrahim Raisi selbst äußerte sich besorgt und teilte mit, er habe sich beim Wächterrat für die Zulassung weiterer Kandidaten eingesetzt.

In der Vergangenheit gingen viele Iranerinnen und Iraner wählen – bei den Präsidentschaftswahlen 2017 zuletzt 73 Prozent – doch der Anschein einer politischen Intrige hat nun breite Rufe nach einem Wahlboykott ausgelöst; insbesondere unter der jungen Bevölkerung. Auf der Diskussionsplattform Clubhouse finden derzeit hitzige Diskussionen im In- und Ausland über die Frage statt, ob zur Wahl gegangen werden soll. Selbst Umfragen von Regierungsbehörden gehen davon aus, dass nur zwischen 30 und 40 Prozent der Wahlberechtigten ihre Stimme abgeben werden. Die Hälfte davon gab Ende Mai an, Raisi zu unterstützen – die andere Hälfte war noch unentschlossen. Die Corona-pandemie, ihr Missmanagement und die schwerfällige Verteilung der Impfstoffe werden zusätzlich zur Enttäuschung vieler Menschen im Iran über nicht eingetroffene Verbesserungen oder Reformen als Gründe für die Wahlverdrossenheit gesehen.

Die niedrigste Wahlbeteiligung gab es bisher bei den Präsidentschaftswahlen im Jahr 1989 mit nur 54,6 Prozent. Auch im Iran steht eine hohe Wahlbeteiligung für eine Legitimationsbestätigung, sowohl des Obersten Führers und der politischen Elite als auch der Islamischen Republik selbst. Khamenei erließ eine Fatwa, in der er die Stimmabgabe mit leeren Stimmzetteln als nach islamischem Recht verboten bezeichnete, da sie zur Schwächung des Regimes beitrage. Hassan Khomeini, Enkel des Gründungsvaters der Islamischen Republik, mahnte jüngst, „die Stimme des Volkes ist eine Bedingung für die Legitimation des Systems“. Eine Regierung, die keine allgemeine Akzeptanz genieße, hätte daher auch „keine Legitimation“. Die diesjährige Präsidentschaftswahl könnte die niedrigste Wahlbeteiligung in Irans Geschichte erfahren.  

Raisi – Kandidat mit höchsten Chancen bei schwacher Konkurrenz

Der Establishment-Favorit Ebrahim Raisi, Oberster Richter der Islamischen Republik, wird von iranischen und internationalen Beobachtern als voraussichtlicher Wahlsieger gehandelt. Raisi genießt breite Unterstützung im erzkonservativen Lager und nach der Disqualifizierung anderer prominenter Kandidaten stehen seine Chancen gut. Bei der Präsidentschaftswahl 2017 verlor er gegen den amtierenden Rohani. Einige Beobachter sehen Raisi auch als Spitzenkandidaten für die Nachfolge des 82-jährigen Obersten Führers Khamenei. Er ist ebenfalls Vizepräsident des mächtigen Expertenrats, der für die Wahl und Überwachung des Obersten Führers verantwortlich ist. Raisi wird vorgeworfen, für Massenhinrichtungen iranischer Häftlinge Ende der 1980er-Jahre verantwortlich zu sein, weswegen er u.a. unter US-Sanktionen steht. Seine letzten Jahre als Oberster Richter waren geprägt von zunehmender Unterdrückung der Opposition und vermehrten Menschenrechtsverletzungen. Die weiteren vier konservativen Kandidaten sind wenig bekannt.

Zwei Namen, die nicht aus dem konservativen Lager stammen und dennoch zur Wahl zugelassen wurden, sind Mohsen Mehralizadeh und Abdolnasser Hemmati. Mehralizadeh zog seine Kandidatur am letzten Wahlkampftag zurück, um die Chancen für Hemmati zu erhöhen. Dieser fungierte seit 2018 als Zentralbankchef und gilt als gemäßigter Technokrat. Hemmati steht gewissermaßen „zwischen den Stühlen“, denn er wurde von beiden Flügeln der politischen Faktionen, sowohl unter Hardliner-Präsident Ahmadinedschad als auch Reformist-Präsident Rouhani, zu prominenten Positionen ernannt. Aufgrund der geringen Chancen Hemmatis auf einen Wahlsieg, wird seine Zulassung von Beobachtern als eine „abgeschwächte Form der Konkurrenz“ eingeschätzt, die das Hardliner-Establishment gegen Vorwürfe der Wahlmanipulation schützen soll.

Erwartungen und Ausblick

Im Iran gilt der Oberste Führer, seit 1989 Ayatollah Ali Khamenei, als die wichtigste politische Instanz des Landes. Er ist nicht nur geistliches Oberhaupt, sondern auch militärischer Oberbefehlshaber. Er gibt die politischen Leitlinien vor, kontrolliert Justiz und Medien und hat die letzte Entscheidungsgewalt in politischen Prozessen. Vor diesem Hintergrund ist eine politische Kontinuität, vor allem bei Themen wie der iranischen Regionalpolitik und der Beteiligung an Stellvertreterkriegen im Ausland, zu erwarten. Die systemischen Hauptakteure in der Außenpolitik sind vorrangig Elemente des tiefen Staates wie die Revolutionsgarden; so spielt das iranische Außenministerium bei den Gesprächen mit Saudi-Arabien in Bagdad beispielsweise keine Rolle. Was könnte eine mögliche Präsidentschaft von Establishment-Kandidat Raisi bedeuten?

Kontinuität in der Außenpolitik

Klar scheint zu sein: die Ära der gemäßigten Präsidentschaft unter Hassan Rouhani wird am 18. Juni enden. Und das zu einer Zeit, wo in Wien Gespräche über eine mögliche Wiederherstellung des Atomabkommens von 2015 (JCPOA) laufen. Nach dem einseitigen Ausstieg der USA aus dem Atomabkommen unter Präsident Trump im Jahr 2018 hatte Teheran seit Juli 2019 schrittweise gegen Verpflichtungen des Abkommens verstoßen, um Zugzwang zu erzeugen – und in den vergangenen Monaten den Druck auf die Verhandlungspartner erhöht. Khamenei erlaubte Präsident Rohani, wenn auch warnend, den Dialog mit den USA. Die Aufkündigung des Nukleardeals durch die USA und die sich anschließende „Politik des maximalen Drucks“ zerschoss Rohanis außenpolitischen Erfolg und das Versprechen, mit dem er 2013 die Wahlen gewann. Das gab den Hardlinern im Iran einen Narrativ, um die Diplomatie-orientierte außenpolitische Strategie der Regierung anzufechten und die Rolle des konservativen Establishments in der Außenpolitik zu erhöhen. Auch die iranische öffentliche Meinung verschob sich hin zu einer Unterstützung der Regime-Reaktion des „maximalen Widerstands“.

Dennoch gibt es bisher keine Anzeichen für ein iranisches Abrücken von einer JCPOA-Rückkehr. In einer Fernsehdebatte kommentierte Raisi jüngst, er werde dem JCPOA wie jedem anderen Abkommen verpflichtet bleiben, doch eine wirksame Umsetzung erfordere eine „starke Regierung“ und eine verifizierte Aufhebung der Sanktionen. Trotzdem könnte ein Präsident Raisi, insbesondere auch aufgrund der ihm vorgeworfenen Menschenrechtsverletzungen, die Gesprächsbereitschaft auf der internationalen Bühne – und damit eben auch in den JCPOA-Verhandlungen – negativ beeinflussen. Die von ihm erwartete populistische und nationalistische Rhetorik sowie die zu erwartende niedrige Wahlbeteiligung könnten das Ansehen des Iran im Ausland weiter beschädigen und die Verhandlungsmacht von Präsident Raisi bedeutend schmählern. Die generell pessimistische und zurückhaltende Einstellung gegenüber dem Westen und der iranische „Blick Richtung Osten“ – die Weiterentwicklung der Beziehungen mit Russland und China – werden unter einem Präsidenten Raisi bestehen bleiben.

Innenpolitische Verhärtung

Besonders wirtschaftliche Themen spielen bei den Wahlen eine bedeutende Rolle. Staatliches Missmanagement und die Auswirkungen der Sanktionen, die durch die Coronapandemie noch verschärft wurden, haben den Iran in eine der schwersten Wirtschaftskrisen seit dem Iran-Irak-Krieg der 1980er Jahre gestürzt. Iranerinnen und Iraner leiden unter hoher Inflation, hoher Arbeitslosigkeit und wachsender sozioökonomischer Ungleichheit. Als das Regime 2019 die Benzinpreise erhöhte, gingen im ganzen Land tausende Menschen auf die Straße und forderten den Rücktritt der politischen Elite – bis die Proteste unter der Verantwortung von Raisi als Oberstem Richter blutig niedergeschlagen wurden. Seit seinem Amtsantritt als Oberster Richter hat er in öffentlichkeitswirksamen Korruptionsprozessen auch staatliche Würdenträger und Richter ins Visier genommen – so beispielsweise seinen Vorgänger an der Spitze der Justizbehörde und politischen Widersacher, Sadegh Laridschani.

Raisi machte den Kampf gegen Korruption, Armut und Arbeitslosigkeit zu seinen zentralen Wahlkampfslogans und präsentierte sich als „Gegner von Korruption, Ineffizienz und Aristokratie“. Er versprach, der Verzweiflung und Hoffnungslosigkeit durch die wirtschaftliche Notlage im Land entgegenzuwirken. Wie alle anderen Kandidaten konnte er bisher jedoch keinen Vorschlag für konkrete wirtschaftliche Reformen präsentieren. Beobachter erwarten, ein Präsident Raisi würde vorrangig in nationale Infrastruktur investieren, welche größtenteils unter Kontrolle der Revolutionsgarden steht. Innenpolitisch ist neben einem härteren Vorgehen gegen Protest und Opposition eine Machtkonsolidierung des Establishments zu erwarten, insbesondere durch Raisis enge Koordinierung mit den konservativen Eliten und dem tiefen Staat.

Asset Publisher

Contact

Simon Engelkes

Simon Engelkes

Head of the Ramallah office

simon.engelkes@kas.de +972 2 240 4305 +972 2 240 4307

comment-portlet

Asset Publisher