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

Ein Jahr nach der Explosion

Vor einem Jahr, am 4. August 2020, erschütterte Beirut eine Explosion gewaltigen Ausmaßes. Es war eine der größten nicht nuklearen Explosionen der modernen Nachkriegsgeschichte. Über 200 Menschen starben, es gab tausende Verletzte, rund 70.000 Menschen verloren ihre Arbeit und rund 300.000 Menschen ihr Zuhause.[i]

Im Hafen gelagertes Ammoniumnitrat verursachte die Explosion. Wie Reuters zuletzt berichtete, stellte das für entsprechende Ermittlungen angereiste FBI bereits letzten Herbst fest, dass knapp über 550 Tonnen für die Explosion verantwortlich waren. Das sind nur etwa ein Fünftel der rund 2.754 Tonnen, die außerplanmäßig 2013 auf einem Cargo Schiff im Hafen eintrafen und welche den Hafen nie wieder verließen.[ii] Viele vermuten, dass der Rest des toxischen Salzes gestohlen wurde.[iii]

Doch wie kam es dazu, dass, neben diversen anderen hochgefährlichen toxischen Chemikalien, die im Rahmen der Aufarbeitung gefunden wurden,[iv] bis zu 2.754 Tonnen Ammoniumnitrat – klassischer Weise auch für den Bau von Sprengstoff verwendet – so lange im Beiruter Hafen lagerten, hochexplosiv und ungesichert? Wer ist verantwortlich für die Katastrophe, die noch heute auf den Straßen der Stadt zu sehen, in den Gesichtern der Menschen zu spüren, in den Alltagsgeschichten der Menschen zu hören ist?

Unmittelbar nach der Explosion kündigte die libanesische Regierung eine lückenlose Ermittlung an, gab eine Untersuchungskommission bekannt und teilte mit, man werde die Verantwortlichen in nur vier Tagen finden.[v] Tatsächlich geschah jedoch lange kaum etwas. Allein die Regierung trat sechs Tage nach der Explosion geschlossen zurück.[vi] Die Katastrophe jährt sich nun und bis heute: keine fortgeschrittenen Ermittlungen, keine Anklage, obwohl sich der verantwortliche Untersuchungsrichter darum bemüht. Es scheitert vor allem: an der Frage der Immunität.

Ist das Sonderstrafgericht unabhängig?

Der Fall liegt dem sog. Court of Justice vor, ein Sonderstrafgericht, welches besonders gravierende Fälle verhandelt und allein dann verantwortlich ist, wenn es per Beschluss des Ministerrates Fälle übertragen bekommt (Art. 355 der libanesischen Strafprozessordnung[vii]). Die einzelnen Richter des Gerichts - fünf an der Zahl - werden, mit Ausnahme des Vorsitzenden, auf Empfehlung des Justizministers und mit Zustimmung des obersten Justizrates, dem sog. Supreme Judicial Council, von der Regierung ernannt (Art. 357 Abs. 1). Einzige Voraussetzung: Es müssen Richter des Kassationsgerichtes sein. Dies ist auch die einzige Voraussetzung für den Untersuchungsrichter, der ebenfalls vom Justizminister, mit Zustimmung des obersten Justizrates, eingesetzt wird (Art. 360 Abs. 2). Was hierbei zu erwähnen ist: acht der zehn Mitglieder des obersten Justizrates werden seitens der Regierung ernannt.[viii]

Nebenbei: Derzeit hat der Rat nur vier Mitglieder. Denn im Mai endete von sieben der zehn Richtern die Amtszeit. Zwar waren zu diesem Zeitpunkt die entsprechenden Entscheidungen im konkreten Fall schon getroffen, aber braucht der Rat grundsätzlich ein Quorum von sechs Richtern, um entscheidungsfähig zu sein. Die Politik müsste fünf dieser sieben neu bestimmen, kann sich derzeit jedoch nicht auf die Kandidaten einigen; von den zweien durch die Richterschaft gewählten Mitgliedern, konnte bisher nur einer gewählt werden.[ix]

