Asset Publisher

An error occurred while processing the template.
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> 

Asset Publisher


On the following page the Konrad-Adenauer-Stiftung's (KAS) office in Johannesburg compiled its own reports and analysis as well as further information on the 2014 South African General Elections, which took place on 7 May.


On the occasion of the fifth free and democratic elections since the end of apartheid, 31.4 million South Africans were entitled to vote for a new national parliament as well as nine provincial legislatures. The South African Independent Electoral Commission (IEC) counted 25.4 million registered voters, who accounted for 80% of South Africans entitled to vote. Eventually, 18.7 million (almost 60% of the voting age population) made use of their right to vote. For the first time, even South African expats abroad were allowed to register for voting at the country’s foreign missions.


On election day the KAS office in Johannesburg sent its own observer mission to a couple of voting stations in and around Johannesburg. You will find all relevant information of KAS and further reading to the General Election from 7 May 2014 on this page.











KAS Reports on 20 Years of Democracy and the 2014 South African General Elections (German)


Parlamentswahl in Südafrika. ANC siegt deutlich, aber mit Stimmverlusten


ANC vor erneutem Wahlsieg


Interview: "Südafrika ist zurzeit politisch sehr aktiv"


FAQ – Allgemeine Wahlen 2014 in Südafrika



SUMMARY OF THE PARTIES’ ELECTION MANIFESTOS


Das Wahlprogramm des African National Congress (ANC)


Das Wahlprogramm des Congress of the People (COPE)


Das Wahlprogramm der Democratic Alliance (DA)


Das Wahlprogramm der Economic Freedom Fighters (EFF)


Das Wahlprogramm der Inkatha Freedom Party (IFP)








Research done by KAS partner Democracy Development Programme (DDP) on the 2014 General Elections


DDP Election Observation Report


DDP Report on political dialogues


DDP Radio Reports on the 2014 General Elections









Media reporting:


Opposition parties form coalition in bid to oust ANC (Mail & Guardian, 17/12/2013)


Expats can now vote in SA elections abroad (Mail & Guardian, 07/01/2014)


Zuma: The ANC will rule till Jesus comes back (Mail & Guardian, 08/01/2014)


EFF to court Numsa over united workers’ front (BDlive, 10/01/2014)


ANC's support down to 53% among eligible voters - Ipsos (Politicsweb, 11/01/2014)


Zuma launches new ANC manifesto (Mail & Guardian, 11/01/2014)


Elections 2014: Will it be ANC vs EFF? (City Press, 12/01/2014)


ANC takes a step back to appease labour allies (BDlive, 13/01/2014)


Party’s election manifesto highlights (Daily News, 13/01/2014)


The Big Read: ANC is incapable of giving itself the makeover it needs (The Times, 14/01/2014)


Zuma will cost ANC dearly (Cape Times, 15/01/2014)


Agang denies allegations of internal crisis (BDlive, 16/01/2014)


Independent Democrats to cease to exist this year (BDlive, 16/01/2014)


Struggle will not be forgotten come the election (BDlive, 22/01/2014)


Wither Ramphele's dream (The Times, 22/01/2014)


Hani resignation raises doubts about Agang SA (BDlive, 23/01/2014)


Zuma learns that friendship is fleeting (The Times, 23/01/2014)


DA keeps secret spot open for Agang’s Ramphele (BDlive, 27/01/2014)


ANC graft dilemma (The Citizen, 28/01/2014)


Mamphela Ramphele joins DA as presidential candidate (BDlive, 28/01/2014)


Agang will be integrated into the DA, says Zille (Mail & Guardian, 28/01/2014)


Ramphele changes the face of SA’s elections (BDlive, 29/01/2014)


Agang anger over Ramphele ‘betrayal’ (The Star, The Mercury, Sapa, 29/01/2014)


Malema’s future in doubt as SARS wins order (BDlive, 11/02/2014)


Vanessa Hani joins COPE after leaving Agang (BDlive, 11/02/2014)


Outcome of final registration weekend (Independent Electoral Commission, 11/02/2014)


Bricks fly as ANC, police clash during DA protest (Mail and Guardian, 12/02/2014)


'ANC fears NFP' (SABC, 16/02/2014)


Modest Zille puts ANC share of votes at 60% (BDlive, 17/02/2014)


