Hier wird die Energiewende gelebt: Ausgezeichnete Projekte
Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing: ==> httpServletRequest.getCookies() [in template "20098#20124#MEDIATHEK-VIDEO" at line 11, column 20] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign cookies = httpServletRequest... [in template "20098#20124#MEDIATHEK-VIDEO" at line 11, column 1] ----
1<#import "/um-lr73-base-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" as common>
2<#assign VideoSummary=""/>
3<#assign title = .vars['reserved-article-title'].data />
4
5<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
6
7<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
8<#assign httpServletRequest = serviceContext.getRequest() />
9
10<#assign youtubeEnabled = false />
11<#assign cookies = httpServletRequest.getCookies() />
12<#if validator.isNotNull(cookies)>
13 <#list cookies as cookie>
14 <#if (cookie.name == "ACCEPTED_COOKIE_YOUTUBE_ENABLED")>
15 <#if cookie.getValue() == "true">
16 <#assign youtubeEnabled = true />
17 <#break />
18 </#if>
19 </#if>
20 </#list>
21</#if>
22
23<div class="media-center-item">
24 <div class="container-max-width">
25
26 <#assign DatumText = "" />
27 <#if (Datum??)>
28 <#assign Datum_Data = getterUtil.getString(Datum.getData())>
29 <#if validator.isNotNull(Datum_Data)>
30 <#assign Datum_DateObj = dateUtil.parseDate("yyyy-MM-dd", Datum_Data, locale)>
31 <#assign DatumText = dateUtil.getDate(Datum_DateObj, "dd.MM.yyyy", locale) />
32 </#if>
33 </#if>
34
35 <p class="spitzmarke">
36 MEDIATHEK<span class="info pull-right">${DatumText}</span>
37 </p>
38
39 <div class="media-center-container">
40
41 <h1 class="title">${title}</h1>
42
43 <#assign videoId=Video.YoutubeCode.getData()/>
44
45 <#if videoId?starts_with("http")>
46 <#assign videoId = videoId?split("/")[3]>
47 </#if>
48
49 <#if Video.Bild?? && Video.Bild.getData()?has_content>
50 <div class="video-box">
51 <div class="video" style="background-image: url(${Video.Bild.getData()}); background-size: cover;padding-bottom: 50%; ">
52 <#if youtubeEnabled>
53 <div class="video-trigger-icon" data-source="${videoId}" title="Video abspielen">
54 <button style="border:none;" class="no-icon item-icon">
55 <span class="icon-um icon-um--play" style="position:absolute; top:0; left:0;"></span>
56 </button>
57 </div>
58 </#if>
59 </div>
60 <#if youtubeEnabled>
61 <div class="video-trigger">
62 <p class="text-center video-trigger-overlay-text">
63 Um das Video zu sehen, müssen Sie es durch einen Klick aktivieren.
64 Dadurch werden Informationen an Youtube übermittelt und unter Umständen dort
65 verarbeitet. Bitte beachten Sie unsere Hinweise und Informationen zum <a
66 title="Zum Datenschutz" class="arrow-link"
67 href="<#if Video.Datenschutz.data?has_content>${Video.Datenschutz.getFriendlyUrl()}<#else>/datenschutz</#if>"><span
68 class="icon-um icon-um--chevron-right"></span><span
69 class="link-title">Datenschutz</span></a>.
70 </p>
71 </div>
72 <div class="video-layer" style="display: none">
73 <iframe src="" frameborder="0" allowfullscreen="" width="960"
74 height="480"></iframe>
75 </div>
76 </#if>
77 </div>
78
79
80
81 <#if Video.Bild.Bildunterschrift.getData()!="">
82 <p class="summary">${Video.Bild.Bildunterschrift.getData()}</p>
83 </#if>
84
85 </#if>
86
87
88 <div class="description">
89 ${Beschreibung.getData()}
90 </div>
91 </div>
92 </div>
93
94
95 <#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") />
96
97 <#if (WeitereInfos.getSiblings()?has_content) &&
98 (WeitereInfos.getSiblings()?size>0) &&
99 ((WeitereInfos.getSiblings()[0].InternerLink.getFriendlyUrl()?has_content)||
100 (WeitereInfos.getSiblings()[0].ExternerLink.getData()?has_content)) >
101 <div class="linklist">
102 <div class="further-info main-content">
103 <h2 class="further-info-title">Weitere Informationen</h2>
104 <#assign weitereInformationenListe=WeitereInfos.InternerLink.getSiblings()/>
105 <ul class="links interne-links">
106 <#list weitereInformationenListe as cur_WeitereInfo>
107 <#if (cur_WeitereInfo.getFriendlyUrl()?has_content)>
108 <li class="item">
109 <@common.createInternerLink cur_WeitereInfo cur_WeitereInfo.Linktext />
110 </li>
111 </#if>
112 </#list>
113 </ul>
114 <#assign weitereInformationenListe=WeitereInfos.ExternerLink.getSiblings()/>
115 <ul class="links externe-links">
116 <#list weitereInformationenListe as cur_WeitereInfo>
117 <#if (cur_WeitereInfo.getData()?has_content)>
118 <li class="item">
119 <@common.createExternerLink cur_WeitereInfo cur_WeitereInfo.LinktextExtern />
120 </li>
121 </#if>
122 </#list>
123 </ul>
124 </div>
125 </div>
126 </#if>
127
128
129</div> <!-- end mediathek-eintrag -->
130
131
132<script>
133 var updateVideoWrapper = function () {
134 AUI().use('aui-base', function (A) {
135 A.all('.video-box').each(function (elem) {
136 elem.all('.video-trigger-icon').each(function (triggerElem) {
137 triggerElem.on(
138 'click',
139 function (event) {
140 if (event && event.target && event.target.get('nodeName') === 'A') {
141 return;
142 }
143
144 var youtubeId = triggerElem.getData('source');
145 var videoLayer = elem.one('.video-layer');
146 var iframe = videoLayer.one('iframe');
147 iframe.attr('src', 'https://www.youtube.com/embed/' + youtubeId);
148 triggerElem.hide();
149 videoLayer.show();
150 }
151 );
152 });
153 });
154 });
155 };
156
157 Liferay.on('endNavigate', updateVideoWrapper);
158 $(document).ready(updateVideoWrapper);
159</script>