Asset-Herausgeber

Fehler bei der Verarbeitung der Vorlage.
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-Herausgeber

http://www.kas.de/upload/bilder/2010/themen/cyber_viktor.jpg
Viktor Malishevsky
Viktor Malishevsky ist einer der einflussreichsten Blogger in Belarus. Das Ergebnis seiner Recherche über den Preis einer Armbanduhr von Alexander Lukaschenko brachte ihm weltweite Aufmerksamkeit und ist typisch für sein Vorgehen. Mit Vorliebe seziert er die Absurditäten in seinem autoritär geführten Heimatland. Malishevsky ist 36 Jahre alt und arbeitet als selbständiger Medientrainer. Er studierte Politik und begann sein Berufsleben im Journalismus.

Wie würdest Du Deinen Blog beschreiben?

Ich schreibe viel über Politik. Trotzdem würde ich nicht sagen, dass mein Blog politisch ist. Viele Menschen meinen, ich mache ein journalistisches Angebot. Das ist falsch, unterliegt der Journalismus anders als das Bloggen doch zahlreichen Restriktionen. Ich würde sagen, dass ich ein Spiel spiele. Ich nähere mich ironisch den Politikern und politischen Analysten. Ich weiß nicht, inwieweit die Betroffenen das ahnen. Die einzigen Einschränkungen für Blogger sind die oftmals viel zu knappe Zeit und dass man niemals für Geld schreiben sollte. Ich finanziere mich selber, damit ich diesen Blog unabhängig betreiben kann.

Welche Quellen nutzt Du?

Meine einzige Quelle ist das Netz, so wie es sich für einen Blogger gehört. Ein Journalist kann jederzeit bei irgendwem nachfragen. Ein Blogger richtet seine Fragen ins Nirgendwo. Bevor man eine Frage formulieren kann, ist es notwendig, genügend Informationen gesammelt zu haben. Auch wenn das merkwürdig klingt, die Regierung veröffentlicht Tag für Tag viele interessante Neuigkeiten auf ihrer eigenen Internetseite. Wenn man in der Lage ist, diese Infos für sich zu nutzen, kann man als Blogger leben. Wenn ich Journalist wäre, würde ich Blogs als eine Art Recherche-Training betrachten.

Wie sieht ein typischer Arbeitstag von Dir aus?

Ich bin den ganzen Tag im Netz unterwegs, um neue Geschichten für mein Blog zu finden. Normalerweise schreibe ich an vier bis fünf Einträgen gleichzeitig, sammele Material für weitere Einträge, vergleiche Fakten und verfolge, was im Land so los ist.

Wie unterscheidet sich Dein Blog von anderen?

Normalerweise sage ich im Spaß immer, dass der Unterschied darin liegt, dass ich ausführlicher schreibe als andere Blogger. Leider ist das kein Spaß: 80 Prozent der Blogger verfassen nur sehr kurze Bemerkungen, ähnlich wie auf Twitter. Oder sie beschränken sich darauf, die Beiträge anderer zu kommentieren. Manchmal denke ich, dass diese Selbstreferenzialität das Hauptmerkmal der Blogosphäre in Belarus ist. Fast immer entwickelt sich etwas wesentlich Spannenderes daraus, als der ursprüngliche Eintrag. Es ist eine Art Anti-Expertentum entstanden, die die Dinge mit einer eigenen Tonlage mit eigenen Worten kommentiert. Wenn politische Beobachter das lesen würden, sie würden sich wundern und anfangen, sich ebenfalls Gedanken über diese Themen zu machen. Darüber hinaus denke ich, dass alle Blogger faul sind. Eigentlich können sie gut schreiben, doch warum sollten sie sich mit etwas beschäftigen, womit sie kein Geld verdienen können?

Über Blogs in Belarus
Blogs sind in Belarus eine gute und gängige Möglichkeit, brisante Informationen in die Medien zu bringen. Den Autoren eröffnet sich damit eine Einflussmöglichkeit auf die Berichterstattung. Bis zu einer Verschärfung der Internetkontrolle im Juli 2010 war das Netz in Belarus ein Raum, in dem freie Meinungsäußerung weitgehend möglich war, stellte es doch den einzigen nicht kontrollierten öffentlichen Raum dar. Trotzdem, so Beobachter, kommt der geschickten Nutzung digitaler Medien durchaus das Potenzial zu, zur Triebfeder eines demokratischen Wandels im Land zu werden. Erfolg oder Misserfolg der demokratischen Opposition bei den nächsten Präsidentschaftswahlen Anfang 2011 in Belarus werden wesentlich davon abhängen, ob es der Opposition gelingen wird, dieses Medium klug und wirkungsvoll einzusetzen.

Kennst Du Deine Leserschaft?

Mein Blog wird hauptsächlich von Studenten gelesen. Die meisten kommen von den journalistischen Fakultäten der staatlichen und europäischen Universität in Belarus. Ich denke, von denen ist keiner über 40 Jahre alt, anders als etwa die Nutzerschaft von Twitter, die sehr heterogen ist. Ich habe festegestellt, dass mir viele meiner Leser auch im richtigen Leben begegnen. Es ist eine Insider-Szene. Tatsächlich ist es weniger eine virtuelle Gemeinschaft, sondern eher ein sehr realer Bekanntenkreis. Ich wundere mich jedenfalls nicht mehr, wenn ich jemanden kennenlerne, und ich feststelle, dass wir uns bereits aus der Blogosphäre kennen. Hier gebt es Überschneidungen von bis zu 60 Prozent.

Was ist Deine Motivation? Glaubst Du, Du kannst mit Deinem Angebot etwas in Belarus ändern?