DA battles an old stereotype (BDlive, 17/02/2014)


Prosperity is within our grasp (iolnews, 17/02/2014)


Traditional leaders an important base for ANC (BDlive, 18/02/2014)


Zuma comes in for stick from opposition on protests quote (BDlive, 19/02/2014)


Zuma promises 'socioeconomic' changes after election (Mail and Guardian, 20/02/2014)


‘Bring it on’ says Shilowa to Lekota (The Cizizen, 25/02/2014)


EFF frenzy a case of media hype over substance (BDlive, 05/03/2014)


Malema tackles IEC over poll fees (Pretoria News, 05/03/2014)


Decline of a weakened ANC is not inevitable (BDlive, 07/03/2014)


Leaks, lovers and in-laws: The ANC gets personal with its MPs (Mail & Guardian, 07/03/2014)


Tembisa: Mirror of a nation's bias (Mail & Guardian, 07/03/2014)


ANC no longer the party of change (Mail & Guardian, 07/03/2014)


Agang SA launches ‘citizens’ manifesto’ (BDlive, 09/03/2014)


Manifestos: Power must be devolved to citizens (Mail & Guardian, 09/03/2014)


COPE election manifesto calls for ‘inclusive approach’ (BDlive, 09/03/2014)


POLITICAL WEEK AHEAD: Wednesday deadline for candidate lists to IEC (BDlive, 10/03/2014)


Zuma packs electoral list with loyalists (BDlive, 12/03/2014)


‘Reluctant politician’, stalwart minister bow out (BDlive, 12/03/2014)


Agang's long-term plan to build a winning country (Mail & Guardian, 14/03/2014)


Secret party funding fuels electorate’s suspicion (BDlive, 18/03/2014)


Yet again ANC has splinters under its nails (BDlive, 19/03/2014)


Story of the past 20 years is the story of all of us (BDlive, 19/03/2014)


'Beware of backlash over Nkandla’ (The Star, 24/03/2014)


SABC chair openly shows her political colours (The Citizen, 24/03/2014)


ANC woes will benefit us – NFP (The Citizen, 24/03/2014)


Mbeki says Nkandla findings ‘worrying’ (The Citizen, 26/03/2014)


Opposition parties say IEC chief must resign within seven days (BDlive, 02/04/2014)


Give us enough votes to change Constitution – Zuma (The Citizen, 10/04/2014)


UDM’s Holomisa makes most of Amcu’s rise (BDlive, 17/04/2014)


Million born-frees won’t vote on May 7 (Cape Times, 22/04/2014)


Nkandla probe stalls with ANC bid to kick it into the next parliament (BDlive, 29/04/2014)


Expats to start voting (Cape Times, 29/04/2014)


Holomisa looking to double UDM seats (BDlive, 29/04/2014)


IEC’s head might roll soon (The Citizen, 30/04/2014)


Promises, threats and posturing in poll climax (BDlive, 05/05/2014)


POLITICAL WEEK AHEAD: South Africans get their moment to decide (BDlive, 05/05/14)


What will be wages of sins of incumbency? (BDlive, 05/05/14)


Identity politics still likely to dominate poll (The Citizen, 05/05/14)


Zuma discloses shocker (The Citizen, 06/05/14)


Practical, fun apps to help you v

ote (The Citizen, 06/05/14)


Why do you deserve my vote? (BDlive, 02/05/14)


Voter turnout win for South Africa (BDlive, 08/05/14)


Diplomats restricted from observing elections (BDlive, 08/05/14)


Murder at the polling station (Daily News, 08/05/2014)


Dumped ballot papers in Lynnwood to be investigated (Mail & Guardian, 08/05/2014)


Election 2014 losses could signal death knell for smaller parties (BDlive, 09/05/2014)


Economy ‘back on centre stage’ (BDlive, 09/05/2014)


ANC vows to quickly restore investor confidence (BDlive, 12/05/2014)


Mazibuko exit may see Zille back in Parliament (BDlive, 12/05/2014)


ANC has work to do in metros for 2016 local polls (BDlive, 12/05/2014)


Elections 2014 ‘was efficient’ (The Citizen, 13/05/2014)


Differences among ruling party’s allies re-emerge after big victory (BDlive, 13/05/2014)