Festzuhalten ist, dass die Unabhängigkeit des Sonderstrafgerichts fraglich ist. Jedenfalls werden die Grundsätze der Gewaltenteilung nicht eingehalten, die Exekutive bestimmt die Mehrheit der relevanten Akteure.   

Darüber hinaus unterliegt das Sonderstrafgericht besonderen prozessualen Regeln. Vor allem entscheidet es letztverbindlich (Art. 366 Abs. 2). Es gibt keine nächste Instanz. Es gibt keine Rechtsmittel, was weder den Grundsätzen eines fairen Verfahrens nach internationalen Rechtsgrundlagen, noch der libanesischen Verfassung und der hiesigen ordentlichen Gerichtsbarkeit entspricht. Ansätze dies zu ändern, gibt es bis dato nicht. 

Im Februar diesen Jahres musste der ursprünglich eingesetzte Untersuchungsrichter, Richter Fadi Sawan, aus Gründen der Befangenheit zurücktreten.[x] Seitdem führt Richter Tarik Bitar die Ermittlungen, auf Geheiß des (ebenfalls schon einmal wegen Befangenheit ersetzten verantwortlichen) Staatsanwalts Ghassan Khoury, der laut Gesetz die Anklagepunkte feststellt und dem Untersuchungsrichter die Ermittlungsakte übergibt (Art. 361). Der Untersuchungsrichter ist für die Anklageschrift verantwortlich. Ist diese fertiggestellt, enden die Ermittlungen und es beginnen die Verhandlungen vor Gericht (Art. 364 Abs. 1). Die Ermittlungen bleiben bis zur Fertigstellung der Anklageschrift vertraulich (Art. 53).

Angeklagt werden sollen die Beschuldigten für mehrere Verbrechen, darunter auch wegen Terrorismus. Hier droht in Libanon unter Umständen die Todesstrafe (Art. 315 des libanesischen Strafgesetzbuches).

Die Ermittlungsakte führt 37 Beklagte, mehrere davon werden festgehalten. Unter den Beschuldigten (und auf freiem Fuß) sind Hassan Diab, der noch amtierende Premierminister, der sechs Tage nach der Explosion mit der gesamten Regierung zurücktrat, sowie vier weitere ehemalige Minister. Drei der ehemaligen Minister sind Rechtsanwälte, drei sind zudem Abgeordnete des libanesischen Parlaments. Es liegen mehrere Hinweise vor, dass alle fünf vom explosiven Material im Hafen wussten, jedoch nichts zur Sicherung oder Beseitigung unternahmen. Präsident Aoun und Premierminister Diab wurden gar zwei Wochen vor der Explosion ausführlich über die gefährlichen Substanzen und die möglichen Folgen informiert.[xi]

Untersuchungsrichter Bitar möchte alle fünf, Premierminister und (ehemaligen) Minister, anhören.[xii] Dies wollte schon sein Vorgänger, Richter Fadi Sawan, dessen Vorhaben bereits im Dezember 2020 öffentlich bekannt wurde.[xiii]

Doch alle fünf - ob Christ, Sunnit oder Schiit, und egal in welcher Partei - kooperieren nicht. Sie beteuern ihre Unschuld und argumentieren, dass ihre Immunität Befragungen und Ermittlungen gegen ihre Person verbiete.[xiv] Zwei legten Beschwerde ein und erreichten damit im Februar die Absetzung Sawans wegen Befangenheit; eine der Begründungen: auch seine Wohnung war bei der Explosion beschädigt worden.[xv]

Die hohen Hürden für die Aufhebung der Immunität

Immunität ist der verfassungsrechtliche garantierte Schutz vor Strafverfolgung. Sie ist auch dem deutschen Recht nicht fremd, Art. 46 Abs. 2 GG regelt die Immunität des deutschen Bundestagsabgeordneten. Ein Vergleich ist aber schwierig, die Praxis ist im Zedernstaat eine andere. 

Der Präsident: Die Machtlosigkeit des Untersuchungsrichters