Es tut mir Leid, aber ich muss gestehen, dass mir diese noble Motivation fehlt. Oft höre ich, dass es der Bevölkerung in Belarus an Informationen fehlt. Wenn das so ist, warum hat sich die Verkaufszahl der unabhängigen Zeitungen nicht erhöht?

Ich will nicht als Journalist arbeiten. Der Journalist steht unter einem enormen Zwang. Er wird in seiner Arbeit behindert. Trotzdem muss der Staat gar nicht eingreifen, weil die Journalisten sich selber zensieren. Sie hinterfragen nicht das aktuelle Zeitgeschehen und wagen sich nicht an komplizierte Sachverhalten, weil sie die Antworten im Vornherein zu wissen glauben. Sie reflektieren nicht und achten nicht darauf, was um sie geschieht und sind sich ihrer Rolle als Aufklärer, als Kritiker für ihr Land nicht bewusst. Trotzdem wäre es zu einfach, auf sie zu verzichten. Ich instrumentalisiere sie. Niemand hindert mich Fragen ohne Adressat zu stellen. Ich aber weiß, dass sie auch von Journalisten gelesen und transportiert werden. Vielleicht gelingt es mir auf diese Weise, diejenigen zu widerlegen, die glauben alles über Belarus zu wissen.

Ich halte es mit Anton Chekhov. Während einer Theaterprobe für die Tragikkomödie „Der Kirschgarten“ schrie er die Darsteller an: „Es ist eine Komödie.“ Ähnlich funktioniert mein Blog. Ironie ist für mich die einzige mögliche Reaktion auf das, was in diesem Land geschieht. Ironie über sich selber, der Regierung und der Opposition gegenüber. Sich an Humor und Ironie zu stoßen, wäre entlarvend, oder?

Welchen Einfluss hat Dein Blog auf die Politik?

Alle Blogger überschätzen ihren eigenen Einfluss. Manchmal bis zu einem Maß, dass es peinlich ist. Das ist die Realität. Man muss zwischen Kontrolle und Einfluss unterscheiden. Ich werde zitiert, also habe ich automatisch Einfluss auf andere. Ebenso ist es, wenn Journalisten meine Fragen stellen oder ich als Experte unterwegs bin. Man muss vorsichtig sein, nicht vereinnahmt zu werden. Sobald das geschieht, hört man auf ein Blogger zu sein. Es verbietet sich, den eigenen Einfluss zu missbrauchen. Auch wenn ich als einflussreich gelte, habe ich deswegen keine Angst vor einer Reaktion von Seiten des Staates. Vielmehr bereitet mir Sorge, dass ich meine Selbst-Ironie verlieren könnte. Wichtig ist mir in diesem Zusammenhang noch, darauf hinzuweisen, dass es zwischen der Macht eines Bloggers und möglichen Problemen mit dem Geheimdienst keine Kausalität gibt.

Internetnutzung in Belarus
Jeder Dritte in Belarus nutzt das Netz, Blogs sind das drittwichtigste Nachrichtenmedium. Vor diesem Hintergrund hat das Internet als Quelle für unzensierte Informationen sowie als ein alternativer öffentlicher Raum der politischen Kommunikation für viele Belarussen in den letzten Jahren rasant an Bedeutung gewonnen. Quantitativ hat sich laut des Internet World Stats die Anzahl der Internet-Nutzer in Belarus von 2000 bis 2007 um das 15-Fache erhöht. Laut Gemius nutzten im Februar 2010 rund drei Millionen Menschen das Internet. Die BBC wertet in einer Studie vom Herbst 2009 die Verbreitung des Internets als „eine der höchsten in der Region“ mit Webseiten, die bis zu 10.000 individuelle Besucher täglich aufweisen und einer sehr gut entwickelten Bloggergemeinschaft mit über 20.000 Blogs, die in der populärsten Plattform LiveJournal registriert sind.

Vor Kurzem wurde in Belarus eine Internet-Zensur eingeführt. Demnach werden Webseiten und die Internet-Nutzer streng von der Regierung und einer Sondereinheit der Präsidialverwaltung kontrolliert. Welche Auswirkungen hat das auf die Blogosphäre?

Erst dachte ich, das hätte keinerlei Auswirkungen. Jetzt aber werden Computer von Journalisten danach durchsucht, ob sich auf ihnen das Wort „Diktator“ befindet. Das verstehe ich nicht. Ist es denn gefährlich, wenn sich in einer Datei dieses schreckliche Wort befindet? Wir müssen aufpassen, dass wir in dieser neuen Situation nicht eine Phobie entwickeln. Unsere Regierung kann nicht alles kontrollieren, auch wenn sie noch weitere Gesetze beschließt. Sie wird immer dann unruhig, wenn alle um sie herum ruhig sind. Ich versuche, dieser Aufgeregtheit keine Beachtung zu schenken. Es zerstört einen, noch ehe die Gesetze beschlossen worden sind.

Wie reagiert die Regierung auf Blogs wie Deinen?

Gar nicht. Mitglieder der Führungsriege werden nur dann nervös, wenn andere Mitglieder nervös werden.

Können Blogs zu einer Demokratisierung Belarus beitragen, erst recht da die Internetnutzer die jüngsten in ganz Europa sind?

Das ist ein visionärer Auftrag, der Blogs nicht gerecht wird. Blogger sollten als eine sich selbst organisierende Gemeinschaft verstanden werden. Die Tatsache, dass junge Menschen über ihr Land schreiben, ist das beste, was sie für die Demokratie machen können. Darum liebe ich Blogs und Blogger so. Man stört sie besser nicht in ihrer Welt mit irgendeiner Mission. Darüber würden sie nur lachen.

Asset-Herausgeber

Cyber-Mobilization Switsch