Investmentfonds

Unsere Leistungen: Darauf sollten Sie achten:
  • Teilnahme an internationalen Finanzmärkten
  • Unterschiedliche Anlageklassen
  • Breite Risikostreuung
  • Professionelles Fondsmanagement
  • Große Fondsauswahl
  • Der Wert des Kapitals kann schwanken 
  • Kapitalverluste sind möglich
  • Währungsschwankungen haben Einfluss auf das Anlageergebnis
Termin vereinbaren

Kundenservice Mo.-Fr. 7:00-19:00 Uhr

+43 463 5858

Schreiben Sie uns

bks@bks.at

Seriöser Mann mit Aktentasche und Brille
Fehler bei der Verarbeitung der Vorlage.
Error while invoking the "replace-content" JSP custom tag; see cause exception

----
FTL stack trace ("~" means nesting-related):
	- Failed at: @ait_contentreplacer["replace-content"]  [in template "20116#20152#BKS-STANDARD-WEB-CONTENT" at line 9, column 1]
----
1<#assign 
2	ait_contentreplacer = taglibLiferayHash["/META-INF/ait-contentreplacer.tld"] 
3 
4	DLFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') 
5	DLAppService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLAppService') 
6	DLUtil = serviceLocator.findService('com.liferay.document.library.kernel.util.DLUtil') 
7/> 
8 
9<@ait_contentreplacer["replace-content"]> 
10 
11	<@initMediaValues/> 
12	<#assign mediaData = getMediaTypeData(Video VideoFileEntry Image) /> 
13 
14	<#if VideoPreview??> 
15		<#assign 
16			videoPreview = VideoPreview 
17		/> 
18	<#else> 
19		<#assign videoPreview = '' /> 
20	</#if> 
21 
22	<#if mediaData['hasMedia']> 
23		<figure class="content-media-element media-element-left ${mediaData['mediaCssClass']}"> 
24			<@renderMedia Video VideoFileEntry Image mediaData videoPreview/> 
25 
26			<#if Caption.getData()?? && Caption.getData() != ""> 
27				<figcaption class="media-element-caption">${Caption.getData()}</figcaption> 
28			</#if> 
29		</figure> 
30	</#if> 
31	${content.getData()} 
32 
33 
34	<#function getDLFileEntryAltText Image> 
35		<#if Image.getAttribute("id")?? && Image.getAttribute("id") != ""> 
36			<#return ""> 
37		<#else> 
38			<#assign dlFileEntry = getDLFileEntry(Image) > 
39			<#return dlFileEntry.getDescription()/> 
40		</#if> 
41	</#function> 
42 
43	<#function getDLFileEntry fileEntry> 
44		<#assign dlFileEntry = ''> 
45		<#if fileEntry.getAttribute("fileEntryId")?? && fileEntry.getAttribute("fileEntryId") != ""> 
46			<#assign 
47			dlFileEntry = DLFileEntryService.getFileEntry(fileEntry.getAttribute("fileEntryId")?number) 
48			/> 
49		<#else> 
50			<#assign 
51			dlFileEntry = getDLFileEntryFromUrl(fileEntry.getData()) 
52			/> 
53		</#if> 
54		<#return dlFileEntry> 
55	</#function> 
56 
57	<#function getDLFileEntryFromUrl fileUrl> 
58		<#assign counter = 0 > 
59		<#list "${fileUrl}"?split("/") as pathSegemtent> 
60			<#if counter == 2> 
61				<#assign groupId = pathSegemtent?number > 
62			</#if> 
63			<#if counter == 5> 
64				<#assign subCounter = 0 > 
65				<#list "${pathSegemtent}"?split("?") as subSegemtent> 
66					<#if subCounter == 0> 
67						<#assign uuId = subSegemtent > 
68					</#if> 
69					<#assign subCounter = subCounter+1 > 
70				</#list> 
71			</#if> 
72			<#assign counter = counter+1 > 
73		</#list> 
74 
75		<#assign dlFileEntry = DLFileEntryService.getFileEntryByUuidAndGroupId(uuId,groupId) > 
76 
77		<#return dlFileEntry> 
78	</#function> 
79 
80	<#macro initMediaValues> 
81	<#-- If either one of the needed Media Types is not present create the Variable with an empty string --> 
82	<#-- needed since some Articles might not have them --> 
83		<#if !Video??> 
84			<#assign Video = ''/> 
85		</#if> 
86		<#if !VideoFiles??> 
87			<#assign VideoFileEntry = ''/> 
88		<#else> 
89			<#assign 
90			VideoFileEntry = VideoFiles.VideoFileEntry 
91			/> 
92		</#if> 
93		<#if !Image??> 
94			<#assign Image = ''/> 
95		</#if> 
96	</#macro> 
97 
98	<#macro renderYoutubeVideo videoId> 
99		<iframe 
100				data-name="youtube" 
101				data-src="https://www.youtube-nocookie.com/embed/${videoId}?color=white&amp;controls=2&amp;hl=${locale.getLanguage()}&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0" 
102				frameborder="0" 
103				allow="autoplay; encrypted-media" 
104				allowfullscreen 
105		></iframe> 
106	</#macro> 
107 
108	<#macro renderVideoPlayer videoFiles videoPreview videoPlayerId=randomNamespace> 
109		<#assign 
110		previewImage = '' 
111 
112		theme_path = themeDisplay.getPathThemeCss() 
113 
114		videojsCssPath = theme_path + '/theme/video-js/video-js.min.css' 
115		/> 
116 
117		<#if !videoPreview?is_string > 
118			<#if videoPreview.getData()?? && videoPreview.getData() != ''> 
119				<#assign 
120				previewImage = videoPreview.getData() 
121				/> 
122			</#if> 
123		</#if> 
124 
125		<video id="media_teaser_video_${videoPlayerId}" class="video-js vjs-fluid vjs-big-play-centered video-js-bks"> 
126			<#list videoFiles.getSiblings() as videoFile> 
127				<#if videoFile.getData()?? && videoFile.getData() != ''> 
128					<#assign 
129					videoFileEntry = getFileEntryFromUrl(videoFile.getData()) 
130					mimeType = videoFileEntry.getMimeType() 
131					/> 
132					<#if previewImage == ''> 
133						<#assign 
134						previewImage = DLUtil.getImagePreviewURL(videoFileEntry, videoFileEntry.getFileVersion(), themeDisplay) 
135						/> 
136					</#if> 
137					<source src="${videoFile.getData()}" type="${mimeType}"> 
138				</#if> 
139			</#list> 
140			<p class="vjs-no-js">Um dieses Video anzusehen, aktivieren Sie bitte JavaScript, und verwenden Sie einen Browser der <a href="http://videojs.com/html5-video-support/" target="_blank">Videos im HTML5 Standard unterstützt.</a></p> 
141		</video> 
142 
143		<script> 
144			Liferay.Loader.require([ 
145						"bks-main-theme-js-modules@2.0.0/video-js/video.min" 
146					], 
147					function(videojs) { 
148						var allCssElements=document.getElementsByTagName("link"); 
149						var cssAlreadyExists = false; 
150 
151						for (var i=allCssElements.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove 
152							if (allCssElements[i] && allCssElements[i].getAttribute("href")!=null && allCssElements[i].getAttribute("href").indexOf("${videojsCssPath}")!=-1){ 
153								cssAlreadyExists = true; 
154
155
156 
157						if (!cssAlreadyExists) { 
158							var newCssFile=document.createElement("link"); 
159							newCssFile.setAttribute("rel", "stylesheet"); 
160							newCssFile.setAttribute("type", "text/css"); 
161							newCssFile.setAttribute("href", "${videojsCssPath}"); 
162 
163							document.getElementsByTagName('head')[0].appendChild(newCssFile); 
164
165 
166						videojs('media_teaser_video_${videoPlayerId}', { 
167							controls: true, 
168							autoplay: false, 
169							preload: 'auto', 
170							aspectRatio: "16:9", 
171							fluid: 1, 
172							language: "${locale.getLanguage()}", 
173							poster: "${previewImage}" 
174						}); 
175 
176						Liferay.on('startNavigate', function() { 
177							videojs('media_teaser_video_${videoPlayerId}').dispose(); 
178						}); 
179					}, 
180					function(error) { 
181						console.error(error); 
182
183			); 
184		</script> 
185	</#macro> 
186 
187	<#-- Get FileEntry NOT DlFileEntry!!! --> 
188	<#function getFileEntryFromUrl fileUrl> 
189		<#assign counter = 0 > 
190		<#list "${fileUrl}"?split("/") as pathSegemtent> 
191			<#if counter == 2> 
192				<#assign groupId = pathSegemtent?number > 
193			</#if> 
194			<#if counter == 5> 
195				<#assign subCounter = 0 > 
196				<#list "${pathSegemtent}"?split("?") as subSegemtent> 
197					<#if subCounter == 0> 
198						<#assign uuId = subSegemtent > 
199					</#if> 
200					<#assign subCounter = subCounter+1 > 
201				</#list> 
202			</#if> 
203			<#assign counter = counter+1 > 
204		</#list> 
205 
206		<#assign fileEntry = DLAppService.getFileEntryByUuidAndGroupId(uuId,groupId) > 
207 
208		<#return fileEntry> 
209	</#function> 
210 
211	<#function getYoutubeIdFromUrl url> 
212		<#assign pathSegments = "${url}"?split("/") > 
213		<#return pathSegments?last> 
214	</#function> 
215 
216	<#function getMediaTypeData Video VideoFileEntries Image> 
217		<#assign 
218		mediaTypeData = { 
219		"hasMedia" : false, 
220		"mediaType" : "", 
221		"mediaCssClass" : "" 
222
223		/> 
224		<#if Video?? && Video?has_content && Video.getData()?contains("youtube") || Video.getData()?contains("youtu.be")> 
225			<#assign 
226			mediaTypeData = { 
227			"hasMedia" : true, 
228			"mediaType" : "youtube", 
229			"mediaCssClass" : "media-element-fixed-width" 
230
231			/> 
232		<#elseif VideoFileEntries?? && VideoFileEntries?has_content && VideoFileEntries.getSiblings()?has_content> 
233			<#list VideoFileEntries.getSiblings() as videoFileEntryItem> 
234				<#if videoFileEntryItem.getData()?? && videoFileEntryItem.getData() != ''> 
235					<#assign 
236					mediaTypeData = { 
237					"hasMedia" : true, 
238					"mediaType" : "videofile", 
239					"mediaCssClass" : "media-element-fixed-width" 
240
241					/> 
242				</#if> 
243			</#list> 
244		</#if> 
245		<#if !mediaTypeData['hasMedia'] && Image?? && Image?has_content && Image.getData()?? && Image.getData() != ""> 
246			<#assign 
247			mediaTypeData = { 
248			"hasMedia" : true, 
249			"mediaType" : "image", 
250			"mediaCssClass" : "" 
251
252			/> 
253		</#if> 
254		<#return mediaTypeData/> 
255	</#function> 
256 
257	<#macro renderMedia Video VideoFileEntries Image mediaTypeData VideoPreview mediaId=randomNamespace> 
258		<#switch mediaTypeData['mediaType']> 
259			<#case 'youtube'> 
260				<#assign youtubeId = getYoutubeIdFromUrl(Video.getData()) /> 
261				<div class="aspect-ratio aspect-ratio-16-to-9"> 
262					<@renderYoutubeVideo youtubeId/> 
263				</div> 
264				<#break> 
265			<#case 'videofile'> 
266				<@renderVideoPlayer VideoFileEntries VideoPreview mediaId/> 
267				<#break> 
268			<#case 'image'> 
269				<#assign 
270				altText = Image.getAttribute("alt") 
271				/> 
272				<#if !Image.getAttribute("alt")?? || Image.getAttribute("alt") == ""> 
273					<#assign 
274					altText = getDLFileEntryAltText(Image) 
275					/> 
276				</#if> 
277				<img data-fileentryid="${Image.getAttribute("fileEntryId")}" alt="${altText}" src="${Image.getData()}" /> 
278				<#break> 
279		</#switch> 
280	</#macro> 
281 
282</@> 
Fehler bei der Verarbeitung der Vorlage.
Error while invoking the "replace-content" JSP custom tag; see cause exception

----
FTL stack trace ("~" means nesting-related):
	- Failed at: @ait_contentreplacer["replace-content"]  [in template "20116#20152#BKS-STANDARD-WEB-CONTENT" at line 9, column 1]
----
1<#assign 
2	ait_contentreplacer = taglibLiferayHash["/META-INF/ait-contentreplacer.tld"] 
3 
4	DLFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') 
5	DLAppService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLAppService') 
6	DLUtil = serviceLocator.findService('com.liferay.document.library.kernel.util.DLUtil') 
7/> 
8 
9<@ait_contentreplacer["replace-content"]> 
10 
11	<@initMediaValues/> 
12	<#assign mediaData = getMediaTypeData(Video VideoFileEntry Image) /> 
13 
14	<#if VideoPreview??> 
15		<#assign 
16			videoPreview = VideoPreview 
17		/> 
18	<#else> 
19		<#assign videoPreview = '' /> 
20	</#if> 
21 
22	<#if mediaData['hasMedia']> 
23		<figure class="content-media-element media-element-left ${mediaData['mediaCssClass']}"> 
24			<@renderMedia Video VideoFileEntry Image mediaData videoPreview/> 
25 
26			<#if Caption.getData()?? && Caption.getData() != ""> 
27				<figcaption class="media-element-caption">${Caption.getData()}</figcaption> 
28			</#if> 
29		</figure> 
30	</#if> 
31	${content.getData()} 
32 
33 
34	<#function getDLFileEntryAltText Image> 
35		<#if Image.getAttribute("id")?? && Image.getAttribute("id") != ""> 
36			<#return ""> 
37		<#else> 
38			<#assign dlFileEntry = getDLFileEntry(Image) > 
39			<#return dlFileEntry.getDescription()/> 
40		</#if> 
41	</#function> 
42 
43	<#function getDLFileEntry fileEntry> 
44		<#assign dlFileEntry = ''> 
45		<#if fileEntry.getAttribute("fileEntryId")?? && fileEntry.getAttribute("fileEntryId") != ""> 
46			<#assign 
47			dlFileEntry = DLFileEntryService.getFileEntry(fileEntry.getAttribute("fileEntryId")?number) 
48			/> 
49		<#else> 
50			<#assign 
51			dlFileEntry = getDLFileEntryFromUrl(fileEntry.getData()) 
52			/> 
53		</#if> 
54		<#return dlFileEntry> 
55	</#function> 
56 
57	<#function getDLFileEntryFromUrl fileUrl> 
58		<#assign counter = 0 > 
59		<#list "${fileUrl}"?split("/") as pathSegemtent> 
60			<#if counter == 2> 
61				<#assign groupId = pathSegemtent?number > 
62			</#if> 
63			<#if counter == 5> 
64				<#assign subCounter = 0 > 
65				<#list "${pathSegemtent}"?split("?") as subSegemtent> 
66					<#if subCounter == 0> 
67						<#assign uuId = subSegemtent > 
68					</#if> 
69					<#assign subCounter = subCounter+1 > 
70				</#list> 
71			</#if> 
72			<#assign counter = counter+1 > 
73		</#list> 
74 
75		<#assign dlFileEntry = DLFileEntryService.getFileEntryByUuidAndGroupId(uuId,groupId) > 
76 
77		<#return dlFileEntry> 
78	</#function> 
79 
80	<#macro initMediaValues> 
81	<#-- If either one of the needed Media Types is not present create the Variable with an empty string --> 
82	<#-- needed since some Articles might not have them --> 
83		<#if !Video??> 
84			<#assign Video = ''/> 
85		</#if> 
86		<#if !VideoFiles??> 
87			<#assign VideoFileEntry = ''/> 
88		<#else> 
89			<#assign 
90			VideoFileEntry = VideoFiles.VideoFileEntry 
91			/> 
92		</#if> 
93		<#if !Image??> 
94			<#assign Image = ''/> 
95		</#if> 
96	</#macro> 
97 
98	<#macro renderYoutubeVideo videoId> 
99		<iframe 
100				data-name="youtube" 
101				data-src="https://www.youtube-nocookie.com/embed/${videoId}?color=white&amp;controls=2&amp;hl=${locale.getLanguage()}&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0" 
102				frameborder="0" 
103				allow="autoplay; encrypted-media" 
104				allowfullscreen 
105		></iframe> 
106	</#macro> 
107 
108	<#macro renderVideoPlayer videoFiles videoPreview videoPlayerId=randomNamespace> 
109		<#assign 
110		previewImage = '' 
111 
112		theme_path = themeDisplay.getPathThemeCss() 
113 
114		videojsCssPath = theme_path + '/theme/video-js/video-js.min.css' 
115		/> 
116 
117		<#if !videoPreview?is_string > 
118			<#if videoPreview.getData()?? && videoPreview.getData() != ''> 
119				<#assign 
120				previewImage = videoPreview.getData() 
121				/> 
122			</#if> 
123		</#if> 
124 
125		<video id="media_teaser_video_${videoPlayerId}" class="video-js vjs-fluid vjs-big-play-centered video-js-bks"> 
126			<#list videoFiles.getSiblings() as videoFile> 
127				<#if videoFile.getData()?? && videoFile.getData() != ''> 
128					<#assign 
129					videoFileEntry = getFileEntryFromUrl(videoFile.getData()) 
130					mimeType = videoFileEntry.getMimeType() 
131					/> 
132					<#if previewImage == ''> 
133						<#assign 
134						previewImage = DLUtil.getImagePreviewURL(videoFileEntry, videoFileEntry.getFileVersion(), themeDisplay) 
135						/> 
136					</#if> 
137					<source src="${videoFile.getData()}" type="${mimeType}"> 
138				</#if> 
139			</#list> 
140			<p class="vjs-no-js">Um dieses Video anzusehen, aktivieren Sie bitte JavaScript, und verwenden Sie einen Browser der <a href="http://videojs.com/html5-video-support/" target="_blank">Videos im HTML5 Standard unterstützt.</a></p> 
141		</video> 
142 
143		<script> 
144			Liferay.Loader.require([ 
145						"bks-main-theme-js-modules@2.0.0/video-js/video.min" 
146					], 
147					function(videojs) { 
148						var allCssElements=document.getElementsByTagName("link"); 
149						var cssAlreadyExists = false; 
150 
151						for (var i=allCssElements.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove 
152							if (allCssElements[i] && allCssElements[i].getAttribute("href")!=null && allCssElements[i].getAttribute("href").indexOf("${videojsCssPath}")!=-1){ 
153								cssAlreadyExists = true; 
154
155
156 
157						if (!cssAlreadyExists) { 
158							var newCssFile=document.createElement("link"); 
159							newCssFile.setAttribute("rel", "stylesheet"); 
160							newCssFile.setAttribute("type", "text/css"); 
161							newCssFile.setAttribute("href", "${videojsCssPath}"); 
162 
163							document.getElementsByTagName('head')[0].appendChild(newCssFile); 
164
165 
166						videojs('media_teaser_video_${videoPlayerId}', { 
167							controls: true, 
168							autoplay: false, 
169							preload: 'auto', 
170							aspectRatio: "16:9", 
171							fluid: 1, 
172							language: "${locale.getLanguage()}", 
173							poster: "${previewImage}" 
174						}); 
175 
176						Liferay.on('startNavigate', function() { 
177							videojs('media_teaser_video_${videoPlayerId}').dispose(); 
178						}); 
179					}, 
180					function(error) { 
181						console.error(error); 
182
183			); 
184		</script> 
185	</#macro> 
186 
187	<#-- Get FileEntry NOT DlFileEntry!!! --> 
188	<#function getFileEntryFromUrl fileUrl> 
189		<#assign counter = 0 > 
190		<#list "${fileUrl}"?split("/") as pathSegemtent> 
191			<#if counter == 2> 
192				<#assign groupId = pathSegemtent?number > 
193			</#if> 
194			<#if counter == 5> 
195				<#assign subCounter = 0 > 
196				<#list "${pathSegemtent}"?split("?") as subSegemtent> 
197					<#if subCounter == 0> 
198						<#assign uuId = subSegemtent > 
199					</#if> 
200					<#assign subCounter = subCounter+1 > 
201				</#list> 
202			</#if> 
203			<#assign counter = counter+1 > 
204		</#list> 
205 
206		<#assign fileEntry = DLAppService.getFileEntryByUuidAndGroupId(uuId,groupId) > 
207 
208		<#return fileEntry> 
209	</#function> 
210 
211	<#function getYoutubeIdFromUrl url> 
212		<#assign pathSegments = "${url}"?split("/") > 
213		<#return pathSegments?last> 
214	</#function> 
215 
216	<#function getMediaTypeData Video VideoFileEntries Image> 
217		<#assign 
218		mediaTypeData = { 
219		"hasMedia" : false, 
220		"mediaType" : "", 
221		"mediaCssClass" : "" 
222
223		/> 
224		<#if Video?? && Video?has_content && Video.getData()?contains("youtube") || Video.getData()?contains("youtu.be")> 
225			<#assign 
226			mediaTypeData = { 
227			"hasMedia" : true, 
228			"mediaType" : "youtube", 
229			"mediaCssClass" : "media-element-fixed-width" 
230
231			/> 
232		<#elseif VideoFileEntries?? && VideoFileEntries?has_content && VideoFileEntries.getSiblings()?has_content> 
233			<#list VideoFileEntries.getSiblings() as videoFileEntryItem> 
234				<#if videoFileEntryItem.getData()?? && videoFileEntryItem.getData() != ''> 
235					<#assign 
236					mediaTypeData = { 
237					"hasMedia" : true, 
238					"mediaType" : "videofile", 
239					"mediaCssClass" : "media-element-fixed-width" 
240
241					/> 
242				</#if> 
243			</#list> 
244		</#if> 
245		<#if !mediaTypeData['hasMedia'] && Image?? && Image?has_content && Image.getData()?? && Image.getData() != ""> 
246			<#assign 
247			mediaTypeData = { 
248			"hasMedia" : true, 
249			"mediaType" : "image", 
250			"mediaCssClass" : "" 
251
252			/> 
253		</#if> 
254		<#return mediaTypeData/> 
255	</#function> 
256 
257	<#macro renderMedia Video VideoFileEntries Image mediaTypeData VideoPreview mediaId=randomNamespace> 
258		<#switch mediaTypeData['mediaType']> 
259			<#case 'youtube'> 
260				<#assign youtubeId = getYoutubeIdFromUrl(Video.getData()) /> 
261				<div class="aspect-ratio aspect-ratio-16-to-9"> 
262					<@renderYoutubeVideo youtubeId/> 
263				</div> 
264				<#break> 
265			<#case 'videofile'> 
266				<@renderVideoPlayer VideoFileEntries VideoPreview mediaId/> 
267				<#break> 
268			<#case 'image'> 
269				<#assign 
270				altText = Image.getAttribute("alt") 
271				/> 
272				<#if !Image.getAttribute("alt")?? || Image.getAttribute("alt") == ""> 
273					<#assign 
274					altText = getDLFileEntryAltText(Image) 
275					/> 
276				</#if> 
277				<img data-fileentryid="${Image.getAttribute("fileEntryId")}" alt="${altText}" src="${Image.getData()}" /> 
278				<#break> 
279		</#switch> 
280	</#macro> 
281 
282</@> 
Fehler bei der Verarbeitung der Vorlage.
Error while invoking the "replace-content" JSP custom tag; see cause exception

----
FTL stack trace ("~" means nesting-related):
	- Failed at: @ait_contentreplacer["replace-content"]  [in template "20116#20152#BKS-STANDARD-WEB-CONTENT" at line 9, column 1]
----
1<#assign 
2	ait_contentreplacer = taglibLiferayHash["/META-INF/ait-contentreplacer.tld"] 
3 
4	DLFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') 
5	DLAppService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLAppService') 
6	DLUtil = serviceLocator.findService('com.liferay.document.library.kernel.util.DLUtil') 
7/> 
8 
9<@ait_contentreplacer["replace-content"]> 
10 
11	<@initMediaValues/> 
12	<#assign mediaData = getMediaTypeData(Video VideoFileEntry Image) /> 
13 
14	<#if VideoPreview??> 
15		<#assign 
16			videoPreview = VideoPreview 
17		/> 
18	<#else> 
19		<#assign videoPreview = '' /> 
20	</#if> 
21 
22	<#if mediaData['hasMedia']> 
23		<figure class="content-media-element media-element-left ${mediaData['mediaCssClass']}"> 
24			<@renderMedia Video VideoFileEntry Image mediaData videoPreview/> 
25 
26			<#if Caption.getData()?? && Caption.getData() != ""> 
27				<figcaption class="media-element-caption">${Caption.getData()}</figcaption> 
28			</#if> 
29		</figure> 
30	</#if> 
31	${content.getData()} 
32 
33 
34	<#function getDLFileEntryAltText Image> 
35		<#if Image.getAttribute("id")?? && Image.getAttribute("id") != ""> 
36			<#return ""> 
37		<#else> 
38			<#assign dlFileEntry = getDLFileEntry(Image) > 
39			<#return dlFileEntry.getDescription()/> 
40		</#if> 
41	</#function> 
42 
43	<#function getDLFileEntry fileEntry> 
44		<#assign dlFileEntry = ''> 
45		<#if fileEntry.getAttribute("fileEntryId")?? && fileEntry.getAttribute("fileEntryId") != ""> 
46			<#assign 
47			dlFileEntry = DLFileEntryService.getFileEntry(fileEntry.getAttribute("fileEntryId")?number) 
48			/> 
49		<#else> 
50			<#assign 
51			dlFileEntry = getDLFileEntryFromUrl(fileEntry.getData()) 
52			/> 
53		</#if> 
54		<#return dlFileEntry> 
55	</#function> 
56 
57	<#function getDLFileEntryFromUrl fileUrl> 
58		<#assign counter = 0 > 
59		<#list "${fileUrl}"?split("/") as pathSegemtent> 
60			<#if counter == 2> 
61				<#assign groupId = pathSegemtent?number > 
62			</#if> 
63			<#if counter == 5> 
64				<#assign subCounter = 0 > 
65				<#list "${pathSegemtent}"?split("?") as subSegemtent> 
66					<#if subCounter == 0> 
67						<#assign uuId = subSegemtent > 
68					</#if> 
69					<#assign subCounter = subCounter+1 > 
70				</#list> 
71			</#if> 
72			<#assign counter = counter+1 > 
73		</#list> 
74 
75		<#assign dlFileEntry = DLFileEntryService.getFileEntryByUuidAndGroupId(uuId,groupId) > 
76 
77		<#return dlFileEntry> 
78	</#function> 
79 
80	<#macro initMediaValues> 
81	<#-- If either one of the needed Media Types is not present create the Variable with an empty string --> 
82	<#-- needed since some Articles might not have them --> 
83		<#if !Video??> 
84			<#assign Video = ''/> 
85		</#if> 
86		<#if !VideoFiles??> 
87			<#assign VideoFileEntry = ''/> 
88		<#else> 
89			<#assign 
90			VideoFileEntry = VideoFiles.VideoFileEntry 
91			/> 
92		</#if> 
93		<#if !Image??> 
94			<#assign Image = ''/> 
95		</#if> 
96	</#macro> 
97 
98	<#macro renderYoutubeVideo videoId> 
99		<iframe 
100				data-name="youtube" 
101				data-src="https://www.youtube-nocookie.com/embed/${videoId}?color=white&amp;controls=2&amp;hl=${locale.getLanguage()}&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0" 
102				frameborder="0" 
103				allow="autoplay; encrypted-media" 
104				allowfullscreen 
105		></iframe> 
106	</#macro> 
107 
108	<#macro renderVideoPlayer videoFiles videoPreview videoPlayerId=randomNamespace> 
109		<#assign 
110		previewImage = '' 
111 
112		theme_path = themeDisplay.getPathThemeCss() 
113 
114		videojsCssPath = theme_path + '/theme/video-js/video-js.min.css' 
115		/> 
116 
117		<#if !videoPreview?is_string > 
118			<#if videoPreview.getData()?? && videoPreview.getData() != ''> 
119				<#assign 
120				previewImage = videoPreview.getData() 
121				/> 
122			</#if> 
123		</#if> 
124 
125		<video id="media_teaser_video_${videoPlayerId}" class="video-js vjs-fluid vjs-big-play-centered video-js-bks"> 
126			<#list videoFiles.getSiblings() as videoFile> 
127				<#if videoFile.getData()?? && videoFile.getData() != ''> 
128					<#assign 
129					videoFileEntry = getFileEntryFromUrl(videoFile.getData()) 
130					mimeType = videoFileEntry.getMimeType() 
131					/> 
132					<#if previewImage == ''> 
133						<#assign 
134						previewImage = DLUtil.getImagePreviewURL(videoFileEntry, videoFileEntry.getFileVersion(), themeDisplay) 
135						/> 
136					</#if> 
137					<source src="${videoFile.getData()}" type="${mimeType}"> 
138				</#if> 
139			</#list> 
140			<p class="vjs-no-js">Um dieses Video anzusehen, aktivieren Sie bitte JavaScript, und verwenden Sie einen Browser der <a href="http://videojs.com/html5-video-support/" target="_blank">Videos im HTML5 Standard unterstützt.</a></p> 
141		</video> 
142 
143		<script> 
144			Liferay.Loader.require([ 
145						"bks-main-theme-js-modules@2.0.0/video-js/video.min" 
146					], 
147					function(videojs) { 
148						var allCssElements=document.getElementsByTagName("link"); 
149						var cssAlreadyExists = false; 
150 
151						for (var i=allCssElements.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove 
152							if (allCssElements[i] && allCssElements[i].getAttribute("href")!=null && allCssElements[i].getAttribute("href").indexOf("${videojsCssPath}")!=-1){ 
153								cssAlreadyExists = true; 
154
155
156 
157						if (!cssAlreadyExists) { 
158							var newCssFile=document.createElement("link"); 
159							newCssFile.setAttribute("rel", "stylesheet"); 
160							newCssFile.setAttribute("type", "text/css"); 
161							newCssFile.setAttribute("href", "${videojsCssPath}"); 
162 
163							document.getElementsByTagName('head')[0].appendChild(newCssFile); 
164
165 
166						videojs('media_teaser_video_${videoPlayerId}', { 
167							controls: true, 
168							autoplay: false, 
169							preload: 'auto', 
170							aspectRatio: "16:9", 
171							fluid: 1, 
172							language: "${locale.getLanguage()}", 
173							poster: "${previewImage}" 
174						}); 
175 
176						Liferay.on('startNavigate', function() { 
177							videojs('media_teaser_video_${videoPlayerId}').dispose(); 
178						}); 
179					}, 
180					function(error) { 
181						console.error(error); 
182
183			); 
184		</script> 
185	</#macro> 
186 
187	<#-- Get FileEntry NOT DlFileEntry!!! --> 
188	<#function getFileEntryFromUrl fileUrl> 
189		<#assign counter = 0 > 
190		<#list "${fileUrl}"?split("/") as pathSegemtent> 
191			<#if counter == 2> 
192				<#assign groupId = pathSegemtent?number > 
193			</#if> 
194			<#if counter == 5> 
195				<#assign subCounter = 0 > 
196				<#list "${pathSegemtent}"?split("?") as subSegemtent> 
197					<#if subCounter == 0> 
198						<#assign uuId = subSegemtent > 
199					</#if> 
200					<#assign subCounter = subCounter+1 > 
201				</#list> 
202			</#if> 
203			<#assign counter = counter+1 > 
204		</#list> 
205 
206		<#assign fileEntry = DLAppService.getFileEntryByUuidAndGroupId(uuId,groupId) > 
207 
208		<#return fileEntry> 
209	</#function> 
210 
211	<#function getYoutubeIdFromUrl url> 
212		<#assign pathSegments = "${url}"?split("/") > 
213		<#return pathSegments?last> 
214	</#function> 
215 
216	<#function getMediaTypeData Video VideoFileEntries Image> 
217		<#assign 
218		mediaTypeData = { 
219		"hasMedia" : false, 
220		"mediaType" : "", 
221		"mediaCssClass" : "" 
222
223		/> 
224		<#if Video?? && Video?has_content && Video.getData()?contains("youtube") || Video.getData()?contains("youtu.be")> 
225			<#assign 
226			mediaTypeData = { 
227			"hasMedia" : true, 
228			"mediaType" : "youtube", 
229			"mediaCssClass" : "media-element-fixed-width" 
230
231			/> 
232		<#elseif VideoFileEntries?? && VideoFileEntries?has_content && VideoFileEntries.getSiblings()?has_content> 
233			<#list VideoFileEntries.getSiblings() as videoFileEntryItem> 
234				<#if videoFileEntryItem.getData()?? && videoFileEntryItem.getData() != ''> 
235					<#assign 
236					mediaTypeData = { 
237					"hasMedia" : true, 
238					"mediaType" : "videofile", 
239					"mediaCssClass" : "media-element-fixed-width" 
240
241					/> 
242				</#if> 
243			</#list> 
244		</#if> 
245		<#if !mediaTypeData['hasMedia'] && Image?? && Image?has_content && Image.getData()?? && Image.getData() != ""> 
246			<#assign 
247			mediaTypeData = { 
248			"hasMedia" : true, 
249			"mediaType" : "image", 
250			"mediaCssClass" : "" 
251
252			/> 
253		</#if> 
254		<#return mediaTypeData/> 
255	</#function> 
256 
257	<#macro renderMedia Video VideoFileEntries Image mediaTypeData VideoPreview mediaId=randomNamespace> 
258		<#switch mediaTypeData['mediaType']> 
259			<#case 'youtube'> 
260				<#assign youtubeId = getYoutubeIdFromUrl(Video.getData()) /> 
261				<div class="aspect-ratio aspect-ratio-16-to-9"> 
262					<@renderYoutubeVideo youtubeId/> 
263				</div> 
264				<#break> 
265			<#case 'videofile'> 
266				<@renderVideoPlayer VideoFileEntries VideoPreview mediaId/> 
267				<#break> 
268			<#case 'image'> 
269				<#assign 
270				altText = Image.getAttribute("alt") 
271				/> 
272				<#if !Image.getAttribute("alt")?? || Image.getAttribute("alt") == ""> 
273					<#assign 
274					altText = getDLFileEntryAltText(Image) 
275					/> 
276				</#if> 
277				<img data-fileentryid="${Image.getAttribute("fileEntryId")}" alt="${altText}" src="${Image.getData()}" /> 
278				<#break> 
279		</#switch> 
280	</#macro> 
281 
282</@> 
Fehler bei der Verarbeitung der Vorlage.
Error while invoking the "replace-content" JSP custom tag; see cause exception

----
FTL stack trace ("~" means nesting-related):
	- Failed at: @ait_contentreplacer["replace-content"]  [in template "20116#20152#BKS-STANDARD-WEB-CONTENT" at line 9, column 1]
----
1<#assign 
2	ait_contentreplacer = taglibLiferayHash["/META-INF/ait-contentreplacer.tld"] 
3 
4	DLFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') 
5	DLAppService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLAppService') 
6	DLUtil = serviceLocator.findService('com.liferay.document.library.kernel.util.DLUtil') 
7/> 
8 
9<@ait_contentreplacer["replace-content"]> 
10 
11	<@initMediaValues/> 
12	<#assign mediaData = getMediaTypeData(Video VideoFileEntry Image) /> 
13 
14	<#if VideoPreview??> 
15		<#assign 
16			videoPreview = VideoPreview 
17		/> 
18	<#else> 
19		<#assign videoPreview = '' /> 
20	</#if> 
21 
22	<#if mediaData['hasMedia']> 
23		<figure class="content-media-element media-element-left ${mediaData['mediaCssClass']}"> 
24			<@renderMedia Video VideoFileEntry Image mediaData videoPreview/> 
25 
26			<#if Caption.getData()?? && Caption.getData() != ""> 
27				<figcaption class="media-element-caption">${Caption.getData()}</figcaption> 
28			</#if> 
29		</figure> 
30	</#if> 
31	${content.getData()} 
32 
33 
34	<#function getDLFileEntryAltText Image> 
35		<#if Image.getAttribute("id")?? && Image.getAttribute("id") != ""> 
36			<#return ""> 
37		<#else> 
38			<#assign dlFileEntry = getDLFileEntry(Image) > 
39			<#return dlFileEntry.getDescription()/> 
40		</#if> 
41	</#function> 
42 
43	<#function getDLFileEntry fileEntry> 
44		<#assign dlFileEntry = ''> 
45		<#if fileEntry.getAttribute("fileEntryId")?? && fileEntry.getAttribute("fileEntryId") != ""> 
46			<#assign 
47			dlFileEntry = DLFileEntryService.getFileEntry(fileEntry.getAttribute("fileEntryId")?number) 
48			/> 
49		<#else> 
50			<#assign 
51			dlFileEntry = getDLFileEntryFromUrl(fileEntry.getData()) 
52			/> 
53		</#if> 
54		<#return dlFileEntry> 
55	</#function> 
56 
57	<#function getDLFileEntryFromUrl fileUrl> 
58		<#assign counter = 0 > 
59		<#list "${fileUrl}"?split("/") as pathSegemtent> 
60			<#if counter == 2> 
61				<#assign groupId = pathSegemtent?number > 
62			</#if> 
63			<#if counter == 5> 
64				<#assign subCounter = 0 > 
65				<#list "${pathSegemtent}"?split("?") as subSegemtent> 
66					<#if subCounter == 0> 
67						<#assign uuId = subSegemtent > 
68					</#if> 
69					<#assign subCounter = subCounter+1 > 
70				</#list> 
71			</#if> 
72			<#assign counter = counter+1 > 
73		</#list> 
74 
75		<#assign dlFileEntry = DLFileEntryService.getFileEntryByUuidAndGroupId(uuId,groupId) > 
76 
77		<#return dlFileEntry> 
78	</#function> 
79 
80	<#macro initMediaValues> 
81	<#-- If either one of the needed Media Types is not present create the Variable with an empty string --> 
82	<#-- needed since some Articles might not have them --> 
83		<#if !Video??> 
84			<#assign Video = ''/> 
85		</#if> 
86		<#if !VideoFiles??> 
87			<#assign VideoFileEntry = ''/> 
88		<#else> 
89			<#assign 
90			VideoFileEntry = VideoFiles.VideoFileEntry 
91			/> 
92		</#if> 
93		<#if !Image??> 
94			<#assign Image = ''/> 
95		</#if> 
96	</#macro> 
97 
98	<#macro renderYoutubeVideo videoId> 
99		<iframe 
100				data-name="youtube" 
101				data-src="https://www.youtube-nocookie.com/embed/${videoId}?color=white&amp;controls=2&amp;hl=${locale.getLanguage()}&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0" 
102				frameborder="0" 
103				allow="autoplay; encrypted-media" 
104				allowfullscreen 
105		></iframe> 
106	</#macro> 
107 
108	<#macro renderVideoPlayer videoFiles videoPreview videoPlayerId=randomNamespace> 
109		<#assign 
110		previewImage = '' 
111 
112		theme_path = themeDisplay.getPathThemeCss() 
113 
114		videojsCssPath = theme_path + '/theme/video-js/video-js.min.css' 
115		/> 
116 
117		<#if !videoPreview?is_string > 
118			<#if videoPreview.getData()?? && videoPreview.getData() != ''> 
119				<#assign 
120				previewImage = videoPreview.getData() 
121				/> 
122			</#if> 
123		</#if> 
124 
125		<video id="media_teaser_video_${videoPlayerId}" class="video-js vjs-fluid vjs-big-play-centered video-js-bks"> 
126			<#list videoFiles.getSiblings() as videoFile> 
127				<#if videoFile.getData()?? && videoFile.getData() != ''> 
128					<#assign 
129					videoFileEntry = getFileEntryFromUrl(videoFile.getData()) 
130					mimeType = videoFileEntry.getMimeType() 
131					/> 
132					<#if previewImage == ''> 
133						<#assign 
134						previewImage = DLUtil.getImagePreviewURL(videoFileEntry, videoFileEntry.getFileVersion(), themeDisplay) 
135						/> 
136					</#if> 
137					<source src="${videoFile.getData()}" type="${mimeType}"> 
138				</#if> 
139			</#list> 
140			<p class="vjs-no-js">Um dieses Video anzusehen, aktivieren Sie bitte JavaScript, und verwenden Sie einen Browser der <a href="http://videojs.com/html5-video-support/" target="_blank">Videos im HTML5 Standard unterstützt.</a></p> 
141		</video> 
142 
143		<script> 
144			Liferay.Loader.require([ 
145						"bks-main-theme-js-modules@2.0.0/video-js/video.min" 
146					], 
147					function(videojs) { 
148						var allCssElements=document.getElementsByTagName("link"); 
149						var cssAlreadyExists = false; 
150 
151						for (var i=allCssElements.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove 
152							if (allCssElements[i] && allCssElements[i].getAttribute("href")!=null && allCssElements[i].getAttribute("href").indexOf("${videojsCssPath}")!=-1){ 
153								cssAlreadyExists = true; 
154
155
156 
157						if (!cssAlreadyExists) { 
158							var newCssFile=document.createElement("link"); 
159							newCssFile.setAttribute("rel", "stylesheet"); 
160							newCssFile.setAttribute("type", "text/css"); 
161							newCssFile.setAttribute("href", "${videojsCssPath}"); 
162 
163							document.getElementsByTagName('head')[0].appendChild(newCssFile); 
164
165 
166						videojs('media_teaser_video_${videoPlayerId}', { 
167							controls: true, 
168							autoplay: false, 
169							preload: 'auto', 
170							aspectRatio: "16:9", 
171							fluid: 1, 
172							language: "${locale.getLanguage()}", 
173							poster: "${previewImage}" 
174						}); 
175 
176						Liferay.on('startNavigate', function() { 
177							videojs('media_teaser_video_${videoPlayerId}').dispose(); 
178						}); 
179					}, 
180					function(error) { 
181						console.error(error); 
182
183			); 
184		</script> 
185	</#macro> 
186 
187	<#-- Get FileEntry NOT DlFileEntry!!! --> 
188	<#function getFileEntryFromUrl fileUrl> 
189		<#assign counter = 0 > 
190		<#list "${fileUrl}"?split("/") as pathSegemtent> 
191			<#if counter == 2> 
192				<#assign groupId = pathSegemtent?number > 
193			</#if> 
194			<#if counter == 5> 
195				<#assign subCounter = 0 > 
196				<#list "${pathSegemtent}"?split("?") as subSegemtent> 
197					<#if subCounter == 0> 
198						<#assign uuId = subSegemtent > 
199					</#if> 
200					<#assign subCounter = subCounter+1 > 
201				</#list> 
202			</#if> 
203			<#assign counter = counter+1 > 
204		</#list> 
205 
206		<#assign fileEntry = DLAppService.getFileEntryByUuidAndGroupId(uuId,groupId) > 
207 
208		<#return fileEntry> 
209	</#function> 
210 
211	<#function getYoutubeIdFromUrl url> 
212		<#assign pathSegments = "${url}"?split("/") > 
213		<#return pathSegments?last> 
214	</#function> 
215 
216	<#function getMediaTypeData Video VideoFileEntries Image> 
217		<#assign 
218		mediaTypeData = { 
219		"hasMedia" : false, 
220		"mediaType" : "", 
221		"mediaCssClass" : "" 
222
223		/> 
224		<#if Video?? && Video?has_content && Video.getData()?contains("youtube") || Video.getData()?contains("youtu.be")> 
225			<#assign 
226			mediaTypeData = { 
227			"hasMedia" : true, 
228			"mediaType" : "youtube", 
229			"mediaCssClass" : "media-element-fixed-width" 
230
231			/> 
232		<#elseif VideoFileEntries?? && VideoFileEntries?has_content && VideoFileEntries.getSiblings()?has_content> 
233			<#list VideoFileEntries.getSiblings() as videoFileEntryItem> 
234				<#if videoFileEntryItem.getData()?? && videoFileEntryItem.getData() != ''> 
235					<#assign 
236					mediaTypeData = { 
237					"hasMedia" : true, 
238					"mediaType" : "videofile", 
239					"mediaCssClass" : "media-element-fixed-width" 
240
241					/> 
242				</#if> 
243			</#list> 
244		</#if> 
245		<#if !mediaTypeData['hasMedia'] && Image?? && Image?has_content && Image.getData()?? && Image.getData() != ""> 
246			<#assign 
247			mediaTypeData = { 
248			"hasMedia" : true, 
249			"mediaType" : "image", 
250			"mediaCssClass" : "" 
251
252			/> 
253		</#if> 
254		<#return mediaTypeData/> 
255	</#function> 
256 
257	<#macro renderMedia Video VideoFileEntries Image mediaTypeData VideoPreview mediaId=randomNamespace> 
258		<#switch mediaTypeData['mediaType']> 
259			<#case 'youtube'> 
260				<#assign youtubeId = getYoutubeIdFromUrl(Video.getData()) /> 
261				<div class="aspect-ratio aspect-ratio-16-to-9"> 
262					<@renderYoutubeVideo youtubeId/> 
263				</div> 
264				<#break> 
265			<#case 'videofile'> 
266				<@renderVideoPlayer VideoFileEntries VideoPreview mediaId/> 
267				<#break> 
268			<#case 'image'> 
269				<#assign 
270				altText = Image.getAttribute("alt") 
271				/> 
272				<#if !Image.getAttribute("alt")?? || Image.getAttribute("alt") == ""> 
273					<#assign 
274					altText = getDLFileEntryAltText(Image) 
275					/> 
276				</#if> 
277				<img data-fileentryid="${Image.getAttribute("fileEntryId")}" alt="${altText}" src="${Image.getData()}" /> 
278				<#break> 
279		</#switch> 
280	</#macro> 
281 
282</@> 
Termin vereinbaren

Kundenservice Mo.-Fr. 7:00-19:00 Uhr

+43 463 5858

Schreiben Sie uns

bks@bks.at

Service

Depotcheck

Passen Sie Ihr Depot dem Markt und Ihren Bedürfnissen an! Ihr Berater führt mit Ihnen den Depotcheck durch und passt Ihre Geldanlage an die aktuellen Entwicklungen an.

Fehler bei der Verarbeitung der Vorlage.
Error while invoking the "replace-content" JSP custom tag; see cause exception

----
FTL stack trace ("~" means nesting-related):
	- Failed at: @ait_contentreplacer["replace-content"]  [in template "20116#20152#BKS-INDEXBOX-AT" at line 7, column 1]
----
1<#assign 
2	ait_contentreplacer = taglibLiferayHash["/META-INF/ait-contentreplacer.tld"] 
3	 
4	DLFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') 
5/> 
6 
7<@ait_contentreplacer["replace-content"]> 
8 
9	<#assign 
10		linkUrl = '' 
11		linkTitle = languageUtil.format(locale, "go-to-x", htmlUtil.stripHtml(htmlUtil.extractText(Heading.getData())), false) 
12		linkParams = '' 
13		linkText = languageUtil.get(locale, "bks-default-link-text") 
14	/> 
15 
16	<#if Link.LinkInternal.getData()?? && Link.LinkInternal.getData() != ""> 
17		<#assign linkUrl = Link.LinkInternal.getFriendlyUrl()/> 
18	<#elseif Link.DocumentInternal.getData()?? && Link.DocumentInternal.getData() != ""> 
19		<#assign linkUrl = Link.DocumentInternal.getData()/> 
20		<#assign linkParams = 'target="_blank" rel="external"'/> 
21	<#elseif Link.LinkExternal.getData()?? && Link.LinkExternal.getData() != ""> 
22		<#assign linkUrl = Link.LinkExternal.getData()/> 
23		<#assign linkParams = 'target="_blank" rel="external"'/> 
24	</#if> 
25	<#if Link.LinkText?? && Link.LinkText.getData()?? && Link.LinkText.getData() != ""> 
26		<#assign linkText = Link.LinkText.getData()/> 
27	</#if> 
28 
29 
30	<div class="card card-index"> 
31		<div class="card-index-content"> 
32			<#if Image.getData()?? && Image.getData() != ""> 
33				<#assign 
34					altText = Image.getAttribute("alt") 
35				/> 
36				<#if !Image.getAttribute("alt")?? || Image.getAttribute("alt") == ""> 
37					<#assign 
38						altText = getDLFileEntryAltText(Image) 
39					/> 
40				</#if> 
41				<div class="card-index-image aspect-ratio"> 
42					<img class="aspect-ratio-item aspect-ratio-item-top-center" data-fileentryid="${Image.getAttribute("fileEntryId")}" alt="${altText}" src="${Image.getData()}" /> 
43				</div> 
44			</#if> 
45 
46            <#if Heading.getType() != "text"> 
47                ${Heading.getData()} 
48            <#else> 
49				<h2>${Heading.getData()}</h2> 
50            </#if> 
51			<p>${Content.getData()}</p> 
52		</div> 
53		<#if linkUrl != ""> 
54			<div class="card-index-footer"> 
55				<a class="btn btn-secondary" href="${linkUrl}" title="${linkTitle}" ${linkParams}>${linkText} <svg aria-hidden="true" class="lexicon-icon scale-lexicon-icon icon-btn-right"><use xlink:href="#icn_arrow-right" /></svg></a> 
56			</div> 
57		</#if> 
58	</div> 
59 
60	<#function getDLFileEntryAltText Image> 
61		<#if Image.getAttribute("id")?? && Image.getAttribute("id") != ""> 
62			<#return ""> 
63		<#else> 
64			<#assign dlFileEntry = getDLFileEntry(Image) > 
65			<#return dlFileEntry.getDescription()/> 
66		</#if>	 
67	</#function> 
68 
69	<#function getDLFileEntry fileEntry> 
70		<#assign dlFileEntry = ''> 
71		<#if fileEntry.getAttribute("fileEntryId")?? && fileEntry.getAttribute("fileEntryId") != ""> 
72			<#assign 
73				dlFileEntry = DLFileEntryService.getFileEntry(fileEntry.getAttribute("fileEntryId")?number) 
74			/> 
75		<#else> 
76			<#assign 
77				dlFileEntry = getDLFileEntryFromUrl(fileEntry.getData()) 
78			/> 
79		</#if> 
80		<#return dlFileEntry> 
81	</#function> 
82 
83	<#function getDLFileEntryFromUrl fileUrl> 
84		<#assign counter = 0 > 
85		<#list "${fileUrl}"?split("/") as pathSegemtent> 
86			<#if counter == 2> 
87				<#assign groupId = pathSegemtent?number > 
88			</#if> 
89			<#if counter == 5> 
90				<#assign subCounter = 0 > 
91				<#list "${pathSegemtent}"?split("?") as subSegemtent> 
92					<#if subCounter == 0> 
93						<#assign uuId = subSegemtent > 
94					</#if> 
95					<#assign subCounter = subCounter+1 > 
96				</#list> 
97			</#if> 
98			<#assign counter = counter+1 > 
99		</#list> 
100 
101		<#assign dlFileEntry = DLFileEntryService.getFileEntryByUuidAndGroupId(uuId,groupId) > 
102 
103		<#return dlFileEntry> 
104	</#function> 
105 
106</@> 
Fehler bei der Verarbeitung der Vorlage.
Error while invoking the "replace-content" JSP custom tag; see cause exception

----
FTL stack trace ("~" means nesting-related):
	- Failed at: @ait_contentreplacer["replace-content"]  [in template "20116#20152#BKS-INDEXBOX-AT" at line 7, column 1]
----
1<#assign 
2	ait_contentreplacer = taglibLiferayHash["/META-INF/ait-contentreplacer.tld"] 
3	 
4	DLFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') 
5/> 
6 
7<@ait_contentreplacer["replace-content"]> 
8 
9	<#assign 
10		linkUrl = '' 
11		linkTitle = languageUtil.format(locale, "go-to-x", htmlUtil.stripHtml(htmlUtil.extractText(Heading.getData())), false) 
12		linkParams = '' 
13		linkText = languageUtil.get(locale, "bks-default-link-text") 
14	/> 
15 
16	<#if Link.LinkInternal.getData()?? && Link.LinkInternal.getData() != ""> 
17		<#assign linkUrl = Link.LinkInternal.getFriendlyUrl()/> 
18	<#elseif Link.DocumentInternal.getData()?? && Link.DocumentInternal.getData() != ""> 
19		<#assign linkUrl = Link.DocumentInternal.getData()/> 
20		<#assign linkParams = 'target="_blank" rel="external"'/> 
21	<#elseif Link.LinkExternal.getData()?? && Link.LinkExternal.getData() != ""> 
22		<#assign linkUrl = Link.LinkExternal.getData()/> 
23		<#assign linkParams = 'target="_blank" rel="external"'/> 
24	</#if> 
25	<#if Link.LinkText?? && Link.LinkText.getData()?? && Link.LinkText.getData() != ""> 
26		<#assign linkText = Link.LinkText.getData()/> 
27	</#if> 
28 
29 
30	<div class="card card-index"> 
31		<div class="card-index-content"> 
32			<#if Image.getData()?? && Image.getData() != ""> 
33				<#assign 
34					altText = Image.getAttribute("alt") 
35				/> 
36				<#if !Image.getAttribute("alt")?? || Image.getAttribute("alt") == ""> 
37					<#assign 
38						altText = getDLFileEntryAltText(Image) 
39					/> 
40				</#if> 
41				<div class="card-index-image aspect-ratio"> 
42					<img class="aspect-ratio-item aspect-ratio-item-top-center" data-fileentryid="${Image.getAttribute("fileEntryId")}" alt="${altText}" src="${Image.getData()}" /> 
43				</div> 
44			</#if> 
45 
46            <#if Heading.getType() != "text"> 
47                ${Heading.getData()} 
48            <#else> 
49				<h2>${Heading.getData()}</h2> 
50            </#if> 
51			<p>${Content.getData()}</p> 
52		</div> 
53		<#if linkUrl != ""> 
54			<div class="card-index-footer"> 
55				<a class="btn btn-secondary" href="${linkUrl}" title="${linkTitle}" ${linkParams}>${linkText} <svg aria-hidden="true" class="lexicon-icon scale-lexicon-icon icon-btn-right"><use xlink:href="#icn_arrow-right" /></svg></a> 
56			</div> 
57		</#if> 
58	</div> 
59 
60	<#function getDLFileEntryAltText Image> 
61		<#if Image.getAttribute("id")?? && Image.getAttribute("id") != ""> 
62			<#return ""> 
63		<#else> 
64			<#assign dlFileEntry = getDLFileEntry(Image) > 
65			<#return dlFileEntry.getDescription()/> 
66		</#if>	 
67	</#function> 
68 
69	<#function getDLFileEntry fileEntry> 
70		<#assign dlFileEntry = ''> 
71		<#if fileEntry.getAttribute("fileEntryId")?? && fileEntry.getAttribute("fileEntryId") != ""> 
72			<#assign 
73				dlFileEntry = DLFileEntryService.getFileEntry(fileEntry.getAttribute("fileEntryId")?number) 
74			/> 
75		<#else> 
76			<#assign 
77				dlFileEntry = getDLFileEntryFromUrl(fileEntry.getData()) 
78			/> 
79		</#if> 
80		<#return dlFileEntry> 
81	</#function> 
82 
83	<#function getDLFileEntryFromUrl fileUrl> 
84		<#assign counter = 0 > 
85		<#list "${fileUrl}"?split("/") as pathSegemtent> 
86			<#if counter == 2> 
87				<#assign groupId = pathSegemtent?number > 
88			</#if> 
89			<#if counter == 5> 
90				<#assign subCounter = 0 > 
91				<#list "${pathSegemtent}"?split("?") as subSegemtent> 
92					<#if subCounter == 0> 
93						<#assign uuId = subSegemtent > 
94					</#if> 
95					<#assign subCounter = subCounter+1 > 
96				</#list> 
97			</#if> 
98			<#assign counter = counter+1 > 
99		</#list> 
100 
101		<#assign dlFileEntry = DLFileEntryService.getFileEntryByUuidAndGroupId(uuId,groupId) > 
102 
103		<#return dlFileEntry> 
104	</#function> 
105 
106</@>