Asset Headline News

DIGITALE ZAHLUNGSMITTEL

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@6b52c539"; 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 236, column 9]
	- Reached through: @common.showCopyright imageUrl=src al...  [in template "20115#20151#NEWS" in macro "showSlide" at line 676, column 17]
	- Reached through: @showSlide image=curMedium counter=cu...  [in template "20115#20151#NEWS" at line 285, column 64]
----
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<#-- @ftlvariable name="companyLocalService" type="com.liferay.portal.kernel.service.CompanyLocalService" --> 
8<#-- @ftlvariable name="groupLocalService" type="com.liferay.portal.kernel.service.GroupLocalService" --> 
9<#-- @ftlvariable name="dlAppServiceUtil" type="com.liferay.document.library.kernel.service.DLAppService" --> 
10 
11<#import "/digital-bw.web-resources_SERVLET_CONTEXT_/common_macros.ftl" as common> 
12 
13<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
14<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
15<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
16 
17<#assign companyLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.CompanyLocalService") /> 
18<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") /> 
19<#assign layoutSetLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutSetLocalService") /> 
20 
21<#assign dlAppServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService")> 
22 
23<#assign journalArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) /> 
24<#assign resourcePrimKey = journalArticle.resourcePrimKey /> 
25<#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourcePrimKey) /> 
26<#assign assetCategories = assetCategoryLocalService.getAssetEntryAssetCategories(assetEntry.entryId) /> 
27 
28<#assign serviceContextThreadLocal = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"] /> 
29<#assign serviceContext = serviceContextThreadLocal.getServiceContext() /> 
30<#assign httpServletRequest = serviceContext.getRequest() /> 
31 
32<#assign namespace = randomNamespace /> 
33<#assign title = .vars['reserved-article-title'].data /> 
34 
35<#assign company = companyLocalService.getCompany(portal.defaultCompanyId) /> 
36<#assign companyGroup = company.group /> 
37<#assign logoFolder = dlAppServiceUtil.getFolder(companyGroup.groupId, 0, "logo") /> 
38 
39<#switch portal.getPortalURL(themeDisplay)> 
40    <#case "https://www.digital-bw.de"> 
41        <#assign domainHost = "http://digital-bw-liferay:8080" /> 
42        <#break> 
43    <#default> 
44        <#assign 
45            domainHost = portal.getPortalURL(themeDisplay) 
46        /> 
47</#switch> 
48 
49<#assign currentURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
50<#assign 
51    layoutSet = layoutSetLocalService.getLayoutSet(groupId, layout.isPrivateLayout()) 
52    groupFriendlyURL = portal.getGroupFriendlyURL(layoutSet, themeDisplay) 
53    viewURL = "" 
54/> 
55<#if journalArticle.layoutUuid?has_content> 
56    <#assign 
57    viewURL = groupFriendlyURL + "/-/" + journalArticle.urlTitle 
58    /> 
59</#if> 
60 
61<#assign 
62    exportPdfURLObj = portletURLFactory.create(httpServletRequest, "com_liferay_journal_web_portlet_JournalPortlet", "2") 
63    void = exportPdfURLObj.setCopyCurrentRenderParameters(false) 
64    void = exportPdfURLObj.setResourceID("exportArticle") 
65    void = exportPdfURLObj.setParameter("groupId", scopeGroupId?c) 
66    void = exportPdfURLObj.setParameter("articleId", .vars['reserved-article-id'].data) 
67    void = exportPdfURLObj.setParameter("plid", themeDisplay.plid?c) 
68    void = exportPdfURLObj.setParameter("targetExtension", "pdf") 
69    void = exportPdfURLObj.setParameter("portletResource", themeDisplay.getPortletDisplay().getId()) 
70    exportPdfURL = exportPdfURLObj.toString() 
71    exportPdfURL = httpUtil.setParameter(exportPdfURL, "p_p_lifecycle", "2") 
72/> 
73 
74 
75<#if viewMode == "export"> 
76    <style type="text/css"> 
77        /* roboto-regular - latin */ 
78        @font-face { 
79            font-family: 'Roboto'; 
80            font-style: normal; 
81            font-weight: 400; 
82            src: url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-regular.eot'); /* IE9 Compat Modes */ 
83            src: local('Roboto'), local('Roboto-Regular'), 
84            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
85            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ 
86            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-regular.woff') format('woff'), /* Modern Browsers */ 
87            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ 
88            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */ 
89
90        /* roboto-700 - latin */ 
91        @font-face { 
92            font-family: 'Roboto'; 
93            font-style: normal; 
94            font-weight: 700; 
95            src: url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-700.eot'); /* IE9 Compat Modes */ 
96            src: local('Roboto Bold'), local('Roboto-Bold'), 
97            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
98            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-700.woff2') format('woff2'), /* Super Modern Browsers */ 
99            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-700.woff') format('woff'), /* Modern Browsers */ 
100            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */ 
101            url('${domainHost}/o/digital-bw-theme/fonts/roboto-v18-latin/roboto-v18-latin-700.svg#Roboto') format('svg'); /* Legacy iOS */ 
102
103 
104        /* montserrat-300 - latin */ 
105        @font-face { 
106            font-family: 'Montserrat'; 
107            font-style: normal; 
108            font-weight: 300; 
109            src: url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300.eot'); /* IE9 Compat Modes */ 
110            src: local('Montserrat Light'), local('Montserrat-Light'), 
111            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
112            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300.woff2') format('woff2'), /* Super Modern Browsers */ 
113            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300.woff') format('woff'), /* Modern Browsers */ 
114            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */ 
115            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300.svg#Montserrat') format('svg'), /* Legacy iOS */ 
116
117        /* montserrat-regular - latin */ 
118        @font-face { 
119            font-family: 'Montserrat'; 
120            font-style: normal; 
121            font-weight: 400; 
122            src: url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-regular.eot'); /* IE9 Compat Modes */ 
123            src: local('Montserrat Regular'), local('Montserrat-Regular'), 
124            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
125            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ 
126            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-regular.woff') format('woff'), /* Modern Browsers */ 
127            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ 
128            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-regular.svg#Montserrat') format('svg'); /* Legacy iOS */ 
129
130        /* montserrat-700 - latin */ 
131        @font-face { 
132            font-family: 'Montserrat'; 
133            font-style: normal; 
134            font-weight: 700; 
135            src: url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700.eot'); /* IE9 Compat Modes */ 
136            src: local('Montserrat Bold'), local('Montserrat-Bold'), 
137            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
138            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700.woff2') format('woff2'), /* Super Modern Browsers */ 
139            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700.woff') format('woff'), /* Modern Browsers */ 
140            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */ 
141            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700.svg#Montserrat') format('svg'); /* Legacy iOS */ 
142
143        /* montserrat-700italic - latin */ 
144        @font-face { 
145            font-family: 'Montserrat'; 
146            font-style: italic; 
147            font-weight: 700; 
148            src: url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin-700italic.eot'); /* IE9 Compat Modes */ 
149            src: local('Montserrat Bold Italic'), local('Montserrat-BoldItalic'), 
150            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
151            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */ 
152            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700italic.woff') format('woff'), /* Modern Browsers */ 
153            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */ 
154            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-700italic.svg#Montserrat') format('svg'); /* Legacy iOS */ 
155
156 
157        /* montserrat-italic - latin */ 
158        @font-face { 
159            font-family: 'Montserrat'; 
160            font-style: italic; 
161            font-weight: 400; 
162            src: url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin-italic.eot'); /* IE9 Compat Modes */ 
163            src: local('Montserrat Italic'), local('Montserrat-Italic'), 
164            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
165            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-italic.woff2') format('woff2'), /* Super Modern Browsers */ 
166            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-italic.woff') format('woff'), /* Modern Browsers */ 
167            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */ 
168            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-italic.svg#Montserrat') format('svg'); /* Legacy iOS */ 
169
170 
171        /* montserrat-300italic - latin */ 
172        @font-face { 
173            font-family: 'Montserrat'; 
174            font-style: italic; 
175            font-weight: 300; 
176            src: url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300italic.eot'); /* IE9 Compat Modes */ 
177            src: local('Montserrat Light Italic'), local('Montserrat-LightItalic'), 
178            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
179            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300italic.woff2') format('woff2'), /* Super Modern Browsers */ 
180            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300italic.woff') format('woff'), /* Modern Browsers */ 
181            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300italic.ttf') format('truetype'), /* Safari, Android, iOS */ 
182            url('${domainHost}/o/digital-bw-theme/fonts/montserrat-v12-latin/montserrat-v12-latin-300italic.svg#Montserrat') format('svg'); /* Legacy iOS */ 
183
184 
185 
186        h1, h2, h3, h4, h5, h6{ 
187            font-family: 'Montserrat', Helvetica, Arial, sans-serif; 
188
189        body { 
190            margin:0; 
191            padding:0; 
192            -webkit-text-size-adjust:none; 
193            -ms-text-size-adjust:none; 
194 
195            font-family: 'Roboto', Helvetica, Arial, sans-serif; 
196
197 
198        a, a:hover, a:focus, a:active { 
199            color: #202240; 
200
201 
202        .summary { 
203            font-size: 1.4em; 
204            font-weight: bold; 
205
206    </style> 
207    <title>${title}</title> 
208</#if> 
209 
210<div class="news news-details" id="${namespace}" itemscope itemtype="http://schema.org/NewsArticle"> 
211    <#assign articleDisplayDate = .vars['reserved-article-display-date'].data /> 
212    <#assign originalLocale = .locale> 
213    <#setting locale = localeUtil.getDefault()> 
214    <#assign articleDisplayDate = articleDisplayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z")> 
215    <#setting locale = originalLocale> 
216    <#assign isoDateFormat = dateFormatFactory.getSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") /> 
217 
218    <#if viewMode == "export"> 
219        <div class="asset-headline"> 
220            <b>${articleDisplayDate?string("dd.MM.yyyy")}</b> 
221            <h1>${title}</h1> 
222        </div> 
223    </#if> 
224 
225    <#if viewMode == "view"> 
226        <@liferay_util["html-top"] outputKey="opengraph"> 
227            <meta property="og:title" content="${title?trim}" /> 
228            <meta property="og:description" content="${.vars['reserved-article-description'].data}" /> 
229            <meta property="og:url" content="${viewURL}" /> 
230            <meta property="og:type" content="article" /> 
231            <meta property="article:published_time" content="${isoDateFormat.format(articleDisplayDate)}" /> 
232 
233            <#if showFlexDelimiter??> 
234                <#if showFlexDelimiter.showBigPicture.imageBigpicture??> 
235                    <#assign 
236                    image = showFlexDelimiter.showBigPicture.imageBigpicture.siblings[0] 
237                    imageUrl = image.data 
238                    alt = image.getAttribute("alt")!"DigitalBW News Artikel" 
239                    /> 
240                    <meta property="og:image" content="${portal.getPortalURL(themeDisplay)}${imageUrl}" /> 
241                    <meta property="og:image:alt" content="${alt}" /> 
242                </#if> 
243            </#if> 
244        </@> 
245    </#if> 
246 
247    <span itemprop="name" content="${title?trim}"></span> 
248    <span itemprop="description" content="${.vars['reserved-article-description'].data}"></span> 
249    <span itemprop="datePublished" content="${isoDateFormat.format(articleDisplayDate)}"></span> 
250 
251    <span itemprop="headline" content="${title}"></span> 
252    <#if source?? && source.data?has_content> 
253        <span itemprop="author" content="${source.data}"></span> 
254        <span itemprop="publisher" itemscope itemtype="http://schema.org/Organization"> 
255            <span itemprop="name" content="${source.data}"></span> 
256            <#if srcLogo?? && srcLogo.data?has_content> 
257                <span itemprop="logo" content="${portal.getPortalURL(themeDisplay)}${srcLogo.data}"></span> 
258            <#elseif srcLogoSelect?? && srcLogoSelect?has_content> 
259                <span itemprop="logo" content="${portal.getPortalURL(themeDisplay)}/documents/${companyGroup.groupId}/${logoFolder.folderId}/${srcLogoSelect.data}.jpg"></span> 
260            </#if> 
261        </span> 
262    </#if> 
263 
264    <div class="row"> 
265        <div class="col-md-12"> 
266            <header> 
267                <div class="summary"> 
268                    ${.vars['reserved-article-description'].getData()} 
269                </div> 
270            </header> 
271        </div> 
272    </div> 
273    <div class="row"> 
274        <div class="col-md-12"> 
275            <article class="news-desktop"> 
276                <#if showFlexDelimiter??> 
277                    <#if showFlexDelimiter.showBigPicture.imageBigpicture??> 
278                        <#if viewMode == "view"> 
279                                <div class="image-gallery"> 
280                                        <div id="${namespace}carousel"> 
281                                            <div class="carousel"> 
282                                                <div class="carousel-inner"> 
283                                                    <#list showFlexDelimiter.showBigPicture.imageBigpicture.siblings as curMedium> 
284                                                        <#if (curMedium?? && curMedium.data?has_content) || (curMedium.youtubeurlBigpicture?? && curMedium.youtubeurlBigpicture.data?has_content)> 
285                                                               <@showSlide image=curMedium counter=curMedium?counter youtubeurl=curMedium.youtubeurlBigpicture externalvideo=curMedium.externalvideo/> 
286                                                        </#if> 
287                                                    </#list> 
288                                                </div> 
289                                            </div> 
290                                        </div> 
291 
292                                   <#if (showFlexDelimiter.showBigPicture.imageBigpicture.siblings?size >1)> 
293                                        <div class="row"> 
294                                            <ul class="list-unstyled"> 
295 
296                                                <#list showFlexDelimiter.showBigPicture.imageBigpicture.siblings as curMedium> 
297                                                    <#if (curMedium?counter <5)> 
298                                                    <#if (curMedium??  && curMedium.data?has_content) || (curMedium.youtubeurlBigpicture?? && curMedium.youtubeurlBigpicture.data?has_content)> 
299                                                        <@showGallery image=curMedium counter=curMedium?counter youtubeurl=curMedium.youtubeurlBigpicture /> 
300                                                    </#if> 
301                                                    </#if> 
302                                                </#list> 
303                                            </ul> 
304                                        </div> 
305                                   </#if> 
306                                </div> 
307                        <#elseif viewMode == "export"> 
308                            <div class="image-gallery"> 
309                                <br/> 
310                                <#list showFlexDelimiter.showBigPicture.imageBigpicture.siblings as curMedium> 
311                                    <#if (curMedium?? && curMedium.data?has_content)> 
312                                        <@createExportImageTag image=curMedium /> 
313                                    </#if> 
314                                </#list> 
315                            </div> 
316                        </#if> 
317                    </#if> 
318                </#if> 
319                <section class="article-body"> 
320                    <div itemprop="articleBody"> 
321                        <#if showFlexDelimiter??> 
322                            <#if showFlexDelimiter.showBigPicture.txtBigpicture?? && showFlexDelimiter.showBigPicture.txtBigpicture.data?has_content> 
323                                ${showFlexDelimiter.showBigPicture.txtBigpicture.data} 
324                            </#if> 
325                        </#if> 
326                    </div> 
327                    <#if viewMode == "view"> 
328                    <br style="clear:both"> 
329                    <p class="source"> 
330                        <a style="text-decoration:none;" href="${exportPdfURL}" target="_blank"><i class="mdi mdi-download"></i>&nbsp;<@liferay["language"] key="save-as-pdf" /></a> 
331                    </p> 
332                    </#if> 
333                </section> 
334 
335 
336            </article> 
337 
338            <#if viewMode == "view"> 
339                <article class="news-mobile"> 
340                    <#if showFlexDelimiter??> 
341                        <#if showFlexDelimiter.showBigPicture.imageBigpicture??> 
342                            <div class="image-gallery"> 
343                                <div class="row"> 
344                                    <div class="col-md-12"> 
345                                        <#if (showFlexDelimiter.showBigPicture.imageBigpicture.siblings?size >1)> 
346                                        <div class="swiper-container news-swiper"> 
347                                            <div class="swiper-wrapper"> 
348                                                <#list showFlexDelimiter.showBigPicture.imageBigpicture.siblings as curMedium> 
349                                                    <#if (curMedium?? && curMedium.data?has_content) || (curMedium.youtubeurlBigpicture?? && curMedium.youtubeurlBigpicture.data?has_content)> 
350                                                        <@showSlide image=curMedium counter=curMedium?counter youtubeurl=curMedium.youtubeurlBigpicture externalvideo=curMedium.externalvideo/> 
351                                                    </#if> 
352                                                </#list> 
353                                            </div> 
354                                            <div class="swiper-pagination"></div> 
355                                        </div> 
356                                        <#else> 
357                                            <#list showFlexDelimiter.showBigPicture.imageBigpicture.siblings as curMedium> 
358                                                <#if (curMedium?? && curMedium.data?has_content) || (curMedium.youtubeurlBigpicture?? && curMedium.youtubeurlBigpicture.data?has_content)> 
359                                                    <@showSlide image=curMedium counter=curMedium?counter youtubeurl=curMedium.youtubeurlBigpicture externalvideo=curMedium.externalvideo/> 
360                                                </#if> 
361                                            </#list> 
362                                        </#if> 
363                                    </div> 
364                                </div> 
365                            </div> 
366                        </#if> 
367                    </#if> 
368 
369                    <section class="article-body"> 
370                        <#if showFlexDelimiter??> 
371                            <#if showFlexDelimiter.showBigPicture.txtBigpicture?? && showFlexDelimiter.showBigPicture.txtBigpicture.data?has_content> 
372                                ${showFlexDelimiter.showBigPicture.txtBigpicture.data} 
373                            </#if> 
374                        </#if> 
375                         <#if viewMode == "view"> 
376                         <br> 
377                             <p class="source"> 
378                        <a href="${exportPdfURL}" target="_blank"><i class="mdi mdi-download"></i>&nbsp;<@liferay["language"] key="save-as-pdf" /></a> 
379                    </p> 
380                         </#if> 
381                    </section> 
382                </article> 
383            </#if> 
384            <footer> 
385                <div class="row"> 
386                    <div class="col-xs-3 col-md-2"> 
387                        <#if srcLogo?? && srcLogo.data?has_content> 
388                            <#if viewMode == "view"> 
389                                <img 
390                                        src="${portal.getPortalURL(themeDisplay)}${srcLogo.data}" 
391                                        class="img-responsive pull-left logo-image" 
392                                        alt="" 
393                                /> 
394                            <#elseif viewMode == "export"> 
395                                <@createExportImageTag image=srcLogo /> 
396                            </#if> 
397                        <#elseif srcLogoSelect?? && srcLogoSelect.data?has_content> 
398                            <#assign filename = "${srcLogoSelect.data}.jpg" /> 
399                            <#if srcLogoSelect.data == "cat"> 
400                                <#assign filename = "Cat_handy.svg" /> 
401                            </#if> 
402 
403                            <img 
404                                    src="${portal.getPortalURL(themeDisplay)}/documents/${companyGroup.groupId}/${logoFolder.folderId}/${filename}" 
405                                    class="img-responsive pull-left" 
406                                    alt="" 
407                            /> 
408                        </#if> 
409                            </div> 
410                            <div class="col-xs-9 col-md-6"> 
411                        <#if source?? && source.data?has_content> 
412                            <p class="source"> 
413                                <@liferay["language_format"] arguments="${source.data}" key="more-at-x" /> 
414                            </p> 
415                        </#if> 
416                        <#if timetoread?? && timetoread.data?has_content> 
417                            <p class="time-to-read"> 
418                                <@liferay["language_format"] arguments="${timetoread.data}" key="time-to-read-x" /> 
419                            </p> 
420                        </#if> 
421                    </div> 
422                    <#if viewMode == "view"> 
423                        <div class="col-xs-9 col-xs-offset-3 col-md-4 col-md-offset-0"> 
424                            <#if srcUrl?? && srcUrl.data?has_content> 
425                                <#assign linkText><@liferay.language key="go-to-article" /></#assign> 
426                                <#if srcUrlLinkText?? && srcUrlLinkText.data?has_content> 
427                                    <#assign linkText = srcUrlLinkText.data /> 
428                                </#if> 
429                                <a href="${srcUrl.data}" target="_blank" class="btn btn-outline" title="${linkText}"> 
430                                    ${linkText} 
431 
432                                    <i class="svg-icon open-in-new blue-button icomoon-button_link_external"></i> 
433                                </a> 
434                            </#if> 
435                        </div> 
436                    <#elseif viewMode == "export"> 
437                        <p align="center"> 
438                            <a href="${viewURL}">${viewURL}</a> 
439                        </p> 
440                    </#if> 
441                </div> 
442            </footer> 
443        </div> 
444    </div> 
445</div> 
446 
447<#if viewMode == "view"> 
448    <div class="share-buttons-section"> 
449        <div class="max-width"> 
450            <div class="share-buttons"> 
451                <span class="text"><@liferay["language"] key="share" /></span> 
452                <@liferay_ui["social-bookmarks"] 
453                displayStyle="simple" 
454                target="_blank" 
455                title="${title}" 
456                url="${portal.getCanonicalURL(currentURL, themeDisplay, layout)}" 
457                /> 
458 
459            </div> 
460        </div> 
461    </div> 
462</#if> 
463 
464<#if viewMode == "view"> 
465    <script> 
466        initSwiper('news-swiper', '${namespace}'); 
467    </script> 
468 
469    <script type="text/javascript"> 
470        var initializeCarousel = function() { 
471            $('#${namespace}carousel').carousel( 
472
473                        interval: 5000 
474
475            ); 
476 
477            $('[id^=${namespace}carousel-selector-]').click( 
478                    function() { 
479                        var selector = $(this).attr('id'); 
480                        try { 
481                            var slideNumber = /-(\d+)$/.exec(selector)[1]; 
482                            $('#${namespace}carousel').carousel(parseInt(slideNumber)); 
483                        } catch (e) { 
484                            console.log(e); 
485
486
487
488        }; 
489 
490        $(document).ready(initializeCarousel); 
491        Liferay.on('endNavigate', initializeCarousel); 
492 
493        var initializeVideoPopup = function () { 
494            AUI().use('aui-base', 'aui-io-plugin-deprecated', 'liferay-util-window', 'aui-dialog-iframe-deprecated', function (A) { 
495                A.all('.video-link-popup').each(function (elem) { 
496                    elem.on( 
497                            'click', 
498                            function (e) { 
499                                e.preventDefault(); 
500                                var modal; 
501 
502                                var isMobile = Liferay.Browser.isMobile(); 
503 
504                                var externalvideo = e.currentTarget.getAttribute('data-externalvideo'); 
505                                var youtubeId = e.currentTarget.getAttribute('data-youtube-id'); 
506                                var youtubeUrl = 'https://www.youtube-nocookie.com/embed/'+ youtubeId +'?autoplay=1&rel=0&amp;controls=2&amp;showinfo=0&modestbranding=1'; 
507 
508                                var width = (window.innerWidth > 0) ? window.innerWidth : screen.width; 
509                                var height = width * 0.5625; 
510 
511                                var content = ""; 
512 
513                                if (isMobile) { 
514 
515                                    if (externalvideo) { 
516                                        content = '<div class="embed-container">' + externalvideo + '</div>'; 
517                                    } else { 
518                                        content = '<iframe ' + 
519                                        'src="' + youtubeUrl + '" ' + 
520                                        'frameborder="0" ' + 
521                                        'width="' + width + '" ' + 
522                                        'height="' + height + '" ' + 
523                                        'allow="autoplay; encrypted-media" ' + 
524                                        'allowfullscreen' + 
525                                        '></iframe>'; 
526
527 
528                                    modal = new A.Modal( 
529
530                                            bodyContent: '<div class="mobile-video-container">' + 
531                                                content + 
532                                                '</div>', 
533                                            destroyOnHide: true, 
534                                            centered: true, 
535                                            modal: true, 
536                                            render: '#mobile-videos-modal', 
537                                            width: '100%', 
538                                            height: '100%', 
539                                            on: { 
540                                                render: function () { 
541                                                    var docStyle = document.documentElement.style; 
542                                                    var _this = this; 
543                                                    docStyle.setProperty('pointer-events', 'none'); 
544                                                    docStyle.setProperty('touch-action', 'none'); 
545                                                    docStyle.setProperty('overflow-y', 'hidden'); 
546 
547                                                    window.history.pushState(null, 'Video Popup', 'video-popup'); 
548                                                    window.onpopstate = function () { 
549                                                        _this.destroy(); 
550                                                    }; 
551                                                }, 
552                                                destroy: function () { 
553                                                    var docStyle = document.documentElement.style; 
554                                                    docStyle.removeProperty('pointer-events'); 
555                                                    docStyle.removeProperty('touch-action'); 
556                                                    docStyle.removeProperty('overflow-y'); 
557 
558                                                    window.onpopstate = null; 
559 
560                                                    var pathName = location.pathname; 
561                                                    if (pathName.indexOf('video-popup') > -1) { 
562                                                        history.back(); 
563
564
565
566
567                                    ).render(); 
568                                } else { 
569                                    if (externalvideo) { 
570                                        content = '<div class="embed-container">' + externalvideo + '</div>'; 
571                                    } else { 
572                                        content = ' <iframe src="https://www.youtube-nocookie.com/embed/' + youtubeId + '?autoplay=1&rel=0&amp;controls=2&amp;showinfo=0&modestbranding=1"' + 
573                                            '         frameborder="0"' + 
574                                            '         allow="autoplay; encrypted-media"' + 
575                                            '         allowfullscreen' + 
576                                            '         width="720"' + 
577                                            '         height="560"' + 
578                                            ' >' + 
579                                            ' </iframe>'; 
580
581 
582                                    modal = Liferay.Util.openWindow( 
583
584                                            dialog: { 
585                                                width: width * 0.5, 
586                                                height: height * 0.5, 
587                                                centered: true, 
588                                                constrain2view: true, 
589                                                modal: true, 
590                                                resizable: false, 
591                                                moveable: false, 
592                                                destroyOnHide: true, 
593                                                close: true, 
594                                                cssClass: 'dialog-iframe-popup', 
595                                                bodyContent: '<div class="asset-full-content videos youtube-video"><div class="video-player">' + 
596                                                    content + 
597                                                    '            <button type="button"\n' + 
598                                                    '                    class="btn-toolbar-button close close-content yui3-widget aui-button yui3-aui-button yui3-aui-button-content"\n' + 
599                                                    '                    id="video-close-btn" onclick="closePopup(\'videoplayer\');">\n' + 
600                                                    '                <svg class="lexicon-icon" focusable="false" viewBox="0 0 512 512">\n' + 
601                                                    '                    <title>Schließen</title>\n' + 
602                                                    '                    <path class="lexicon-icon-outline"\n' + 
603                                                    '                          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' + 
604                                                    '                </svg>\n' + 
605                                                    '            </button>\n' + 
606                                                    '</div></div>' 
607                                            }, 
608                                            dialogIframe: { 
609                                                scrolling: "no", 
610                                                verticalscrolling: "no", 
611                                                gutter: { 
612                                                    bottom: "0", 
613                                                    left: "0", 
614                                                    right: "0", 
615                                                    top: "0" 
616                                                }, 
617                                                on: { 
618                                                    load: function (e) { 
619                                                        document.getElementById(e.windowName).setAttribute("scrolling", "no"); 
620                                                        $('#videoplayer').find('.modal-content').find('.modal-header').css('display', 'none'); 
621                                                        $("#" + e.windowName).contents().find("html").css("overflow", "hidden"); 
622                                                        this._host._fillHeight(); 
623
624
625                                            }, 
626                                            id: 'videoplayer' 
627
628                                    ); 
629
630                                return false; 
631
632                    ); 
633                }); 
634 
635                Liferay.provide(window, 'closePopup', function (dialogId) { 
636                            var dialog = Liferay.Util.Window.getById(dialogId); 
637                            dialog.destroy(); 
638                        }, 
639                        [ 'liferay-util-window' ] 
640                ); 
641            }); 
642        }; 
643 
644        $(document).ready(initializeVideoPopup); 
645        Liferay.on('endNavigate', initializeVideoPopup); 
646    </script> 
647 
648 
649</#if> 
650 
651<#macro showSlide image counter youtubeurl externalvideo=""> 
652    <#assign alt = "" /> 
653    <#assign href = "" /> 
654    <#assign src = "" /> 
655    <#assign target = "" /> 
656    <#assign isvideo = false /> 
657 
658    <#if youtubeurl?? && youtubeurl.data?has_content> 
659        <#assign youtubeId = getYoutubeId(youtubeurl.data) /> 
660        <#assign href = "https://www.youtube.com/watch?v=${youtubeId}" /> 
661        <#assign target = "_blank" /> 
662        <#assign src = "//i.ytimg.com/vi/${youtubeId}/maxresdefault.jpg" /> 
663        <#assign isvideo = true /> 
664    </#if> 
665    <#if image?? && image.data?has_content> 
666        <#assign src = portal.getPortalURL(themeDisplay) + image.data /> 
667        <#assign alt = image.getAttribute("alt")!"DigitalBW News Artikel" /> 
668    </#if> 
669    <#if externalvideo?? && externalvideo?has_content && externalvideo.data?has_content> 
670        <#assign isvideo = true /> 
671        <#assign href = "javascript:void(0);" /> 
672    </#if> 
673    <div class="swiper-slide item ${(counter==1)?then('active', '')}" data-slide-number="${counter - 1}"> 
674        <#if href?has_content> 
675            <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>> 
676                <@common.showCopyright imageUrl=src alt=alt/> 
677                <span itemprop="image" content="${src}"></span> 
678                <#if isvideo> 
679                    <div class="svg-icon play-icon"></div> 
680                </#if> 
681            </a> 
682        <#else> 
683            <@common.showCopyright imageUrl=src alt=alt/> 
684            <span itemprop="image" content="${src}"></span> 
685            <#if isvideo> 
686                <div class="svg-icon play-icon"></div> 
687            </#if> 
688        </#if> 
689    </div> 
690</#macro> 
691 
692<#macro showGallery image counter youtubeurl> 
693    <#assign alt = "" /> 
694    <#assign src = "" /> 
695    <#assign target = "" /> 
696 
697    <#if youtubeurl?? && youtubeurl.data?has_content> 
698        <#assign youtubeId = getYoutubeId(youtubeurl.data) /> 
699        <#assign target = "_blank" /> 
700        <#assign src = "//i.ytimg.com/vi/${youtubeId}/hqdefault.jpg" /> 
701    </#if> 
702    <#if image?? && image.data?has_content> 
703        <#assign src = httpUtil.addParameter(image.data, "imageThumbnail", 1) /> 
704        <#assign alt = image.getAttribute("alt")!"DigitalBW News Artikel" /> 
705    </#if> 
706 
707    <li class="col-md-3"> 
708        <a class="thumbnail" id="${namespace}carousel-selector-${counter-1}" href="javascript:void(0);"> 
709            <@common.showCopyright imageUrl=src alt=alt/> 
710        </a> 
711    </li> 
712</#macro> 
713 
714<#macro createExportImageTag image> 
715    <#assign 
716        imageUrl = image.data 
717        alt = image.getAttribute("alt")!"DigitalBW News Artikel" 
718        imageFileUid = stringUtil.extractLast(imageUrl, "/") 
719    /> 
720    <#if (stringUtil.extractFirst(imageFileUid, "t")??)> 
721        <#assign imageFileUid = stringUtil.extractFirst(imageFileUid, "t")/> 
722        <#assign imageFileUid= imageFileUid?substring(0,imageFileUid?length-1)/> 
723    </#if> 
724    <#assign 
725        dlAppService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") 
726        fileEntry = dlAppService.getFileEntryByUuidAndGroupId(imageFileUid,groupId) 
727        inputStream = fileEntry.getContentStream() 
728        imageModel = imageToolUtil.getImage(inputStream) 
729    /> 
730    <#assign 
731        width = imageModel.getWidth() 
732        height = imageModel.getHeight() 
733        aspectRatio = width / height 
734    /> 
735    <#if width gt 650> 
736        <#assign 
737            height = 650 / aspectRatio 
738            width = 650 
739        /> 
740    </#if> 
741    <#switch portal.getPortalURL(themeDisplay)> 
742        <#case "https://www.digital-bw.de"> 
743            <#assign domainHost = "http://digital-bw-liferay:8080" /> 
744            <#break> 
745        <#default> 
746            <#assign 
747                domainHost = portal.getPortalURL(themeDisplay) 
748            /> 
749    </#switch> 
750    <img src="${domainHost}${imageUrl}" alt="${htmlUtil.escapeAttribute(alt)}" width="${width}" height="${height}"/> 
751</#macro> 
752 
753<#function getYoutubeId youtubeUrl> 
754    <#assign url = httpUtil.getPath(youtubeUrl) /> 
755    <#assign url = stringUtil.extractLast(url, '/') /> 
756    <#return url /> 
757</#function> 

Eventempfehlungen

Eventempfehlungen

Asset Publisher