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>
Auf einem außerordentlichen Parteitag, den die Partido Popular am 1. und 2. April in Sevilla abhielt, wurde der galizische Regionalpräsident Alberto Núñez Feijóo mit 2.619 Delegiertenstimmen, das entspricht 98,35%, zum neuen Parteivorsitzenden gewählt. Obwohl er der einzige Bewerber war, der bis zum Stichtag die notwendige Voraussetzung für die Kandidatur erfüllte, bestand Núñez Feijóo darauf, auch eine vorgeschaltete Mitgliederbefragung durchzuführen, die das Parteistatut nur beim Wettbewerb mehrerer Kandidaten zwingend vorsieht. Die Partei befand sich jedoch nur einen Monat zuvor aufgrund des Streits zwischen der nationalen Parteiebene um den bisherigen Vorsitzenden Pablo Casado und der Regionalpartei in Madrid um Isabel Ayuso am Rande des Abgrundes. Daher wollte Feijóo keinen Zweifel aufkommen lassen, dass er eine breite Legitimationsbasis unter allen Parteimitgliedern besitzt.
Zum Zeitpunkt der Kandidatenaufstellung im März unterstützten Feijóo bereits 55.000 Bürgen (d.h. zahlende und registrierte Parteimitglieder, die ihn als Kandidaten vorgeschlagen hatten; für eine Kandidatur sind 100 notwendig). Und trotz sehr kurzer Vorlaufzeit schrieben sich innerhalb weniger Tage nochmals knapp 42.000 Parteimitglieder ein, um an diesem ersten Wahlgang teilzunehmen. Von den 36.781 Parteimitgliedern, die es davon letztendlich auf sich nahmen, an einem Montag ihr nächstgelegenes Parteibüro aufzusuchen, stimmten 99,63 % für Feijóo. Es kann daher festgehalten werden, dass sich die Partei sowohl bei der Kandidatenaufstellung und der Mitgliederbefragung als auch bei der Wahl durch die Delegierten mit einer überwältigenden Mehrheit hinter Feijóo gestellt hat. Dies ist nach dem Zerwürfnis, in dem sich die PP noch vor wenigen Wochen befunden hatte, keine Selbstverständlichkeit.
Sevilla als Austragungsort des Parteitages wurde dabei nicht zufällig gewählt. 1990 fand in der andalusischen Hauptstadt der Gründungsparteitag der Partido Popular statt, in dessen Rahmen die "Alianza Popular" Manuel Fragas in eine modernere Marke konvertiert und der spätere Ministerpräsident José María Aznar zum neuen Vorsitzenden gewählt wurde. Nach den Parlamentswahlen 2011 kam Mariano Rajoy als frischgewählter Ministerpräsident – ausgestattet mit einer absoluten Mehrheit im Abgeordnetenhaus und im Senat – zum Parteitag in die Stadt. Die Symbolik, die Sevilla verkörpert, zeigt, welch tiefe Krise die PP in den letzten Wochen erlebte und welch hohe Erwartungen man an Alberto Núñez Feijóo hat: er soll es schaffen, die Partei zurück auf die Erfolgsschiene zu setzen.
Rückblick: Von Spionagevorwürfen zum Fall der Parteiführung
Am 17. Februar 2022 berichtete die Presse, dass das familiäre Umfeld der Regionalpräsidentin Madrids, Isabel Ayuso, ausspioniert worden sei: ein hochrangiger Mitarbeiter des Wohnamtes Madrid habe einen Privatdetektiv engagiert, um an vertrauliche Steuerdokumente von Ayusos Bruder zu gelangen. Der Privatdetektiv gab an, dass die PP-Parteizentrale den Auftrag erteilt habe. Der unrechtmäßige Erhalt solcher Dokumente stellt in Spanien eine Straftat dar. Isabel Ayuso nahm öffentlich Stellung und vermutete einen Komplott aus dem Umfeld des PP-Vorsitzenden Pablo Casado mit dem Ziel, sie nach ihrer siegreichen Wiederwahl zur Regionalpräsidentin vom 4. Mai 2021 als Vorsitzende der PP in der Region Madrid zu verhindern.
Casado versicherte bis zuletzt, dass die Vorwürfe haltlos seien. Er wies allerdings darauf hin, dass er glaubhafte Unterlagen besäße, wonach Ayusos Bruder während der ersten Welle der Corona-Pandemie für die Beschaffung von medizinischem Material eine Kommission in Höhe von rund 300.000 Euro von der Autonomen Gemeinschaft Madrid erhalten hätte. Diese Summe sei "hinreichend groß, um anzunehmen, dass es sich dabei um Bestechung handele". Die Regionalverwaltung Madrid präsentierte kurz darauf Dokumente, die zeigten, dass Ayusos Bruder eine Vergütung (und keine Kommission) von 55.850 Euro für eine tatsächlich erbrachte Arbeitsleistung, nämlich die Beschaffung medizinischen Materials aus China, erhalten hatte.
Da Casado dem nichts entgegenzusetzen hatte, drehte sich der politische Wind auch unter den Parteifunktionären gegen den PP-Vorsitzenden. Die Demonstrationen von PP-Parteimitgliedern vor der PP-Parteizentrale, der Frust vieler PP-Regionalverbände über die geplanten Zentralisierungsbestrebungen Casados und der tiefe Riss, der durch die Partei ging, schwächten Casado zunehmend. Auch die umgehende Einstellung des parteiinternen Ermittlungsverfahrens gegen Ayuso nutzte Casado nicht. Der ehemalige Ministerpräsident und Parteivorsitzende José María Aznar erklärte, dass die Partido Popular eine existenzielle Krise durchlaufe. Und auch die Wahlen in Castilla y León, die auf Empfehlung von Casado in den Februar vorgezogen worden waren, spielten eine Rolle. Nicht nur fuhr die PP ein Ergebnis ein, das weit hinter den Erwartungen zurückblieb; auch konnte die rechtspopulistische Partei Vox ein Rekordergebnis erreichen.
Dabei war es für Casados Lage letztendlich auch unerheblich, ob die Ermittlungsbehörden Isabel Ayuso tatsächlich noch ein Fehlverhalten bei der öffentlichen Auftragsvergabe der Autonomen Region Madrid und den Zahlungen an ihren Bruder wird nachweisen können (die Staatsanwaltschaft ermittelt nach wie vor). Auch ist nicht entscheidend, ob die Spuren der vermeintlichen Spionage am Ende bis zum ehemaligen PP-Generalsekretär Teodoro García Egea führen werden (zwei Untersuchungskommissionen, die Ethikkommission des Stadtparlaments Madrid und die Compliance-Abteilung des Wohnamtes Madrid verneinten bereits, dass es auf der kommunalen Ebene überhaupt Spionage gegen Ayuso gegeben habe).
Was Casado de facto zu Fall brachte, war vielmehr der umfassende Konflikt der Zentralpartei mit der PP Madrid, der sich seit Mai 2021 immer weiter zugespitzt hatte. Dazu gehörte dann auch der harte öffentliche Angriff auf Isabel Ayuso, bei der er sie der Korruption bezichtigte und andeutete, im Besitz von kompromittierenden Steuerdokumenten zu sein – ohne jedoch tatsächlich stichhaltige Beweise vorlegen zu können sowie das lange Festhalten an seinem Generalsekretär Teodoro García Egea, den viele in der Partei für die Eskalation verantwortlich machen.
Casado nutzte die letzte Chance für eine gesichtswahrende Lösung, indem er nach Rücksprache mit den PP-Regionalvorsitzenden auf einer Parteivorstandssitzung die Einberufung eines außerordentlichen Parteitages für das erste Aprilwochenende beschloss. Im Ergebnis trat Casado nicht vom Parteivorsitz zurück, sondern blieb bis zum Parteitag im Amt und konnte sich von den Delegierten verabschieden. Zugleich versprach er, auf dem Parteitag nicht mehr anzutreten und Alberto Núñez Feijóo zu unterstützen.
Die Umfragen zeigen, dass die PP-Wähler diesen geordneten Übergang zwischen Casado und Feijóo zu schätzen wissen. Nach der Eskalation des Streits am 17. Februar brach die PP in der Wählergunst zunächst innerhalb weniger Tage ein. Vox war der direkte Nutznießer der Auseinandersetzung zwischen Casado und Ayuso und legte zu. Zudem rechnen manche Institute vor, dass in mehr als der Hälfte der überwiegend ländlich geprägten Provinzen Vox – zumindest kurzfristig - beim Wähleranteil vor der PP gelegen habe. Allerdings erholt sich die Partei seit der Ankündigung Feijóos, die Führung zu übernehmen.
Wie jüngste Umfragen zeigen, halten 93,0% der PP-Wähler Feijóo für den "bestmöglichen Vorsitzenden (80,4%)" oder zumindest eine gute Wahl (12,6%)", den die Partei gegenwärtig haben könne, und nur 4,7% der Wähler lehnen ihn ab. Interessant ist an dieser Studie, dass selbst 89,2% der Ciudadanos- Wähler ihn für die beste oder zumindest eine gute Option halten, und sogar 70,3% der Vox-Wähler ihn als die beste oder eine gute Wahl bezeichnen (SigmaDos). Selbst bei den PSOE-Wählern erreicht er mit über 50% eine überwiegend positive Beurteilung.
Alberto Núñez Feijóo: Rajoys Wunschkandidat von 2018
2006 übernahm Alberto Núñez Feijóo vom legendären Manuel Fraga Iribarne das Amt des galizischen Parteivorsitzenden, nachdem dieser die Regionalwahlen im Jahr zuvor verloren hatte. Nach nur drei Jahren führte Feijóo 2009 die Partei mit einer absoluten Mehrheit wieder in die Regierung. Er verjüngte und modernisierte die Partei, erhielt dabei aber die territoriale und sektorale Balance zwischen verschiedenen Lagern aufrecht. Glaubhaft versicherte er in den vergangenen Jahren, sich in Galizien sehr wohl zu fühlen und keine Absicht zu haben, die Rolle des Landesvaters mit den komplizierten Machtgefügen in Madrid zu tauschen.
Bereits 2018 galt Feijóo als Mariano Rajoys Wunschkandidat für dessen Nachfolge als nationalem PP-Vorsitzenden. Allerdings zog er sich damals aus dem Rennen um den Vorsitz zurück und begründete dies mit seinem Versprechen an die galizischen Wähler aus dem Jahr 2016, die ganze Legislaturperiode in Galizien zu bleiben. Dieses Versprechen hatte ihm zum damaligen Zeitpunkt seine dritte absolute Mehrheit in Folge gebracht. 2020, kurz nach dem Höhepunkt der ersten Corona-Welle, holte Feijóo mit knapp 48 % der Stimmen und 42 Mandaten seine vierte absolute Mehrheit. Er ist damit zugleich der letzte verbliebene Regionalpräsident der PP, der noch mit einer absoluten Mehrheit regieren kann und es dabei schaffte, den Einzug von Vox, Ciudadanos und Podemos ins Regionalparlament zu verhindern.
Da die Parteistatuten es nicht zulassen, dass der nationale Parteivorsitzende zugleich Vorsitzender eines regionalen Parteiverbandes ist, trat Feijóo in der Woche vor dem Parteitag vom Vorsitz der Partido Popular de Galicia (PPdG) zurück. Für die Regionalpräsidentschaft ist das zwar rechtlich nicht notwendig, trotzdem kündigte er bereits im Vorfeld an, auch dieses Amt abzugeben, da beide Posten ein Vollzeitjob und damit nicht miteinander vereinbar seien. Der genaue Übergabezeitplan und die Namen der Nachfolger in der Partei und der Regierung sind noch nicht bekannt.
Befriedung des innerparteilichen Konflikts
Viele Beobachter glauben, dass Feijóo dieses Erfolgsrezept des territorialen und sektoralen Ausgleichs nun auch auf der nationalen Ebene anwenden wird. Eine konservative Tageszeitung bezeichnete Feijóo als den "Friedensstifter", der in der Lage sei, die Partei zu einen und wieder mehrheitsfähig zu machen. Auch eine linksgerichtete Online-Tageszeitung vermutet, Feijóo werde die in Galizien erfolgreiche Strategie auf Spanien übertragen. Im Ergebnis bedeutet dies, dass er versuchen wird, als "ruhiger Manager zu handeln" und sich als "bedachter Kapitän" darzustellen, was angesichts der tiefgreifenden Konflikte in der Partei nicht einfach werden dürfte. Er gilt als ausgleichender Charakter, der einem politisch gemäßigten Kurs anhängt und die Extreme meidet. Dabei vertritt Feijóo einen moderaten Regionalismus und hat als Regionalpräsident die sprachliche Balance zwischen Spanisch und Galizisch gehalten und die kulturellen Eigenheiten Galiziens weder über- noch unterbewertet. Auch diese moderate regionalpolitische Haltung will der neue Vorsitzende auf die neue Parteistruktur der PP übertragen. Während der Corona-Pandemie stießen die restriktiven Corona-Maßnahmen Feijóos in Galizien in breiten Teilen des liberal-konservativen Spektrums der Partei auf Skepsis. Es wird sich zeigen, wie sich insbesondere der liberale Flügel der Partei künftig mit solchen Politikvorschlägen arrangiert.
Nach seiner Wahl zum Parteivorsitzenden steht ihm die personelle Neuaufstellung der Partei – insbesondere auf regionaler Ebene – bevor. Sein Vorgänger Casado hatte sich nach den Niederlagen bei den Parlamentswahlen vom 28. April 2019 und vom 10. November 2019 eine umfassende personelle Neuaufstellung der Partei in allen Landesteilen zum Ziel gesetzt, gleichzeitig jedoch mehrere Regionalparteitage noch nicht durchgeführt. Denn in Spanien bestimmt der nationale Parteivorsitzende die Personalbesetzung auf der regionalen und der lokalen Ebene im ganzen Land mit. Feijóos Intention soll es sein, diese nun durchzuführen und die Erneuerung der Partei fortzuführen.
Strukturelle Veränderungen in der Partei wird der neue Vorsitzende mit Bedacht einführen. Nach dem Konflikt zwischen Pablo Casado und Isabel Ayuso fordern die regionalen Parteichefs, von denen einige ja den Regionalregierungen vorstehen und ein entsprechendes politisches Gewicht haben, die Schaffung eines innerparteilichen Gremiums der Regionalvorsitzenden, das sich regelmäßig mit dem Parteivorsitzenden austauscht und diesen insbesondere bei den politischen Belangen der Regionen berät. Zur Debatte steht, ob die PP in der Lage sein wird, künftig sowohl in den Regionen politische Akzente zu setzen, ohne dass die Gesamtpartei eine starke Führung auf nationaler Ebene einbüßen wird. Auf dem Parteitag erteilte Feijóo Spekulationen eine Absage, laut derer er die PP in eine föderale oder konföderale Partei verwandeln wolle. Er möchte jedoch Entscheidungs- und Kommunikationsstrukturen flexibilisieren (und damit modernisieren).
Neue Gesichter und neue Strukturen
Da Feijóo nicht über ein nationales Parlamentsmandat verfügt, gilt als wahrscheinlich, dass er aus dem Kontingent Galiziens ein Mandat im Senat übernehmen wird, um im politischen Tagesgeschäft künftig Stellung zu aktuellen Debatten beziehen zu können. Wichtig ist auch, dass er durch das Mandat politische Immunität gewinnt, die ihn als Oppositionsführer vor der Beliebigkeit von politisch motivierten Strafanzeigen schützt, die in Spanien vor niederinstanzlichen Gerichten vergleichsweise einfach angestrengt werden können.
Die neu ernannte Generalsekretärin Cuca Gamarra lässt bereits den Politikstil erahnen, den Feijóo implementieren möchte. Sie war Bürgermeisterin der Hauptstadt Logroño in La Rioja, ist seit vielen Jahren im Parlament als Abgeordnete aktiv, wurde von Mariano Rajoy sehr geschätzt und von Pablo Casado zur Fraktionssprecherin im Abgeordnetenhaus befördert. Das heißt, dass ihr Aufstieg zur Generalsekretärin das Signal setzt, dass Parteiverdienste und Erfahrung bei Feijóo Bestand haben sollen. Zudem bleibt sie vorerst auch die Fraktionssprecherin der Partei in der Abgeordnetenkammer, womit sie das Sprachrohr Feijóos auch gegenüber der Regierung ist. Zum Generalkoordinator, und damit der Nummer drei in der Partei, wurde Elías Bendodo ernannt. Er ist die rechte Hand des andalusischen Regierungspräsidenten Juanma Moreno Bonilla und gilt als eine der entscheidenden Personen, dank derer die PP im Jahr 2018 erstmals die Regionalwahlen in Andalusien (mit einer relativen Mehrheit) gegen die PSOE gewinnen konnten. Diese Personalie zeigt die wichtige Stellung, die Andalusien in der PP erreicht hat.
Im Parteipräsidium, das am Tag nach dem Parteitag stattfand, ernannte Feijóo zudem fünf Parteisekretäre und weitere Führungspositionen, die zusammen mit Gamarra und Bendodo den innersten Führungszirkel bilden werden. Neben Feijóos Vertrauensperson Miguel Tellado, der Vermutungen zufolge wohl ebenfalls in den Senat einziehen dürfte, sind dies u.a. ein weiterer Galizier, zwei Vertraute Moreno Bonillas aus Andalusien, ein Vertreter Isabel Ayusos aus Madrid und eine Politikerin aus dem Umfeld des kastilischen Regionalpräsidenten Mañueco. Der Sprecher der PP-Gruppe im Europäischen Parlament, Esteban González Pons aus Valencia, ist ein enger Vertrauter Feijóos und wurde aufgrund seiner internationalen Vernetzung zum Parteisekretär für die institutionelle und internationale Zusammenarbeit ernannt, was ihm ermöglicht, weiterhin in Brüssel zu bleiben.
Interessant ist, dass Feijóo keinen Parteisekretär für Kommunikation und auch keinen nationalen Parteisprecher ernannte. Diese beide Posten dienten in der PP traditionell dazu, Verlautbarungen intern akribisch abzustimmen um, so die Intention, eine solide Außendarstellung zu gewährleisten. Die fünf neuen Parteisekretäre übernehmen nun in ihrer Gesamtheit diese Aufgabe mit, was die Reaktionsschnelligkeit, Flexibilität, Dynamik und Reichweite der Außendarstellung erhöhen könnte.
Die PP als Opposition im Spannungsgefüge von PSOE und Vox
Mit Spannung wird erwartet, wie sich Feijóo gegenüber Ministerpräsident Sánchez positionieren kann. In seiner Antrittsrede am 2. April unterstrich er die Notwendigkeit, große parteiübergreifende Vereinbarungen zu drängenden Problemen mit der Regierung zu finden. Damit bezog er sich in erster Linie auf die Neubesetzung des Generalrats der Judikative, dessen Mandat schon 2018 ausgelaufen ist, sowie auf die Verteidigungs-, die Gesundheits- und auf die Wirtschafts- und Sozialpolitik (um die Konsequenzen des Krieges, der Corona-Pandemie und des schwachen Wirtschaftswachstums zu lindern). Er begründete seinen Vorstoß damit, dass er Parteiinteressen hinter die Interessen der Bürger zurückstellen und verantwortungsvolle Staatspolitik betreiben werde – ohne dabei jedoch jemals Kompromisse bei der nationalen Souveränität oder dem Respekt vor der Verfassung einzugehen. Er stellte klar: „Kompromissfähigkeit hat nichts mit Unterwürfigkeit zu tun“.
Während Feijóo sich vor dem Parteitag deutlich von der rechtspopulistischen Partei Vox distanzierte, ignorierte er sie in seiner Antrittsrede weitgehend. Stattdessen fokussierte er sich auf die politische Mitte. Er wird versuchen, unbeirrt das Bild aufzubauen, dank der enttäuschten Ciudadanos- und PSOE-Wähler eine Mehrheit in der Mitte anzusprechen, die groß genug sein werde, um ihm 2023 zu einer Alleinregierung zu verhelfen. Tatsächlich gibt es für diese Strategie ein historisches Vorbild: Mariano Rajoy soll laut Nachwahl-Umfragen bis zu 2 Mio. Stimmen von enttäuschten PSOE-Wählern geholt haben.
Die PP zeigte am 1. und 2. April in Sevilla ehrliche Geschlossenheit und hofft, dass es Feijóo gelingen wird, dank seiner 13 Jahre Regierungserfahrung in Galizien, dank des Umstands, die PP schon einmal aus der Opposition an die Regierung geführt zu haben, und dank seiner Anstrengungen, interne Grabenkämpfe zu beenden, tatsächlich eine neue Aufbruchsstimmung schaffen könne. Es wird sich zeigen, ob Feijóos „ruhige Hand“ im polarisierten Parteiensystem zwischen der gemäßigt-linken PSOE, der linkspopulistischen Podemos, der rechtspopulistischen Vox und den nationalistischen Regionalparteien aus dem Norden Bestand haben kann.