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