Mazibuko shunned DA ‘death match’ (BDlive, 13/05/2014)


Zille absence diminishes Parliament, says Leon (BDlive, 14/05/2014)


ANC does not need EFF as partner (The Citizen, 14/05/2014)


Long memories of apartheid help to forget ANC sins (BDlive, 15/05/2014)


Numsa ‘not turning back’ on new party (BDlive, 15/05/2014)


Move over Maimane, Gana's here (Mail & Guardian, 16/05/2014)


Is the EFF the calm before a real leftist storm? (Mail & Guardian, 16/05/2014)


Agang to implode (Times Live, 19/05/2014)


Election fears guide ANC pick of premiers (Times Live, 21/05/2014)


ANC elects woman to lead council of provinces (BDlive, 23/05/2014)


NEWS ANALYSIS: Will Economic Freedom Fighters MPs stand up to enemy fire (BDlive, 23/05/2014)


Poor believe grants tied to party not state (BDlive, 23/05/2014)


Executive decision: Zuma's new cabinet (Mail & Guardian, 25/05/2014)


Zuma reshuffles economics cluster, to mixed reaction (Mail & Guaradian, 26/05/2014)


Opposition worries about bloated Cabinet (BDlive, 26/05/2014)


Tough months ahead for SA’s phalanx of rookie MPs (BDlive, 28/05/2014)


Zuma appoints Ramaphosa to planning role (BDlive, 03/06/2014)


NFP head ‘co-opted by ANC to defeat IFP’ (BDlive, 06/06/2014)


Agang SA leader Mamphela Ramphele leaves party politics (BDlive, 08/07/2014)








Links to the Election Manifestos of the South African political parties:



Parties represented in the 25th national parliament since 2009.



African National Congress (ANC)


The ruling ANC forms the so called Tripartite Alliance in government with the South African Communist Party (SACP) and the Congress of South African Trade Unions (COSATU)


Election Manifesto 2014


Election Manifesto 2014 (short version)



Democratic Alliance (DA)


Election Manifesto 2014


Lists of candidates of the DA (Democratic Alliance, 25.01.2014)



DA provincial premiers candidates:


Western Cape: Helen Zille


Gauteng: Mmusi Maimane


Northern Cape: Andrew Louw


Free State: Patricia Kopane


North West: Chris Hattingh


KwaZulu-Natal: Sizwe Mchunu


Eastern Cape: Athol Trollip


Limpopo: Langa Bodlani


Mpumalanga: Anthony Benadie




Congress of the People (COPE)


Election Manifesto 2014



Inkatha Freedom Party (IFP)


Election Manifesto 2014




United Democratic Movement (UDM)


UDM Election Manifesto




African Christian Democratic Party (ACDP)


ACDF Election Manifesto 2014



United Christian Democratic Party (UCDP)


UCDF Election Manifesto 2014




Freedom Front Plus (FF+)


FF+ Election Manifesto 2014




Minority Front (MF)


MF Election Manifesto 2014




Pan Africanist Congress of Azania (PAC)


PAC Election Manifesto 2014



Azanian People's Organisation (AZAPO)


AZAPO Election Manifesto 2014



African People's Convention (APC)


APC Election Manifesto 2014








Party newcomers



Agang SA


Agang Election Manifesto 2014




Economic Freedom Fighters (EFF)


EFF Election Manifesto 2014







Links to further information:


Preliminary report on the SADCLA Elections Observation Mission in the South African province of KwaZulu-Natal (08/05/2014)


Preliminary statement of the Southern African Development Community (SADC) Electoral Observation Mission to the Republic of South Africa (09/05/2014)


Preliminary statement of the African Union Election Observer Mission (13/05/2014)


news24 reports and data on the 2014 General Elections


Website of the Independent Electoral Commission (IEC) of South Africa


IEC advert call for participation in the 2014 General Elections


People's National Assembly


The South African Parliamentary Institute (PISA)



Results of the 2014 General Elections in South Africa

(© electionresources.org)





Results of the 2009 General Elections in South Africa

(© electionresources.org)





Asset Publisher

Contact

Henning Suhr

Henning Suhr bild

Head of the Department International Dialogue Programs

henning.suhr@kas.de +49 30 26996-1013
+27 (11)214 2900-201

Asset Publisher