An error occurred while processing the template.
The following has evaluated to null or missing:
==> formField.getValue().getString(locale)  [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" at line 56, column 49]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign Bildnachweis = formField.getV...  [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" in function "getCopyrightText" at line 56, column 25]
----
1<#import "/blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" as common> 
2 
3<#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
4<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
5<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
6<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
7<#assign namespace = randomNamespace /> 
8<#assign journalArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) /> 
9 
10<#assign 
11parentLayoutPlid = layout.getParentPlid() 
12parentLayout = layoutLocalService.fetchLayout(parentLayoutPlid)!"" 
13parentAssetPublisherId = "" 
14/> 
15<#if validator.isNotNull(parentLayout)> 
16    <#if parentLayout.isTypePortlet()> 
17        <#assign parentLayoutTypePortlet = parentLayout.getLayoutType() /> 
18        <#assign parentPortlets = parentLayoutTypePortlet.getExplicitlyAddedPortlets() /> 
19        <#list parentPortlets as parentPortlet> 
20            <#if parentPortlet.getRootPortletId() == "com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"> 
21                <#assign parentAssetPublisherId = parentPortlet.getPortletId() /> 
22 
23                <#break /> 
24            </#if> 
25        </#list> 
26    </#if> 
27</#if> 
28 
29<#assign topBgColorClass = "on-" + TopBgColor.getData() + "-bg" /> 
30 
31<article class="article" itemscope itemtype="https://schema.org/Article"> 
32    <#if Slider?? && Slider.NeuerSlider?? && (Slider.NeuerSlider.Image.getData()?has_content || Slider.NeuerSlider.Youtube.getData()?has_content)> 
33        <div class="slider-hero" id="slider_${namespace}"> 
34            <div class="slides-list"> 
35                <#list Slider.NeuerSlider.getSiblings() as curSlide> 
36 
37                    <#if curSlide.AltTextImage?? && curSlide.AltTextImage.getData()?has_content> 
38                        <#assign AltText = curSlide.AltTextImage.data /> 
39                    </#if> 
40 
41                    <#assign AltText = common.getAltText(curSlide.Image.data, AltText) /> 
42 
43                    <#assign Copyright = "" /> 
44                    <#assign CopyrightMobile = "" /> 
45                    <#if (common.getCopyrightText(curSlide.Image.data)!"") != ""> 
46                        <#assign Copyright = common.getCopyrightTag("",curSlide.Image.data) /> 
47                    </#if> 
48 
49 
50 
51                    <#assign hasMobileImageClass= "" /> 
52                    <#assign ImageMobileFocusClass= "image-focus-mobile-center" /> 
53                    <#if curSlide.ImageMobile?? && curSlide.ImageMobile.getData()?has_content> 
54                        <#assign hasMobileImageClass= "image-with-mobile-alternative" /> 
55                        <#if (common.getCopyrightText(curSlide.ImageMobile.data)!"") != ""> 
56                            <#assign CopyrightMobile = common.getCopyrightTag("",curSlide.ImageMobile.data,"","mobile") /> 
57                        </#if> 
58                        <#if curSlide.ImageMobile.ImageMobileFocus?? && curSlide.ImageMobile.ImageMobileFocus.getData()?has_content> 
59                            <#assign ImageMobileFocusClass= "image-focus-mobile-" + curSlide.ImageMobile.ImageMobileFocus.getData() /> 
60                        </#if> 
61                    </#if> 
62 
63                    <#assign ImageDesktopFocusClass= "image-focus-desktop-center fooo" /> 
64                    <#if curSlide.Image.ImageDesktopFocus?? && curSlide.Image.ImageDesktopFocus.getData()?has_content> 
65                        <#assign ImageDesktopFocusClass= "image-focus-desktop-" + curSlide.Image.ImageDesktopFocus.getData()/> 
66                    </#if> 
67 
68 
69                    <div class="slide"> 
70                        <div class="slide-content"> 
71                            <#if (curSlide.Youtube?? && curSlide.Youtube.getData()?has_content) && (curSlide.Image?? && curSlide.Image?has_content)> 
72                                <#assign videoId = curSlide.Youtube.getData()/> 
73 
74                                <#if videoId?starts_with("http")> 
75                                    <#assign videoId = videoId?split("/")[3]> 
76                                </#if> 
77 
78                                <div class="slide-content-video image-with-caption ${hasMobileImageClass} ${ImageDesktopFocusClass} ${ImageMobileFocusClass}"> 
79                                    <a href="https://www.youtube-nocookie.com/${videoId}" target="_blank" 
80                                       class="video-link"> 
81                                        <img src="${common.getScaledImageURL(curSlide.Image.getData(), "bg-image-medium")}" 
82                                             data-src="${common.getScaledImageURL(curSlide.Image.getData(), "bg-image-medium")}" 
83                                             class="slide__image image--desktop" alt="${AltText}" loading="lazy"/> 
84                                        <#if curSlide.ImageMobile?? && curSlide.ImageMobile.getData()?has_content> 
85                                            <img src="${common.getScaledImageURL(curSlide.ImageMobile.getData(), "bg-image-medium")}" 
86                                                 data-src="${common.getScaledImageURL(curSlide.ImageMobile.getData(), "bg-image-medium")}" 
87                                                 class="slide__image image--mobile" alt="${AltText}" loading="lazy"/> 
88                                            ${CopyrightMobile} 
89                                        </#if> 
90                                    </a> 
91                                    ${Copyright} 
92                                </div> 
93                            <#else> 
94                                <div class="slide-content-image image-with-caption ${hasMobileImageClass} ${ImageDesktopFocusClass} ${ImageMobileFocusClass}"> 
95                                    <img src="${common.getScaledImageURL(curSlide.Image.getData(), "bg-image-medium")}" 
96                                         data-src="${common.getScaledImageURL(curSlide.Image.getData(), "bg-image-medium")}" 
97                                         class="slide__image image--desktop" alt="${AltText}" loading="lazy" /> 
98                                    <#if curSlide.ImageMobile?? && curSlide.ImageMobile.getData()?has_content> 
99                                        <img src="${common.getScaledImageURL(curSlide.ImageMobile.getData(), "bg-image-medium")}" 
100                                             data-src="${common.getScaledImageURL(curSlide.ImageMobile.getData(), "bg-image-medium")}" 
101                                             class="slide__image image--mobile" alt="${AltText}" loading="lazy"/> 
102                                    </#if> 
103                                    ${Copyright} 
104                                </div> 
105                            </#if> 
106                        </div> 
107                    </div> 
108                </#list> 
109            </div> 
110        </div> 
111    </#if> 
112 
113    <section class="article-area article-area--${topBgColorClass}"> 
114        <div class="container"> 
115            <div class="row justify-content-center"> 
116                <div class="col-sm-8"> 
117                    <nav id="breadcrumbs"> 
118                        <#assign preferencesMap = {"portletSetupPortletDecoratorId": "decorate-yellow-bg", "displayStyle": "ddmTemplate_BREADCRUMB-BLAUES-GUT","showPortletBreadcrumb":"true"} /> 
119 
120                        <@liferay.breadcrumbs default_preferences = freeMarkerPortletPreferences.getPreferences(preferencesMap) /> 
121                    </nav> 
122                </div> 
123            </div> 
124            <div class="row justify-content-center"> 
125                <div class="col-sm-8"> 
126                    <h1 class="article-headline" itemprop="name">${HeadlineArticle.getData()}</h1> 
127                </div> 
128            </div> 
129            <div class="row justify-content-center"> 
130                <div class="col-sm-8"> 
131                    <#assign assetCategories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.resourcePrimKey) /> 
132                    <#if assetCategories?? && assetCategories?size gt 0> 
133                        <ul class="tags"> 
134                            <#list assetCategories as assetCategory> 
135                                <#assign 
136                                categoryURL = portletURLFactory.create(renderRequest, parentAssetPublisherId, parentLayoutPlid, "RENDER_PHASE") 
137                                href = categoryURL.toString() 
138                                href = httpUtil.setParameter(href, "_" + parentAssetPublisherId + "_categoryId", assetCategory.getCategoryId()?string) 
139                                href = httpUtil.setParameter(href, "_" + parentAssetPublisherId + "_resetCur", "true") 
140                                /> 
141 
142                                <li class="tag"> 
143                                    <a href="${href}" class="no-icon">${assetCategory.getTitle(locale)}</a> 
144                                </li> 
145                            </#list> 
146                        </ul> 
147                    </#if> 
148                </div> 
149            </div> 
150            <#if Intro?? && Intro.data?has_content> 
151                <div class="row justify-content-center"> 
152                    <div class="col-md-8"> 
153                        <p class="bold">${Intro.getData()}</p> 
154                    </div> 
155                </div> 
156            </#if> 
157 
158            <div class="row justify-content-center"> 
159                <div class="col-md-8"> 
160                    <div class="button-area"> 
161                        <button class="share-social-link btn btn-text"> 
162                            <span class="icon-bg icon-bg--share"></span> <span class="link-title"> <span 
163                                        class="hide-accessible">Seite </span>Teilen </span> 
164                        </button> 
165                        <button class="btn btn-text" onclick="window.print();"> 
166                            <span class="icon-bg icon-bg--print"></span> <span class="link-title"> <span 
167                                        class="hide-accessible">Seite </span>Drucken </span> 
168                        </button> 
169                    </div> 
170                </div> 
171            </div> 
172        </div> 
173 
174    </section> 
175 
176 
177    <#if WaveTop?? && WaveTopColor??> 
178        <section class="article-wave-area" data-source="${WaveTop.getData()}"> 
179            <section class="waves"> 
180                <div class="wave wave--${WaveTop.getData()}-${WaveTopColor.getData()} v-mirrored"></div> 
181            </section> 
182        </section> 
183    </#if> 
184 
185 
186 
187 
188 
189    <#if Text?? && Text.data?has_content> 
190        <section class="article-text container"> 
191            <div class="row justify-content-center"> 
192                <div class="col-md-8"> 
193                    ${Text.getData()} 
194                </div> 
195            </div> 
196        </section> 
197    </#if> 
198 
199    <#if ImageLarge?? && ImageLarge.data?has_content> 
200 
201        <#assign CopyrightImageLarge= "" /> 
202        <#assign CopyrightImageLargeMobile= "" /> 
203 
204        <#assign hasMobileImageLargeClass= "" /> 
205        <#if ImageLargeMobile?? && ImageLargeMobile.getData()?has_content> 
206            <#assign hasMobileImageLargeClass= "image-with-mobile-alternative" /> 
207            <#if (common.getCopyrightText(ImageLargeMobile.data)!"") != ""> 
208                <#assign CopyrightMobile = common.getCopyrightTag("",ImageLargeMobile.data,"","mobile") /> 
209            </#if> 
210        </#if> 
211 
212        <#if (common.getCopyrightText(ImageLarge.data)!"") != ""> 
213            <#assign CopyrightImageLarge = common.getCopyrightTag("",ImageLarge.data) /> 
214        </#if> 
215 
216        <section class="article-image-large"> 
217            <section class="image-large image-with-caption ${hasMobileImageLargeClass}" id="image-large_${namespace}"> 
218                <div class="image-inner"> 
219                    <span itemprop="image" content="${portal.getPortalURL(themeDisplay) + common.getScaledImageURL(ImageLarge.getData(), "bg-image-medium")}" /> 
220                    <img 
221                         src="${common.getScaledImageURL(ImageLarge.getData(), "bg-image-medium")}" 
222                         alt="${common.getAltText(ImageLarge.data)}" class="image image--desktop" loading="lazy"/> 
223                    <#if ImageLargeMobile?? && ImageLargeMobile.getData()?has_content> 
224                        <img src="${common.getScaledImageURL(ImageLarge.getData(), "bg-image-medium")}" 
225                             alt="${common.getAltText(ImageLarge.data)}" class="image image--mobile" loading="lazy"/> 
226                        ${CopyrightImageLargeMobile} 
227                    </#if> 
228                    ${CopyrightImageLarge} 
229                </div> 
230            </section> 
231            <#if ImageCaption?? && ImageCaption.data?has_content> 
232                <div class="container"> 
233                    <div class="row justify-content-center"> 
234                        <div class="col-md-8"> 
235                            <div class="article__image-large-caption">${ImageCaption.getData()}</div> 
236                        </div> 
237                    </div> 
238                </div> 
239            </#if> 
240        </section> 
241    </#if> 
242 
243    <#if TextBottom?? && TextBottom.data?has_content> 
244        <section class="article-text container"> 
245            <div class="row justify-content-center"> 
246                <div class="col-md-8"> 
247                    ${TextBottom.getData()} 
248                </div> 
249            </div> 
250        </section> 
251    </#if> 
252 
253</article> 
254 
255<#if Slider?? && Slider.NeuerSlider?? && (Slider.NeuerSlider.Image.getData()?has_content || Slider.NeuerSlider.Youtube.getData()?has_content)> 
256    <script> 
257        window.addEventListener("load", function () { 
258            function ${namespace}_updateInfo(info) { 
259                for (var i = 0; i < info.navItems.length; i++) { 
260                    info.navItems[i].setAttribute('aria-label', 'Folie ' + (i + 1)); 
261
262 
263                info.navItems[info.navCurrentIndex].setAttribute('aria-label', 'Folie ' + (info.navCurrentIndex + 1) + ' (aktuell)'); 
264 
265                info.controlsContainer.setAttribute('aria-label', 'Navigationselemente'); 
266                info.prevButton.setAttribute('aria-label', 'zur vorhergehenden Folie springen'); 
267                info.nextButton.setAttribute('aria-label', 'zur nächsten Folie springen'); 
268                info.navContainer.setAttribute('aria-label', 'Auswahl der Folien') 
269
270 
271            var slider = tns({ 
272                container: '#slider_${namespace} .slides-list', 
273                items: 1, 
274                slideBy: 'page', 
275                center: true, 
276                controlsPosition: 'bottom', 
277                navPosition: 'bottom', 
278                touch: true, 
279                mouseDrag: false, 
280                freezable: true, 
281                speed: 600, 
282                lazyload: true, 
283                arrowKeys: true, 
284                lazyloadSelector: '.slide__image', 
285                controlsText: ['<span class="icon-bg icon-bg--arrow1-left"></span>', '<span class="icon-bg icon-bg--arrow1-right"></span>'], 
286                autoplay: true, 
287                autoplayHoverPause: true, 
288                autoplayPosition: 'bottom', 
289                autoplayTimeout: 3000, 
290                autoplayText: ["▶", "❚❚"], 
291                onInit: function (info) { 
292                    ${namespace}_updateInfo(info); 
293 
294                    var btn = document.querySelector('#slider_${namespace} button[data-action="stop"]'); 
295                    var nav = document.querySelector('#slider_${namespace} .tns-nav'); 
296 
297                    if (btn && nav) { 
298                        var wrapper = document.createElement('div'); 
299                        wrapper.classList.add('nav-wrapper'); 
300 
301                        nav.parentNode.insertBefore(wrapper, nav); 
302 
303                        wrapper.appendChild(nav); 
304                        wrapper.appendChild(btn); 
305
306
307            }); 
308            slider.events.on('indexChanged', function (info) { 
309                ${namespace}_updateInfo(info); 
310            }); 
311        }); 
312    </script> 
313</#if> 
An error occurred while processing the template.
The following has evaluated to null or missing:
==> formField.getValue().getString(locale)  [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" at line 22, column 43]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign altTag = formField.getValue()...  [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" in function "getAltText" at line 22, column 25]
----
1<#import "/blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" as common> 
2 
3<#assign namespace = randomNamespace /> 
4<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
5<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
6 
7<#function getDownloadLink content> 
8    <#assign 
9    dlAppService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") 
10    dlUrlHelperUtil = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper") 
11    json = jsonFactoryUtil.createJSONObject(content) 
12    fileEntryGroupId = json.getLong("groupId") 
13    fileEntryUuid = json.getString("uuid") 
14    fileEntry = dlAppService.getFileEntryByUuidAndGroupId(fileEntryUuid, fileEntryGroupId) 
15
16    <#return httpUtil.removeParameter(dlUrlHelperUtil.getDownloadURL(fileEntry, fileEntry.getLatestFileVersion(), themeDisplay, "", false, true), "download") /> 
17</#function> 
18 
19 
20<#if entries?has_content> 
21    <#assign 
22    parentLayoutPlid = layout.getParentPlid() 
23    parentLayout = layoutLocalService.fetchLayout(parentLayoutPlid)!"" 
24    parentAssetPublisherId = "" 
25    /> 
26    <#if validator.isNotNull(parentLayout)> 
27        <#if parentLayout.isTypePortlet()> 
28            <#assign parentLayoutTypePortlet = parentLayout.getLayoutType() /> 
29            <#assign parentPortlets = parentLayoutTypePortlet.getExplicitlyAddedPortlets() /> 
30            <#list parentPortlets as parentPortlet> 
31                <#if parentPortlet.getRootPortletId() == "com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"> 
32                    <#assign parentAssetPublisherId = parentPortlet.getPortletId() /> 
33 
34                    <#break /> 
35                </#if> 
36            </#list> 
37        </#if> 
38    </#if> 
39 
40<#--    <#list entries as entry>--> 
41<#--        <#assign assetRenderer = entry.getAssetRenderer() />--> 
42 
43<#--        <#if assetRenderer.getClassName()=="com.liferay.journal.model.JournalArticle">--> 
44<#--            <pre>--> 
45<#--                ${assetRenderer.getArticle().getContent()}--> 
46<#--            </pre>--> 
47<#--        </#if>--> 
48<#--    </#list>--> 
49 
50<#--    <div style="background-color: red;height: 50px;color:white;">--> 
51<#--        ###########################################--> 
52<#--    </div>--> 
53 
54    <section class="slider-related" id="slider_${namespace}"> 
55        <h2 class="headline">Das könnte Sie auch interessieren</h2> 
56 
57        <div class="slides-wrapper"> 
58 
59            <div class="slides-list"> 
60 
61                <#list entries as curEntry> 
62 
63 
64                    <#assign docXml = saxReaderUtil.read(curEntry.getAssetRenderer().getArticle().getContent()) /> 
65                    <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry) /> 
66                    <#assign renderer= curEntry.getAssetRenderer()/> 
67 
68                    <#if assetLinkBehavior != "showFullContent"> 
69                        <#assign viewURL = renderer.getURLViewInContext(renderRequest, renderResponse, viewURL) /> 
70                    </#if> 
71 
72 
73 
74                    <#assign 
75                    linkTarget = "" 
76                    linkHref= viewURL 
77                    headline = docXml.valueOf("//dynamic-element[@name='HeadlineArticle']/dynamic-content/text()") 
78                    imgUrlExisting =    docXml.valueOf("//dynamic-element[@name='ExistingSlider']//dynamic-element[@name='Image']/dynamic-content/text()") 
79                    imgUrlNew =         docXml.valueOf("//dynamic-element[@name='NeuerSlider']//dynamic-element[@name='Image']/dynamic-content/text()") 
80                    imgLarge =          docXml.valueOf("//dynamic-element[@name='ImageLarge']/dynamic-content/text()") 
81                    imgUrl = "" 
82                    altText =           "" 
83                    Copyright = "" 
84                    /> 
85 
86                    <#if imgUrlNew!=""> 
87                        <#assign 
88                            imgUrl = getDownloadLink(imgUrlNew) + "&imageThumbnail=1" 
89                            altText = common.getAltText(imgUrlNew) 
90                            Copyright = common.getCopyrightTag("",imgUrlNew) 
91                        /> 
92 
93                    <#elseif imgUrlExisting!=""> 
94                        <#assign 
95                            imgUrl = getDownloadLink(imgUrlExisting) + "&imageThumbnail=1" 
96                            altText = common.getAltText(imgUrlExisting) 
97                            Copyright = common.getCopyrightTag("",imgUrlExisting) 
98                        /> 
99                    <#elseif imgLarge!=""> 
100                        <#assign 
101                        imgUrl = getDownloadLink(imgLarge) + "&imageThumbnail=1" 
102                        altText = common.getAltText(imgLarge) 
103                        Copyright = common.getCopyrightTag("",imgLarge) 
104                        /> 
105                    </#if> 
106 
107                    <div class="slide" role="group" aria-label="Folie ${curEntry?index + 1} von ${entries?size}"> 
108                        <div class="slide-content"> 
109                            <div class="slide-content-image image-with-caption"> 
110                                <a href="${linkHref}" ${linkTarget}> 
111                                    <#if imgUrl!=""> 
112                                        <img src="${imgUrl}" data-src="${imgUrl}" class="slide__image" alt="${altText}" loading="lazy" /> 
113                                    <#else> 
114                                        <img src="/o/blaues-gut-theme/images/no-image_blaues-gut.png" data-src="/o/blaues-gut-theme/images/logo_bg_mobile.svg" 
115                                             class="slide__image no-image" alt=""/> 
116                                    </#if> 
117                                </a> 
118                                ${Copyright} 
119                            </div> 
120 
121                            <#assign assetCategories = assetCategoryLocalService.getAssetEntryAssetCategories(curEntry.entryId) /> 
122                            <#if assetCategories?? && assetCategories?size gt 0> 
123                                <ul class="tags"> 
124                                    <#list assetCategories as assetCategory> 
125                                        <#assign 
126                                        categoryURL = portletURLFactory.create(renderRequest, parentAssetPublisherId, parentLayoutPlid, "RENDER_PHASE") 
127                                        href = categoryURL.toString() 
128                                        href = httpUtil.setParameter(href, "_" + parentAssetPublisherId + "_categoryId", assetCategory.getCategoryId()?string) 
129                                        href = httpUtil.setParameter(href, "_" + parentAssetPublisherId + "_resetCur", "true") 
130                                        /> 
131 
132 
133                                        <li class="tag"> 
134                                            <a href="${href}">${assetCategory.getTitle(locale)}</a> 
135                                        </li> 
136                                    </#list> 
137                                </ul> 
138                            </#if> 
139                            <h3 class="title"><a href="${linkHref}" ${linkTarget}>${headline}</a></h3> 
140                        </div> 
141                    </div> 
142                </#list> 
143            </div> 
144        </div> 
145    </section> 
146 
147    <script> 
148        window.addEventListener("load", function () { 
149            function ${namespace}_updateInfo(info) { 
150                if (info.navItems) { 
151                    for (var i = 0; i < info.navItems.length; i++) { 
152                        info.navItems[i].setAttribute('aria-label', 'Folie ' + (i + 1)); 
153
154 
155                    info.navItems[info.navCurrentIndex].setAttribute('aria-label', 'Folie ' + (info.navCurrentIndex + 1) + ' (aktuell)'); 
156
157 
158                if (info.controlsContainer) { 
159                    info.controlsContainer.setAttribute('aria-label', 'Navigationselemente'); 
160
161                if (info.prevButton) { 
162                    info.prevButton.setAttribute('aria-label', 'zur vorhergehenden Folie springen'); 
163
164                if (info.nextButton) { 
165                    info.nextButton.setAttribute('aria-label', 'zur nächsten Folie springen'); 
166
167                if (info.navContainer) { 
168                    info.navContainer.setAttribute('aria-label', 'Auswahl der Folien') 
169
170
171 
172            var slider = tns({ 
173                container: '#slider_${namespace} .slides-list', 
174                items: 1.5, 
175                slideBy: 'page', 
176                lazyload: true, 
177                lazyloadSelector: '.slide__image', 
178                loop: false, 
179                controls: false, 
180                nav: false, 
181                controlsPosition: 'bottom', 
182                navPosition: 'bottom', 
183                touch: true, 
184                mouseDrag: true, 
185                freezable: true, 
186                speed: 600, 
187                arrowKeys: true, 
188                edgePadding: 16, 
189                fixedWidth: 300, 
190                // viewportMax: 1600, 
191                controlsText: ['<span class="icon-bg icon-bg--arrow2-left"></span>', '<span class="icon-bg icon-bg--arrow2-right"></span>'], 
192                responsive: { 
193                    768: { 
194                        items: 1.5, 
195                        edgePadding: 0, 
196                        gutter: 0 
197                    }, 
198                    900: { 
199                        items: 3, 
200                        edgePadding: 0 
201                    }, 
202                    1280: { 
203                        items: 4, 
204                        controls: true 
205                    }, 
206                    1600: { 
207                        controls: true, 
208                        items: 5 
209
210                }, 
211                onInit: function (info) { 
212                    ${namespace}_updateInfo(info); 
213
214            }); 
215            slider.events.on('indexChanged', function(info) { 
216                ${namespace}_updateInfo(info); 
217            }); 
218        }); 
219    </script> 
220</#if>