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>