Stiftungen sind ideal geeignet, um den Vermögenserhalt oder auch die Nachfolgeplanung langfristig sicher zu stellen. Die Stiftung ist ein interessantes Instrument für die individuelle Vermögensplanung. Neben dem Vermögenserhalt sind auch die steuerlichen Gestaltungsmöglichkeiten attraktiv.
Unsere Stiftungsexperten haben langjährige Erfahrung in der Betreuung von zahlreichen Stiftungen und greifen auf ein Expertennetzwerk zurück. Wir konzentrieren uns auf die risikooptimierte Veranlagung und Verwaltung Ihres Vermögens. Diese ist speziell auf den Stiftungszweck zugeschnitten.
- Auf Ihren Stiftungszweck abgestimmte Veranlagungskonzepte
- Analyse bestehender Veranlagungen
- Regelmäßige Überprüfung der Portfoliostruktur
- Greifen Sie auf unsere Netzwerk von Steuer- und Rechtsexperten sowie Notaren zu
- Jahrelange Erfahrung in der Stiftungsbetreuung
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&controls=2&hl=${locale.getLanguage()}&iv_load_policy=3&modestbranding=1&rel=0&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</@>