Asset Headline News

VIRTUELLE TRAININGS IM LEHRAMTSSTUDIUM

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

Eventempfehlungen

Eventempfehlungen

Asset Publisher