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@64cd72a2"; 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 857, 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                                    ${description.data} 
312                                </#if> 
313 
314                                <#if viewMode == "view"> 
315                                    <br> 
316                                    <p class="source"> 
317                                        <a href="${exportPdfURL}" target="_blank"><i class="mdi mdi-download"></i>&nbsp;<@liferay["language"] key="save-as-pdf" /></a> 
318                                    </p> 
319                                </#if> 
320                            </section> 
321                        </div> 
322                    </div> 
323 
324                </article> 
325 
326                <#if viewMode == "view"> 
327                    <article class="events-mobile"> 
328                        <#if eventname?? && eventname.data?has_content> 
329                            <div class="summary">${eventname.data}</div> 
330                        </#if> 
331                        <#if image??> 
332                            <div class="image-gallery"> 
333                                <div class="row"> 
334                                    <div class="col-md-12"> 
335                                        <#if (image.siblings?size >1)> 
336                                            <div class="swiper-container events-swiper"> 
337                                                <div class="swiper-wrapper"> 
338                                                    <#list image.siblings as curMedium> 
339                                                        <#if (curMedium?? && curMedium.data?has_content) || (curMedium.youtubeurl?? && curMedium.youtubeurl.data?has_content)> 
340                                                            <@showSlide image=curMedium counter=curMedium?counter youtubeurl=curMedium.youtubeurl externalvideo=curMedium.externalvideo /> 
341                                                        </#if> 
342                                                    </#list> 
343                                                </div> 
344                                                <div class="swiper-pagination"></div> 
345                                            </div> 
346                                        <#else> 
347                                            <#list image.siblings as curMedium> 
348                                                <#if (curMedium?? && curMedium.data?has_content) || (curMedium.youtubeurl?? && curMedium.youtubeurl.data?has_content)> 
349                                                    <@showSlide image=curMedium counter=curMedium?counter youtubeurl=curMedium.youtubeurl externalvideo=curMedium.externalvideo /> 
350                                                </#if> 
351                                            </#list> 
352                                        </#if> 
353                                    </div> 
354                                </div> 
355                            </div> 
356 
357                        </#if> 
358 
359                        <section class="article-body"> 
360                            <#if description?? && description.data?has_content> 
361                                ${description.data} 
362                            </#if> 
363                        </section> 
364 
365                    </article> 
366                </#if> 
367 
368                <footer> 
369                    <#if viewMode == "view"> 
370                        <div class="row"> 
371                            <div class="col-md-12"> 
372                                <#if srcUrl?? && srcUrl.data?has_content> 
373                                    <div class="link"> 
374                                        <a href="${srcUrl.data}" target="_blank" class="btn btn-outline" title="<@liferay.language key="go-to-event" />"> 
375                                            <@liferay.language key="go-to-event" /> 
376 
377                                            <i class="svg-icon open-in-new blue-button icomoon-button_link_external"></i> 
378                                        </a> 
379                                    </div> 
380                                </#if> 
381                            </div> 
382                        </div> 
383                    </#if> 
384                </footer> 
385            </div> 
386 
387        </div> 
388    </div> 
389 
390    <div class="col-md-6 portlet-column portlet-column-only news-matches section-3" id="column-3"> 
391        <div class="row-70-30-right event-details-data"> 
392 
393            <#if startdate?? && startdate.data?has_content> 
394                <div class="row events-data"> 
395                    <div class="col-md-12"> 
396 
397                        <h3 class="headline" style="text-align:left;"><@liferay["language"] key="when-question" /></h3> 
398 
399                        <div class="asset-abstract"> 
400                            <span class="metadata-entry metadata-startdate"> 
401                            <#assign startDateValue = "" /> 
402                                <#assign endDateValue = "" /> 
403                                <#if startdate?? && startdate.data?has_content> 
404                                    <#assign startDateValue = startdate.data /> 
405                                </#if> 
406                                <#if enddate?? && enddate.data?has_content> 
407                                    <#assign endDateValue = enddate.data /> 
408                                </#if> 
409                                <#if viewMode == "view"> 
410                                    <i class="icon-calendar"></i> 
411                                </#if> 
412                                <@formatDateRange startDateValue=startDateValue endDateValue=endDateValue /> 
413 
414                                <br/> 
415 
416                                <#assign startTimeValue = "" /> 
417                                <#assign endTimeValue = "" /> 
418                                <#if (starttime?? && starttime.data?has_content)> 
419                                    <#assign startTimeValue = starttime.data /> 
420                                </#if> 
421                                <#if (enddate.endtime?? && enddate.endtime.data?has_content)> 
422                                    <#assign endTimeValue = enddate.endtime.data /> 
423                                </#if> 
424                                <#if startTimeValue?? && startTimeValue?has_content> 
425                                    <#if viewMode == "view"> 
426                                        <i class="icon-time"></i> 
427                                    </#if> 
428                                    <@formatTimeRange startTimeValue=startTimeValue endTimeValue=endTimeValue /> 
429                                </#if> 
430 
431                            <br/> 
432                            </span> 
433 
434                            <span itemprop="startDate" content="<@formatIsoDateTime dateValue=startDateValue timeValue=startTimeValue />"></span> 
435                            <span itemprop="endDate" content="<@formatIsoDateTime dateValue=endDateValue timeValue=endTimeValue />"></span> 
436 
437                            <#if viewMode == "view"> 
438                                <#assign 
439                                ddmStructureEventIcalExportURL = portletURLFactory.create(httpServletRequest, "de_xdot_bw_im_digbw_portlet_DdmStructureEventIcalExportPortlet", "2") 
440                                void = ddmStructureEventIcalExportURL.setCopyCurrentRenderParameters(false) 
441                                void = ddmStructureEventIcalExportURL.setResourceID("/ddm/structure/event/ical") 
442                                void = ddmStructureEventIcalExportURL.setParameter("groupId", scopeGroupId?c) 
443                                void = ddmStructureEventIcalExportURL.setParameter("articleId", .vars['reserved-article-id'].data) 
444 
445                                exportURL = ddmStructureEventIcalExportURL.toString() 
446                                exportURL = httpUtil.setParameter(exportURL, "p_p_lifecycle", "2") 
447                                /> 
448 
449                                <a class="link" href="${exportURL}" target="_blank"> 
450                                    <div class="row asset-title-row"> 
451                                        <div class="col-xs-10"> 
452                                            <h3> 
453                                                <@liferay.language key="add-to-calendar" /> 
454                                            </h3> 
455                                        </div> 
456                                        <div class="col-xs-2"> 
457                                            <i class="svg-icon open-in-new right-column icomoon-button_link_external" title="<@liferay.language key="add-to-calendar" />"></i> 
458                                        </div> 
459                                    </div> 
460                                </a> 
461                            </#if> 
462                        </div> 
463                    </div> 
464                </div> 
465            </#if> 
466 
467            <#if showNoGeo?? && showNoGeo.data?has_content> 
468            <#else> 
469                <#if eventlocation?? && eventlocation.data?has_content> 
470 
471                    <div class="row events-data"> 
472                        <div class="col-md-12"> 
473                            <div itemprop="location" itemscope itemtype="http://schema.org/Place"> 
474 
475                                <h3 class="headline" style="text-align:left;"><@liferay["language"] key="where-question" /></h3> 
476 
477                                <#list assetCategories as assetCategory> 
478                                    <#if assetVocabularyLocalService.fetchAssetVocabulary(assetCategory.vocabularyId)??> 
479                                        <#if ("Ort" == assetVocabularyLocalService.fetchAssetVocabulary(assetCategory.vocabularyId).name)> 
480                                            <span itemprop="name" content="${assetCategory.getTitle(locale)}"></span> 
481                                        </#if> 
482                                    </#if> 
483                                </#list> 
484 
485 
486                                <div class="asset-abstract pre" itemprop="address"> 
487                                    <p>${htmlUtil.replaceNewLine(eventlocation.data)}</p> 
488 
489 
490                                    <#if viewMode == "view"> 
491                                        <#if geo?? && geo.data?has_content> 
492 
493                                            <#assign coordinatesJSONObject = jsonFactoryUtil.createJSONObject(geo.data) /> 
494                                            <#assign latitude = coordinatesJSONObject.getDouble("latitude") /> 
495                                            <#assign longitude = coordinatesJSONObject.getDouble("longitude") /> 
496                                            <div class="locate"> 
497                                                <a class="link" href="//maps.google.de/maps?daddr=${latitude?c},${longitude?c}&t=h&om=0&hl=de" target="_blank"> 
498                                                    <div class="row asset-title-row"> 
499                                                        <div class="col-xs-10"> 
500                                                            <h3> 
501                                                                <@liferay.language key="route-planner" /> 
502                                                            </h3> 
503                                                        </div> 
504                                                        <div class="col-xs-2"> 
505                                                           <i class="svg-icon open-in-new right-column icomoon-button_link_external" title="<@liferay.language key="route-planner" />"></i> 
506                                                        </div> 
507                                                    </div> 
508                                                </a> 
509                                            </div> 
510                                            <span itemprop="geo" itemscope itemtype="http://schema.org/GeoCoordinates"> 
511                                    <span itemprop="latitude" content="${latitude?c}"></span> 
512                                    <span itemprop="longitude" content="${longitude?c}"></span> 
513                                </span> 
514                                        </#if> 
515                                    </#if> 
516                                </div> 
517                            </div> 
518                        </div> 
519                    </div> 
520                </#if> 
521            </#if> 
522            <div class="row events-data"> 
523                <div class="col-md-12"> 
524                    <#if organizer?? && organizer.data?has_content 
525                    || addressFooter?? && addressFooter.data?has_content 
526                    || logoFooter?? && logoFooter.data?has_content> 
527                        <h3 class="headline" style="text-align:left;"> 
528                            <@liferay["language"] key="who-question" /> 
529                        </h3> 
530                    </#if> 
531                    <div itemprop="performer" itemscope itemtype="http://schema.org/PerformingGroup" class="asset-abstract noborder"> 
532                        <#if organizer?? && organizer.data?has_content> 
533                            <p itemprop="name">${organizer.data}</p> 
534                        </#if> 
535                        <#if addressFooter?? && addressFooter.data?has_content> 
536                            <p itemprop="address">${addressFooter.data}</p> 
537                        </#if> 
538                        <#if logoFooter?? && logoFooter.data?has_content> 
539                            <div class="logo-footer"> 
540                                <#if viewMode == "view"> 
541                                    <img alt="${logoFooter.getAttribute("alt")}" title="${logoFooter.getAttribute("alt")}" src="${logoFooter.data}"  /> 
542                                    <span itemprop="logo" content="${portal.getPortalURL(themeDisplay)}${logoFooter.data}"></span> 
543                                <#elseif viewMode == "export"> 
544                                    <@createExportImageTag image=logoFooter /> 
545                                </#if> 
546                            </div> 
547                        </#if> 
548                    </div> 
549                </div> 
550            </div> 
551 
552            <#if viewMode == "export"> 
553                <p align="center"> 
554                    <a href="${viewURL}">${viewURL}</a> 
555                </p> 
556            </#if> 
557 
558        </div> 
559    </div> 
560</div> 
561 
562<#if viewMode == "view"> 
563    <div class="share-buttons-section"> 
564        <div class="max-width"> 
565            <div class="row share-buttons"> 
566                <div class="col-md-12"> 
567                    <span class="text"><@liferay["language"] key="share" /></span> 
568                    <@liferay_ui["social-bookmarks"] 
569                    displayStyle="simple" 
570                    target="_blank" 
571                    title="${title}" 
572                    url="${portal.getCanonicalURL(currentURL, themeDisplay, layout)}" 
573                    /> 
574 
575                </div> 
576            </div> 
577        </div> 
578    </div> 
579</#if> 
580 
581<#if viewMode == "view"> 
582    <script> 
583        initSwiper('events-swiper', '${namespace}'); 
584    </script> 
585 
586    <script type="text/javascript"> 
587        var initializeCarousel = function() { 
588            $('#${namespace}carousel').carousel( 
589
590                    interval: 5000 
591
592            ); 
593 
594            $('[id^=${namespace}carousel-selector-]').click( 
595                function() { 
596                    var selector = $(this).attr('id'); 
597                    try { 
598                        var slideNumber = /-(\d+)$/.exec(selector)[1]; 
599                        $('#${namespace}carousel').carousel(parseInt(slideNumber)); 
600                    } catch (e) { 
601                        console.log(e); 
602
603
604            ); 
605        }; 
606 
607        $(document).ready(initializeCarousel); 
608        Liferay.on('endNavigate', initializeCarousel); 
609 
610        var initializeVideoPopup = function () { 
611            AUI().use('aui-base', 'aui-io-plugin-deprecated', 'liferay-util-window', 'aui-dialog-iframe-deprecated', function (A) { 
612                A.all('.video-link-popup').each(function (elem) { 
613                    elem.on( 
614                        'click', 
615                        function (e) { 
616                            e.preventDefault(); 
617                            var modal; 
618 
619                            var isMobile = Liferay.Browser.isMobile(); 
620 
621                            var externalvideo = e.currentTarget.getAttribute('data-externalvideo'); 
622                            var youtubeId = e.currentTarget.getAttribute('data-youtube-id'); 
623                            var youtubeUrl = 'https://www.youtube-nocookie.com/embed/'+ youtubeId +'?autoplay=1&rel=0&amp;controls=2&amp;showinfo=0&modestbranding=1'; 
624 
625                            var width = (window.innerWidth > 0) ? window.innerWidth : screen.width; 
626                            var height = width * 0.5625; 
627 
628                            var content = ""; 
629 
630                            if (isMobile) { 
631 
632                                if (externalvideo) { 
633                                    content = '<div class="embed-container">' + externalvideo + '</div>'; 
634                                } else { 
635                                    content = '<iframe ' + 
636                                        'src="' + youtubeUrl + '" ' + 
637                                        'frameborder="0" ' + 
638                                        'width="' + width + '" ' + 
639                                        'height="' + height + '" ' + 
640                                        'allow="autoplay; encrypted-media" ' + 
641                                        'allowfullscreen' + 
642                                        '></iframe>'; 
643
644 
645                                modal = new A.Modal( 
646
647                                        bodyContent: '<div class="mobile-video-container">' + 
648                                            content + 
649                                            '</div>', 
650                                        destroyOnHide: true, 
651                                        centered: true, 
652                                        modal: true, 
653                                        render: '#mobile-videos-modal', 
654                                        width: '100%', 
655                                        height: '100%', 
656                                        on: { 
657                                            render: function () { 
658                                                var docStyle = document.documentElement.style; 
659                                                var _this = this; 
660                                                docStyle.setProperty('pointer-events', 'none'); 
661                                                docStyle.setProperty('touch-action', 'none'); 
662                                                docStyle.setProperty('overflow-y', 'hidden'); 
663 
664                                                window.history.pushState(null, 'Video Popup', 'video-popup'); 
665                                                window.onpopstate = function () { 
666                                                    _this.destroy(); 
667                                                }; 
668                                            }, 
669                                            destroy: function () { 
670                                                var docStyle = document.documentElement.style; 
671                                                docStyle.removeProperty('pointer-events'); 
672                                                docStyle.removeProperty('touch-action'); 
673                                                docStyle.removeProperty('overflow-y'); 
674 
675                                                window.onpopstate = null; 
676 
677                                                var pathName = location.pathname; 
678                                                if (pathName.indexOf('video-popup') > -1) { 
679                                                    history.back(); 
680
681
682
683
684                                ).render(); 
685                            } else { 
686                                if (externalvideo) { 
687                                    content = '<div class="embed-container">' + externalvideo + '</div>'; 
688                                } else { 
689                                    content = ' <iframe src="https://www.youtube-nocookie.com/embed/' + youtubeId + '?autoplay=1&rel=0&amp;controls=2&amp;showinfo=0&modestbranding=1"' + 
690                                        '         frameborder="0"' + 
691                                        '         allow="autoplay; encrypted-media"' + 
692                                        '         allowfullscreen' + 
693                                        '         width="720"' + 
694                                        '         height="560"' + 
695                                        ' >' + 
696                                        ' </iframe>'; 
697
698 
699                                modal = Liferay.Util.openWindow( 
700
701                                        dialog: { 
702                                            width: width * 0.5, 
703                                            height: height * 0.5, 
704                                            centered: true, 
705                                            constrain2view: true, 
706                                            modal: true, 
707                                            resizable: false, 
708                                            moveable: false, 
709                                            destroyOnHide: true, 
710                                            close: true, 
711                                            cssClass: 'dialog-iframe-popup', 
712                                            bodyContent: '<div class="asset-full-content videos youtube-video"><div class="video-player">' + 
713                                                content + 
714                                                '            <button type="button"\n' + 
715                                                '                    class="btn-toolbar-button close close-content yui3-widget aui-button yui3-aui-button yui3-aui-button-content"\n' + 
716                                                '                    id="video-close-btn" role="button" onclick="closePopup(\'videoplayer\');">\n' + 
717                                                '                <svg class="lexicon-icon" focusable="false" viewBox="0 0 512 512">\n' + 
718                                                '                    <title>Schließen</title>\n' + 
719                                                '                    <path class="lexicon-icon-outline"\n' + 
720                                                '                          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' + 
721                                                '                </svg>\n' + 
722                                                '            </button>\n' + 
723                                                '</div></div>' 
724                                        }, 
725                                        dialogIframe: { 
726                                            scrolling: "no", 
727                                            verticalscrolling: "no", 
728                                            gutter: { 
729                                                bottom: "0", 
730                                                left: "0", 
731                                                right: "0", 
732                                                top: "0" 
733                                            }, 
734                                            on: { 
735                                                load: function (e) { 
736                                                    document.getElementById(e.windowName).setAttribute("scrolling", "no"); 
737                                                    $('#videoplayer').find('.modal-content').find('.modal-header').css('display', 'none'); 
738                                                    $("#" + e.windowName).contents().find("html").css("overflow", "hidden"); 
739                                                    this._host._fillHeight(); 
740
741
742                                        }, 
743                                        id: 'videoplayer' 
744
745                                ); 
746
747                            return false; 
748
749                    ); 
750                }); 
751 
752                Liferay.provide(window, 'closePopup', function (dialogId) { 
753                        var dialog = Liferay.Util.Window.getById(dialogId); 
754                        dialog.destroy(); 
755                    }, 
756                    [ 'liferay-util-window' ] 
757                ); 
758            }); 
759        }; 
760 
761        $(document).ready(initializeVideoPopup); 
762        Liferay.on('endNavigate', initializeVideoPopup); 
763 
764    </script> 
765</#if> 
766 
767<#macro formatDateRange startDateValue="" endDateValue=""> 
768    <#assign 
769        yearFormat = dateFormatFactory.getSimpleDateFormat("yyyy") 
770        monthFormat = dateFormatFactory.getSimpleDateFormat("MM") 
771        dayFormat = dateFormatFactory.getSimpleDateFormat("dd.") 
772        dayMonthFormat = dateFormatFactory.getSimpleDateFormat("dd. MMM.") 
773        dayMonthYearFormat = dateFormatFactory.getSimpleDateFormat("dd. MMM. yyyy") 
774    /> 
775    <#if startDateValue?? && startDateValue?has_content> 
776        <#assign startDateObj = dateUtil.parseDate("yyyy-MM-dd", startDateValue, locale)> 
777    </#if> 
778    <#if endDateValue?? && endDateValue?has_content> 
779        <#assign endDateObj = dateUtil.parseDate("yyyy-MM-dd", endDateValue, locale)> 
780    </#if> 
781    <#if startDateObj?? && startDateObj?has_content> 
782        <#if endDateObj?? && endDateObj?has_content> 
783            <#assign 
784                startDateYear = yearFormat.format(startDateObj) 
785                endDateYear = yearFormat.format(endDateObj) 
786            /> 
787            <#assign 
788                startDateMonth = monthFormat.format(startDateObj) 
789                endDateMonth = monthFormat.format(endDateObj) 
790            /> 
791            <#assign 
792                startDateDay = dayFormat.format(startDateObj) 
793                endDateDay = dayFormat.format(endDateObj) 
794            /> 
795            <#if startDateYear == endDateYear> 
796                <#if (startDateMonth == endDateMonth)> 
797                    <#if startDateDay == endDateDay> 
798                        ${dayMonthYearFormat.format(endDateObj)} 
799                    <#else> 
800                        ${dayFormat.format(startDateObj)} - ${dayMonthYearFormat.format(endDateObj)} 
801                    </#if> 
802                <#else> 
803                    ${dayMonthFormat.format(startDateObj)} - ${dayMonthYearFormat.format(endDateObj)} 
804                </#if> 
805            <#else> 
806                ${dayMonthYearFormat.format(startDateObj)} - ${dayMonthYearFormat.format(endDateObj)} 
807            </#if> 
808        <#else> 
809            ${dayMonthYearFormat.format(startDateObj)} 
810        </#if> 
811    </#if> 
812</#macro> 
813 
814<#macro formatTimeRange startTimeValue="" endTimeValue=""> 
815    <#if startTimeValue?? && startTimeValue?has_content> 
816        ${startTimeValue} 
817        <#if endTimeValue?? && endTimeValue?has_content> 
818            <@liferay["language"] key="until" /> 
819            ${endTimeValue} 
820        </#if> 
821        <@liferay["language"] key="o-clock" /> 
822    </#if> 
823</#macro> 
824 
825<#macro showSlide image counter youtubeurl externalvideo=""> 
826    <#assign alt = "" /> 
827    <#assign href = "" /> 
828    <#assign src = "" /> 
829    <#assign target = "" /> 
830    <#assign isvideo = false /> 
831 
832    <#if youtubeurl?? && youtubeurl.data?has_content> 
833        <#assign youtubeId = getYoutubeId(youtubeurl.data) /> 
834        <#assign href = "https://www.youtube.com/watch?v=${youtubeId}" /> 
835        <#assign target = "_blank" /> 
836        <#assign src = "//i.ytimg.com/vi/${youtubeId}/maxresdefault.jpg" /> 
837        <#assign isvideo = true /> 
838    </#if> 
839    <#if image?? && image.data?has_content> 
840        <#assign src = portal.getPortalURL(themeDisplay) + image.data /> 
841        <#assign alt = image.getAttribute("alt")!"DigitalBW News Artikel" /> 
842    </#if> 
843    <#if externalvideo?? && externalvideo?has_content && externalvideo.data?has_content> 
844        <#assign isvideo = true /> 
845        <#assign href = "javascript:void(0);" /> 
846    </#if> 
847    <div class="swiper-slide item ${(counter==1)?then('active', '')}" data-slide-number="${counter - 1}"> 
848        <#if href?has_content> 
849            <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>> 
850                <@common.showCopyright imageUrl=src alt=alt/> 
851                <span itemprop="image" content="${src}"></span> 
852                <#if isvideo> 
853                    <div class="svg-icon play-icon"></div> 
854                </#if> 
855            </a> 
856        <#else> 
857            <@common.showCopyright imageUrl=src alt=alt/> 
858            <span itemprop="image" content="${src}"></span> 
859            <#if isvideo> 
860                <div class="svg-icon play-icon"></div> 
861            </#if> 
862        </#if> 
863    </div> 
864</#macro> 
865 
866<#macro showGallery image counter youtubeurl> 
867    <#assign alt = "" /> 
868    <#assign src = "" /> 
869    <#assign target = "" /> 
870 
871    <#if youtubeurl?? && youtubeurl.data?has_content> 
872        <#assign youtubeId = getYoutubeId(youtubeurl.data) /> 
873        <#assign target = "_blank" /> 
874        <#assign src = "//i.ytimg.com/vi/${youtubeId}/hqdefault.jpg" /> 
875    </#if> 
876    <#if image?? && image.data?has_content> 
877        <#assign src = portal.getPortalURL(themeDisplay) + httpUtil.addParameter(image.data, "imageThumbnail", 1) /> 
878        <#assign alt = image.getAttribute("alt")!"DigitalBW Event" /> 
879    </#if> 
880 
881    <li class="col-md-3"> 
882        <a class="thumbnail" id="${namespace}carousel-selector-${counter-1}" href="javascript:void(0);"> 
883            <@common.showCopyright imageUrl=src alt=alt/> 
884        </a> 
885    </li> 
886</#macro> 
887 
888<#function getYoutubeId youtubeUrl> 
889    <#assign url = httpUtil.getPath(youtubeUrl) /> 
890    <#assign url = stringUtil.extractLast(url, '/') /> 
891    <#return url /> 
892</#function> 
893 
894<#macro formatIsoDateTime dateValue="" timeValue=""> 
895    <#if dateValue?has_content> 
896    <#assign 
897        dateObj = dateUtil.parseDate("yyyy-MM-dd", dateValue, locale) 
898    /> 
899    <#if timeValue?? && timeValue?has_content> 
900        <#assign timeString = timeValue?replace('[A-Za-z]+', '', 'ri') /> 
901        <#assign timeString = timeString?trim /> 
902        <#assign dateAndTimeString = dateValue + " " + timeString /> 
903        <#attempt> 
904            <#assign 
905                dateObj = dateAndTimeString?datetime('yyyy-MM-dd HH:mm') 
906            /> 
907            <#recover> 
908        </#attempt> 
909    </#if> 
910    <#assign isoDateFormat = dateFormatFactory.getSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") /> 
911${isoDateFormat.format(dateObj)}</#if></#macro> 
912 
913<#macro createExportImageTag image> 
914    <#assign 
915    imageUrl = image.data 
916    alt = image.getAttribute("alt")!"DigitalBW News Artikel" 
917    imageFileUid = stringUtil.extractLast(imageUrl, "/") 
918    /> 
919    <#if (stringUtil.extractFirst(imageFileUid, "t")??)> 
920        <#assign imageFileUid = stringUtil.extractFirst(imageFileUid, "t")/> 
921        <#assign imageFileUid= imageFileUid?substring(0,imageFileUid?length-1)/> 
922    </#if> 
923    <#assign 
924    dlAppService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") 
925    fileEntry = dlAppService.getFileEntryByUuidAndGroupId(imageFileUid,groupId) 
926    inputStream = fileEntry.getContentStream() 
927    imageModel = imageToolUtil.getImage(inputStream) 
928    /> 
929    <#assign 
930    width = imageModel.getWidth() 
931    height = imageModel.getHeight() 
932    aspectRatio = width / height 
933    /> 
934    <#if width gt 650> 
935        <#assign 
936        height = 650 / aspectRatio 
937        width = 650 
938        /> 
939    </#if> 
940    <img src="${imageUrl}" alt="${htmlUtil.escapeAttribute(alt)}" title="${htmlUtil.escapeAttribute(alt)}" width="${width}" height="${height}"/> 
941</#macro> 
942 
943<#macro createExportImageTag image> 
944    <#assign 
945        imageUrl = image.data 
946        alt = image.getAttribute("alt")!"DigitalBW Event" 
947        imageFileUid = stringUtil.extractLast(imageUrl, "/") 
948    /> 
949    <#if (stringUtil.extractFirst(imageFileUid, "t")??)> 
950        <#assign imageFileUid = stringUtil.extractFirst(imageFileUid, "t")/> 
951        <#assign imageFileUid= imageFileUid?substring(0,imageFileUid?length-1)/> 
952    </#if> 
953    <#assign 
954        dlAppService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") 
955        fileEntry = dlAppService.getFileEntryByUuidAndGroupId(imageFileUid,groupId) 
956        inputStream = fileEntry.getContentStream() 
957        imageModel = imageToolUtil.getImage(inputStream) 
958    /> 
959    <#assign 
960        width = imageModel.getWidth() 
961        height = imageModel.getHeight() 
962        aspectRatio = width / height 
963    /> 
964    <#if width gt 650> 
965        <#assign 
966            height = 650 / aspectRatio 
967            width = 650 
968        /> 
969    </#if> 
970    <#switch portal.getPortalURL(themeDisplay)> 
971        <#case "https://digital-bw.web.bwl.de"> 
972        <#case "https://digital-bw.landbw.de"> 
973        <#case "https://www.digital-bw.de"> 
974            <#assign domainHost = "http://web-digital-bw-liferay:8080" /> 
975            <#break> 
976        <#default> 
977            <#assign 
978            domainHost = portal.getPortalURL(themeDisplay) 
979            /> 
980    </#switch> 
981    <img src="${domainHost}${imageUrl}" alt="${htmlUtil.escapeAttribute(alt)}" title="${htmlUtil.escapeAttribute(alt)}" width="${width}" height="${height}"/> 
982</#macro> 

Eventempfehlungen

Eventempfehlungen

Asset Publisher