Es liegen Unterlagen vor, die darauf hinweisen, dass auch Präsident Michel Aoun vom Ammoniumnitrat wusste. Die Verfassung verbietet jedoch grundsätzlich die strafrechtliche Verfolgung des Präsidenten (Art. 60 der libanesischen Verfassung). Darunter fällt auch eine Verfolgung durch das Sonderstrafgericht. Er kann nur angehört werden (Art. 85). Die libanesische Verfassung sieht vor, dass allein eine Zweidrittelmehrheit des Parlaments die Immunität des Präsidenten aufheben und ihn anklagen kann.

Die mögliche Strafverfolgung durch das Parlament ergibt sich aus Art. 80 der Verfassung. Dieser regelt in einem Absatz die Installation des Obersten Rates, dem sog. Supreme Council for Trying Presidents and Ministers, dessen einzige Aufgabe es ist, über Präsidenten und Minister zu urteilen. Er kam jedoch bisher nicht einmal zur Anwendung, da sich das Parlament noch nie dazu entschlossen hat, einen Präsidenten oder Minister anzuklagen.[xvi]

Premierminister und Minister: Die Untätigkeit des Parlaments

Beim Premierminister und anderen Ministern ist es nicht ganz so einfach. Die Verfassung ist diesbezüglich nicht deutlich. Art. 70 der Verfassung, auf den sich der Premierminister und die vier (ehemaligen) Minister stützen, regelt: „Die Abgeordnetenkammer hat das Recht, den Premierminister und die Minister wegen Hochverrats oder wegen Verletzung ihrer Pflichten anzuklagen. Der Beschluss über die Amtsenthebung darf nur mit Zweidrittelmehrheit der gesamten Mitglieder der Kammer gefasst werden.“

Die Betroffenen schließen daraus, dass allein das Parlament das Recht zur Anklage hat – und auch das Parlament die Immunität aufheben muss.

Es finden sich jedoch zwei Entscheidungen des Kassationsgerichts, die zu einem anderen Ergebnis kommen.

Nizar Saghieh, Geschäftsführer von LEGAL AGENDA, eine der führenden NGOs des Landes, die sich besonders mit juristischen Thematiken auseinandersetzt, und sich ausführlich mit den rechtlichen Fragen rund um die Explosion beschäftigt, entnimmt den Entscheidungen zwei mögliche Auslegungs- und Erklärungsansätze, die sich auch der Untersuchungsrichter zu eigen machen könnte:[xvii]

Vorbehaltliche Immunität: Solange das Parlament nicht tätig wird

Die erste Möglichkeit: Die Verfassung sehe vor, dass die Judikative das Recht habe, Minister in Bezug auf Amtsverletzungen anzuklagen, solange es das Parlament nicht tut. Dies ergebe sich vor allem aus der ursprünglichen französischen Formulierung des Artikels. Dies kommt auch im Deutschen so zur Geltung kommt: „hat das Recht“, „a le droit“. Im Gegensatz zur anderslautenden eindeutigen Formulierung des Art. 60, der die Anklage und die Immunität des Präsidenten regelt. Nach einer systematischen Auslegung des Wortlauts muss also im Umkehrschluss eine Anklageerhebung gegen Minister möglich sein, solange das Parlament untätig bleibt. Die mögliche Strafverfolgung durch das Parlament ergibt sich, wie bereits erwähnt, aus Art. 80 der Verfassung.[xviii]

Begrenzte Immunität: Als Minister oder Privatperson

Die zweite Möglichkeit: die Verfassung sehe vor, dass zu differenzieren sei – zwischen Verbrechen, die der Minister im Rahmen seiner verfassungsmäßigen ministerialen Tätigkeit begangen, und solchen, die er außerhalb dieser Tätigkeit begangen habe. Fälle von Hochverrat oder einer Verletzung von Amtspflichten im Rahmen der ministerialen Kernaufgaben würden der Verfassungsimmunität nach Art. 70 unterliegen, das alleinige Recht zur Anklage obliege dem Parlament. Begehe der Minister jedoch ein Verbrechen als Privatperson oder nutze er seine Position für persönliche Interessen aus, so falle dies nicht unter die Verfassungsimmunität, die Judikative behalte ihr Recht zur Strafverfolgung. Dies gelte insbesondere in Fällen von rechtswidriger Bereicherung, für sich oder andere, und dann, wenn der Minister rechtswidrig seinen Einfluss geltend gemacht habe.[xix]

