Asset Publisher

An error occurred while processing the template.
For "...[...]" left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> mediumData [in template "252001#252047#WCD_DEBATTENBLOG_BLOGDETAIL_CONTENT" at line 382, column 113]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign linkToDMT = FrontendService.m... [in template "252001#252047#WCD_DEBATTENBLOG_BLOGDETAIL_CONTENT" at line 382, column 23]
----
1<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" /> 
2 
3<#-- bezieht sich auf WCS Blog --> 
4<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
5<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") > 
6<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
7<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
8<#assign FrontendService = serviceLocator.findService("de.usu.kas.frontend.service.api.FrontendService") /> 
9<#assign VocabularyService = FrontendService.vocabulary /> 
10 
11<#assign articleId = .vars['reserved-article-id'].data /> 
12<#assign articleTitle = .vars['reserved-article-title'].data /> 
13<#assign version = .vars['reserved-article-version'].data?number /> 
14  
15<#assign journalArticle = JournalArticleLocalService.getLatestArticle(groupId, .vars['reserved-article-id'].data) > 
16<#assign assetEntry = AssetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) > 
17<#assign selectedAssetVocabulary = (VocabularyService.fetchAssetVocabulary(assetEntry.getCompanyId(),"THEMA" ))> 
18<#assign vocabularyId = selectedAssetVocabulary.getVocabularyId()/> 
19<#assign categories = getCategoriesForVocabulary(assetEntry, vocabularyId) > 
20<#assign article = JournalArticleLocalService.fetchArticle( articleGroupId, articleId , version ) /> 
21 
22<#if requestMap??>  
23 <#assign 
24 renderUrl = requestMap['render-url'] 
25 control_panel = renderUrl?contains('control_panel')  
26
27</#if> 
28  
29<#if control_panel?? && control_panel> 
30 <#if FrontendService.user.isPrivilegedUser(permissionChecker.getUser())> 
31 <pre> 
32 articleId = ${.vars['reserved-article-id'].data} 
33 version = ${.vars['reserved-article-version'].data} 
34 groupId = ${articleGroupId} 
35 structurekey = ${article.getDDMStructureKey()} 
36 </pre> 
37 <pre style="white-space: pre-wrap;"> 
38 ${FrontendService.json.transformToJson( article, true )} 
39 </pre> 
40 </#if> 
41<#else>  
42 <#include "${fullTemplatesPath}/macros/page-modules/PMShare.ftl" /> 
43 <#include "${fullTemplatesPath}/macros/page-modules/PMGalleryScript.ftl" /> 
44 <#include "${fullTemplatesPath}/macros/page-modules/PMPageContent.ftl" /> 
45 <#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" /> 
46  
47  
48 <#-- functions --> 
49 <#function getJournalArticle dataObj > 
50 <#local journalArticle = "" > 
51  
52 <#attempt> 
53 <#local data = dataObj.getData()?eval > 
54 <#local classPK = data.classPK > 
55 <#local className = data.className > 
56 <#local entry = AssetEntryLocalService.getEntry(className, classPK?number)! > 
57  
58 <#if entry??> 
59 <#local assetRenderer = entry.getAssetRenderer() /> 
60 <#local journalArticle = (assetRenderer.getArticle())! /> 
61 </#if> 
62 <#recover> 
63 <#-- catch block --> 
64 </#attempt> 
65  
66 <#return journalArticle > 
67  
68 </#function> 
69  
70 <#function getSaxReaderDocument dataObj > 
71 <#local document = "" > 
72  
73 <#local journalArticle = getJournalArticle(dataObj) > 
74 <#if journalArticle?has_content> 
75 <#local document = (saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())))!"" /> 
76 </#if> 
77  
78 <#return document > 
79  
80 </#function> 
81  
82  
83 <#function getCategoriesForVocabulary assetEntry vocabularyId > 
84  
85 <#local categories = [] > 
86 <#local assetCategories = (assetEntry.getCategories())![] > 
87  
88 <#list assetCategories as assetCategory> 
89 <#local categoryVocabularyId = assetCategory.getVocabularyId() > 
90  
91 <#if categoryVocabularyId == vocabularyId> 
92 <#local categories = categories + [assetCategory] > 
93 </#if> 
94 </#list> 
95  
96 <#return categories > 
97  
98 </#function> 
99  
100 <#function hasMedia contenttext > 
101 <#return (contenttext.contentmediumDMTKASDEMEDIUM.getData())?has_content > 
102 </#function> 
103  
104 <#function hasMediaGallery contenttext > 
105 <#return (contenttext.contentbilderstreckebilderstrecke.getData())?has_content > 
106 </#function> 
107  
108 <#function isSlider contenttext> 
109 <#if !(contenttext.contentbilderstreckebilderstrecke.bilderstreckeslider)??> 
110 <#return true > 
111 <#else> 
112 <#return getterUtil.getBoolean(contenttext.contentbilderstreckebilderstrecke.bilderstreckeslider.getData())> 
113 </#if> 
114 </#function> 
115  
116 <#function hasQuotes contenttext > 
117 <#return (contenttext.contentzitatWCSKASDEZITAT.getData())?has_content > 
118 </#function> 
119  
120<#macro mediaElement url groupId uuid> 
121 <#if url?contains(".jpg") || url?contains(".jpeg") || url?contains(".png") || url?contains(".gif")> 
122 <#assign linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution', groupId, uuid) /> 
123 <#if linkToDMT?has_content> 
124 <img class="o-media__image" src="${linkToDMT}" /> 
125 <@mediaReeference groupId uuid /> 
126 </#if> 
127 <#elseif url?contains(".mp4") || url?contains(".ogg") > 
128 <video width="100%" height="100%" controls> 
129 <source src="${url}" > 
130 Your browser does not support the video tag. 
131 </video> 
132 <#elseif url?contains(".mp3") > 
133 <audio preload="none" controls> 
134 <source src="${url}"> 
135 Your browser does not support the audio element. 
136 </audio> 
137 </#if> 
138</#macro> 
139  
140<#macro contentMedia contenttext > 
141 <#local url = contenttext.contentmediumDMTKASDEMEDIUM.getData()> 
142 <#local void=FrontendService.debugHelper("WCD_DEBATTENBLOG_BLOGDETAIL_CONTENT", "1:", contenttext.contentmediumDMTKASDEMEDIUM.getData()) /> 
143 <#local void=FrontendService.debugHelper("WCD_DEBATTENBLOG_BLOGDETAIL_CONTENT", "2:", contenttext.contentmediumDMTKASDEMEDIUM.data) /> 
144 <#local mediumData = contenttext.contentmediumDMTKASDEMEDIUM.data?replace('\\/iframe', '/iframe')?eval /> 
145 <#local linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution', mediumData["groupId"]?number, mediumData["uuid"]) />  
146 <div class="c-image"> 
147 <div class="c-image__item"> 
148 <div class="c-image__image"> 
149 <@mediaElement url mediumData["groupId"]?number mediumData["uuid"]/> 
150 </div> 
151 <#if (contenttext.contentbildunterschrift)?has_content> 
152 <div class="c-image__caption">${contenttext.contentbildunterschrift.getData()}</div> 
153 </#if> 
154 </div> 
155 </div> 
156</#macro> 
157 
158<#macro referenceTitle referenceStructure > 
159 <#attempt> 
160 <#local data = referenceStructure.getData()?eval > 
161 <#local classPK = data.classPK?number > 
162 <#local title = data.title > 
163 <#recover> 
164 </#attempt> 
165 
166 <#if title?has_content> 
167 ${title} 
168 </#if> 
169</#macro> 
170<#macro mediaReeference groupId uuid> 
171 <#local mediaObj = FrontendService.media.getDMTJsonObject(groupId?number, uuid, locale)!"" > 
172 
173 <#if mediaObj?has_content && (mediaObj.quelle)?has_content > 
174 <#local source = mediaObj.quelle?substring(1, (mediaObj.quelle?length - 1))> 
175 <#if source?has_content> 
176 <span class="o-imagesource">${source}</span> 
177 </#if> 
178 </#if> 
179</#macro> 
180 
181<#macro mediaReeferenceGallery groupId uuid index > 
182  
183 <#local mediaObj = FrontendService.media.getDMTJsonObject(groupId?number, uuid, locale)!"" > 
184 
185 <#if mediaObj?has_content && (mediaObj.quelle)?has_content > 
186 <#-- do not! remove wrapping quotes --> 
187 <#local source = mediaObj.quelle?substring(1, (mediaObj.quelle?length - 1))> 
188 <#if source?has_content> 
189 <span class="o-imagesource imagesource-${index}">${source}</span> 
190 </#if> 
191 </#if> 
192</#macro> 
193 
194<#if isDPMColorScheme()> 
195 <#-- BEGINN Content macros 
196 ------------------------------------------------------------------------------------------------------------------------> 
197  
198  
199 <#macro contentMediaSlider contenttext > 
200 <#local referenceStructure = contenttext.contentbilderstreckebilderstrecke > 
201 <#local document = getSaxReaderDocument(referenceStructure) > 
202  
203 <#-- entry title --> 
204 <@referenceTitle referenceStructure /> 
205  
206 <#-- get items --> 
207 <#local items = document.selectNodes("//dynamic-element[@name='bildtextzumbild']/dynamic-content") /> 
208  
209 <#-- get items images --> 
210 <#local images = document.selectNodes("//dynamic-element[@name='bildmediumDMTKASDEMEDIUM']/dynamic-content") /> 
211  
212 <#if items?has_content> 
213 <#list items as item> 
214 <#local index = item?index> 
215 <#if images[index]?has_content> 
216 <#local caption = item.getText()> 
217 <#local src = images[index].getText()?eval> 
218 <#assign link = FrontendService.media.getLinkToDMT(FrontendService.media.getDMTJsonObject( src.groupId?number, src.uuid, locale )) />  
219 <#assign linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',src.groupId?number, src.uuid ) />  
220 <div class="c-image-gallery__item"> 
221 <div style="position: relative; display: inline-block; margin-bottom: -6px;"> 
222 <#if !isDPMColorSchemeNEW()> 
223 <a class="image-viewer-link" href="${link}" title="${caption}"> 
224 </#if> 
225 <#if linkToDMT?has_content> 
226 <#-- KAS_JAVASCRIPT <OverlayImageGallery> --> 
227 <img class="c-image-gallery__image" src="${linkToDMT}" data-src="${linkToDMT}" style="margin:auto;" role="img"> 
228 <@mediaReeferenceGallery src.groupId?number src.uuid index/> 
229 </#if> 
230 <#if !isDPMColorSchemeNEW()> 
231 </a> 
232 </#if> 
233 </div> 
234 <div class="c-image-gallery__text-area"> 
235 <span class="c-image-gallery__text">${caption}</span> 
236 </div> 
237 </div> 
238 </#if> 
239 </#list> 
240 </#if> 
241  
242 </#macro> 
243  
244 <#macro contentMediaGallery contenttext > 
245 <#local referenceStructure = contenttext.contentbilderstreckebilderstrecke > 
246 <#local document = getSaxReaderDocument(referenceStructure) > 
247  
248 <#if document?has_content> 
249 <#-- entry title --> 
250 <#-- <@referenceTitle referenceStructure /> --> 
251  
252 <#-- get items --> 
253  
254 <#local items = document.selectNodes("//dynamic-element[@name='bildtextzumbild']/dynamic-content") /> 
255  
256  
257 <#-- get items images --> 
258 <#local images = document.selectNodes("//dynamic-element[@name='bildmediumDMTKASDEMEDIUM']/dynamic-content") /> 
259  
260  
261 <#if items?has_content> 
262 <div class="c-image c-image--2col"> 
263 <#list items as item> 
264 <#local index = item?index> 
265 <#if images[index]?has_content> 
266 <#local caption = item.getText()> 
267 <#local src = images[index].getText()?eval> 
268 <#assign linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',src.groupId?number, src.uuid ) /> 
269 <div class="c-image__item"> 
270 <div class="c-image__image"> 
271 <#if linkToDMT?has_content> 
272 <img src="${linkToDMT}" style="margin:auto;"> 
273 <@mediaReeferenceGallery src.groupId?number src.uuid index/> 
274 </#if> 
275 </div> 
276 <div class="c-image__caption">${caption}</div> 
277 </div> 
278 </#if> 
279 </#list> 
280 </div> 
281 </#if> 
282  
283 </#if> 
284 </#macro> 
285  
286 <#macro contentQuotes contenttext > 
287 <#if (contenttext.contentzitatWCSKASDEZITAT)?has_content> 
288 <#local quoteDocument = getSaxReaderDocument(contenttext.contentzitatWCSKASDEZITAT) > 
289 <#if quoteDocument?has_content> 
290  
291 <#local quote = ""> 
292 <#local author = ""> 
293  
294 <#if quoteDocument.selectSingleNode("/root/dynamic-element[@name='zitat']/dynamic-content")??> 
295 <#local node = quoteDocument.selectSingleNode("/root/dynamic-element[@name='zitat']/dynamic-content") /> 
296 <#local nodeText = node.getText() /> 
297 <#if nodeText?has_content > 
298 <#local quote = nodeText> 
299 </#if> 
300 </#if> 
301  
302 <#if quoteDocument.selectSingleNode("/root/dynamic-element[@name='author']/dynamic-content")??> 
303 <#local node = quoteDocument.selectSingleNode("/root/dynamic-element[@name='author']/dynamic-content") /> 
304 <#local nodeText = node.getText() /> 
305 <#if nodeText?has_content > 
306 <#local author = nodeText> 
307 </#if> 
308 </#if> 
309  
310 <#if quote?has_content> 
311 <blockquote> 
312 „${quote}“ 
313 <#if author?has_content> 
314 <p>${author}</p> 
315 </#if> 
316 </blockquote> 
317 </#if> 
318  
319 </#if> 
320 </#if> 
321 </#macro> 
322  
323 <#macro personName document > 
324 <#if document?has_content> 
325 <#local anredetitel = ""> 
326 <#local vorname = ""> 
327 <#local nachname = ""> 
328  
329 <#if document.selectSingleNode("/root/dynamic-element[@name='anredetitel']/dynamic-content")??> 
330 <#local node = document.selectSingleNode("/root/dynamic-element[@name='anredetitel']/dynamic-content") /> 
331 <#local nodeText = node.getText() /> 
332 <#if nodeText?has_content > 
333 <#local anredetitel = nodeText > 
334 </#if> 
335 </#if> 
336  
337 <#if document.selectSingleNode("/root/dynamic-element[@name='vorname']/dynamic-content")??> 
338 <#local node = document.selectSingleNode("/root/dynamic-element[@name='vorname']/dynamic-content") /> 
339 <#local nodeText = node.getText() /> 
340 <#if nodeText?has_content > 
341 <#local vorname = nodeText > 
342 </#if> 
343 </#if> 
344  
345 <#if document.selectSingleNode("/root/dynamic-element[@name='nachname']/dynamic-content")??> 
346 <#local node = document.selectSingleNode("/root/dynamic-element[@name='nachname']/dynamic-content") /> 
347 <#local nodeText = node.getText() /> 
348 <#if nodeText?has_content > 
349 <#local nachname = nodeText > 
350 </#if> 
351 </#if> 
352  
353 </#if> 
354  
355 <#if anredetitel?has_content || vorname?has_content || nachname?has_content > 
356 <span class="o-metadata o-metadata--author"> 
357 ${anredetitel} ${vorname} ${nachname} 
358 </span> 
359 </#if> 
360 </#macro> 
361  
362<#macro mediaReference groupId uuid > 
363 <#local mediaObj = FrontendService.media.getDMTJsonObject(groupId, uuid, locale)!"" > 
364 
365 <#if mediaObj?has_content && (mediaObj.quelle)?has_content > 
366 <#local source = mediaObj.quelle?substring(1, (mediaObj.quelle?length - 1))> 
367 <#if source?has_content> 
368 <span class="o-imagesource">${source}</span> 
369 </#if> 
370 </#if> 
371</#macro> 
372  
373  
374 <#-- END Content macros 
375 ------------------------------------------------------------------------------------------------------------------------> 
376  
377 <div class="c-page-intro c-page-intro--blog"> 
378 <div class="o-page-module"> 
379 <div class="c-page-intro__wrapper"> 
380 <#if coverDMTKASDEMEDIUM.getData()?has_content> 
381 <#assign mediumData = coverDMTKASDEMEDIUM.data!""?eval /> 
382 <#assign linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution', mediumData["groupId"]?number, mediumData["uuid"]) />  
383 <#if linkToDMT?has_content> 
384 <div class="c-page-intro__image" style="background-image:url('${linkToDMT}');"> 
385 <@mediaReference mediumData["groupId"]?number mediumData["uuid"] /> 
386 </div> 
387 </#if> 
388 </#if> 
389  
390 <#assign title = .vars['reserved-article-title'].data/> 
391 <div class="o-page-headline__wrapper"> 
392  
393 <div class="c-share"> 
394 <div class="c-share__wrapper--aside"> 
395 <div class="c-share c-share--aside c-share--aside-new"> 
396 <ul class="c-share__list"> 
397 <@ShareLink "print" /> 
398 <@ShareLink "mail" /> 
399 <@ShareLink "share" /> 
400 </ul> 
401 </div> 
402 </div> 
403 <@ShareOverlay /> 
404 </div> 
405  
406 <#if !isDPMColorSchemeNEW()> 
407 <h2 class="o-page-headline">${title}</h2> 
408 </#if> 
409 
410 <#if isDPMColorSchemeNEW()> 
411 <h1 class="o-page-headline">${title}</h1> 
412 </#if> 
413 </div> 
414 
415 <#if isDPMColorSchemeNEW()> 
416 <div class="c-page-subheadline__wrapper"> 
417 </#if> 
418 
419 <#if !isDPMColorSchemeNEW()> 
420 <#if (untertitel.getData())?has_content> 
421 <h2 class="c-page-intro__subheadline">${untertitel.getData()}</h2> 
422 </#if> 
423 </#if> 
424  
425 <div class="c-page-intro__meta"> 
426  
427 <#if autorenWCSKASDEPERSON.getSiblings()?has_content> 
428 <#list autorenWCSKASDEPERSON.getSiblings() as cur_autorenWCSKASDEPERSON> 
429 <#if cur_autorenWCSKASDEPERSON.getData()?has_content> 
430 <#assign document = getSaxReaderDocument(cur_autorenWCSKASDEPERSON) > 
431 <#if document?has_content> 
432 <@personName document /> 
433 </#if> 
434 </#if> 
435 </#list> 
436 </#if> 
437  
438 <span class="o-metadata o-metadata--date"> 
439 <#assign date = "" > 
440 <#assign modified_date = (.vars['reserved-article-modified-date'].data)!""> 
441 <#if modified_date?has_content> 
442 <#setting date_format = "dd. MMMM yyyy" /> 
443 <#setting locale = "de_DE" /> 
444 <#assign date = modified_date?date("EEE, d MMM yyyy HH:mm:ss Z")> 
445 </#if> 
446 ${date} 
447 </span> 
448  
449 <#if categories?has_content> 
450 <span class="o-metadata o-metadata--thema"> 
451 <#list categories as category> 
452 <span>${category.getName()}</span> 
453 </#list> 
454 </span> 
455 </#if> 
456 </div> 
457 <#if isDPMColorSchemeNEW()> 
458 <#if (untertitel.getData())?has_content> 
459 <h2 class="c-page-intro__subheadline">${untertitel.getData()}</h2> 
460 </#if> 
461 </#if> 
462 <#if isDPMColorSchemeNEW()> 
463 </div> 
464 </#if> 
465  
466 <#if beschreibung.getData()?has_content> 
467 <p class="c-page-intro__copy">${beschreibung.getData()}</p> 
468 </#if> 
469  
470 </div> 
471 </div> 
472 </div> 
473  
474 <div class="o-page-module c-page-main c-page-main--detail c-page-main--blogdetail"> 
475  
476 <div class="c-page-main__text o-richtext"> 
477  
478 <#if contenttext.getSiblings()?has_content> 
479 <#assign iFrameId = 0 > 
480 <#list contenttext.getSiblings() as cur_contenttext> 
481  
482 <#if hasMedia(cur_contenttext) > 
483 <@contentMedia cur_contenttext /> 
484 </#if> 
485  
486 <#if hasMediaGallery(cur_contenttext) > 
487 <#if isSlider(cur_contenttext)> 
488 <#assign index = cur_contenttext?index> 
489 <div class="c-image-gallery"> 
490 <div class="c-image-gallery__bg" aria-hidden="true"></div> 
491 <#-- KAS_JAVASCRIPT <ImageGallery_Slider> --> 
492 <div class="c-image-gallery__inner" id="bilderstrecke_${index}"> 
493 <@contentMediaSlider cur_contenttext /> 
494 </div> 
495 <@PMGalleryScript index /> 
496 </div> 
497 <#else> 
498 <@contentMediaGallery cur_contenttext /> 
499 </#if> 
500  
501 </#if> 
502  
503 <#if hasIFrame(cur_contenttext) > 
504 <#assign iFrameId = iFrameId + 1 > 
505 <@contentIFrame cur_contenttext iFrameId "blog"/> 
506 </#if> 
507  
508 <#if cur_contenttext.contenttwitter?? && cur_contenttext.contenttwitter.getSiblings()?has_content> 
509 <#list cur_contenttext.contenttwitter.getSiblings() as contenttwitter> 
510 <#assign iFrameId = iFrameId + 1 > 
511 <#assign elementId = iFrameId?string + "blog" > 
512 <#if (contenttwitter.getData())?has_content> 
513 <div id="kas-iframe-${elementId}" class="kas-iframe o-iframe c-twitter__wrapper"> 
514 <#assign 
515 isWhitelisted = FrontendService.media.isUrlWhitelisted(contenttwitter.getData()) 
516 externalContentAllowed = FrontendService.media.isExternalContentAllowed(themeDisplay) 
517  
518 iframeToRender = FrontendService.media.getIframeCodeIfNeeded(contenttwitter.getData(), isWhitelisted, externalContentAllowed) 
519 dsgvoOverlay = FrontendService.media.getDefaultIframeOverlay(locale) 
520
521 <div id="generated-iframe-wrapper-${elementId}" 
522 class="generated-iframe-wrapper o-iframe__generated-wrapper no-border"> 
523 <#if isWhitelisted> 
524 ${iframeToRender} 
525 <#elseif externalContentAllowed> 
526 ${iframeToRender} 
527 <#else> 
528 <#-- Add DSGVO Overlay --> 
529 <div id="iframe-dsgvo-overlay-${elementId}" 
530 class="iframe-dsgvo-overlay-wrapper o-iframe__generated-wrapper--overlay" 
531 onclick="turnOffOverlay_${elementId}()"> 
532 ${dsgvoOverlay} 
533 </div> 
534 <div id="iframe-to-render-${elementId}" class="iframe-to-render-wrapper"> 
535 <#-- iframeToRender goes here --> 
536 </div> 
537  
538 <script> 
539 function turnOffOverlay_${elementId}() { 
540 document.getElementById( 
541 "iframe-dsgvo-overlay-${elementId}").hidden = true; 
542 jQuery('#iframe-to-render-${elementId}').html('${iframeToRender}'); 
543
544 </script> 
545 </#if> 
546 </div> 
547 </div> 
548 </#if> 
549 </#list> 
550 </#if> 
551  
552 <@contentText cur_contenttext /> 
553  
554 <#if hasQuotes(cur_contenttext) > 
555 <@contentQuotes cur_contenttext /> 
556 </#if> 
557  
558 </#list> 
559 </#if> 
560 </div> 
561 </div> 
562  
563 <#if categories?has_content> 
564 <div class="o-page-module"> 
565 <div class="c-tagcloud"> 
566 
567 <#if !isDPMColorSchemeNEW()> 
568 <h4 class="o-page-headline">${languageUtil.get(locale, "themen")}</h4> 
569 </#if> 
570 
571 <#if isDPMColorSchemeNEW()> 
572 <h4 class="o-page-headline">${languageUtil.get(locale, "aktuelle.themen")}</h4> 
573 </#if> 
574  
575 <div class="c-tagcloud__tags"> 
576  
577 <#list categories as category> 
578 <#assign href = FrontendService.category.getAnzeigeseiteToCategory(category, locale, themeDisplay.getScopeGroupId())!"/_404" > 
579 <#assign externalLink = FrontendService.url.isExternalLink(href) /> 
580  
581 <a title="${category.name}" href="${href}" <#if externalLink> target="_blank" rel="noopener noreferrer" </#if> class="c-tag"> 
582 <svg class="c-tag__icon"> 
583 <use xlink:href="${themeDisplay.getPathThemeImages()}/svg_sprite.svg#icon-tag"></use> 
584 </svg> 
585 <span class="c-tag__name">${category.name}</span> 
586 </a> 
587 </#list> 
588  
589 </div> 
590 </div> 
591  
592 </#if> 
593 <#else> 
594 <#-- BEGINN Content macros 
595 ------------------------------------------------------------------------------------------------------------------------> 
596  
597 <#macro contentMediaSlider contenttext > 
598 <#local referenceStructure = contenttext.contentbilderstreckebilderstrecke > 
599 <#local document = getSaxReaderDocument(referenceStructure) > 
600  
601 <#if document?has_content> 
602 <#-- entry title --> 
603 <@referenceTitle referenceStructure /> 
604  
605 <#-- get items --> 
606 <#if document.selectNodes("/root/dynamic-element[@name='bildtextzumbild']/dynamic-content")??> 
607 <#local items = document.selectNodes("/root/dynamic-element[@name='bildtextzumbild']/dynamic-content") /> 
608 </#if> 
609  
610 <#-- get items images --> 
611 <#if document.selectNodes("/root/dynamic-element[@name='bildtextzumbild']/dynamic-element[@name='bildmediumDMTKASDEMEDIUM']/dynamic-content")??> 
612 <#local images = document.selectNodes("/root/dynamic-element[@name='bildtextzumbild']/dynamic-element[@name='bildmediumDMTKASDEMEDIUM']/dynamic-content") /> 
613 </#if> 
614  
615 <#if items?has_content> 
616 <#list items as item> 
617 <#local index = item?index> 
618 <#if images[index]?has_content> 
619 <#local caption = item.getText()> 
620 <#local src = images[index].getText()?eval> 
621 <#assign linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution', src.groupId?number, src.uuid) /> 
622 <div class="c-image-gallery__item"> 
623 <div style="position: relative; display: inline-block; margin-bottom: -6px;"> 
624 <#if !isDPMColorSchemeNEW()> 
625 <a class="image-viewer-link" href="${src}" title="${caption}"> 
626 </#if> 
627 <#if linkToDMT?has_content> 
628 <#-- KAS_JAVASCRIPT <OverlayImageGallery> --> 
629 <img class="c-image-gallery__image" src="${linkToDMT}" data-src="${linkToDMT}" style="margin:auto;" role="img"> 
630 <@mediaReeferenceGallery src.groupId?number src.uuid index/> 
631 </#if> 
632 <#if !isDPMColorSchemeNEW()> 
633 </a> 
634 </#if> 
635 </div> 
636 <div class="c-image-gallery__text-area"> 
637 <span class="c-image-gallery__text">${caption}</span> 
638 </div> 
639 </div> 
640 </#if> 
641 </#list> 
642 </#if> 
643  
644 </#if> 
645 </#macro> 
646  
647 <#macro contentMediaGallery contenttext > 
648 <#local referenceStructure = contenttext.contentbilderstreckebilderstrecke > 
649 <#local document = getSaxReaderDocument(referenceStructure) > 
650  
651 <#if document?has_content> 
652 <#-- entry title --> 
653 <#-- <@referenceTitle referenceStructure /> --> 
654  
655 <#-- get items --> 
656 <#if document.selectNodes("/root/dynamic-element[@name='bildtextzumbild']/dynamic-content")??> 
657 <#local items = document.selectNodes("/root/dynamic-element[@name='bildtextzumbild']/dynamic-content") /> 
658 </#if> 
659  
660 <#-- get items images --> 
661 <#if document.selectNodes("/root/dynamic-element[@name='bildtextzumbild']/dynamic-element[@name='bildmediumDMTKASDEMEDIUM']/dynamic-content")??> 
662 <#local images = document.selectNodes("/root/dynamic-element[@name='bildtextzumbild']/dynamic-element[@name='bildmediumDMTKASDEMEDIUM']/dynamic-content") /> 
663 </#if> 
664  
665 <#if items?has_content> 
666 <div class="c-image c-image--2col"> 
667 <#list items as item> 
668 <#local index = item?index> 
669 <#if images[index]?has_content> 
670 <#local caption = item.getText()> 
671 <#local src = images[index].getText()?eval> 
672 <#assign linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',src.groupId?number, src.uuid ) /> 
673 </#if> 
674 <div class="c-image__item"> 
675 <div class="c-image__image"> 
676 <#if linkToDMT?has_content> 
677 <img src="${linkToDMT}" style="margin:auto;"> 
678 <@mediaReeference src /> 
679 </#if> 
680 </div> 
681 <div class="c-image__caption">${caption}</div> 
682 </div> 
683 </#list> 
684 </div> 
685 </#if> 
686  
687 </#if> 
688 </#macro> 
689  
690 <#macro contentQuotes contenttext > 
691 <#if (contenttext.contentzitatWCSKASDEZITAT)?has_content> 
692 <#local quoteDocument = getSaxReaderDocument(contenttext.contentzitatWCSKASDEZITAT) > 
693 <#if quoteDocument?has_content> 
694  
695 <#local quote = ""> 
696 <#local author = ""> 
697  
698 <#if quoteDocument.selectSingleNode("/root/dynamic-element[@name='zitat']/dynamic-content")??> 
699 <#local node = quoteDocument.selectSingleNode("/root/dynamic-element[@name='zitat']/dynamic-content") /> 
700 <#local nodeText = node.getText() /> 
701 <#if nodeText?has_content > 
702 <#local quote = nodeText> 
703 </#if> 
704 </#if> 
705  
706 <#if quoteDocument.selectSingleNode("/root/dynamic-element[@name='author']/dynamic-content")??> 
707 <#local node = quoteDocument.selectSingleNode("/root/dynamic-element[@name='author']/dynamic-content") /> 
708 <#local nodeText = node.getText() /> 
709 <#if nodeText?has_content > 
710 <#local author = nodeText> 
711 </#if> 
712 </#if> 
713  
714 <#if quote?has_content> 
715 <blockquote> 
716 „${quote}“ 
717 <#if author?has_content> 
718 <p>${author}</p> 
719 </#if> 
720 </blockquote> 
721 </#if> 
722  
723 </#if> 
724 </#if> 
725 </#macro> 
726  
727 <#macro personName document > 
728 <#if document?has_content> 
729 <#local anredetitel = ""> 
730 <#local vorname = ""> 
731 <#local nachname = ""> 
732  
733 <#if document.selectSingleNode("/root/dynamic-element[@name='anredetitel']/dynamic-content")??> 
734 <#local node = document.selectSingleNode("/root/dynamic-element[@name='anredetitel']/dynamic-content") /> 
735 <#local nodeText = node.getText() /> 
736 <#if nodeText?has_content > 
737 <#local anredetitel = nodeText > 
738 </#if> 
739 </#if> 
740  
741 <#if document.selectSingleNode("/root/dynamic-element[@name='vorname']/dynamic-content")??> 
742 <#local node = document.selectSingleNode("/root/dynamic-element[@name='vorname']/dynamic-content") /> 
743 <#local nodeText = node.getText() /> 
744 <#if nodeText?has_content > 
745 <#local vorname = nodeText > 
746 </#if> 
747 </#if> 
748  
749 <#if document.selectSingleNode("/root/dynamic-element[@name='nachname']/dynamic-content")??> 
750 <#local node = document.selectSingleNode("/root/dynamic-element[@name='nachname']/dynamic-content") /> 
751 <#local nodeText = node.getText() /> 
752 <#if nodeText?has_content > 
753 <#local nachname = nodeText > 
754 </#if> 
755 </#if> 
756  
757 <#if document.selectSingleNode("/root/dynamic-element[@name='portraitDMTKASDEMEDIUM']/dynamic-content")??> 
758 <#local node = document.selectSingleNode("/root/dynamic-element[@name='portraitDMTKASDEMEDIUM']/dynamic-content") /> 
759 <#local portraitDMTKASDEMEDIUM = node.getText() /> 
760 <#if portraitDMTKASDEMEDIUM?has_content > 
761 <#assign json = FrontendService.json.parseAsJson(portraitDMTKASDEMEDIUM) > 
762 <#assign mediaData = getRelatedMediaObject(json, themeDisplay, locale, FrontendService, "hd-resolution") > 
763 </#if> 
764 </#if> 
765  
766 </#if> 
767 <#if anredetitel?has_content || vorname?has_content || nachname?has_content > 
768 <#if mediaData?has_content && mediaData.url?has_content> 
769 <div class="ac-themen-author-icon"> 
770 <img class="mr-4" src="${mediaData.url}" /> 
771 </div> 
772 </#if> 
773 <span class="o-metadata o-metadata--author"> 
774 ${anredetitel} ${vorname} ${nachname}  
775 </span> 
776 </#if> 
777 </#macro> 
778  
779 <#macro personImage document > 
780 <#if document?has_content> 
781  
782 <#if document.selectSingleNode("/root/dynamic-element[@name='portraitDMTKASDEMEDIUM']/dynamic-content")??> 
783 <#local node = document.selectSingleNode("/root/dynamic-element[@name='portraitDMTKASDEMEDIUM']/dynamic-content") /> 
784 <#local portraitDMTKASDEMEDIUM = node.getText() /> 
785 <#if portraitDMTKASDEMEDIUM?has_content > 
786 <#assign json = FrontendService.json.parseAsJson(portraitDMTKASDEMEDIUM) > 
787 <#assign mediaData = getRelatedMediaObject(json, themeDisplay, locale, FrontendService, "hd-resolution") > 
788 <#if mediaData?has_content && mediaData.url?has_content> 
789 <div class="c-person__media"> 
790 <div class="c-person__image-wrapper"> 
791 <img class="c-person__image" src="${mediaData.url}" /> 
792 </div> 
793 </div> 
794 </#if> 
795 </#if> 
796 </#if> 
797  
798 </#if> 
799 </#macro> 
800  
801 <#macro personDescription document > 
802 <#if document?has_content> 
803 <#local beschreibung = ""> 
804  
805 <#if document.selectSingleNode("/root/dynamic-element[@name='beschreibung']/dynamic-content")??> 
806 <#local node = document.selectSingleNode("/root/dynamic-element[@name='beschreibung']/dynamic-content") /> 
807 <#local nodeText = node.getText() /> 
808 <#if nodeText?has_content > 
809 <#local beschreibung = nodeText > 
810 </#if> 
811 </#if> 
812 </#if> 
813  
814 <#if beschreibung?has_content > 
815 <p> 
816 ${beschreibung} 
817 </p> 
818 </#if> 
819 </#macro> 
820  
821 <#-- END Content macros 
822 ------------------------------------------------------------------------------------------------------------------------> 
823  
824 <#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
825 <#assign layout = themeDisplay.getLayout() /> 
826 <#assign parentLayoutId = layout.getParentPlid() /> 
827 <#assign parentLayout = layoutLocalService.fetchLayout(parentLayoutId) /> 
828 <#assign parentLayoutFriendlyURL = parentLayout.getFriendlyURL(locale) /> 
829  
830  
831 <div class="c-page-intro c-page-intro--blog c-page-blog__beitrag-intro"> 
832 <div class="o-page-module"> 
833 <div class="c-page-blog-intro__wrapper"> 
834 <#if coverDMTKASDEMEDIUM.getData()?has_content> 
835 <#assign urlparts = coverDMTKASDEMEDIUM.getData()?split("/") /> 
836 <#if (urlparts?size > 5) > 
837 <#assign linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',urlparts[2]?number, urlparts[5]?keep_before("?") ) /> 
838 </#if> 
839 <#if linkToDMT?has_content> 
840 <div class="c-page-blog-intro__image" style="background-image:url('${linkToDMT}');"> 
841 <@mediaReeference coverDMTKASDEMEDIUM.getData() /> 
842 </div> 
843 </#if> 
844 </#if> 
845  
846 <#assign title = .vars['reserved-article-title'].data/> 
847  
848 <#if categories?has_content> 
849 <div class="c-page-blog-intro__categories mb-5"> 
850 <#list categories as category> 
851 <a title="${category.getName()}" class="ac-slider-link mb-4 c-page-blog-intro__link mr-4" href="#">${category.getName()}</a> 
852 </#list> 
853 </div> 
854 </#if> 
855 <div class="c-page-blog-intro__meta"> 
856 <#if autorenWCSKASDEPERSON.getSiblings()?has_content> 
857 <#list autorenWCSKASDEPERSON.getSiblings() as cur_autorenWCSKASDEPERSON> 
858 <#if cur_autorenWCSKASDEPERSON.getData()?has_content> 
859 <#assign document = getSaxReaderDocument(cur_autorenWCSKASDEPERSON) > 
860 <#if document?has_content> 
861 <div class="c-page-blog-intro__col d-flex"> 
862 <@personName document /> 
863 <#-- ${AssetCategoryLocalService.getAssetEntryAssetCategories(assetEntry.getEntryId())} --> 
864 </div> 
865 </#if> 
866 </#if> 
867 </#list> 
868 </#if> 
869  
870 <span class="d-flex o-metadata o-metadata--date"> 
871 <span class="mr-4 ac-svg-center"> 
872 <svg class="o-metadata--date__icon" viewBox="0 0 30 30"> 
873 <use xlink:href="${themeDisplay.getPathThemeImages()}/svg_sprite.svg#calendar"></use> 
874 </svg> 
875 </span> 
876 <#assign date = "" > 
877 <#assign modified_date = (.vars['reserved-article-modified-date'].data)!""> 
878 <#if modified_date?has_content> 
879 <#setting date_format = "dd. MMMM yyyy" /> 
880 <#setting locale = "de_DE" /> 
881 <#assign date = modified_date?date("EEE, d MMM yyyy HH:mm:ss Z")> 
882 </#if> 
883 ${date} 
884 </span> 
885  
886 <#if lesezeit??> 
887  
888 <span class="d-flex o-metadata o-metadata--time"> 
889 <span class="mr-4 ac-svg-center"> 
890 <svg class="o-metadata--time__icon" viewBox="0 0 30 30"> 
891 <use xlink:href="${themeDisplay.getPathThemeImages()}/svg_sprite.svg#time"></use> 
892 </svg> 
893 </span> 
894 ${lesezeit.getData()} 
895 </span> 
896 </#if> 
897 </div> 
898  
899 <div class="c-page-blog-intro__oberthema"> 
900 ${parentLayout.getName()} 
901 </div> 
902  
903 <div class="c-page-headline__wrapper"> 
904  
905 <div class="c-share"> 
906 <div class="c-share__wrapper--aside"> 
907 <div class="c-share c-share--aside c-share--aside-new"> 
908 <ul class="c-share__list"> 
909 <@ShareLink "print" /> 
910 <@ShareLink "mail" /> 
911 <@ShareLink "share" /> 
912 </ul> 
913 </div> 
914 </div> 
915 <@ShareOverlay /> 
916 </div> 
917  
918 <h2 class="o-page-headline">${title}</h2> 
919 </div> 
920  
921 <#if (einfuehrungText.getData())?has_content> 
922 <h3 class="c-page-intro__subheadline">${einfuehrungText.getData()}</h3> 
923 </#if> 
924  
925 </div> 
926 </div> 
927 </div> 
928  
929 <div class="c-page-intro c-page-main c-page-main--detail c-page-main--blogdetail c-page-blog__beitrag-details"> 
930  
931 <div class="o-page-module c-page-main__text o-richtext c-fz-26 c-fz-20 c-fz-16"> 
932  
933 <#if contenttext.getSiblings()?has_content> 
934 <#assign iFrameId = 0 > 
935 <#list contenttext.getSiblings() as cur_contenttext> 
936  
937 <#if hasMedia(cur_contenttext) > 
938 <@contentMedia cur_contenttext /> 
939 </#if> 
940  
941 <#if hasMediaGallery(cur_contenttext) > 
942 <#if isSlider(cur_contenttext)> 
943 <#assign index = cur_contenttext?index> 
944 <div class="c-image-gallery"> 
945 <div class="c-image-gallery__bg" aria-hidden="true"></div> 
946 <#-- KAS_JAVASCRIPT <ImageGallery_Slider> --> 
947 <div class="c-image-gallery__inner" id="bilderstrecke_${index}"> 
948 <@contentMediaSlider cur_contenttext /> 
949 </div> 
950 <@PMGalleryScript index /> 
951 </div> 
952 <#else> 
953 <@contentMediaGallery cur_contenttext /> 
954 </#if> 
955  
956 </#if> 
957  
958 <#if hasIFrame(cur_contenttext) > 
959 <#assign iFrameId = iFrameId + 1 > 
960 <!--@contentIFrame cur_contenttext iFrameId "blog"/--> 
961 <@contentIFrame cur_contenttext iFrameId "blog"/> 
962 </#if> 
963  
964 <#if cur_contenttext.contenttwitter?? && cur_contenttext.contenttwitter.getSiblings()?has_content> 
965 <#list cur_contenttext.contenttwitter.getSiblings() as contenttwitter> 
966 <#assign iFrameId = iFrameId + 1 > 
967 <#assign elementId = iFrameId?string + "blog" > 
968 <#if (contenttwitter.getData())?has_content> 
969 <div id="kas-iframe-${elementId}" class="kas-iframe o-iframe c-twitter__wrapper"> 
970 <#assign 
971 isWhitelisted = FrontendService.media.isUrlWhitelisted(contenttwitter.getData()) 
972 externalContentAllowed = FrontendService.media.isExternalContentAllowed(themeDisplay) 
973  
974 iframeToRender = FrontendService.media.getIframeCodeIfNeeded(contenttwitter.getData(), isWhitelisted, externalContentAllowed) 
975 dsgvoOverlay = FrontendService.media.getDefaultIframeOverlay(locale) 
976
977 <div id="generated-iframe-wrapper-${elementId}" 
978 class="generated-iframe-wrapper o-iframe__generated-wrapper no-border"> 
979 <#if isWhitelisted> 
980 ${iframeToRender} 
981 <#elseif externalContentAllowed> 
982 ${iframeToRender} 
983 <#else> 
984 <#-- Add DSGVO Overlay --> 
985 <div id="iframe-dsgvo-overlay-${elementId}" 
986 class="iframe-dsgvo-overlay-wrapper o-iframe__generated-wrapper--overlay" 
987 onclick="turnOffOverlay_${elementId}()"> 
988 ${dsgvoOverlay} 
989 </div> 
990 <div id="iframe-to-render-${elementId}" class="iframe-to-render-wrapper"> 
991 <#-- iframeToRender goes here --> 
992 </div> 
993  
994 <script> 
995 function turnOffOverlay_${elementId}() { 
996 document.getElementById( 
997 "iframe-dsgvo-overlay-${elementId}").hidden = true; 
998 jQuery('#iframe-to-render-${elementId}').html('${iframeToRender}'); 
999
1000 </script> 
1001 </#if> 
1002 </div> 
1003 </div> 
1004 </#if> 
1005 </#list> 
1006 </#if> 
1007  
1008 <@contentText cur_contenttext /> 
1009  
1010 <#if hasQuotes(cur_contenttext) > 
1011 <@contentQuotes cur_contenttext /> 
1012 </#if> 
1013  
1014 </#list> 
1015 </#if> 
1016 </div> 
1017  
1018 </div> 
1019  
1020 <!-- Author Information -->  
1021 <#if autorenWCSKASDEPERSON.getSiblings()?has_content> 
1022 <#list autorenWCSKASDEPERSON.getSiblings() as cur_autorenWCSKASDEPERSON> 
1023 <#if cur_autorenWCSKASDEPERSON.getData()?has_content> 
1024 <#assign document = getSaxReaderDocument(cur_autorenWCSKASDEPERSON) > 
1025 <div class="o-page-module c-page-main c-page-main--detail c-page-main--blogdetail c-page-blog__beitrag-author-information"> 
1026 <div class="c-person"> 
1027 <div class="c-person-flex test"> 
1028 <#-- Media --> 
1029 <@personImage document />  
1030 <#-- Author Information --> 
1031 <div class="c-person__author-information"> 
1032 <h4> 
1033 ${languageUtil.get(locale, "ueber.den.autor")} 
1034 </h4> 
1035 <#if document?has_content> 
1036 <@personDescription document /> 
1037 <#-- ${AssetCategoryLocalService.getAssetEntryAssetCategories(assetEntry.getEntryId())} --> 
1038 </#if> 
1039 </div> 
1040 </div> 
1041 </div> 
1042 </div> 
1043 </#if> 
1044 </#list> 
1045 </#if> 
1046  
1047 <!-- Zu allen Beiträge --> 
1048  
1049 <div class="d-flex justify-content-center c-page-blog__additional"> 
1050 <a href="${parentLayoutFriendlyURL}"> 
1051 <h4 class="c-sp-kachel__headline_small_stable c-fz-20 "> 
1052 ${languageUtil.get(locale, "zu.allen.blogbeitraegen")} 
1053 </h4> 
1054 </a> 
1055 </div> 
1056  
1057  
1058 <#if !isACColorScheme() > 
1059 <#--Categories--> 
1060 <#if categories?has_content> 
1061 <div class="o-page-module"> 
1062 <div class="c-tagcloud"> 
1063 
1064 <#if !isDPMColorSchemeNEW()> 
1065 <h2 class="o-page-headline">${languageUtil.get(locale, "themen")}</h2> 
1066 </#if> 
1067 
1068 <#if isDPMColorSchemeNEW()> 
1069 <h2 class="o-page-headline">${languageUtil.get(locale, "aktuelle.themen")}</h2> 
1070 </#if> 
1071 
1072 <div class="c-tagcloud__tags"> 
1073  
1074 <#list categories as category> 
1075 <#assign href = FrontendService.category.getAnzeigeseiteToCategory(category, locale, themeDisplay.getScopeGroupId())!"/_404"> 
1076  
1077 <a title="${category.getName()}" class="c-tag" href="${href}"> 
1078 <svg class="c-tag__icon" viewBox="0 0 18 18"> 
1079 <use xlink:href="${themeDisplay.getPathThemeImages()}/svg_sprite.svg#icon-tag"></use> 
1080 </svg> 
1081 <span class="c-tag__name">${category.getName()}</span> 
1082 </a> 
1083 </#list> 
1084 </div> 
1085 </div> 
1086 </div> 
1087 <#elseif (editmode?? && editmode)> 
1088 <@errorMessage languageUtil.get(locale, "es.existieren.keine.themen") /> 
1089 </#if> 
1090 </#if> 
1091 </#if> 
1092</#if> 

comment-portlet

Asset Publisher