Asset-Herausgeber

Egal, Hauptsache Digital

Egal, Hauptsache Digital

Egal, Hauptsache Digital? – so einfach ist es natürlich nicht, wenn es um das digitale Lernen geht. Obwohl das Thema nicht neu ist, stellen sich noch immer sehr viele Fragen. Einige Fragen haben wir während der Corona-Zeit 2020/2021 aufgegriffen und diskutiert. Wir haben mit Menschen gesprochen, die sich mit den vielfältigen Aspekten der digitalen Bildung und den dazugehörigen Technologien beschäftigen. Bildung wurde dabei von uns weit gefasst, denn Bildung findet einfach überall statt – nicht nur in der Schule oder an der Universität. Und spätestens seit der Corona Krise ist klar, dass das Digitale Bildung kein Thema für übermorgen ist, sondern für jetzt.

Asset-Herausgeber

Fehler bei der Verarbeitung der Vorlage.
For "...[...]" left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> mediumData [in template "20082418#20082464#WCD_DEBATTENBLOG_BLOGUEBERSICHT_LISTE" at line 154, column 99]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign linkToDMT = FrontendService.m... [in template "20082418#20082464#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> 
Fehler bei der Verarbeitung der Vorlage.
For "...[...]" left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> mediumData [in template "20082418#20082464#WCD_DEBATTENBLOG_BLOGUEBERSICHT_LISTE" at line 154, column 99]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign linkToDMT = FrontendService.m... [in template "20082418#20082464#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> 
Fehler bei der Verarbeitung der Vorlage.
For "...[...]" left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> mediumData [in template "20082418#20082464#WCD_DEBATTENBLOG_BLOGUEBERSICHT_LISTE" at line 154, column 99]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign linkToDMT = FrontendService.m... [in template "20082418#20082464#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> 
Fehler bei der Verarbeitung der Vorlage.
For "...[...]" left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> mediumData [in template "20082418#20082464#WCD_DEBATTENBLOG_BLOGUEBERSICHT_LISTE" at line 154, column 99]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign linkToDMT = FrontendService.m... [in template "20082418#20082464#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> 
Fehler bei der Verarbeitung der Vorlage.
For "...[...]" left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> mediumData [in template "20082418#20082464#WCD_DEBATTENBLOG_BLOGUEBERSICHT_LISTE" at line 154, column 99]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign linkToDMT = FrontendService.m... [in template "20082418#20082464#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> 
Fehler bei der Verarbeitung der Vorlage.
For "...[...]" left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> mediumData [in template "20082418#20082464#WCD_DEBATTENBLOG_BLOGUEBERSICHT_LISTE" at line 154, column 99]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign linkToDMT = FrontendService.m... [in template "20082418#20082464#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> 
Fehler bei der Verarbeitung der Vorlage.
For "...[...]" left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> mediumData [in template "20082418#20082464#WCD_DEBATTENBLOG_BLOGUEBERSICHT_LISTE" at line 154, column 99]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign linkToDMT = FrontendService.m... [in template "20082418#20082464#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> 
Fehler bei der Verarbeitung der Vorlage.
For "...[...]" left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> mediumData [in template "20082418#20082464#WCD_DEBATTENBLOG_BLOGUEBERSICHT_LISTE" at line 154, column 99]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign linkToDMT = FrontendService.m... [in template "20082418#20082464#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> 
Fehler bei der Verarbeitung der Vorlage.
For "...[...]" left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> mediumData [in template "20082418#20082464#WCD_DEBATTENBLOG_BLOGUEBERSICHT_LISTE" at line 154, column 99]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign linkToDMT = FrontendService.m... [in template "20082418#20082464#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> 
Fehler bei der Verarbeitung der Vorlage.
For "...[...]" left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> mediumData [in template "20082418#20082464#WCD_DEBATTENBLOG_BLOGUEBERSICHT_LISTE" at line 154, column 99]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign linkToDMT = FrontendService.m... [in template "20082418#20082464#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>