Beide Auslegungen ermöglichen gemeinhin eine Strafverfolgung durch den Untersuchungsrichter.

Trotz dieser Kassationsentscheidungen kam es jedoch erst einmal zur tatsächlichen Verurteilung eines Ministers. Im Übrigen ging auch die Judikative stets davon aus, dass das Recht der Strafverfolgung allein dem Parlament obliege; wurde jedenfalls nicht aktiv. Wird es diesmal anders sein?

Mehrere einflussreiche Rechtsakteure, darunter die Richtervereinigung, haben sich für eine differenzierte Auslegung des Art. 70 ausgesprochen, eine Ermittlung müsse ohne Parlamentsentscheidung zur Immunitätsaufhebung möglich sein.[xx] Auch der öffentliche Druck nimmt immer mehr zu.

Doch das Parlament rührt sich kaum, Minister und Regierung wiegeln ab, weisen Anhörungsanfragen zurück oder verhindern sie.[xxi] Der Premierminister verteidigte sich gleich nach den ersten Meldungen im Dezember damit, dass seine mögliche Anhörung nicht (nur) ein Angriff auf seine Person, sondern ein Angriff auf das Amt und damit auch auf seine Religionsgruppierung darstellen würde.[xxii] Im Libanon sind die einzelnen Ämter an Religionsgruppierungen gebunden. So ist der Premierminister beispielsweise stets Sunnit, der Präsident stets maronitischer Christ, der Parlamentspräsident Schiit. In diesem Fall unterstützten einflussreiche (sunnitische) Akteure den Premierminister. Sie machten aus der Frage der Aufklärung und Verantwortlichkeit der Vorfälle ein Politikum und sahen in der Bedrängung des Premierministers einen Angriff auf die gesamte Bevölkerungsgruppe der Sunniten.

Abgeordnete: Das Parlament muss aktiv werden

Drei der vier (früheren) Minister genießen des Weiteren Immunität als Abgeordnete des libanesischen Parlaments. Hier besteht wenig Auslegungsspielraum. Art. 40 der Verfassung sowie die Parlamentsregeln sehen vor, dass kein Abgeordneter während der Legislaturperiode Strafverfolgungen ausgesetzt sein darf, es sei denn, die Abgeordnetenkammer stimmt dem zu. Einzige Ausnahme: er wird in flagranti, also bei Ausübung der Tat, erwischt. Hier müsste das Parlament die Immunität also aufheben – oder die Anklage erstmal ausgesetzt werden.

Rechtsanwälte: Auch Rechtsanwälte genießen Immunität

Zuletzt genießen auch Rechtsanwälte Immunität im Rahmen ihrer juristischen Tätigkeit; diese kann jedoch von der verantwortlichen Rechtsanwaltskammer aufgehoben werden (Art. 79 Abs. 2 der libanesischen Berufsordnung für Rechtsanwälte).

Nachdem Untersuchungsrichter Bitar Anfang Juli um die Aufhebung gebeten hatte, folgten dem tatsächlich die Kammern in Tripoli und Beirut, die jeweils am 28. Juli bzw. 29. Juli die Immunität der drei (ehemaligen) Minister als Rechtsanwälte aufhoben. Während einer der drei nun tatsächlich angeklagt werden kann, genießen die anderen beiden noch immer Immunität als Abgeordnete.

Weitere Ankündigungen

Kurz vor dem Jahrestag erhitzen sich die Gemüter wieder, die Demonstrationen nehmen zu; schlagartig mehren sich die politischen Stimmen, die besänftigen und sich reinwaschen wollen. Anfang des Monats hatten sich Abgeordnete noch getroffen, um Bitars Forderungen nach möglichen Anhörungen und Aufhebungen der Immunität der Minister zu besprechen. Das Ergebnis: keines, sie ließen verlauten, sie bräuchten mehr Informationen.[xxiii]

