Asset Headline Events

20180727_event_DIGITALISIERUNG_LAEUFT_ETAPPE_1

Asset Publisher

Fehler bei der Verarbeitung der Vorlage.
Java method "com.sun.proxy.$Proxy132.getFileEntryByUuidAndGroupId(String, long)" threw an exception when invoked on com.sun.proxy.$Proxy132 object "com.liferay.portlet.documentlibrary.service.impl.DLAppServiceImpl@f2e5890"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign Datei = DLAppServiceUtil.getF...  [in template "digital-bw.web-resources_SERVLET_CONTEXT_/common_macros.ftl" in macro "showCopyright" at line 189, column 9]
	- Reached through: @common.showCopyright imageUrl=src al...  [in template "20115#20151#EVENT" in macro "showSlide" at line 861, column 13]
	- Reached through: @showSlide image=curMedium counter=cu...  [in template "20115#20151#EVENT" at line 277, column 65]
----
1<#-- @ftlvariable name="journalArticleLocalService" type="com.liferay.journal.service.JournalArticleLocalService" --> 
2<#-- @ftlvariable name="assetEntryLocalService" type="com.liferay.asset.kernel.service.AssetEntryLocalService" --> 
3<#-- @ftlvariable name="assetCategoryLocalService" type="com.liferay.asset.kernel.service.AssetCategoryLocalService" --> 
4<#-- @ftlvariable name="journalArticle" type="com.liferay.journal.model.JournalArticle" --> 
5<#-- @ftlvariable name="assetEntry" type="com.liferay.asset.kernel.model.AssetEntry" --> 
6<#-- @ftlvariable name="assetCategories" type="java.util.List<liferay.asset.kernel.model.AssetCategory>" --> 
7 
8<#import "/digital-bw.web-resources_SERVLET_CONTEXT_/common_macros.ftl" as common> 
9 
10<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
11<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
12<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
13<#assign layoutSetLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutSetLocalService") /> 
14<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
15 
16<#assign journalArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) /> 
17<#assign resourcePrimKey = journalArticle.resourcePrimKey /> 
18<#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourcePrimKey) /> 
19<#assign assetCategories = assetCategoryLocalService.getAssetEntryAssetCategories(assetEntry.entryId) /> 
20 
21<#assign serviceContextThreadLocal = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"] /> 
22<#assign serviceContext = serviceContextThreadLocal.getServiceContext() /> 
23<#assign httpServletRequest = serviceContext.getRequest() /> 
24 
25<#assign currentURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
26 
27<#assign namespace = randomNamespace /> 
28<#assign title = .vars['reserved-article-title'].data /> 
29 
30<#assign 
31    exportPdfURLObj = portletURLFactory.create(httpServletRequest, "com_liferay_journal_web_portlet_JournalPortlet", "2") 
32    void = exportPdfURLObj.setCopyCurrentRenderParameters(false) 
33    void = exportPdfURLObj.setResourceID("exportArticle") 
34    void = exportPdfURLObj.setParameter("groupId", scopeGroupId?c) 
35    void = exportPdfURLObj.setParameter("articleId", .vars['reserved-article-id'].data) 
36    void = exportPdfURLObj.setParameter("plid", themeDisplay.plid?c) 
37    void = exportPdfURLObj.setParameter("targetExtension", "pdf") 
38    void = exportPdfURLObj.setParameter("portletResource", themeDisplay.getPortletDisplay().getId()) 
39    exportPdfURL = exportPdfURLObj.toString() 
40    exportPdfURL = httpUtil.setParameter(exportPdfURL, "p_p_lifecycle", "2") 
41/> 
42 
43<#switch portal.getPortalURL(themeDisplay)> 
44    <#case "https://digital-bw.web.bwl.de"> 
45    <#case "https://digital-bw.landbw.de"> 
46    <#case "https://www.digital-bw.de"> 
47        <#assign domainHost = "http://web-digital-bw-liferay:8080" /> 
48        <#break> 
49    <#default> 
50        <#assign 
51        domainHost = portal.getPortalURL(themeDisplay) 
52        /> 
53</#switch> 
54 
55 
56<#assign 
57    layoutSet = layoutSetLocalService.getLayoutSet(groupId, layout.isPrivateLayout()) 
58    groupFriendlyURL = portal.getGroupFriendlyURL(layoutSet, themeDisplay) 
59    viewURL = "" 
60/> 
61<#if journalArticle.layoutUuid?has_content> 
62    <#assign 
63        viewURL = groupFriendlyURL + "/-/" + journalArticle.urlTitle 
64    /> 
65</#if> 
66 
67 
68<#if viewMode == "export"> 
69    <style type="text/css"> 
70        /* roboto-regular - latin */ 
71        @font-face { 
72            font-family: 'Roboto'; 
73            font-style: normal; 
74            font-weight: 400; 
75            src: url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-regular.eot'); /* IE9 Compat Modes */ 
76            src: local('Roboto'), local('Roboto-Regular'), 
77            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
78            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ 
79            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-regular.woff') format('woff'), /* Modern Browsers */ 
80            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ 
81            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */ 
82
83        /* roboto-700 - latin */ 
84        @font-face { 
85            font-family: 'Roboto'; 
86            font-style: normal; 
87            font-weight: 700; 
88            src: url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-700.eot'); /* IE9 Compat Modes */ 
89            src: local('Roboto Bold'), local('Roboto-Bold'), 
90            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
91            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-700.woff2') format('woff2'), /* Super Modern Browsers */ 
92            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-700.woff') format('woff'), /* Modern Browsers */ 
93            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */ 
94            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-700.svg#Roboto') format('svg'); /* Legacy iOS */ 
95
96 
97        /* montserrat-300 - latin */ 
98        @font-face { 
99            font-family: 'Montserrat'; 
100            font-style: normal; 
101            font-weight: 300; 
102            src: url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300.eot'); /* IE9 Compat Modes */ 
103            src: local('Montserrat Light'), local('Montserrat-Light'), 
104            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
105            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300.woff2') format('woff2'), /* Super Modern Browsers */ 
106            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300.woff') format('woff'), /* Modern Browsers */ 
107            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */ 
108            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300.svg#Montserrat') format('svg'), /* Legacy iOS */ 
109
110        /* montserrat-regular - latin */ 
111        @font-face { 
112            font-family: 'Montserrat'; 
113            font-style: normal; 
114            font-weight: 400; 
115            src: url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-regular.eot'); /* IE9 Compat Modes */ 
116            src: local('Montserrat Regular'), local('Montserrat-Regular'), 
117            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
118            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ 
119            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-regular.woff') format('woff'), /* Modern Browsers */ 
120            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ 
121            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-regular.svg#Montserrat') format('svg'); /* Legacy iOS */ 
122
123        /* montserrat-700 - latin */ 
124        @font-face { 
125            font-family: 'Montserrat'; 
126            font-style: normal; 
127            font-weight: 700; 
128            src: url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700.eot'); /* IE9 Compat Modes */ 
129            src: local('Montserrat Bold'), local('Montserrat-Bold'), 
130            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
131            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700.woff2') format('woff2'), /* Super Modern Browsers */ 
132            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700.woff') format('woff'), /* Modern Browsers */ 
133            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */ 
134            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700.svg#Montserrat') format('svg'); /* Legacy iOS */ 
135
136        /* montserrat-700italic - latin */ 
137        @font-face { 
138            font-family: 'Montserrat'; 
139            font-style: italic; 
140            font-weight: 700; 
141            src: url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin-700italic.eot'); /* IE9 Compat Modes */ 
142            src: local('Montserrat Bold Italic'), local('Montserrat-BoldItalic'), 
143            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
144            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */ 
145            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700italic.woff') format('woff'), /* Modern Browsers */ 
146            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */ 
147            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700italic.svg#Montserrat') format('svg'); /* Legacy iOS */ 
148
149 
150        /* montserrat-italic - latin */ 
151        @font-face { 
152            font-family: 'Montserrat'; 
153            font-style: italic; 
154            font-weight: 400; 
155            src: url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin-italic.eot'); /* IE9 Compat Modes */ 
156            src: local('Montserrat Italic'), local('Montserrat-Italic'), 
157            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
158            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-italic.woff2') format('woff2'), /* Super Modern Browsers */ 
159            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-italic.woff') format('woff'), /* Modern Browsers */ 
160            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */ 
161            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-italic.svg#Montserrat') format('svg'); /* Legacy iOS */ 
162
163 
164        /* montserrat-300italic - latin */ 
165        @font-face { 
166            font-family: 'Montserrat'; 
167            font-style: italic; 
168            font-weight: 300; 
169            src: url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300italic.eot'); /* IE9 Compat Modes */ 
170            src: local('Montserrat Light Italic'), local('Montserrat-LightItalic'), 
171            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
172            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300italic.woff2') format('woff2'), /* Super Modern Browsers */ 
173            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300italic.woff') format('woff'), /* Modern Browsers */ 
174            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300italic.ttf') format('truetype'), /* Safari, Android, iOS */ 
175            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300italic.svg#Montserrat') format('svg'); /* Legacy iOS */ 
176
177 
178 
179        h1, h2, h3, h4, h5, h6{ 
180            font-family: 'Montserrat', Helvetica, Arial, sans-serif; 
181
182        body { 
183            margin:0; 
184            padding:0; 
185            -webkit-text-size-adjust:none; 
186            -ms-text-size-adjust:none; 
187 
188            font-family: 'Roboto', Helvetica, Arial, sans-serif; 
189
190 
191        a, a:hover, a:focus, a:active { 
192            color: #202240; 
193
194 
195        .summary { 
196            font-size: 1.4em; 
197
198    </style> 
199    <title>${title}</title> 
200</#if> 
201 
202<div class="row row-70-30" itemscope itemtype="http://schema.org/Event"> 
203    <div class="col-md-8 portlet-column portlet-column-only section-2" id="column-2"> 
204        <div class="row-70-30-left"> 
205            <div class="event-details news-details" id="${namespace}"> 
206 
207                <#if viewMode == "export"> 
208                    <#assign 
209                    dayMonthYearFormat = dateFormatFactory.getSimpleDateFormat("dd.MM.yyyy") 
210                    /> 
211 
212                    <#if startdate?? && startdate.data?has_content> 
213                        <#assign 
214                        displayStartDate = dateUtil.parseDate("yyyy-MM-dd", startdate.data, locale) 
215                        /> 
216                    </#if> 
217                    <#if enddate?? && enddate.data?has_content> 
218                        <#assign 
219                        displayEndDate = dateUtil.parseDate("yyyy-MM-dd", enddate.data, locale) 
220                        /> 
221                    </#if> 
222 
223                    <div class="asset-headline"> 
224                        <b> 
225                            <#if displayStartDate?? && displayStartDate?has_content> 
226                                ${dayMonthYearFormat.format(displayStartDate)} 
227                            </#if> 
228                            <#if (displayEndDate?? && displayEndDate?has_content)> 
229                                - ${dayMonthYearFormat.format(displayEndDate)} 
230                            </#if> 
231                        </b> 
232 
233                        <h1 class="main-title"> 
234                            ${title} 
235                        </h1> 
236                    </div> 
237                </#if> 
238 
239                <#assign isoDateFormat = dateFormatFactory.getSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") /> 
240 
241                <#if viewMode == "view"> 
242                    <@liferay_util["html-top"] outputKey="opengraph"> 
243                        <meta property="og:title" content="${title?trim}" /> 
244                        <meta property="og:description" content="${.vars['reserved-article-description'].data}" /> 
245                        <meta property="og:url" content="${viewURL}" /> 
246                        <meta property="og:type" content="article" /> 
247 
248                        <#if image??> 
249                            <#assign 
250                            imageUrl = image.siblings[0].data 
251                            alt = image.siblings[0].getAttribute("alt")!"DigitalBW Event" 
252                            /> 
253                            <meta property="og:image" content="${portal.getPortalURL(themeDisplay)}${imageUrl}" /> 
254                            <meta property="og:image:alt" content="${alt}" /> 
255                        </#if> 
256                    </@> 
257                </#if> 
258 
259                <span itemprop="name" content="${title}"></span> 
260                <span itemprop="description" content="${.vars['reserved-article-description'].data}"></span> 
261 
262                <article class="events-desktop"> 
263                    <#if eventname?? && eventname.data?has_content> 
264                        <div class="summary">${eventname.data}</div> 
265                    </#if> 
266                    <div class="row"> 
267                        <div class="col-md-12"> 
268                            <#if image??> 
269                                <#if viewMode == "view"> 
270                                    <div class="image-gallery"> 
271                                        <div class="row"> 
272                                            <div id="${namespace}carousel"> 
273                                                <div class="carousel slide"> 
274                                                    <div class="carousel-inner"> 
275                                                        <#list image.siblings as curMedium> 
276                                                            <#if (curMedium?? && curMedium.data?has_content) || (curMedium.youtubeurl?? && curMedium.youtubeurl.data?has_content)> 
277                                                                <@showSlide image=curMedium counter=curMedium?counter youtubeurl=curMedium.youtubeurl externalvideo=curMedium.externalvideo/> 
278                                                            </#if> 
279                                                        </#list> 
280                                                    </div> 
281                                                </div> 
282                                            </div> 
283                                        </div> 
284 
285                                        <#if (image.siblings?size >1)> 
286                                            <div class="row"> 
287                                                <ul class="list-unstyled"> 
288                                                    <#list image.siblings as curMedium> 
289                                                        <#if (curMedium?? && curMedium.data?has_content) || (curMedium.youtubeurl?? && curMedium.youtubeurl.data?has_content)> 
290                                                            <@showGallery image=curMedium counter=curMedium?counter youtubeurl=curMedium.youtubeurl /> 
291                                                        </#if> 
292                                                    </#list> 
293                                                </ul> 
294                                            </div> 
295                                        </#if> 
296                                    </div> 
297                                <#elseif viewMode == "export"> 
298                                    <div class="image-gallery"> 
299                                        <br/> 
300                                        <#list image.siblings as curMedium> 
301                                            <#if (curMedium?? && curMedium.data?has_content)> 
302                                                <@createExportImageTag image=curMedium /> 
303                                            </#if> 
304                                        </#list> 
305                                    </div> 
306                                </#if> 
307                            </#if> 
308 
309                            <section class="article-body"> 
310                                <#if description?? && description.data?has_content> 
311                                    <div> 
312                                        ${description.data} 
313                                    </div> 
314                                </#if> 
315 
316                                <#if viewMode == "view"> 
317                                    <br style="clear: both"> 
318                                    <p class="source"> 
319                                        <a href="${exportPdfURL}" target="_blank"><i class="mdi mdi-download"></i>&nbsp;<@liferay["language"] key="save-as-pdf" /></a> 
320                                    </p> 
321                                </#if> 
322                            </section> 
323                        </div> 
324                    </div> 
325 
326                </article> 
327 
328                <#if viewMode == "view"> 
329                    <article class="events-mobile"> 
330                        <#if eventname?? && eventname.data?has_content> 
331                            <div class="summary">${eventname.data}</div> 
332                        </#if> 
333                        <#if image??> 
334                            <div class="image-gallery"> 
335                                <div class="row"> 
336                                    <div class="col-md-12"> 
337                                        <#if (image.siblings?size >1)> 
338                                            <div class="swiper-container events-swiper"> 
339                                                <div class="swiper-wrapper"> 
340                                                    <#list image.siblings as curMedium> 
341                                                        <#if (curMedium?? && curMedium.data?has_content) || (curMedium.youtubeurl?? && curMedium.youtubeurl.data?has_content)> 
342                                                            <@showSlide image=curMedium counter=curMedium?counter youtubeurl=curMedium.youtubeurl externalvideo=curMedium.externalvideo /> 
343                                                        </#if> 
344                                                    </#list> 
345                                                </div> 
346                                                <div class="swiper-pagination"></div> 
347                                            </div> 
348                                        <#else> 
349                                            <#list image.siblings as curMedium> 
350                                                <#if (curMedium?? && curMedium.data?has_content) || (curMedium.youtubeurl?? && curMedium.youtubeurl.data?has_content)> 
351                                                    <@showSlide image=curMedium counter=curMedium?counter youtubeurl=curMedium.youtubeurl externalvideo=curMedium.externalvideo /> 
352                                                </#if> 
353                                            </#list> 
354                                        </#if> 
355                                    </div> 
356                                </div> 
357                            </div> 
358 
359                        </#if> 
360 
361                        <section class="article-body"> 
362                            <#if description?? && description.data?has_content> 
363                                <div> 
364                                    ${description.data} 
365                                </div> 
366                            </#if> 
367                        </section> 
368 
369                    </article> 
370                </#if> 
371 
372                <footer> 
373                    <#if viewMode == "view"> 
374                        <div class="row"> 
375                            <div class="col-md-12"> 
376                                <#if srcUrl?? && srcUrl.data?has_content> 
377                                    <div class="link"> 
378                                        <a href="${srcUrl.data}" target="_blank" class="btn btn-outline" title="<@liferay.language key="go-to-event" />"> 
379                                            <@liferay.language key="go-to-event" /> 
380 
381                                            <i class="svg-icon open-in-new blue-button icomoon-button_link_external"></i> 
382                                        </a> 
383                                    </div> 
384                                </#if> 
385                            </div> 
386                        </div> 
387                    </#if> 
388                </footer> 
389            </div> 
390 
391        </div> 
392    </div> 
393 
394    <div class="col-md-6 portlet-column portlet-column-only news-matches section-3" id="column-3"> 
395        <div class="row-70-30-right event-details-data"> 
396 
397            <#if startdate?? && startdate.data?has_content> 
398                <div class="row events-data"> 
399                    <div class="col-md-12"> 
400 
401                        <h3 class="headline" style="text-align:left;"><@liferay["language"] key="when-question" /></h3> 
402 
403                        <div class="asset-abstract"> 
404                            <span class="metadata-entry metadata-startdate"> 
405                            <#assign startDateValue = "" /> 
406                                <#assign endDateValue = "" /> 
407                                <#if startdate?? && startdate.data?has_content> 
408                                    <#assign startDateValue = startdate.data /> 
409                                </#if> 
410                                <#if enddate?? && enddate.data?has_content> 
411                                    <#assign endDateValue = enddate.data /> 
412                                </#if> 
413                                <#if viewMode == "view"> 
414                                    <i class="icon-calendar"></i> 
415                                </#if> 
416                                <@formatDateRange startDateValue=startDateValue endDateValue=endDateValue /> 
417 
418                                <br/> 
419 
420                                <#assign startTimeValue = "" /> 
421                                <#assign endTimeValue = "" /> 
422                                <#if (starttime?? && starttime.data?has_content)> 
423                                    <#assign startTimeValue = starttime.data /> 
424                                </#if> 
425                                <#if (enddate.endtime?? && enddate.endtime.data?has_content)> 
426                                    <#assign endTimeValue = enddate.endtime.data /> 
427                                </#if> 
428                                <#if startTimeValue?? && startTimeValue?has_content> 
429                                    <#if viewMode == "view"> 
430                                        <i class="icon-time"></i> 
431                                    </#if> 
432                                    <@formatTimeRange startTimeValue=startTimeValue endTimeValue=endTimeValue /> 
433                                </#if> 
434 
435                            <br/> 
436                            </span> 
437 
438                            <span itemprop="startDate" content="<@formatIsoDateTime dateValue=startDateValue timeValue=startTimeValue />"></span> 
439                            <span itemprop="endDate" content="<@formatIsoDateTime dateValue=endDateValue timeValue=endTimeValue />"></span> 
440 
441                            <#if viewMode == "view"> 
442                                <#assign 
443                                ddmStructureEventIcalExportURL = portletURLFactory.create(httpServletRequest, "de_xdot_bw_im_digbw_portlet_DdmStructureEventIcalExportPortlet", "2") 
444                                void = ddmStructureEventIcalExportURL.setCopyCurrentRenderParameters(false) 
445                                void = ddmStructureEventIcalExportURL.setResourceID("/ddm/structure/event/ical") 
446                                void = ddmStructureEventIcalExportURL.setParameter("groupId", scopeGroupId?c) 
447                                void = ddmStructureEventIcalExportURL.setParameter("articleId", .vars['reserved-article-id'].data) 
448 
449                                exportURL = ddmStructureEventIcalExportURL.toString() 
450                                exportURL = httpUtil.setParameter(exportURL, "p_p_lifecycle", "2") 
451                                /> 
452 
453                                <a class="link" href="${exportURL}" target="_blank"> 
454                                    <div class="row asset-title-row"> 
455                                        <div class="col-xs-10"> 
456                                            <h3> 
457                                                <@liferay.language key="add-to-calendar" /> 
458                                            </h3> 
459                                        </div> 
460                                        <div class="col-xs-2"> 
461                                            <i class="svg-icon open-in-new right-column icomoon-button_link_external" title="<@liferay.language key="add-to-calendar" />"></i> 
462                                        </div> 
463                                    </div> 
464                                </a> 
465                            </#if> 
466                        </div> 
467                    </div> 
468                </div> 
469            </#if> 
470 
471            <#if showNoGeo?? && showNoGeo.data?has_content> 
472            <#else> 
473                <#if eventlocation?? && eventlocation.data?has_content> 
474 
475                    <div class="row events-data"> 
476                        <div class="col-md-12"> 
477                            <div itemprop="location" itemscope itemtype="http://schema.org/Place"> 
478 
479                                <h3 class="headline" style="text-align:left;"><@liferay["language"] key="where-question" /></h3> 
480 
481                                <#list assetCategories as assetCategory> 
482                                    <#if assetVocabularyLocalService.fetchAssetVocabulary(assetCategory.vocabularyId)??> 
483                                        <#if ("Ort" == assetVocabularyLocalService.fetchAssetVocabulary(assetCategory.vocabularyId).name)> 
484                                            <span itemprop="name" content="${assetCategory.getTitle(locale)}"></span> 
485                                        </#if> 
486                                    </#if> 
487                                </#list> 
488 
489 
490                                <div class="asset-abstract pre" itemprop="address"> 
491                                    <p>${htmlUtil.replaceNewLine(eventlocation.data)}</p> 
492 
493 
494                                    <#if viewMode == "view"> 
495                                        <#if geo?? && geo.data?has_content> 
496 
497                                            <#assign coordinatesJSONObject = jsonFactoryUtil.createJSONObject(geo.data) /> 
498                                            <#assign latitude = coordinatesJSONObject.getDouble("latitude") /> 
499                                            <#assign longitude = coordinatesJSONObject.getDouble("longitude") /> 
500                                            <div class="locate"> 
501                                                <a class="link" href="//maps.google.de/maps?daddr=${latitude?c},${longitude?c}&t=h&om=0&hl=de" target="_blank"> 
502                                                    <div class="row asset-title-row"> 
503                                                        <div class="col-xs-10"> 
504                                                            <h3> 
505                                                                <@liferay.language key="route-planner" /> 
506                                                            </h3> 
507                                                        </div> 
508                                                        <div class="col-xs-2"> 
509                                                           <i class="svg-icon open-in-new right-column icomoon-button_link_external" title="<@liferay.language key="route-planner" />"></i> 
510                                                        </div> 
511                                                    </div> 
512                                                </a> 
513                                            </div> 
514                                            <span itemprop="geo" itemscope itemtype="http://schema.org/GeoCoordinates"> 
515                                    <span itemprop="latitude" content="${latitude?c}"></span> 
516                                    <span itemprop="longitude" content="${longitude?c}"></span> 
517                                </span> 
518                                        </#if> 
519                                    </#if> 
520                                </div> 
521                            </div> 
522                        </div> 
523                    </div> 
524                </#if> 
525            </#if> 
526            <div class="row events-data"> 
527                <div class="col-md-12"> 
528                    <#if organizer?? && organizer.data?has_content 
529                    || addressFooter?? && addressFooter.data?has_content 
530                    || logoFooter?? && logoFooter.data?has_content> 
531                        <h3 class="headline" style="text-align:left;"> 
532                            <@liferay["language"] key="who-question" /> 
533                        </h3> 
534                    </#if> 
535                    <div itemprop="performer" itemscope itemtype="http://schema.org/PerformingGroup" class="asset-abstract noborder"> 
536                        <#if organizer?? && organizer.data?has_content> 
537                            <p itemprop="name">${organizer.data}</p> 
538                        </#if> 
539                        <#if addressFooter?? && addressFooter.data?has_content> 
540                            <p itemprop="address">${addressFooter.data}</p> 
541                        </#if> 
542                        <#if logoFooter?? && logoFooter.data?has_content> 
543                            <div class="logo-footer"> 
544                                <#if viewMode == "view"> 
545                                    <img alt="${logoFooter.getAttribute("alt")}" title="${logoFooter.getAttribute("alt")}" src="${logoFooter.data}"  /> 
546                                    <span itemprop="logo" content="${portal.getPortalURL(themeDisplay)}${logoFooter.data}"></span> 
547                                <#elseif viewMode == "export"> 
548                                    <@createExportImageTag image=logoFooter /> 
549                                </#if> 
550                            </div> 
551                        </#if> 
552                    </div> 
553                </div> 
554            </div> 
555 
556            <#if viewMode == "export"> 
557                <p align="center"> 
558                    <a href="${viewURL}">${viewURL}</a> 
559                </p> 
560            </#if> 
561 
562        </div> 
563    </div> 
564</div> 
565 
566<#if viewMode == "view"> 
567    <div class="share-buttons-section"> 
568        <div class="max-width"> 
569            <div class="row share-buttons"> 
570                <div class="col-md-12"> 
571                    <span class="text"><@liferay["language"] key="share" /></span> 
572                    <@liferay_ui["social-bookmarks"] 
573                    displayStyle="simple" 
574                    target="_blank" 
575                    title="${title}" 
576                    url="${portal.getCanonicalURL(currentURL, themeDisplay, layout)}" 
577                    /> 
578 
579                </div> 
580            </div> 
581        </div> 
582    </div> 
583</#if> 
584 
585<#if viewMode == "view"> 
586    <script> 
587        initSwiper('events-swiper', '${namespace}'); 
588    </script> 
589 
590    <script type="text/javascript"> 
591        var initializeCarousel = function() { 
592            $('#${namespace}carousel').carousel( 
593
594                    interval: 5000 
595
596            ); 
597 
598            $('[id^=${namespace}carousel-selector-]').click( 
599                function() { 
600                    var selector = $(this).attr('id'); 
601                    try { 
602                        var slideNumber = /-(\d+)$/.exec(selector)[1]; 
603                        $('#${namespace}carousel').carousel(parseInt(slideNumber)); 
604                    } catch (e) { 
605                        console.log(e); 
606
607
608            ); 
609        }; 
610 
611        $(document).ready(initializeCarousel); 
612        Liferay.on('endNavigate', initializeCarousel); 
613 
614        var initializeVideoPopup = function () { 
615            AUI().use('aui-base', 'aui-io-plugin-deprecated', 'liferay-util-window', 'aui-dialog-iframe-deprecated', function (A) { 
616                A.all('.video-link-popup').each(function (elem) { 
617                    elem.on( 
618                        'click', 
619                        function (e) { 
620                            e.preventDefault(); 
621                            var modal; 
622 
623                            var isMobile = Liferay.Browser.isMobile(); 
624 
625                            var externalvideo = e.currentTarget.getAttribute('data-externalvideo'); 
626                            var youtubeId = e.currentTarget.getAttribute('data-youtube-id'); 
627                            var youtubeUrl = 'https://www.youtube-nocookie.com/embed/'+ youtubeId +'?autoplay=1&rel=0&amp;controls=2&amp;showinfo=0&modestbranding=1'; 
628 
629                            var width = (window.innerWidth > 0) ? window.innerWidth : screen.width; 
630                            var height = width * 0.5625; 
631 
632                            var content = ""; 
633 
634                            if (isMobile) { 
635 
636                                if (externalvideo) { 
637                                    content = '<div class="embed-container">' + externalvideo + '</div>'; 
638                                } else { 
639                                    content = '<iframe ' + 
640                                        'src="' + youtubeUrl + '" ' + 
641                                        'frameborder="0" ' + 
642                                        'width="' + width + '" ' + 
643                                        'height="' + height + '" ' + 
644                                        'allow="autoplay; encrypted-media" ' + 
645                                        'allowfullscreen' + 
646                                        '></iframe>'; 
647
648 
649                                modal = new A.Modal( 
650
651                                        bodyContent: '<div class="mobile-video-container">' + 
652                                            content + 
653                                            '</div>', 
654                                        destroyOnHide: true, 
655                                        centered: true, 
656                                        modal: true, 
657                                        render: '#mobile-videos-modal', 
658                                        width: '100%', 
659                                        height: '100%', 
660                                        on: { 
661                                            render: function () { 
662                                                var docStyle = document.documentElement.style; 
663                                                var _this = this; 
664                                                docStyle.setProperty('pointer-events', 'none'); 
665                                                docStyle.setProperty('touch-action', 'none'); 
666                                                docStyle.setProperty('overflow-y', 'hidden'); 
667 
668                                                window.history.pushState(null, 'Video Popup', 'video-popup'); 
669                                                window.onpopstate = function () { 
670                                                    _this.destroy(); 
671                                                }; 
672                                            }, 
673                                            destroy: function () { 
674                                                var docStyle = document.documentElement.style; 
675                                                docStyle.removeProperty('pointer-events'); 
676                                                docStyle.removeProperty('touch-action'); 
677                                                docStyle.removeProperty('overflow-y'); 
678 
679                                                window.onpopstate = null; 
680 
681                                                var pathName = location.pathname; 
682                                                if (pathName.indexOf('video-popup') > -1) { 
683                                                    history.back(); 
684
685
686
687
688                                ).render(); 
689                            } else { 
690                                if (externalvideo) { 
691                                    content = '<div class="embed-container">' + externalvideo + '</div>'; 
692                                } else { 
693                                    content = ' <iframe src="https://www.youtube-nocookie.com/embed/' + youtubeId + '?autoplay=1&rel=0&amp;controls=2&amp;showinfo=0&modestbranding=1"' + 
694                                        '         frameborder="0"' + 
695                                        '         allow="autoplay; encrypted-media"' + 
696                                        '         allowfullscreen' + 
697                                        '         width="720"' + 
698                                        '         height="560"' + 
699                                        ' >' + 
700                                        ' </iframe>'; 
701
702 
703                                modal = Liferay.Util.openWindow( 
704
705                                        dialog: { 
706                                            width: width * 0.5, 
707                                            height: height * 0.5, 
708                                            centered: true, 
709                                            constrain2view: true, 
710                                            modal: true, 
711                                            resizable: false, 
712                                            moveable: false, 
713                                            destroyOnHide: true, 
714                                            close: true, 
715                                            cssClass: 'dialog-iframe-popup', 
716                                            bodyContent: '<div class="asset-full-content videos youtube-video"><div class="video-player">' + 
717                                                content + 
718                                                '            <button type="button"\n' + 
719                                                '                    class="btn-toolbar-button close close-content yui3-widget aui-button yui3-aui-button yui3-aui-button-content"\n' + 
720                                                '                    id="video-close-btn" role="button" onclick="closePopup(\'videoplayer\');">\n' + 
721                                                '                <svg class="lexicon-icon" focusable="false" viewBox="0 0 512 512">\n' + 
722                                                '                    <title>Schließen</title>\n' + 
723                                                '                    <path class="lexicon-icon-outline"\n' + 
724                                                '                          d="M295.781 256l205.205-205.205c10.998-10.998 10.998-28.814 0-39.781-10.998-10.998-28.815-10.998-39.781 0l-205.205 205.205-205.205-205.238c-10.966-10.998-28.814-10.998-39.781 0-10.998 10.998-10.998 28.814 0 39.781l205.205 205.238-205.205 205.205c-10.998 10.998-10.998 28.815 0 39.781 5.467 5.531 12.671 8.265 19.874 8.265s14.407-2.734 19.907-8.233l205.205-205.238 205.205 205.205c5.5 5.5 12.703 8.233 19.906 8.233s14.407-2.734 19.906-8.233c10.998-10.998 10.998-28.815 0-39.781l-205.238-205.205z"></path>\n' + 
725                                                '                </svg>\n' + 
726                                                '            </button>\n' + 
727                                                '</div></div>' 
728                                        }, 
729                                        dialogIframe: { 
730                                            scrolling: "no", 
731                                            verticalscrolling: "no", 
732                                            gutter: { 
733                                                bottom: "0", 
734                                                left: "0", 
735                                                right: "0", 
736                                                top: "0" 
737                                            }, 
738                                            on: { 
739                                                load: function (e) { 
740                                                    document.getElementById(e.windowName).setAttribute("scrolling", "no"); 
741                                                    $('#videoplayer').find('.modal-content').find('.modal-header').css('display', 'none'); 
742                                                    $("#" + e.windowName).contents().find("html").css("overflow", "hidden"); 
743                                                    this._host._fillHeight(); 
744
745
746                                        }, 
747                                        id: 'videoplayer' 
748
749                                ); 
750
751                            return false; 
752
753                    ); 
754                }); 
755 
756                Liferay.provide(window, 'closePopup', function (dialogId) { 
757                        var dialog = Liferay.Util.Window.getById(dialogId); 
758                        dialog.destroy(); 
759                    }, 
760                    [ 'liferay-util-window' ] 
761                ); 
762            }); 
763        }; 
764 
765        $(document).ready(initializeVideoPopup); 
766        Liferay.on('endNavigate', initializeVideoPopup); 
767 
768    </script> 
769</#if> 
770 
771<#macro formatDateRange startDateValue="" endDateValue=""> 
772    <#assign 
773        yearFormat = dateFormatFactory.getSimpleDateFormat("yyyy") 
774        monthFormat = dateFormatFactory.getSimpleDateFormat("MM") 
775        dayFormat = dateFormatFactory.getSimpleDateFormat("dd.") 
776        dayMonthFormat = dateFormatFactory.getSimpleDateFormat("dd. MMM.") 
777        dayMonthYearFormat = dateFormatFactory.getSimpleDateFormat("dd. MMM. yyyy") 
778    /> 
779    <#if startDateValue?? && startDateValue?has_content> 
780        <#assign startDateObj = dateUtil.parseDate("yyyy-MM-dd", startDateValue, locale)> 
781    </#if> 
782    <#if endDateValue?? && endDateValue?has_content> 
783        <#assign endDateObj = dateUtil.parseDate("yyyy-MM-dd", endDateValue, locale)> 
784    </#if> 
785    <#if startDateObj?? && startDateObj?has_content> 
786        <#if endDateObj?? && endDateObj?has_content> 
787            <#assign 
788                startDateYear = yearFormat.format(startDateObj) 
789                endDateYear = yearFormat.format(endDateObj) 
790            /> 
791            <#assign 
792                startDateMonth = monthFormat.format(startDateObj) 
793                endDateMonth = monthFormat.format(endDateObj) 
794            /> 
795            <#assign 
796                startDateDay = dayFormat.format(startDateObj) 
797                endDateDay = dayFormat.format(endDateObj) 
798            /> 
799            <#if startDateYear == endDateYear> 
800                <#if (startDateMonth == endDateMonth)> 
801                    <#if startDateDay == endDateDay> 
802                        ${dayMonthYearFormat.format(endDateObj)} 
803                    <#else> 
804                        ${dayFormat.format(startDateObj)} - ${dayMonthYearFormat.format(endDateObj)} 
805                    </#if> 
806                <#else> 
807                    ${dayMonthFormat.format(startDateObj)} - ${dayMonthYearFormat.format(endDateObj)} 
808                </#if> 
809            <#else> 
810                ${dayMonthYearFormat.format(startDateObj)} - ${dayMonthYearFormat.format(endDateObj)} 
811            </#if> 
812        <#else> 
813            ${dayMonthYearFormat.format(startDateObj)} 
814        </#if> 
815    </#if> 
816</#macro> 
817 
818<#macro formatTimeRange startTimeValue="" endTimeValue=""> 
819    <#if startTimeValue?? && startTimeValue?has_content> 
820        ${startTimeValue} 
821        <#if endTimeValue?? && endTimeValue?has_content> 
822            <@liferay["language"] key="until" /> 
823            ${endTimeValue} 
824        </#if> 
825        <@liferay["language"] key="o-clock" /> 
826    </#if> 
827</#macro> 
828 
829<#macro showSlide image counter youtubeurl externalvideo=""> 
830    <#assign alt = "" /> 
831    <#assign href = "" /> 
832    <#assign src = "" /> 
833    <#assign target = "" /> 
834    <#assign isvideo = false /> 
835 
836    <#if youtubeurl?? && youtubeurl.data?has_content> 
837        <#assign youtubeId = getYoutubeId(youtubeurl.data) /> 
838        <#assign href = "https://www.youtube.com/watch?v=${youtubeId}" /> 
839        <#assign target = "_blank" /> 
840        <#assign src = "//i.ytimg.com/vi/${youtubeId}/maxresdefault.jpg" /> 
841        <#assign isvideo = true /> 
842    </#if> 
843    <#if image?? && image.data?has_content> 
844        <#assign src = portal.getPortalURL(themeDisplay) + image.data /> 
845        <#assign alt = image.getAttribute("alt")!"DigitalBW News Artikel" /> 
846    </#if> 
847    <#if externalvideo?? && externalvideo?has_content && externalvideo.data?has_content> 
848        <#assign isvideo = true /> 
849        <#assign href = "javascript:void(0);" /> 
850    </#if> 
851    <div class="swiper-slide item ${(counter==1)?then('active', '')}" data-slide-number="${counter - 1}"> 
852        <#if href?has_content> 
853            <a href="${href}" target="${target}" <#if isvideo>class="video-link-popup"</#if> <#if youtubeurl?? && youtubeurl.data?has_content>data-youtube-id="${youtubeId}"</#if> <#if externalvideo?? && externalvideo?has_content && externalvideo.data?has_content>data-externalvideo="${htmlUtil.escapeAttribute(externalvideo.data)}"</#if>> 
854                <@common.showCopyright imageUrl=src alt=alt/> 
855                <span itemprop="image" content="${src}"></span> 
856                <#if isvideo> 
857                    <div class="svg-icon play-icon"></div> 
858                </#if> 
859            </a> 
860        <#else> 
861            <@common.showCopyright imageUrl=src alt=alt/> 
862            <span itemprop="image" content="${src}"></span> 
863            <#if isvideo> 
864                <div class="svg-icon play-icon"></div> 
865            </#if> 
866        </#if> 
867    </div> 
868</#macro> 
869 
870<#macro showGallery image counter youtubeurl> 
871    <#assign alt = "" /> 
872    <#assign src = "" /> 
873    <#assign target = "" /> 
874 
875    <#if youtubeurl?? && youtubeurl.data?has_content> 
876        <#assign youtubeId = getYoutubeId(youtubeurl.data) /> 
877        <#assign target = "_blank" /> 
878        <#assign src = "//i.ytimg.com/vi/${youtubeId}/hqdefault.jpg" /> 
879    </#if> 
880    <#if image?? && image.data?has_content> 
881        <#assign src = portal.getPortalURL(themeDisplay) + httpUtil.addParameter(image.data, "imageThumbnail", 1) /> 
882        <#assign alt = image.getAttribute("alt")!"DigitalBW Event" /> 
883    </#if> 
884 
885    <li class="col-md-3"> 
886        <a class="thumbnail" id="${namespace}carousel-selector-${counter-1}" href="javascript:void(0);"> 
887            <@common.showCopyright imageUrl=src alt=alt/> 
888        </a> 
889    </li> 
890</#macro> 
891 
892<#function getYoutubeId youtubeUrl> 
893    <#assign url = httpUtil.getPath(youtubeUrl) /> 
894    <#assign url = stringUtil.extractLast(url, '/') /> 
895    <#return url /> 
896</#function> 
897 
898<#macro formatIsoDateTime dateValue="" timeValue=""> 
899    <#if dateValue?has_content> 
900    <#assign 
901        dateObj = dateUtil.parseDate("yyyy-MM-dd", dateValue, locale) 
902    /> 
903    <#if timeValue?? && timeValue?has_content> 
904        <#assign timeString = timeValue?replace('[A-Za-z]+', '', 'ri') /> 
905        <#assign timeString = timeString?trim /> 
906        <#assign dateAndTimeString = dateValue + " " + timeString /> 
907        <#attempt> 
908            <#assign 
909                dateObj = dateAndTimeString?datetime('yyyy-MM-dd HH:mm') 
910            /> 
911            <#recover> 
912        </#attempt> 
913    </#if> 
914    <#assign isoDateFormat = dateFormatFactory.getSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") /> 
915${isoDateFormat.format(dateObj)}</#if></#macro> 
916 
917<#macro createExportImageTag image> 
918    <#assign 
919    imageUrl = image.data 
920    alt = image.getAttribute("alt")!"DigitalBW News Artikel" 
921    imageFileUid = stringUtil.extractLast(imageUrl, "/") 
922    /> 
923    <#if (stringUtil.extractFirst(imageFileUid, "t")??)> 
924        <#assign imageFileUid = stringUtil.extractFirst(imageFileUid, "t")/> 
925        <#assign imageFileUid= imageFileUid?substring(0,imageFileUid?length-1)/> 
926    </#if> 
927    <#assign 
928    dlAppService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") 
929    fileEntry = dlAppService.getFileEntryByUuidAndGroupId(imageFileUid,groupId) 
930    inputStream = fileEntry.getContentStream() 
931    imageModel = imageToolUtil.getImage(inputStream) 
932    /> 
933    <#assign 
934    width = imageModel.getWidth() 
935    height = imageModel.getHeight() 
936    aspectRatio = width / height 
937    /> 
938    <#if width gt 650> 
939        <#assign 
940        height = 650 / aspectRatio 
941        width = 650 
942        /> 
943    </#if> 
944    <img src="${imageUrl}" alt="${htmlUtil.escapeAttribute(alt)}" title="${htmlUtil.escapeAttribute(alt)}" width="${width}" height="${height}"/> 
945</#macro> 
946 
947<#macro createExportImageTag image> 
948    <#assign 
949        imageUrl = image.data 
950        alt = image.getAttribute("alt")!"DigitalBW Event" 
951        imageFileUid = stringUtil.extractLast(imageUrl, "/") 
952    /> 
953    <#if (stringUtil.extractFirst(imageFileUid, "t")??)> 
954        <#assign imageFileUid = stringUtil.extractFirst(imageFileUid, "t")/> 
955        <#assign imageFileUid= imageFileUid?substring(0,imageFileUid?length-1)/> 
956    </#if> 
957    <#assign 
958        dlAppService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") 
959        fileEntry = dlAppService.getFileEntryByUuidAndGroupId(imageFileUid,groupId) 
960        inputStream = fileEntry.getContentStream() 
961        imageModel = imageToolUtil.getImage(inputStream) 
962    /> 
963    <#assign 
964        width = imageModel.getWidth() 
965        height = imageModel.getHeight() 
966        aspectRatio = width / height 
967    /> 
968    <#if width gt 650> 
969        <#assign 
970            height = 650 / aspectRatio 
971            width = 650 
972        /> 
973    </#if> 
974    <#switch portal.getPortalURL(themeDisplay)> 
975        <#case "https://digital-bw.web.bwl.de"> 
976        <#case "https://digital-bw.landbw.de"> 
977        <#case "https://www.digital-bw.de"> 
978            <#assign domainHost = "http://web-digital-bw-liferay:8080" /> 
979            <#break> 
980        <#default> 
981            <#assign 
982            domainHost = portal.getPortalURL(themeDisplay) 
983            /> 
984    </#switch> 
985    <img src="${domainHost}${imageUrl}" alt="${htmlUtil.escapeAttribute(alt)}" title="${htmlUtil.escapeAttribute(alt)}" width="${width}" height="${height}"/> 
986</#macro> 

Eventempfehlungen

Eventempfehlungen

Asset Publisher