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>
Ärger um die Unabhängigkeit der Justiz
Das Urteil des Verfassungsgerichts (K 3/21) betraf einen Antrag von Premierminister Mateusz Morawiecki im Anschluss an ein Urteil des Europäischen Gerichtshofs vom 2. März 2021 (C-824/18). Das Urteil betraf die Möglichkeit der Gerichte, die Richtigkeit des Ernennungsverfahrens eines Richters zu überprüfen. Dies war einer von vielen Streitpunkten im Zusammenhang mit der Reform der polnischen Justiz, die von der national-konservativen Partei Recht und Gerechtigkeit (PiS) mit ihren Koalitionspartnern seit 2015 sukzessive durchgeführt wird. Der EuGH hatte Einwände gegen die Neuordnung der Richterwahl bei der Besetzung des Nationalen Justizrates, da er das Verfahren für politisch motiviert hielt. Der Nationale Justizrat soll eigentlich die Unabhängigkeit der Justiz in Polen schützen. Bisher war der Rat eine Art richterliche Selbstverwaltung. Die Richter wählten, welche Kollegen sie dort vertreten sollten. Nach der PiS-Reform hat das Parlament größeren Einfluss auf die Richterwahl gewonnen. Der Justizrat stellt dem Staatspräsidenten u.a. Kandidaten zur Ernennung von Richtern, auch des Obersten Gerichtshofs vor. Der EuGH entschied damals, dass der Nationale Justizrat in seiner jetzigen Form keine Gewähr für eine unparteiische Auswahl von Richterkandidaten bietet. Darüber hinaus wies er darauf hin, dass sich die nationalen Gerichte in dem beim EuGH anhängigen Verfahren von den europäischen Vorschriften leiten lassen sollten, unabhängig von den nationalen Gesetzen oder deren verfassungsrechtlichem Charakter. Konkret befürchteten die EU-Richter, dass das Verfahren zur Besetzung des Obersten Gerichts in Polen gegen EU-Recht verstoßen könnte. Dies hätte zur Folge, dass der EuGH Polen zwingen könnte, Teile der umstrittenen Reform aufzuheben.
Chronik eines Streits
Der Streit zwischen dem Gericht in Luxemburg und dem polnischen Verfassungsgericht über die Unabhängigkeit der Justiz in Polen ist seit 2019 im Gange. Bereits im November 2019 (C-585/18 und C-624/18 und C-625/18) entschied der EuGH über die Besetzung des Obersten Gerichtshofs und des Obersten Verwaltungsgerichts und verpflichtete polnische Gerichte dazu, die umstrittene Bestimmung des nationalen Rechts unangewendet zu lassen.
Im April 2020 erließ der EuGH eine Übergangsmaßnahme zur Aussetzung der Tätigkeit der Disziplinarkammer des Obersten Gerichts, da ansonsten die Unabhängigkeit und Unparteilichkeit der Kammer nicht gewährleistet sei. Dies wiederholte das EuGH im Urteil dazu am 15. Juli 2021 (C‑791/19).
Ein Tag zuvor, am 14. Juli (P 7/20), erklärte jedoch Polens Verfassungsgericht alle einstweiligen Anordnungen des EuGHs für verfassungswidrig, Polen solle ihnen daher nicht Folge leisten.
Dies alles führte zu einer kuriosen Situation, in der manche Richter sich nach den Anordnungen des EuGH richteten, andere wiederrum die von dem EuGH in Zweifel gezogene Gesetze respektieren und sich an die Rechtsprechung des polnischen Verfassungsgerichtes hielten.
Der Premierminister drang auf eine umfassende Lösung der Frage, ob die polnische Verfassung Vorrang gegenüber dem Unionsrecht hat und beantragte beim Verfassungsgericht die Prüfung der Verfassungsmäßigkeit einiger Bestimmungen des EU-Vertrags.
Die Beschwerde Morawieckis
Im Wesentlichen handelte es sich um eine Beschwerde gegen die Auslegung des europäischen Rechts durch den EGH. Der Premierminister stellte drei Bestimmungen des EU-Vertrags in Frage, die von dem EuGH im oben genannten Urteil ausgelegt worden sind. Auf diese Auslegung hätten die Mitgliedstaaten, darunter auch Polen, keinen wesentlichen Einfluss. Er bezog sich dabei insbesondere auf Artikel 19 des EU-Vertrags: „Die Mitgliedstaaten schaffen die erforderlichen Rechtsbehelfe, damit ein wirksamer Rechtsschutz in den vom Unionsrecht erfassten Bereichen gewährleistet ist“.
Die Artikel, deren Überprüfung der Premierminister in der angefochtenen Interpretation forderte, ermächtigen oder verpflichten seiner Meinung nach polnische Behörden (also auch Gerichte), von der Anwendung der polnischen Verfassung abzuweichen, oder verpflichten sie, Rechtsvorschriften in einer Weise anzuwenden, die mit der Verfassung nicht vereinbar sind. Wie in der Klageschrift hervorgehoben wird, wirft ein solches Verständnis des EU-Vertrags „weitreichende und berechtigte verfassungsrechtliche Zweifel auf, die keine Bestätigung im Text der Verträge finden“. Hierbei ging es um Bestätigung der bisherigen Rechtsprechung des polnischen Verfassungstribunals.
Nach Ansicht des polnischen Premierministers hat der EU-Gerichtshof mit diesem Urteil seine Kompetenzen überschritten. Die Frage des Ministerpräsidenten lautete daher, ob die endgültige Entscheidung über die Umsetzung des EuGH-Urteils in polnisches Recht beim nationalen Verfassungsgerichtshof liegt.
Ein Urteil im Sinne der PiS
Am 7. Oktober geschah das, was wohl jeder (insbesondere auch die Regierungspartei PiS) erwartet hatte. Nach wiederholten Verschiebungen von Sitzungen gab das Gericht unter dem Vorsitz von Julia Przyłębska, privat eine Freundin des PiS-Vorsitzenden Jarosław Kaczyński, dem Ersuch des Premierministers statt. Im Urteil wurde festgestellt, dass die Bestimmungen des EU-Vertrags, auf deren Grundlage der EuGH über die polnische Justiz urteilte, gegen die polnische Verfassung verstoßen.
Um es einfach auszudrücken: Das Verfassungsgericht stellte somit fest, dass der Versuch des Europäischen Gerichtshofs, sich in das polnische Justizwesen einzumischen, gegen die Regel des Vorrangs der polnischen Verfassung und damit gegen die Souveränität Polens verstoße.
Geteilte Reaktionen: Kommt jetzt der Polexit?
Die Reaktionen auf das Urteil des Verfassungsgerichts waren zweigeteilt. Politiker aus dem Regierungslager sind mit dem Urteil zufrieden. Am Tag der Urteilsverkündung sagte Jarosław Kaczynski:
„Wenn sich herausstellt, dass das durch ganz unterschiedliche Verfahren geschaffene Recht, und ich spreche hier vom Sekundärrecht der Europäischen Union, alles ändern kann, was es will, einschließlich der polnischen Verfassung, dann würde das bedeuten, dass die Demokratie nur eine reine Täuschung ist, eine reine Fiktion, dass wir es nur mit einer Art Ritual zu tun haben“.
Kaczyński ist der Ansicht, dass Fragen, die das nationale Rechtssystem betreffen, nicht in die Zuständigkeit der EU fallen, während in Polen die Verfassung als Grundgesetz und wichtigste Rechtsquelle gilt. „Das Gegenteil würde bedeuten, …, dass es in Polen keine Demokratie gibt, weil es keine Bürger gibt. Bürger existieren, wenn sie ein Volk, einen Demos, bilden, daher die Demokratie. Das Volk, die Nation, die entscheidet, wer regiert und wie“ – erklärte der PiS-Vorsitzende.
Die Opposition hingegen machte aus ihrer Empörung keinen Hehl.
„Eine solche Entscheidung des Gerichts, die ohne Dialog mit dem EuGH getroffen wurde, ist die schwerwiegendste Untergrabung der Verpflichtungen eines Mitgliedstaats, die man sich vorstellen kann“,
kommentierte Rafał Trzaskowski, Stadtpräsident von Warschau und stellvertretender Vorsitzender der Bürgerplattform (PO). Er fügte hinzu:
„Dies ist genau die Art und Weise, wie das Polexit-Szenario umgesetzt wird. Nicht durch überschwängliche Erklärungen, sondern durch konkrete Entscheidungen, die die rechtlichen Grundlagen der EU untergraben und einen der wichtigsten Werte der Gemeinschaft in Frage stellen, nämlich das Recht auf ein unabhängiges Gericht“.
Ähnlich äußerte sich Borys Budka, stellvertretender Vorsitzender der Parlamentsfraktion der PO:
„Das Verfassungsgericht hat einen politischen Auftrag der Nowogrodzka (Anm.d.R.: Straße in Warschau, Sitz der PiS) ausgeführt. In einer rechtswidrigen Zusammensetzung, […] entschied es über eine Angelegenheit, die längst entschieden war. Es ist klar, dass die polnische Verfassung Vorrang vor europäischem Recht hat, was nichts an der Tatsache ändert, dass EU-Verträge Vorrang vor gewöhnlichen Gesetzen haben, und deshalb ist das Vorgehen der PiS u.a. im Bereich der Justiz illegal".
Am 10. Oktober fanden in Polen von der liberalen Opposition organisierte Demonstrationen unter dem Motto „Ich bleibe in der Union" statt. In Warschau sprach Donald Tusk vor Zehntausenden von Demonstranten über die negativen Folgen des Urteils des Verfassungsgerichts für Polens Position in der EU: „Wir müssen Polen retten, niemand wird es für uns tun. Dieses Urteil ist ein Verrat".
Zusätzlich forderte der Vorsitzende der Volkspartei (PSL), Władysław Kosiniak-Kamysz eine Verkürzung der Legislaturperiode des Sejms und vorgezogene Neuwahlen, was kein unmögliches Szenario ist, da die derzeitige Regierungskoalition nach dem Ausscheiden der Partei Porozumienie von Jarosław Gowin keine stabile Mehrheit mehr hat.
Laut Jarosław Gowin selbst steht die Regierung nun vor einer Alternative, die eine logische Folge des Urteils ist:
„Die Entscheidung des Verfassungsgerichts führt uns in ein Minenfeld. Entweder findet eine Anpassung der Verfassung an den Vertrag oder ein Polexit statt. Die PiS ist in eine Falle getappt, die sie selbst gestellt hat.“
Sieht auch die Regierung die Notwendigkeit, diese Wahl zu treffen? Eher nicht. In dieser Hinsicht wird das Urteil des Verfassungsgerichts vorerst ignoriert – d.h. es besteht weder die Absicht, die Verfassung zu ändern noch die EU zu verlassen. Die PiS-Politiker wissen, dass mehr als 80 % der Polen eine weitere Integration wünschen, argumentieren, dass der Polexit nur „Fake-News“ sei, die von der Opposition erfunden wurden und beteuern, in der Europäischen Union bleiben zu wollen. Morawieczki reagierte auf die Vorwürfe der Opposition mit einer emotionalen Rede im Sejm. Polen respektiere die EU-Verträge, sei jedoch nicht mit der willkürlichen Erweiterung von EU-Kompetenzen einverstanden.
Welche rechtliche Wirkung könnte das Urteil haben?
Auf rechtlicher Ebene bringt das Urteil des Verfassungsgerichts wenig Neues. Die Gültigkeit der vom Premierminister angefochtenen Bestimmungen des EU-Vertrags wird nicht aufgehoben werden. Die Entscheidung des Verfassungsgerichts führt nicht dazu, dass die Entscheidungen des EuGH außer Kraft gesetzt werden, da sie weder Urteile des EuGH aufheben noch die Auslegung des EU-Rechts durch das Luxemburger Gericht umstoßen können. Infolgedessen werden die angefochtenen Bestimmungen des EU-Vertrages im polnischen Rechtssystem in der Auslegung im Sinne der EuGH-Entscheidungen weiter in Kraft bleiben. Sowohl der Antrag des Premierministers als auch die Entscheidung des Verfassungsgerichts zielen nur darauf ab, innerstaatliche Wirkungen zu erzielen. So sollen polnische Gerichte daran gehindert werden, die vom EuGH festgelegte Auslegung des europäischen Rechts anzuwenden, und eine abschreckende Wirkung auf die Richter ausgeübt werden, die eine solche Auslegung im Sinne des EuGH anwenden möchten. Es ist davon auszugehen, dass nach dem Urteil des polnischen Verfassungsgerichtshofs ein Disziplinarverfahren gegen entsprechende Richter eingeleitet werden wird. Diese Befürchtung teilen 26 ehemalige Richter des Verfassungsgerichts, die kurz nach dem Urteil einen offenen Brief veröffentlicht haben.
Trotz der Veröffentlichung des Urteils im Gesetzblatt werden die unmittelbaren Folgen des Urteils des Verfassungsgerichts jedoch davon abhängen, ob und wie es in konkrete Gesetze und Maßnahmen gegen polnische Richter umgesetzt wird.
Was können die innenpolitischen Folgen des Urteils sein?
Einige spekulieren, dass man einen härteren Kurs und weitere Reformen im Justizwesen erwarten kann. Das Regierungslager will die Entscheidung des Verfassungsgerichts vom 7.Oktober nutzen, um Urteile des EuGH abzulehnen, die den Abschluss der polnischen Justizreform verhindern könnten. Jarosław Kaczyński hat bereits am 16. Oktober weitere Reformen der polnischen Gerichte angekündigt. Der PiS-Vorsitzende sprach von einer Verflachung der Struktur der polnischen Gerichte und einer radikalen Reduzierung der Rolle des Obersten Gerichtshofs. Revisionen sollen nicht wie bisher vom Obersten Gerichtshof, sondern von einem neu eingerichteten Netz von Regionalgerichten behandelt werden.
Das Urteil kann auch den internen öffentlichen Diskurs verschärfen. Weitere Reibereien mit Brüssel und das Auslösen einer Diskussion über den Polexit werden den politischen Streit im Land zwischen Kaczyński und Tusk, d.h. den beiden derzeit prominentesten Politikern, neu definieren. Wann immer die Opposition die PiS beschuldigt, Polen aus der EU herausnehmen zu wollen, wird die Regierungspartei dies abstreiten. Das Argument der PiS könnte lauten, dass Brüssel selbst, indem es die EU-Mittel für Polen blockiert, die Opposition benutzen will, um Polen aus der Gemeinschaft herauszuholen. Sollte es zur Verhängung von finanziellen Sanktionen gegenüber Polen kommen, könnte die pro-europäische Stimmung in der Bevölkerung kippen.
Wie reagiert die EU?
Dies wirft die Frage nach der Anwendbarkeit des mit dem EU-Haushalt verbundenen Prinzips „Geld für Rechtsstaatlichkeit" auf - ein äußerst drastisches Instrument des politischen Drucks.
Die Regierung hatte erwartet, dass die Europäische Kommission den Nationalen Wiederaufbauplan bereits im Juli genehmigen würde, so dass die ersten Gelder aus dem milliardenschweren Wiederaufbaufonds bereits im September hätten fließen können. Da das Verfassungsgericht jedoch den Vorrang des EU-Rechts vor nationalem Recht in Frage stellt, wird Brüssel seine Zustimmung weiterhin verweigern. Die formale Möglichkeit, die Gelder zu blockieren, ist durch eine Verordnung gegeben, die die Auszahlung der Eurofonds an die Rechtsstaatlichkeit knüpft. Brüssel hat von dieser Maßnahme bisher keinen Gebrauch gemacht, weil es gemäß der Vereinbarung mit Ungarn und Polen, die diesen Mechanismus angefochten haben, auf das Urteil des EU-Gerichtshofs wartet. Brüssel kann den polnischen Plan jedoch nicht auf unbestimmte Zeit aufhalten, und wird eine Entscheidung fällen müssen.
Fazit
Eine Einigung auf politischer Ebene zwischen Warschau und der Europäischen Kommission scheint notwendig zu sein. Eine solche Vereinbarung könnte eine unkontrollierte Eskalation des Streits verhindern, sobald der EuGH in einigen Monaten darüber entschieden hat, ob die Zahlungen, nicht nur aus dem Wiederaufbaufonds, sondern auch aus dem regulären EU-Haushalt an die Einhaltung der Rechtsstaatlichkeit gebunden sind. Die Antwort Warschaus auf finanzielle Sanktionen könnte darin bestehen, seinen Beitrag zur EU-Kasse auszusetzen. Dies wiederum könnte dazu führen, dass Polen das Stimmrecht im Rat entzogen wird. Dann könnte es unmöglich werden, den Streit zu beenden.Themen
Bereitgestellt von
Auslandsbüro Polen
Über diese Reihe
Die Konrad-Adenauer-Stiftung ist in rund 110 Ländern auf fünf Kontinenten mit einem eigenen Büro vertreten. Die Auslandsmitarbeiter vor Ort können aus erster Hand über aktuelle Ereignisse und langfristige Entwicklungen in ihrem Einsatzland berichten. In den "Länderberichten" bieten sie den Nutzern der Webseite der Konrad-Adenauer-Stiftung exklusiv Analysen, Hintergrundinformationen und Einschätzungen.
Bitte melden Sie sich an, um kommentieren zu können.