Saad Al-Hariri, bis vor kurzem noch der designierte Premier und Stimme der stärksten sunnitischen Partei im Land, teilte eine Woche vor dem Jahrestag mit, seine Partei empfehle alle Regelungen auszusetzen, die die Immunität der Beteiligten gewähren würden.[xxiv] Dies nachdem mehrere Parteimitglieder von ihm zuvor eine Petition unterschrieben hatten, die nun, ein Jahr später und trotz laufender Ermittlungen des Sonderstrafgerichts, die parallele Einsetzung des Obersten Rates forderte.[xxv] Die Petition scheiterte, einzelne Unterzeichner ruderten, nachdem sie öffentlich bekannt wurde, sofort zurück; Al-Hariri trat vor die Presse.

Auch Nabih Berri, Parlamentspräsident und Schiit, kündigte am 29. Juli an, das Parlament sei bereit, die Immunität aller aufzuheben, um Ermittlungen zu ermöglichen – ohne auf nähere Details einzugehen oder konkrete Schritte mitzuteilen.[xxvi]

Nicht zuletzt der Präsident ließ am 30. Juli vermelden, er habe dem Staatsanwalt mitgeteilt, keiner stehe über dem Gesetz, egal in welchem Amt; und er sei jederzeit bereit, zur Explosion auszusagen[xxvii].

Sind dies alles nur Ablenkungsmanöver und Besänftigungsversuche gegenüber einer verzweifelten Gesellschaft, die sich ein Jahr nach der Explosion, inmitten einer andauernden Wirtschafts- und Regierungskrise, nach einer Richtungsorientierung sehnt, nach Antworten lechzt und fordert, dass die Verantwortlichen zur Rechenschaft gezogen werden? 

Es bleibt unwahrscheinlich, dass der 4. August eine Änderung mit sich bringt. Beobachter meinen zu erahnen, was passieren wird: nichts. Denn mögen die regierenden Parteien und Politiker in allen politischen Fragen noch so verbittert streiten, scheitert doch eine Regierungsbildung bereits seit fast einem Jahr; geht es um ihre Immunität und ihren gemeinsamen Machterhalt, so halten sie geschlossen zusammen.

Es ist ein denkbar schlechtes Zeugnis für einen Rechtsstaat, der vielmehr den Politikern als der Bevölkerung zu dienen scheint; und jedenfalls derzeit noch nicht stark genug ist, um sich gegen seine Ausnutzung zu wehren.

--------------------------------------------------------------------------

[i]      LEGAL AGENDA.  [15.06.2021] Abgerufen unter https://english.legal-agenda.com/joint-letter-to-the-human-rights-council-calling-for-an-international-investigative-mission-into-the-beirut-blast/;

       THE DAILY STAR. [01.08.2021] Abgerufen unter https://www.dailystar.com.lb/News/Lebanon-News/2021/Aug-01/522256-beirut-port-blast-in-numbers.ashx

[ii]     L’ORIENT LE JOUR. [30.07.2021] Abgerufen unter https://today.lorientlejour.com/article/1270074/fbi-probe-shows-amount-of-chemicals-in-beirut-blast-was-a-fraction-of-original-shipment.html

[iii]      Ibid.;

       FAZ. [09.02.2021] Abgerufen unter https://www.faz.net/aktuell/politik/ausland/weitere-zeitbombe-tonnen-an-giftmuell-in-beiruter-hafen-17180063.html 

[iv]      FAZ. [09.02.2021] Abgerufen unter https://www.faz.net/aktuell/politik/ausland/weitere-zeitbombe-tonnen-an-giftmuell-in-beiruter-hafen-17180063.html

[v]     ORF. [06.08.2020] Abgerufen unter https://orf.at/stories/3176448/

[vi]     ALJAZEERA. [10.08.2020] Abgerufen unter https://www.aljazeera.com/news/2020/8/10/lebanon-president-accepts-govt-resignation-after-beirut-blast

[vii]     Alle genannten Art. sind solche der libanesischen Strafprozessordnung, falls nicht anders notiert.

