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>
Trucker-Blockade Ottawas: erste Erkenntnisse
Die Ereignisse der vergangenen drei Wochen haben – das lässt sich sagen – das Land zutiefst aufgewühlt und werden es auch nachhaltig verändern: auf welchen Ebenen und wie stark, lässt sich zum gegenwärtigen Zeitpunkt, da die Informationen über diesen epochalen Vorgang noch nicht vollumfänglich vorliegen, noch nicht mit Bestimmtheit sagen. Überhaupt entzieht sich die ganze Affäre einer apodiktischen Bewertung, gleich aus welcher Richtung. Auffällig ist, dass selbst politische Lager nicht geschlossen über die Ereignisse urteilen; es gibt Abweichler von der Mehrheitsmeinung sowohl bei den Liberalen als auch den Konservativen im Parlament und ihrer jeweiligen Gefolgschaft in der classe politique Kanadas. Ebenso gespalten sind die Meinungen über die erforderlichen Konsequenzen, die aus dieser Episode zu ziehen sind, sowohl in politischer als auch in rechtlicher sowie in gesellschaftspolitischer Hinsicht. Unversöhnliche Positionen beider Seiten prallen seit Wochen aufeinander ohne Aussicht auf Annäherung und ohne jeglichen Versuch einer kritischen Selbstreflektion. Hingegen feiern Vorurteile und Pauschalierungen fröhliche Urständ. Das alles wirft – vor allem für ausländische Beobachter - ein neues, ungewohntes Licht auf dieses Land, das so lange als Hort des gesellschaftlichen Konsenses und Zusammenhalts galt, manchen sogar als Ideal einer zukünftigen „post-nationalen“ Gesellschaft. Nicht alle diese Ideale sind jetzt gefährdet. Aber das Kanada von morgen muss lernen, die Augen für die gesellschaftliche Realität zu öffnen und die Sorgen sowie die seit Langem bestehenden, tiefen Gräben zwischen bestimmten Regionen und Bevölkerungsgruppen ernster als bisher zu nehmen.
Friedliche Protestler oder extremistische Umstürzler?
Allein diese Frage spaltet das Land. Zu Beginn der Blockade wirkten die angereisten Demonstranten auf die einen als freiheitsliebende Patrioten, die fahnenschwingend ihre legitimen Anliegen vortrugen, verbunden mit der Absicht, die für ihre Misere – Impfmandate und Maskenpflicht - verantwortlich gemachte Regierung zum Zuhören zu zwingen. Mobile Saunas und „Hot Tubs“, die per Truck zur Nutzung durch die Demonstranten herbeigeschafft worden waren, wirkten auf Außenstehende zunächst komödiantisch, waren aber in Wahrheit ein Zeichen deren Durchhaltewillens und einer wohlorganisierten Logistik, die sich u.a. mit Grillständen unter den Fenstern des Premierministeramts den Anschein eines Bluesfests oder Rockkonzerts gab. Aufmerksamen Beobachtern konnten jedoch weder die zahlreichen Transparente mit wüsten Beschimpfungen Trudeaus sowie die von einzelnen Demonstranten ebenfalls mitgeführten Hakenkreuzfahnen entgehen. Letzteres veranlasste die deutsche Botschafterin Sabine Sparwasser zu einem gemeinsam mit der Vorsitzenden der „Jewish Federation of Ottawa“ verfassten Zeitungsbeitrag, in dem beide Autorinnen das Ausbleiben der Empörung über die Verwendung dieses Symbols unter den Demonstranten kritisierten. Zu diesem Zeitpunkt hatten Teile des investigativen Journalismus in Kanada die Organisatoren der Blockade bereits dem rechtsextremen Spektrum Kanadas zugeordnet. Spätestens jetzt erhoben sich Stimmen aus der Rechtswissenschaft, die eine verharmlosende Beschreibung der Demonstranten als politisch naiv und gefährlich bezeichneten. Dass sich unter den Teilnehmern der Blockade nicht nur Truckerfahrer befanden, ergab sich Ende vergangener Woche im Rahmen der Auflösung des Protests bei der Anhörung festgenommener Rädelsführer im Rahmen richterlicher Kautionsanhörungen: Dabei stellte sich heraus, dass einzelne der Verhafteten zwar vorgaben, kein Geld für eine Kaution zu haben, zuvor aber per Privatjet nach Ottawa angereist waren. Andere beriefen sich bei diesen Anhörungen auf ihre vermeintlichen Freiheitsrechte nach dem „Ersten Verfassungszusatz“ (engl. „First Amendment“), der bekanntlich aber Teil der Verfassung der Vereinigten Staaten von Amerika ist, nicht jedoch des kanadischen Verfassungsgesetzes von 1982. Solche Vorkommnisse ließen nicht nur Aufschlüsse auf die Fremdsteuerung des Protests von außen zu; sie stützten auch die Einschätzung der kanadischen Presse von einer „atemberaubenden“ Ignoranz eines Großteils der Demonstranten hinsichtlich der Organe und Funktionsweisen des kanadischen Rechts- und politischen Systems. Hatten diese doch ursprünglich ernsthaft gefordert, die Generalgouverneurin als Staatsoberhaupt solle in gemeinsamem Vorgehen mit dem Senat, der nichtgewählten zweiten Parlamentskammer, die im letzten September demokratisch gewählte Regierung Trudeau absetzen – nicht nur verfassungsrechtlich unmöglich, sondern auch politisch völlig absurd. Daneben steht die Tatsache, dass die geforderte Abschaffung von Masken- und möglichen Impfpflichten rechtlich nicht Sache der Bundesregierung, sondern der Provinzen gewesen wäre.
Staatsversagen und Vollzugsdefizite?
Die Lastwagen-Blockade Ottawas war ein Protest mit Ansage. Schon Tage vorher hatten die Organisatoren angekündigt, zu welchem Datum und an welchen Orten in Ottawa sie mit ihren Aktionen beginnen wollten und mit welchen Zielen: totaler Verkehrsstillstand, ein rien ne va plus des öffentlichen Lebens. Als sich der Protest in seinem vollen Umfang vor dem Parlament und in wichtigen Innenstadtstraßen manifestiert hatte, fragten Politiker und Kommentatoren bereits nach kurzer Zeit, wieso die Sicherheitskräfte, allen voran die Polizei Ottawas, keine adäquaten Präventiv- und/oder Abwehrmaßnahmen eingeleitet hatten, beispielsweise Straßensperren oder Verkehrsumleitungen. Diese Stadtpolizei wirkte für jedermann offensichtlich überfordert und das in jeder Hinsicht: bei Aufklärung und Lageerstellung, der Ausrüstung und der Polizeitaktik. Polizisten waren von den normalen Passanten nur noch durch ihre Uniform zu unterscheiden, schienen aber vor der Rechtsdurchsetzung bei Gesetzesverstößen zurückzuschrecken, auch deshalb, weil von Zeugen in den Medien berichtet wurde, dass sie dabei von Gruppen der Protestler bedrohlich eingekreist worden seien. Mittlerweile litten die betroffenen Anwohner der Innenstadt unter den andauernden Hupkonzerten der Lastwagenfahrer, die z.T. von den frühen Morgen- bis in die späten Abendstunden reichten und noch zwei Kilometer weit vom Parlament entfernt hörbar waren. Wer jedoch dachte, die Stadt Ottawa mit ihrem liberalen Bürgermeister Jim Watson würde im Interesse ihrer Bürgerschaft einschreiten, sah sich getäuscht: Zwar hat das Stadtoberhaupt keine Weisungsbefugnis gegenüber den Polizeidienststellen der Hauptstadt, welche den Behörden der Provinz Ontario in Toronto unterstehen, aber der erste Versuch, sich gegen die Protestauswüchse zu wehren, kam nicht von der Stadtverwaltung, sondern von einem 21-jährigen Anwohner der Protestzone, der mit einer einstweiligen Verfügung vor Gericht erreichte, dass zumindest nachts wieder Ruhe in der Kapitale einkehrte. „Wir haben die erste Woche verpasst“, lautete dann auch das selbstkritische erste Fazit Watsons.
Die Provinzregierung unter dem konservativen Premier Doug Ford ließ die Misere der Hauptstadt vorerst kalt. Sie reagierte erst, als sich auf der Ambassador Bridge, einem stark befahrenen Grenzübergang zwischen Ontario und Michigan, auf dem bis zu 30 Prozent des bilateralen Handels zwischen Kanada und den USA transportiert wird, eine ähnliche Blockade aufbaute. Unter dem Eindruck der täglichen wirtschaftlichen Verluste von Unternehmen beiderseits der Grenze, der Zahl der durch fehlende Zulieferungen gefährdeten Arbeitsplätze insbesondere in der Automobilindustrie und der sehr subtil als „Hilfsangebot“ kaschierten Aufforderung des US-Heimatschutzministeriums an Kanada, endlich das Problem zu lösen, reagierte Ford, der sich in wenigen Monaten der Wiederwahl stellen wird, seinerseits mit der Erklärung des Ausnahmezustands in Ontario. Dies bewirkte die Beendigung der Blockade dort noch vor der Inkraftsetzung des nationalen Notstands durch Trudeau. Auch ähnliche Blockaden an Grenzübergängen in Alberta und Manitoba konnten aufgelöst werden.
Fragt man kanadische Rechtsexperten, welche staatliche Ebene zuallererst gefordert gewesen wäre, Maßnahmen zum entschiedenen Umgang mit gesetzeswidrigem Verhalten von Demonstranten einzuleiten, wird allgemein auf die Provinzebene hingewiesen. Dies erscheint allein deshalb überzeugend, weil die Polizei in Ottawa schon personell erkennbar und nach objektiven Maßstäben mit der Eindämmung tausender Demonstranten und deren unbestimmtem Gewaltpotenzial überfordert gewesen wäre. Weshalb die Regierung in Toronto in und für die Hauptstadt nichts unternahm, obwohl sie selbst an anderer Stelle der Provinz existenziell betroffen war, wird eine zentrale Frage der sicherlich bald einzuleitenden Untersuchungen sein.
Verhältnismäßigkeit der Inkraftsetzung des Emergencies Act?
Mit der Ausrufung des Notstands am 14. Februar 2022 hat Premierminister Justin Trudeau durchaus Geschichte gemacht. Der Emergencies Act ist ein 1988 unter der Regierung des Konservativen Brian Mulroney vom kanadischen Parlament verabschiedetes Gesetz, das die Bundesregierung ermächtigt, vorübergehend außerordentliche Maßnahmen zu ergreifen, um auf Notfälle des öffentlichen Wohlergehens, der öffentlichen Ordnung, internationale Notfälle und Kriegsnotfälle zu reagieren. Das Gesetz ersetzte den 1914 verabschiedeten War Measures Act. Es bekräftigt, dass alle Maßnahmen der Regierung weiterhin der Kanadischen Charta der Rechte und Freiheiten und der Bill of Rights unterliegen.
Nach dem Notstandsgesetz kann das Bundeskabinett einen nationalen Notstand ausrufen, wenn eine dringende und kritische Situation vorliegt, die mit den bestehenden Gesetzen nicht bewältigt werden kann und die entweder die Möglichkeiten einer Provinz übersteigt oder die Souveränität Kanadas bedroht. Bevor das Bundeskabinett einen nationalen Notstand ausruft, muss es sich mit den Kabinetten der Provinzen beraten. Im Falle eines Notfalls für das öffentliche Wohl oder die öffentliche Ordnung, dessen Auswirkungen sich auf eine Provinz beschränken oder hauptsächlich in einer Provinz auftreten, kann das Notstandsgesetz nicht angewandt werden, wenn das Provinzkabinett nicht angibt, dass die Provinz nicht in der Lage ist, mit der Situation umzugehen. Sobald der Notfall ausgerufen wurde, muss er vom Unterhaus und vom Senat bestätigt werden. Bezeichnenderweise war der letzte Regierungschef, der in Kanada den Notstand erklärte, Justin Trudeaus Vater, Pierre Elliott Trudeau, der dies 1970 im Rahmen der sogenannten Oktoberkrise mit dem wesentlich weiterreichenden Vorgängergesetz tat, um Terrorismus im Innern zu bekämpfen.
Hauptkritikpunkt seiner politischen Gegner im Unterhaus bleiben zum einen der Zeitpunkt der Ausrufung des nationalen Notstands durch Justin Trudeau in einem Moment, als die bereits erwähnten Blockaden in drei Provinzen bereits überwunden waren und zum anderen die in dieser Phase vorherrschenden Umstände des Protests vor Ort, der zwar noch immer massiv war, jedoch vom Umfang her bereits abgenommen hatte. Die Trudeau-Regierung führt hier die besonderen Rahmenbedingungen ins Feld, wodurch sie zum Schutz der öffentlichen Ordnung in die Lage habe versetzt werden müssen, an mehreren Fronten – vornehmlich auf der Straße vor dem Parlament, in der Innenstadt Ottawas zum Schutz der dortigen Einwohner und Gewerbe, aber auch bei der Ermittlung der Geldgeber des Protests und den in diesem Zusammenhang erforderlichen Recherchen der Quellen des Mittelflusses - u.a. Geldinstitute zum Einfrieren verdächtiger Bankkonten anweisen zu können, zunächst auch ohne den dafür vorgesehenen Rechtsweg.
Diese Argumentation konnte zu keinem Zeitpunkt die Konservativen als offizielle Opposition überzeugen, die traditionell ideologisch gegen jede Art von staatlicher Übergriffigkeit stehen und sich zudem bereits durch mehrere ihrer prominenten Köpfe gegen Impfmandate ausgesprochen haben. Aber auch die Regionalpartei Bloc Québécois witterte einen erneuten Eingriff des Bundes in die weitreichende Autonomie von Kanadas einziger frankophoner Provinz und stimmte deshalb im Unterhaus gegen das Vorgehen der Regierung.
Die ebenfalls oppositionellen sozialdemokratischen Neuen Demokraten (NDP), die sich als kritischer, aber konstruktiver Begleiter der Regierung sehen, stimmten mit den Liberalen, wenn auch „widerstrebend“. Zwar hat die Parteiführung eine scharfe Beobachtung der Administration besonders hinsichtlich der zeitlichen Ausdehnung des Notstands (maximal 30 Tage) angekündigt und versprochen, ihre Unterstützung zu entziehen, sobald der Eindruck entstünde, die Regierung handele mit dessen Anwendung nicht aus lauteren rechtsstaatlichen Motiven. Aber die Liberalen stehen der NDP vor allem in der den Sozialdemokaten wichtigen Sozialpolitik näher als jeder anderen Partei im Unterhaus, und die vor allem auch ethnisch diversen und jungen Teile der Gesellschaft ansprechende NDP hat kein politisches Interesse an einem Sturz Trudeaus, der unweigerlich Neuwahlen nach sich zöge, deren Ausgang für sie ungewiss wäre. Unabhängig davon muss die NDP jedoch aufpassen, nicht in eine Position des kritiklosen Mehrheitsbeschaffers für die Trudeau-Liberalen zu geraten. Die Konservativen wissen um diese Anfälligkeit der Sozialdemokraten und haben während der Notstandsdebatte permanent versucht, Salz in diese Wunde zu reiben und der NDP Unglaubwürdigkeit in prinzipiellen Dingen vorzuwerfen. Dies gipfelte in der sarkastischen Frage eines konservativen Abgeordneten, wann das Land die offizielle Bildung einer Koalition aus Liberalen und NDP mitsamt der Vereidigung eines NDP-Ministers erwarten könne.
Wie geht es weiter?
Justin Trudeau hat sein politisches Überleben vorerst gesichert, allerdings unter Bedingungen. Wie das Parlament und die Öffentlichkeit seine Rolle beurteilen werden, wird von der Dauer des Notstands und vom Ergebnis der gesetzlich vorgeschriebenen Prüfung des Gesamtvorgangs abhängen. Schon zu Beginn der Affäre machte der ansonsten mediensichere Premierminister einen Fehler und verbarg sich auf seinem Landsitz Harrington Lake, angeblich wegen eines positiven Covid-Tests. Die dortigen, ruhigen Wälder und die reine Luft Quebecs standen in einem krassen Gegensatz zur lärmenden Realität, mit der sich die Einwohner der Innenstadt Ottawas währenddessen abzufinden hatten, zusätzlich zu dem im Vergleich zum Normalwert zehnfach höheren Schadstoffausstoß in der Innenstadt, verursacht durch laufende Lkw-Motoren. Auch der um Hilfe bemühte Bürgermeister Ottawas, Jim Watson, hätte von einer Solidaritätsgeste seines Parteiführers Nutzen gehabt, bemühte sich aber vergeblich darum. Dass Trudeau sich weigerte, mit den ihn heftig und beleidigend angreifenden Demonstranten zu sprechen, war zwar menschlich verständlich, wirkte aber feige, und sie in ihrer Gesamtheit als Rassisten und anderes abzuqualifizieren, mag ihm Punkte bei seinen Hardcore-Anhängern eingetragen haben – souverän war es nicht. Schon gibt es Umfragen unter liberalen Parteimitgliedern, die nicht in ihm, sondern in der stellvertretenden Premier- und Finanzministerin Chrystia Freeland die geeignetere Gallionsfigur sehen, die derzeitige Regierungspartei in den nächsten Wahlkampf zu führen, auch wenn Trudeau dieses Vorrecht (noch) für sich beansprucht. Dazu trägt sicher bei, dass der Nimbus des strahlenden Dauerjugendlichen, der inzwischen 50 Jahre alt wurde, deutlich aufgebraucht ist. Dass der „Instagram-Premier“ nicht mehr zieht, musste er nach zwei Wahlen 2019 und 2021 ohne parlamentarische Mehrheit und mit zweifach verlorenem Einzelstimmenergebnis erkennen.
Doug Ford, konservativer Premier von Ontario, steht derzeit besser da als der ihm in herzlicher Abneigung verbundene Trudeau. Obwohl er sich ebenso wie Trudeau lange bedeckt hielt und wie jener das gleiche Instrument anwendete, wird es ihm nicht nachgetragen, denn die Ontarios Wirtschaft schadende Blockade an der Ambassador Bridge konnte vergleichsweise zügig und geräuschlos aufgehoben werden. Ford kann Entscheidungsfreude sowie Entschlusskraft für sich reklamieren, verteidigte das konservative Image als law and order- sowie wirtschaftsfreundliche Partei und hat trotz verbesserungswürdiger Beliebtheitswerte recht gute Chancen, dieses Jahr für eine zweite Amtszeit wiedergewählt zu werden. Sein Verhalten in der Krise räumt nicht ganz den Verdacht aus, dass er es bewusst darauf angelegt hat, Trudeau zu schaden, indem er die Hauptstadt Ottawa sehr lange ohne Provinzhilfe beließ. Dies zu beweisen, wäre aber auch nicht wirklich relevant, denn der 57-jährige, national nicht unumstrittene Ford hat nach eigenen Angaben kein Interesse am Premierministeramt Kanadas und könnte, insbesondere nach gelungener Wiederwahl, innerhalb seiner Partei und auf der Provinzebene weiterhin als „freier Radikaler“ wirken. Denn er kennt und praktiziert das Grundprinzip kanadischer Politik: „Shit rolls uphill.“
Die konservative Partei Kanadas kam durchaus überzeugend ihrer Rolle nach, die Regierung in dieser kritischen Phase zu stellen und von ihr Rechenschaft zu verlangen, wenngleich viele ihrer Parlamentsauftritte orchestriert und marktschreierisch wirkten: Dies zu einer Zeit, da die größte Oppositionspartei führungslos ist und einen neuen Vorsitzenden sucht. Der seit 2020 amtierende Parteivorsitzende Erin O’Toole war mittelbar eines der politischen Opfer des „Trucker Strike“: Zu dessen Anfang fand er keine überzeugende Haltung dazu und verstärkte den von ihm selbst während seiner Amtszeit geschaffenen Eindruck einer wechselhaften Persönlichkeit ohne klaren Kurs und Standpunkte. Dieses Defizit hatten ihm parteiinterne Kritiker schon seit der verlorenen Unterhauswahl im September 2021 vorgehalten und seine Ablösung betrieben. O’Toole konnte dies bis zum Monatsbeginn abwehren, stolperte dann aber über seine eigenen politischen Unzulänglichkeiten und verlor eine Vertrauensabstimmung der Parlamentsfraktion. Zwar gibt es in dem bisherigen finanzpolitischen Sprecher Pierre Poilievre einen aussichtsreichen Nachfolgekandidaten, aber der Auswahlprozess des neuen Parteichefs ist gemäß den Statuten der Konservativen langwierig und wird nicht vor Sommer abgeschlossen sein. Folglich wird die 57-jährige Übergangsvorsitzende Candice Bergen (nicht zu verwechseln mit der gleichnamigen US-amerikanischen Hollywood-Schauspielerin) das Gesicht der Partei in den nächsten, politisch wichtigen Wochen sein (müssen). Das ist gleich zweifach nachteilig, denn der 42-jährige Poilievre kann sich somit nur begrenzt profilieren, und Bergen ist es gemäß Parteistatuten nicht gestattet, sich selbst um den Vorsitz zu bewerben – eine „no win – no win“-Situation.
Die Protestbewegung hat unbestreitbar einen Coup gelandet, indem sie die staatlichen Organe vor aller Öffentlichkeit vorgeführt hat. Nicht nur die Überraschung, mit der Sicherheitskräfte sowie Bundes- und Provinzregierungen auf die Blockaden reagierten, auch die überlegene Informationsbeschaffung, Disziplin und Logistik sind hier zu nennen, welche in ihrer Gesamtheit auf einen Organisationsgrad und Hintergrund deuten, der in seiner Komplexität noch zu ermitteln sein wird, sich aber sicher nicht auf ein paar unzufriedene „Helden der Straße“ beschränken dürfte. Die Blockaden werden überdies nicht nur in Kanada, sondern durch die Berichterstattung das Protestverhalten weltweit beeinflussen, da bei den Unzufriedenen die Bereitschaft zu zivilem Ungehorsam und der Inkaufnahme rechtlicher Konsequenzen steigen dürfte, zumal dann, wenn Organe der Rechtsdurchsetzung ihre Aufgaben nicht oder ungenügend wahrnehmen und damit das Gewaltmonopol von Staaten in Frage gestellt wird.
Die Wehrhaftigkeit der kanadischen Demokratie ist, jedenfalls in diesem Jahrtausend, erstmals ernsthaft auf die Probe gestellt worden. Auch wenn sie nicht ernsthaft gefährdet war und ist, haben die Vorgänge doch gezeigt, dass die Mehrheit der Kanadier ihre Staatsform als weitgehend gesichert ansieht, ohne einen Gedanken darauf zu verschwenden, durch welche gesellschaftlichen Entwicklungen sie in Gefahr geraten könnte. 150 Jahre im Fahrwasser des britischen Westminister-Modells haben ein Urvertrauen in das Funktionieren des Systems geschaffen, das nicht leicht zu erschüttern sein mag, andererseits aber auch keine oder nur wenige Sensoren dafür entwickelt, woher möglicherweise Gefahren drohen könnten. Der deutsch-kanadische Sicherheitsexperte Christian Leuprecht, der u.a. am Royal Military College in Kingston/Ontario lehrt, spricht in diesem Zusammenhang von einer „Canadian smugness“, einer kanadischen Selbstzufriedenheit, die in den politischen und gesellschaftlichen Eliten dominiert, welche schlichtweg nicht zur Kenntnis nehmen wollen, dass es innenpolitische Krisenherde gibt, die in politischen Extremismus münden können und dringend der Behandlung bedürfen. Dies setzte allerdings voraus, dass man anerkenne, dass man ein Problem habe. Leuprecht weist auch auf Defizite bei der innergesellschaftlichen Bedrohungsanalyse hin: so habe es bis ca. 1989 bei den Nachrichtendiensten Kanadas eine Einheit zur Beobachtung möglicher innenpolitischer Krisenherde gegeben, die jedoch nach dem Ende des Kalten Krieges aufgelöst worden sei. An die Stelle kommunistischer Infiltration sei, besonders nach 9/11, der Jihadismus als größte Bedrohung des Landes gerückt worden, wodurch andere extremistische Kräfte aus dem Blickfeld der Dienste geraten seien. Der Wissenschaftler forderte in einem Fernsehinterview die Bildung einer „Royal Commission“ zur eingehenden Untersuchung der Blockaden sowie politische und institutionelle Konsequenzen. Diese müssen sicherlich auch den Zustand der politischen Bildung in Kanada für breite Gesellschaftsschichten betreffen, für die bei weitem nicht der Aufwand betrieben wird, wie er z.B. in Deutschland dafür üblich ist.
Der gesellschaftliche Zusammenhalt ist ein Feld, das in nächster Zeit vor allem durch die Politik besonders sorgfältig beobachtet werden sollte. Auch ohne die Trucker-Blockade hätte Kanada vor einem schwierigen Jahr gestanden: fünf Prozent Inflation, so hoch wie seit 30 Jahren nicht; damit verbundene, steigende Lebenshaltungskosten, die immer mehr Durchschnittskanadiern zu schaffen machen; Immobilienpreise, die die Chance auf ein Eigenheim für junge Familien in immer weitere Ferne rücken; schwieriger Eintritt in den Arbeitsmarkt für Hochschulabsolventen; Rekordverschuldung infolge der Pandemie-Hilfsprogramme bei gleichzeitig hohen Arbeitsplatzverlusten; außenpolitische Herausforderungen im Verhältnis zu China und zu Russland; separatistisches Gedankengut in den Prärieprovinzen etc. etc. Letzteres ist an sich keine unmittelbare Gefahrenquelle, aber die größte Unzufriedenheit trifft man dort an. Dies liegt an vielen ungelösten Problemen in mehreren Politikfeldern, deren Überwindung an unterschiedlichen politischen Positionen der Regierenden vor Ort und in Ottawa und deren diametral entgegengesetzten weltanschaulichen Standpunkten scheitert. Und schließlich befriedigen selbst die nationalen Symbole einige im Westen nicht mehr. Das kanadische Ahorn auf der seit 1965 benutzten Nationalflagge hat einen der höchsten Erkennungswerte aller Flaggen der Welt. Das Blatt stammt biologisch vom Zuckerahornbaum.
Der aber kommt westlich von Manitoba überhaupt nicht vor.
หัวข้อ
ให้โดย
Auslandsbüro Kanada
เกี่ยวกับชุดนี้
Konrad-Adenauer-Stiftung มีสำนักงานตัวแทนใน 80 ประเทศในห้าทวีป พนักงานในต่างประเทศสามารถให้รายงานเบื้องต้นเกี่ยวกับสถานการณ์ปัจจุบันและการพัฒนาในระยะยาวในประเทศของตนได้ และผู้ใช้เว็บไซต์สามารถเข้าไปดูการวิเคราะห์ ข้อมูลพื้นฐานและการประเมินผลเฉพาะของ Konrad-Adenauer-Stiftung เหล่านั้นใน "country reports" ได้