An error occurred while processing the template.
The following has evaluated to null or missing: ==> cmsEntity.getLocalizedField(profile, "/entity/assets/mobileMainImage") [in template "20116#20152#379608" at line 61, column 30] ---- Tip: If the failing expression is known to be 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 mobileMainImg = cmsEntity.get... [in template "20116#20152#379608" at line 61, column 5] ----
1<#-- Include common helpers -->
2<#include "${templatesPath}/379393" />
3
4<#assign t = {
5 "locationTitle" : "Location"
6}>
7
8<#-- Get and format article publish date -->
9<#assign displayDate = .vars['reserved-article-display-date'].data>
10
11<#-- Save the original page locale for later -->
12<#assign originalLocale = locale>
13
14<#-- Set the page locale to the portals default locale -->
15<#setting locale = localeUtil.getDefault()>
16
17<#-- Parse the date to a date object -->
18<#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z")>
19
20<#assign cmsContentService= serviceLocator.findService("com.ch5finland.genelec.cms.service.CMSContentService") >
21<#assign profileService = serviceLocator.findService("com.ch5finland.genelec.cms.service.ProfileService") >
22
23
24
25<#assign
26 defaultLatitude = -3.6833
27 defaultLongitude = 40.40
28
29 group = themeDisplay.getScopeGroup()
30
31 googleMapsAPIKey = group.getLiveParentTypeSettingsProperty("googleMapsAPIKey")!""
32>
33
34<#assign profile = profileService.getProfile(request) >
35<#assign journalArticleId = .vars['reserved-article-id'].data>
36<#assign cmsEntity = cmsContentService.getEntityByArticleId(profile, groupId, journalArticleId) >
37
38<#assign cmsContentFormatterService= serviceLocator.findService("com.ch5finland.genelec.cms.service.CMSContentFormatterService") >
39
40<#-- Article title -->
41
42<#if cmsEntity.getField(profile, "/entity/fields/title")?has_content>
43 <#assign title = cmsEntity.getLocalizedField(profile, "/entity/fields/title")>
44<#else>
45 <#assign title = .vars['reserved-article-title'].data>
46</#if>
47
48<#-- Complete URL -->
49<#assign portalUrl = themeDisplay.getPortalURL() >
50<#assign urlTitle = themeDisplay.getURLCurrent() >
51<#assign currentURL = portalUrl + urlTitle >
52
53<#assign facebook_share_url = themeDisplay.getThemeSetting("facebook_share_url") >
54<#assign linkedin_share_url = themeDisplay.getThemeSetting("linkedin_share_url") >
55<#assign whatsapp_share_url = themeDisplay.getThemeSetting("whatsapp_share_url") >
56
57
58
59
60<#if cmsEntity.getField(profile, "/entity/assets/mobileMainImage")?has_content>
61 <#assign mobileMainImg = cmsEntity.getLocalizedField(profile, "/entity/assets/mobileMainImage")>
62 <#if !mobileMainImg.isNull("url")>
63 <#assign mobileMainImage = mobileMainImg.url>
64 <#else>
65 <#assign mobileMainImage = "">
66 </#if>
67 <#if !mobileMainImg.isNull("description")>
68 <#assign mobileMainImageDescription = localizeField(mobileMainImg.description, profile.getCMSLangCode())>
69 <#else>
70 <#assign mobileMainImageDescription = "">
71 </#if>
72</#if>
73
74<#if cmsEntity.getLocalizedField(profile, "/entity/assets/mainImage")?has_content>
75 <#assign mainImg = cmsEntity.getLocalizedField(profile, "/entity/assets/mainImage")>
76 <#if !mainImg.isNull("url")>
77 <#assign mainImage = mainImg.url>
78 <#assign mainImageAlt = "">
79 <#if cmsEntity.getLocalizedField(profile, "/entity/relationships/mainImage/locales")?? &&
80 cmsEntity.getLocalizedField(profile, "/entity/relationships/mainImage/locales")?has_content>
81
82 <#assign relMainImage= cmsEntity.getLocalizedField(profile, "/entity/relationships/mainImage/locales")>
83 <#if !relMainImage.properties.isNull("altText")>
84 <#assign mainImageAlt = localizeField(relMainImage.properties.altText, profile.getCMSLangCode()) >
85 </#if>
86 </#if>
87 <#else>
88 <#assign mainImage = "">
89 </#if>
90</#if>
91
92<#assign startDate = "" >
93<#if cmsEntity.getFieldAsDate("/entity/fields/startDate")?has_content>
94 <#assign startDate = cmsEntity.getFieldAsDate("/entity/fields/startDate") >
95</#if>
96<#assign endDate = "" >
97<#if cmsEntity.getFieldAsDate("/entity/fields/endDate")?has_content>
98 <#assign endDate = cmsEntity.getFieldAsDate("/entity/fields/endDate") >
99</#if>
100
101<@appendHTMLMetas currentURL cmsEntity "article" />
102
103<div class="article-page">
104
105 <div class="article-page-background"></div>
106
107 <div class="row">
108 <div class="col-12">
109 <h1 class="article-heading">${title}</h1>
110 <#if startDate?has_content>
111 <h3 class="event-date">
112 <#if !endDate?has_content>
113 ${startDate?string("d.M.yyyy")}
114 <#elseif startDate?string("d") != endDate?string("d") || startDate?string("M") != endDate?string("M")>
115 <#if startDate?string("d") != endDate?string("d") && startDate?string("M") != endDate?string("M")>
116 ${startDate?string("d.M.")} - ${endDate?string("d.M.yyyy")}
117 <#else>
118 ${startDate?string("d.")} - ${endDate?string("d.M.yyyy")}
119 </#if>
120 <#else>
121 ${startDate?string("d.M.yyyy")}
122 </#if>
123 </h3>
124 </#if>
125
126 </div>
127 </div>
128
129 <div class="row">
130 <div class="col-12">
131 <div class="article-share-buttons">
132
133 <a href="${facebook_share_url}${currentURL}" target="_blank">
134 <span class="fa-stack fa-md">
135 <i class="fas fa-circle fa-stack-2x icon-dark"></i>
136 <i class="fab fa-facebook-f fa-stack-1x fa-inverse"></i>
137 </span>
138 </a>
139
140 <a href="${linkedin_share_url}${currentURL}" target="_blank">
141 <span class="fa-stack fa-md">
142 <i class="fas fa-circle fa-stack-2x icon-dark"></i>
143 <i class="fab fa-linkedin-in fa-stack-1x fa-inverse"></i>
144 </span>
145 </a>
146
147 <a href="mailto:?subject=${title}&body=${title} ${currentURL}"
148 title="${title}" target="_blank">
149 <span class="fa-stack fa-md">
150 <i class="fas fa-circle fa-stack-2x icon-dark"></i>
151 <i class="fas fa-envelope fa-stack-1x fa-inverse"></i>
152 </span>
153 </a>
154
155 <a href="${whatsapp_share_url}${currentURL}" data-action="share/whatsapp/share" target="_blank">
156 <span class="fa-stack fa-md">
157 <i class="fas fa-circle fa-stack-2x icon-dark"></i>
158 <i class="fab fa-whatsapp fa-stack-1x fa-inverse"></i>
159 </span>
160 </a>
161
162 </div>
163 <div class="article-date">
164
165 </div>
166 </div>
167 </div>
168
169 <div class="row article-page-main-image">
170 <div class="col-12">
171 <#if mainImage?has_content>
172 <picture>
173 <source srcset="${mainImage}?w=1250&q=80&fm=webp" type="image/webp" />
174 <img class="article-image" src="${mainImage}?w=1250&q=80&fm=jpg" alt="${mainImageAlt}">
175 </picture>
176 </#if>
177 </div>
178 </div>
179
180 <div class="article-section mt-5">
181 <div class="row">
182 <div class="col-xs-12 col-lg-8 col-xl-9">
183 <div class="product-page-intro mt-0">
184 <#if cmsEntity.getLocalizedField(profile, "/entity/fields/summary")?has_content>
185 ${cmsEntity.getLocalizedField(profile, "/entity/fields/summary")}
186 </#if>
187 </div>
188 <div>
189 <#if cmsEntity.getLocalizedField(profile, "/entity/fields/content")?has_content>
190 <#-- ${cmsEntity.getLocalizedField(profile, "/entity/fields/content")} -->
191 ${cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/content"), 930)}
192 </#if>
193
194 <#-- <#assign summary = cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/content"))> -->
195
196
197 </div>
198
199<@showVideos cmsEntity/>
200
201 </div>
202 <div class="col-xs-12 col-lg-4 col-xl-3">
203
204 <#-- ---- Right column ---- -->
205
206
207 <div class="venue">
208 <#if cmsEntity.getLocalizedField(profile, "/entity/fields/venueName")?has_content>
209 <h3>${cmsEntity.getLocalizedField(profile, "/entity/fields/venueName")}</h3>
210 <#else>
211 <h3>${t.locationTitle}</h3>
212 </#if>
213
214 <#if cmsEntity.getLocalizedField(profile, "/entity/fields/streetAddress")?has_content>
215 <span class="d-block">${cmsEntity.getLocalizedField(profile, "/entity/fields/streetAddress")}</span>
216 </#if>
217 <#if cmsEntity.getLocalizedField(profile, "/entity/fields/city")?has_content>
218 <span class="d-block">${cmsEntity.getLocalizedField(profile, "/entity/fields/city")}</span>
219 </#if>
220 <#if cmsEntity.getLocalizedField(profile, "/entity/fields/country")?has_content>
221 <span class="d-block">${cmsEntity.getLocalizedField(profile, "/entity/fields/country")}</span>
222 </#if>
223 <#if cmsEntity.getField(profile, "/entity/fields/url")?has_content>
224 <p>
225 <a href="${cmsEntity.getField(profile, "/entity/fields/url")}">
226 ${cmsEntity.getField(profile, "/entity/fields/url")}
227 </a>
228 </p>
229 </#if>
230 </div>
231
232 <#if cmsEntity.getField(profile, "/entity/fields/coordinates")?has_content>
233 <#assign coordStr = cmsEntity.getField(profile, "/entity/fields/coordinates") >
234 <#if coordStr?contains(",")>
235 <#assign lat = coordStr?split(",")[0]>
236 <#assign lng = coordStr?split(",")[1]>
237
238 <#if lat?has_content && lng?has_content>
239 <div id="location-map" style="height: 290px;"> </div>
240 <script>
241 var map;
242 var venueLatLng = {lat: ${lat}, lng: ${lng}};
243 function initMap() {
244 map = new google.maps.Map(document.getElementById('location-map'), {
245 center: venueLatLng,
246 zoom: 11,
247 disableDefaultUI: true,
248 fullscreenControl: true,
249 zoomControl: true
250 });
251 var marker = new google.maps.Marker({
252 position: venueLatLng,
253 map: map
254 });
255 }
256 </script>
257 <script src="//maps.googleapis.com/maps/api/js?key=${googleMapsAPIKey}&callback=initMap"
258 async defer></script>
259 </#if>
260 </#if>
261 </#if>
262 <#-- //-- Right column ---- -->
263
264 </div>
265 </div>
266 </div>
267</div>
268
269
270<style>
271
272 .event-date {
273 padding-left: 23px;
274 }
275
276
277 @media only screen and (max-width: 992px) {
278<#if mobileMainImage?has_content>
279 .article-page-background {
280 background-image: url(${mobileMainImage});
281
282 }
283<#else>
284 <#if mainImage?has_content>
285 .article-page-background {
286 background-image: url(${mainImage});
287
288 }
289 </#if>
290</#if>
291 }
292
293<#if mainImage?has_content>
294 @media only screen and (min-width: 992px) {
295
296 .article-page-background {
297 background-image: url(${mainImage});
298
299 }
300 }
301</#if>
302
303<#-- Possibility to hide portlets with custom css class when Event is shown -->
304.hide-when-event-shown { display: none; }
305
306</style>
307
308<script>
309$('.relatedProduct-carousel').owlCarousel({
310 loop:false,
311 nav:true,
312 dots:false,
313 margin:5,
314 lazyLoad:true,
315 navText : ['<i class="icon-angle-left">','<i class="icon-angle-right">'],
316 responsive:{
317 0:{items:1, slideBy:1},
318 600:{items:3, slideBy:3},
319 1000:{items:6, slideBy:6}
320 },
321})
322
323
324if ($(window).outerWidth() < 992) {
325
326}
327
328</script>