Super election year 2022 in Brazil - Foundation Office Brazil
The following has evaluated to null or missing: ==> data.meta [in template "252001#252047#252845" at line 459, column 10] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- 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: #if data.meta.laufendenummer?has_cont... [in template "252001#252047#252845" at line 459, column 5] ----
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
98 title = entry.getTitle(languageId)
99 data = {
100 "title": title
101 }
102 />
103 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" />
104
105 <#if hasContent('untertitel', languageId, json)>
106 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } >
107 </#if>
108
109 <#if hasContent('beschreibung', languageId, json)>
110 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } >
111 </#if>
112
113 <#-- fill meta data -->
114 <#assign meta = {} />
115
116 <#-- PUBLIKATIONEN DETAIL -->
117 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")>
118
119 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)>
120 <#assign
121 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first")
122 />
123
124 <#if coverBildString?has_content>
125 <#assign
126 coverBild = FrontendService.json.parseAsJson(coverBildString)
127 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale )
128 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid )
129 data = data + { "media": linkToDMT, "meta" : dMTJsonObject }
130 />
131 <#if dMTJsonObject.altText?? >
132 <#assign data = data + {"alt" : dMTJsonObject.altText} />
133 </#if>
134 <#if dMTJsonObject.quelle??>
135 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } />
136 </#if>
137 </#if>
138 <#-- uncomment to display pdf cover as Intro Image
139 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)>
140 <#assign
141 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first")
142 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/>
143 <#if fileEntry?has_content>
144 <#assign
145 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay)
146 data = data + { "media": linkToThumbnail }
147 />
148 </#if>
149 -->
150 </#if>
151
152 <#assign
153 meta = meta + { "orderInfo": "true" }
154 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!""
155 />
156
157
158
159 <#if hasContent('erscheinungsdatum', languageId, json)>
160 <#assign
161 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
162 />
163 <#if erscheinungsdatum?has_content >
164 <#assign
165 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId )
166 meta = meta + { "date": erscheinungsdatumFormatted }
167 />
168 </#if>
169 </#if>
170
171 <#if verbundJournalArticle?has_content>
172 <#assign
173 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey)
174 verbundJson = FrontendService.json.parseAsJson(verbundJsonString)
175 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first")
176 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first")
177 />
178 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" />
179 <#assign meta = meta + { "laufendenummer": laufendenummer } >
180
181 <#if coverImg?has_content && coverImg.url?has_content >
182 <#assign meta = meta + { "coverImg": coverImg.url } >
183 </#if>
184 </#if>
185
186
187 <#if meta?has_content>
188 <#assign data = data + {"meta": meta } >
189 </#if>
190
191 </#if>
192 <#-- PUBLIKATIONEN DETAIL END -->
193
194
195 <#-- VERANSTALTUNGEN DETAIL -->
196 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")>
197 <#assign
198 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!""
199 languages = entry.getAvailableLanguageIds()
200 links = []
201 />
202 <#if languages?has_content && friendlyUrl?has_content>
203 <#if (languages?size > 1) >
204 <#list languages 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 <#list json["document_pdfDMTBASICDOCUMENT"]?keys as pdf_language>
411 <#if pdf_language?has_content >
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 </#if>
436 </#list>
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.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()>
460 <div>
461 <div id="publicationVerbundPagination">
462 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg />
463 </div>
464 </div>
465 </#if>
466
467<#elseif (editmode?? && editmode)>
468 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl />
469</#if>
The year 2022 is again a super election year in Brazil. On 2 October, the more than 156 million eligible voters - and Brazilians between the ages of 18 and 70 who are obliged to vote - were called to the polls to elect a president, 27 of the 81 senators, 513 federal deputies, 27 governors, and state and district deputies. With this event in mind, parties and parliamentarians mobilised their forces to form competitive factions and coalitions and increase the chances of expanding their seats in Congress. Part of this preparation in Brazil is the "ritual" of changing parties. These were possible until the beginning of April. A total of 132 deputies made use of this. The clear winner of the redistribution of the balance of power at that time was the liberal party PL of President Jair Bolsonaro, which won 33 new deputies - mainly from the União Brasil - and was now the strongest force in parliament with 75 deputies. Until the elections, the Workers' Party PT represented the second largest group with 56 representatives, followed by the Progressistas (50 MPs) and the Republicans (45 MPs). The socialist party PSD and the PSDB were among the losers in this year's change window. This trend was also reflected in the parliamentary elections on 2 October. The PL was able to strengthen its supremacy. With 98 elected deputies and 12 senators, it is now the strongest parliamentary group in the coming legislative period. The PT also won 12 seats in the Chamber of Deputies and 2 in the Senate. The newly constituted parliament will be dominated mainly by conservative forces from 2023. As none of the candidates won an absolute majority, a run-off election between the leading candidate and former president Luiz Inácio "Lula" Da Silva (PT) and President Jair Bolsonaro (PL) for the office of head of state is scheduled for 30 October 2022, as well as duels in 12 of the 27 states at the governorate level.
With this page, KAS-Brazil will provide information in German and Portuguese on the elections in Brazil in the coming months until the election in October 2022 and on the outcome of the election and the formation and installation of a new government in the months after. You will also find all the information that the KAS Brazil team had compiled for the 2018 elections.