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 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> 

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 bild

Head of the Ramallah office

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

comment-portlet

Asset Publisher

About this series

The Konrad-Adenauer-Stiftung is a political foundation. Our offices abroad are in charge of over 200 projects in more than 120 countries. The country reports offer current analyses, exclusive evaluations, background information and forecasts - provided by our international staff.