[viii]   LEGAL AGENDA. [07.07.2021] Abgerufen unter https://english.legal-agenda.com/suspending-lebanons-supreme-judicial-council-a-primer/

[ix]     Ibid.

[x]     ALJAZEERA. [18.02.2021] Abgerufen unter https://www.aljazeera.com/news/2021/2/18/lebanese-court-removes-lead-beirut-blast-investigator

[xi]     AP. [29.12.2020] Abgerufen unter https://apnews.com/article/middle-east-beirut-lebanon-explosions-5bcd217639ede5ae0508d92656616cd2

[xii]    NOW. [12.07.2021] Abgerufen unter https://nowlebanon.com/the-immunity-question/

       L’ORIENT TODAY. [02.07.2021] Abgerufen unter https://today.lorientlejour.com/article/1267178/port-investigator-tarek-bitar-has-asked-for-permission-to-prosecute-top-officials.html

[xiii]   AP. [29.12.2020] Abgerufen unter https://apnews.com/article/beirut-middle-east-lebanon-0da6748df2b4ae059e30603b9216449d

[xiv]   REUTERS. [29.07.2021] Abgerufen unter https://www.reuters.com/world/middle-east/probe-into-beirut-blast-stalls-again-leaving-families-fuming-one-year-2021-07-29/;

       THE961. [17.02.2021] Abgerufen unter https://www.the961.com/fenianos-refusing-to-be-questioned/

[xv]    ALJAZEERA. [18.02.2021] Abgerufen unter https://www.aljazeera.com/news/2021/2/18/lebanese-court-removes-lead-beirut-blast-investigator

[xvi]   Ibid.

[xvii] LEGAL AGENDA. [18.01.2021] Abgerufen unter https://english.legal-agenda.com/lebanons-battle-over-ministerial-immunity-is-threatened-by-impunity-politics/

[xviii] Ibid.

[xix]   Ibid.

[xx]    Ibid.

[xxi]   NOW. [12.07.2021] Abgerufen unter https://nowlebanon.com/the-immunity-question/

[xxii] LEGAL AGENDA. [18.01.2021] Abgerufen unter https://english.legal-agenda.com/lebanons-battle-over-ministerial-immunity-is-threatened-by-impunity-politics/;

       AP. [29.12.2020] Abgerufen unter https://apnews.com/article/beirut-middle-east-lebanon-0da6748df2b4ae059e30603b9216449d

[xxiii] REUTERS. [29.07.2021] Abgerufen unter https://www.reuters.com/world/middle-east/probe-into-beirut-blast-stalls-again-leaving-families-fuming-one-year-2021-07-29/

[xxiv] THE DAILY STAR. [27.07.2021] Abgerufen unter https://www.dailystar.com.lb/News/Lebanon-News/2021/Jul-27/522139-hariri-wants-immunity-lifted-on-all-officials-in-beirut-blast-probe.ashx

[xxv] L’ORIENT TODAY. [19.07.2021] Abgerufen unter https://today.lorientlejour.com/article/1269007/parliament-tries-final-maneuver-to-bypass-bitar.html;

       THE ARAB WEEKLY. [22.07.2021] Abgerufen unter https://thearabweekly.com/lebanese-mps-try-circumvent-questioning-port-blast-probe

[xxvi] L’ORIENT TODAY. [30.07.2021] Abgerufen unter https://today.lorientlejour.com/article/1270058/update-1-lebanon-president-ready-to-answer-questions-on-beirut-blast.html

[xxvii]        PRESIDENCY OF THE REPUBLIC OF LEBANON. [30.07.2021] Abgerufen unter  http://www.presidency.gov.lb/English/News/Pages/Details.aspx?nid=26627

Asset-Herausgeber

Kontakt

Philipp Bremer

Portrait von Philipp Bremer

Leiter des Rechtsstaatsprogramms Naher Osten und Nordafrika

philipp.bremer@kas.de +961 1 385 094 | +961 1 395 094

comment-portlet

Asset-Herausgeber

Asset-Herausgeber