Asset Publisher
Blog
Asset Publisher
Blog-Artikel
Asset Publisher
The following has evaluated to null or missing: ==> mediumData["groupId"] [in template "252001#252047#WCD_DEBATTENBLOG_BLOGUEBERSICHT_LISTE" at line 154, column 99] ---- Tip: It's the final [] step 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: #assign linkToDMT = FrontendService.m... [in template "252001#252047#WCD_DEBATTENBLOG_BLOGUEBERSICHT_LISTE" at line 154, column 9] ----
1<#-- bezieht sich auf WCS Blog -->
2<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
3<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") >
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
6
7<#assign articleId = .vars['reserved-article-id'].data />
8<#assign articleTitle = .vars['reserved-article-title'].data />
9<#assign version = .vars['reserved-article-version'].data?number />
10<#assign article = JournalArticleLocalService.fetchArticle( articleGroupId, articleId , version ) />
11
12<#if requestMap??>
13 <#assign
14 renderUrl = requestMap['render-url']
15 control_panel = renderUrl?contains('control_panel')
16 >
17</#if>
18
19<#if control_panel?? && control_panel>
20 <#if FrontendService.user.isPrivilegedUser(permissionChecker.getUser())>
21 <pre>
22 articleId = ${.vars['reserved-article-id'].data}
23 version = ${.vars['reserved-article-version'].data}
24 groupId = ${articleGroupId}
25 structurekey = ${article.getDDMStructureKey()}
26 </pre>
27 <pre style="white-space: pre-wrap;">
28 ${FrontendService.json.transformToJson( article, true )}
29 </pre>
30 </#if>
31<#else>
32 <#-- includes error message -->
33 <#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" />
34
35 <#-- get link from frontend service -->
36 <#assign contentUrl = "/404" >
37 <#assign journalArticle = JournalArticleLocalService.getArticle(groupId, articleId) />
38 <#if journalArticle?has_content>
39 <#assign className = "com.liferay.journal.model.JournalArticle">
40 <#assign resourcePrimKey = journalArticle.getResourcePrimKey()!"">
41 <#assign assetEntry = AssetEntryLocalService.getEntry(className, resourcePrimKey) />
42
43 <#if assetEntry?has_content>
44 <#assign assetRenderer = assetEntry.getAssetRenderer() >
45 <#assign classPK = assetEntry.getClassPK()!"" >
46 <#assign contentUrl = FrontendService.article.getFriendlyUrl(classPK, themeDisplay.getLocale(), themeDisplay.getScopeGroupId()) >
47 </#if>
48 </#if>
49
50 <#function getJournalArticle referenceStructure >
51 <#local journalArticle = "" >
52
53 <#attempt>
54 <#local data = FrontendService.json.parseAsJson(referenceStructure.getData()) >
55 <#if data?is_hash>
56 <#local classPK = data['classPK'] >
57 <#local className = data['className'] >
58 <#local entry = AssetEntryLocalService.getEntry(className, classPK?number)! >
59 <#if entry??>
60 <#local assetRenderer = entry.getAssetRenderer() />
61 <#local journalArticle = (assetRenderer.getArticle())! />
62 </#if>
63 </#if>
64 <#recover>
65 <#-- catch block -->
66 </#attempt>
67
68 <#return journalArticle >
69
70 </#function>
71
72 <#function getSaxReaderDocument dataObj >
73 <#local document = "" >
74
75 <#local journalArticle = getJournalArticle(dataObj) >
76 <#if journalArticle?has_content>
77 <#local document = (saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())))!"" />
78 </#if>
79
80 <#return document >
81
82 </#function>
83
84 <#function getCategoriesForVocabuary assetEntry vocabularyName >
85 <#local categories = [] >
86 <#local assetCategories = (assetEntry.getCategories())![] >
87
88 <#list assetCategories as assetCategory>
89 <#local vocabularyId = assetCategory.getVocabularyId() >
90 <#local vocabulary = AssetVocabularyLocalService.getVocabulary(vocabularyId)!"" >
91
92 <#if vocabulary?has_content>
93 <#if vocabulary.getName() == vocabularyName || vocabulary.getTitle("de_DE") == vocabularyName >
94 <#local categories = categories + [assetCategory] >
95 </#if>
96 </#if>
97 </#list>
98
99 <#return categories >
100
101 </#function>
102
103 <#assign journalArticle = JournalArticleLocalService.getLatestArticle(groupId, .vars['reserved-article-id'].data) >
104 <#assign assetEntry = AssetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) >
105 <#assign categories = getCategoriesForVocabuary(assetEntry, "Thema") >
106
107
108 <#-- PERSON macro
109 ------------------------------------------------------------------------------------------------------------------------>
110 <#macro personName document >
111 <#if document?has_content>
112 <#local anredetitel = "">
113 <#local vorname = "">
114 <#local nachname = "">
115
116 <#if document.selectSingleNode("/root/dynamic-element[@name='anredetitel']/dynamic-content")??>
117 <#local node = document.selectSingleNode("/root/dynamic-element[@name='anredetitel']/dynamic-content") />
118 <#local anredetitel = node.getText() />
119 </#if>
120
121 <#if document.selectSingleNode("/root/dynamic-element[@name='vorname']/dynamic-content")??>
122 <#local node = document.selectSingleNode("/root/dynamic-element[@name='vorname']/dynamic-content") />
123 <#local vorname = node.getText() />
124 </#if>
125
126 <#if document.selectSingleNode("/root/dynamic-element[@name='nachname']/dynamic-content")??>
127 <#local node = document.selectSingleNode("/root/dynamic-element[@name='nachname']/dynamic-content") />
128 <#local nachname = node.getText() />
129 </#if>
130
131 <#if anredetitel?has_content || vorname?has_content || nachname?has_content >
132 <span class="o-metadata o-metadata--author">
133 ${anredetitel} ${vorname} ${nachname}
134 </span>
135 </#if>
136
137 </#if>
138 </#macro>
139
140 <#-- Quelle macro
141 ------------------------------------------------------------------------------------------------------------------------>
142 <#macro mediaReference groupId uuid>
143 <#local mediaObj = FrontendService.media.getDMTJsonObject(groupId, uuid, locale)!"" >
144
145 <#if mediaObj?has_content && (mediaObj.quelle)?has_content >
146 <#local source = mediaObj.quelle?substring(1, (mediaObj.quelle?length - 1))>
147 <span class="o-imagesource">${source}</span>
148 </#if>
149 </#macro>
150
151
152 <#-- Cover -->
153 <#assign mediumData = coverDMTKASDEMEDIUM.data?eval />
154 <#assign linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution', mediumData["groupId"]?number, mediumData["uuid"]) />
155 <div class="o-tile__media o-tile__media--medium">
156 <#if linkToDMT?has_content>
157 <div class="o-tile__media-content">
158 <#if isDPMColorScheme() >
159 <img src="${linkToDMT}">
160 </#if>
161 <#if mediumData?has_content>
162 <@mediaReference mediumData["groupId"]?number mediumData["uuid"] />
163 </#if>
164 </div>
165 </#if>
166 </div>
167
168 <div class="o-tile__content">
169
170 <#-- Titel -->
171 <h2 class="o-tile__headline o-page-headline o-page-headline--left">
172 ${articleTitle!""}
173 </h2>
174
175 <#-- Untertitel -->
176 <h3 class="o-tile__subheadline">
177 ${untertitel.getData()}
178 </h3>
179
180 <#-- Kurzbeschreibung -->
181 <p class="o-tile__text">
182 ${beschreibung.getData()}
183 </p>
184
185 <div class="o-metadata">
186 <#-- Autoren -->
187 <#if autorenWCSKASDEPERSON.getSiblings()?has_content>
188 <#list autorenWCSKASDEPERSON.getSiblings() as cur_autorenWCSKASDEPERSON>
189 <#assign document = getSaxReaderDocument(cur_autorenWCSKASDEPERSON) >
190 <@personName document />
191 </#list>
192 </#if>
193
194 <#-- Erscheinungsdatum -->
195 <#assign erscheinungsdatum_Data = getterUtil.getString(erscheinungsdatum.getData())>
196
197 <#if validator.isNotNull(erscheinungsdatum_Data)>
198 <#assign erscheinungsdatum_DateObj = dateUtil.parseDate("yyyy-MM-dd", erscheinungsdatum_Data, locale)>
199 <span class="o-metadata o-metadata--date">
200 ${dateUtil.getDate(erscheinungsdatum_DateObj, "dd. MMMM yyyy", locale)}
201 </span>
202 </#if>
203
204 <#if categories?has_content>
205 <span class="o-metadata o-metadata--thema">
206 <#list categories as category>
207 <span>${category.getName()}</span>
208 </#list>
209 </span>
210 </#if>
211 </div>
212
213 <#if isDPMColorSchemeNEW()>
214 <div class="o-tile__button">
215 <button class="o-cta o-cta--secondary o-tile__cta"><@liferay.language key="artikel.lesen" /></button>
216 </div>
217 </#if>
218 </div>
219</#if>
![](/o/adaptive-media/image/31390662/hd-resolution/94008867.jpg?t=1720169597369)
Kluge Führung in krisenreichen Jahren.
Mein Glückwunsch an Angela Merkel
Angela Merkel feiert am 17. Juli 2024 ihren 70. Geburtstag und wird von der Präsidentin der Europäischen Kommission Ursula von der Leyen für ihre kluge Führung während ihrer Kanzlerschaft gewürdigt.
![](/o/adaptive-media/image/31319174/hd-resolution/imago479959237.jpg?t=1719913548482)
Räume der Angst
Antisemitismus an Berliner Hochschulen
An deutschen Hochschulen nehmen die antisemitischen Vorfälle zu. Besonders eindrücklich war die Besetzung des Sozialwissenschaftlichen Instituts der Humboldt-Universität. Jüdische Studenten fühlen sich nicht mehr sicher. Sie werden bedroht, das Vertrauen in die Hochschulleitung ist erschüttert.
![](/o/adaptive-media/image/31323782/hd-resolution/serkis-mg-6868+%281%29.jpg?t=1719932657318)
„Gefährdete Anwälte in Afghanistan und Iran: Was nichts bringt, ist keine Menschenrechtsarbeit!“
Über die weltweit gefährdete Rechtsstaatlichkeit, die Rolle des Deutschen Anwaltvereins und die Bedeutung der Europäischen Menschenrechtskonvention.
Menschenrechte: nachgefragt - Der Podcast rund ums Thema Menschenrechte mit Stefan von Raumer, Vizepräsident des Deutschen Anwaltvereins (DAV), Vorsitzender des Menschenrechtsausschusses des DAV und des Rates der europäischen Anwaltschaften (CCBE)
![](/o/adaptive-media/image/31190006/hd-resolution/KAS+Final_16-9_2.png?t=1718869190831)
Demokratie unter Druck - was tun?
Reflexionen zur Rule of Law Academy 2024
Das Konzept der "wehrhaften Demokratie" versucht den Spagat zwischen Schutzmechanismen und der Bewahrung demokratischer Freiheiten. Beispiele aus verschiedenen Ländern verdeutlichen, wie sie mit Bedrohungen ihrer demokratischen Systeme umgehen. Die Wirksamkeit der wehrhaften Demokratie hängt von ihrer Anpassungsfähigkeit und Verhältnismäßigkeit ab.
![](/o/adaptive-media/image/31200243/hd-resolution/384690977.jpg?t=1718964833154)
Krieg im Ostkongo
Ein Pulverfass im Herzen Afrikas
Im Ostkongo herrscht seit Jahrzehnten Krieg – ein komplexer Konflikt mit vielen Beteiligten. Die wiedererstarkte Rebellengruppe M23 hat ihn neu angeheizt. Die Bevölkerung leidet, und die Welt schaut weg. Eine Eskalation hätte verheerende Folgen, und die Zeit für diplomatische Lösungen läuft ab.