Blaues Gut | Mein Gewässer verbessern (Umsetzung WRRL) | Baden-Württemberg
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 namespace = randomNamespace />
5
6<section class="slider-hero" id="slider_${namespace}">
7 <div class="slides-list" aria-roledescription="Karusell">
8
9 <#list Slide.getSiblings() as curSlide>
10
11 <#assign hasLink = false />
12 <#assign linkTarget = "" />
13 <#assign linkHref= "" />
14 <#assign linkText = "weiterlesen" />
15 <#assign linkTitle = "Artikel weiterlesen" />
16 <#assign slideUniqueId = namespace + '_' + curSlide?index />
17
18
19 <#if curSlide.Headline?? && curSlide.Headline.getData()?has_content>
20 <#assign AltText = curSlide.Headline.getData() />
21 </#if>
22
23 <#assign Copyright = "" />
24 <#if (common.getCopyrightText(curSlide.Image.data)!"") != "">
25 <#assign Copyright = common.getCopyrightTag("",curSlide.Image.data) />
26 </#if>
27
28 <div class="slide" role="group" aria-roledescription="Folie" aria-label="Folie ${curSlide?index + 1} von ${Slide.siblings?size}">
29 <div class="slide-content">
30 <#if (curSlide.Youtube?? && curSlide.Youtube.getData()?has_content) && (curSlide.Image?? && curSlide.Image?has_content)>
31 <#assign videoId = curSlide.Youtube.getData()/>
32
33 <#if videoId?starts_with("http")>
34 <#assign videoId = videoId?split("/")[3]>
35 </#if>
36
37 <div class="slide-content-video video" id="video_${slideUniqueId}">
38 <img src="${common.getScaledImageURL(curSlide.Image.getData())}" data-src="${common.getScaledImageURL(curSlide.Image.getData())}" class="slide__image video-preview-image" id="video-preview-image_${slideUniqueId}" alt="${common.getAltText(curSlide.Image.data, AltText)}" role="img"/>
39 <div class="video-trigger-overlay video-trigger " id="video-trigger_${slideUniqueId}" data-tns-slide="tns1-item${curSlide?index}" data-videoid="${slideUniqueId}" data-source="${videoId}" title="Video abspielen">
40 <p class="text-center video-trigger-overlay-text video-trigger" data-videoid="${slideUniqueId}" >
41 Um das Video zu sehen, müssen Sie dieses Feld durch einen Klick aktivieren. Dadurch werden
42 Informationen an Youtube übermittelt und unter Umständen dort verarbeitet. Bitte beachten Sie unsere
43 Hinweise und Informationen zum <a href="/datenschutz" target="_blank"
44 class="no-icon">Datenschutz</a>.
45 </p>
46 <span class="icon-bg icon-bg--play video-trigger" data-videoid="${slideUniqueId}" ></span>
47 </div>
48 <div class="video-layer" style="display: none" id="video-layer_${slideUniqueId}">
49 <iframe class="video-frame" src="" frameborder="0" allowfullscreen="" width="100%" height="530" id="iframe_${slideUniqueId}"></iframe>
50 </div>
51 </div>
52 <#else>
53 <div class="slide-content-image image-with-caption">
54 <img src="${common.getScaledImageURL(curSlide.Image.getData())}" data-src="${common.getScaledImageURL(curSlide.Image.getData())}" class="slide__image" alt="${common.getAltText(curSlide.Image.data, AltText)}"/>
55 ${Copyright}
56 </div>
57 </#if>
58 </div>
59 </div>
60
61 </#list>
62 </div>
63</section>
64
65<script>
66
67 var updateIframeHeight = function() {
68 var dwidth = window.innerWidth;
69 var videoHeight = dwidth*0.5625;
70
71 /*
72 if (dwidth > 1600) {
73 videoHeight = dwidth*0.40;
74 }
75 */
76
77 var videoFrames = document.getElementsByClassName('video-frame');
78 for (var i=0; i < videoFrames.length;i++) {
79 videoFrames[i].setAttribute('height',videoHeight);
80 videoFrames[i].style.height = videoHeight+'px';
81 }
82 }
83
84 var updateVideoWrapper = function () {
85
86 var triggers = document.getElementsByClassName('video-trigger');
87
88 for (var i=0; i < triggers.length;i++) {
89 triggers[i].addEventListener('click',function(e) {
90
91 var triggersTarget = this.getAttribute('data-videoid');
92 var tnsSlide = this.getAttribute('data-tns-slide');
93
94 var youtubeId = document.querySelector("#" + tnsSlide + ' #video-trigger_'+triggersTarget).getAttribute('data-source');
95 var videoLayer = document.querySelector("#" + tnsSlide + ' #video-layer_'+triggersTarget);
96 var iframe = document.querySelector("#" + tnsSlide + ' #iframe_'+triggersTarget);
97 iframe.setAttribute('src', 'https://www.youtube-nocookie.com/embed/' + youtubeId + '?autoplay=1&rel=0&cc_load_policy=1&modestbranding=0&enablejsapi=1');
98
99 document.querySelector("#" + tnsSlide + ' #video-preview-image_'+triggersTarget).style.display='none';
100 document.querySelector("#" + tnsSlide + ' #video-trigger_'+triggersTarget).style.display='none';
101 videoLayer.style.display='block';
102 });
103 }
104 };
105
106 window.addEventListener("load", function () {
107 updateVideoWrapper();
108 updateIframeHeight();
109 });
110 window.addEventListener("resize", function () {
111 updateIframeHeight();
112 });
113 // Liferay.on('endNavigate', updateVideoWrapper);
114 // $(document).ready(updateVideoWrapper);
115
116 window.addEventListener("load", function () {
117 function ${namespace}_updateInfo(info) {
118 for (var i = 0; i < info.navItems.length; i++) {
119 info.navItems[i].setAttribute('aria-label','Folie ' + (i+1));
120 }
121
122 info.navItems[info.navCurrentIndex].setAttribute('aria-label','Folie ' + (info.navCurrentIndex + 1) + ' (aktuell)');
123
124 info.controlsContainer.setAttribute('aria-label', 'Navigationselemente');
125 info.prevButton.setAttribute('aria-label','zur vorhergehenden Folie springen');
126 info.nextButton.setAttribute('aria-label','zur nächsten Folie springen');
127 info.navContainer.setAttribute('aria-label','Auswahl der Folien')
128 }
129
130 var slider = tns({
131 container: '#slider_${namespace} .slides-list',
132 items: 1,
133 slideBy: 'page',
134 center: true,
135 controlsPosition: 'bottom',
136 navPosition: 'bottom',
137 touch: true,
138 mouseDrag: true,
139 freezable: true,
140 speed: 600,
141 loop: false,
142 arrowKeys: true,
143 lazyload: true,
144 autoHeight: true,
145 lazyloadSelector: '.slide__image',
146 controlsText: ['<span class="icon-bg icon-bg--arrow1-left"></span>','<span class="icon-bg icon-bg--arrow1-right"></span>'],
147 onInit: function (info) {
148 ${namespace}_updateInfo(info);
149 }
150 });
151
152 slider.events.on('indexChanged', function(info) {
153 ${namespace}_updateInfo(info);
154 });
155
156 slider.events.on('transitionStart', function(info, eventName) {
157 var currentSlideId = '#tns1-item' + info.navCurrentIndex;
158
159 var otherSlides = info.container.querySelectorAll('.tns-item:not(' + currentSlideId + ')')
160
161 otherSlides.forEach(function(slide) {
162 var iframe = slide.querySelector( 'iframe');
163
164 if (iframe != null) {
165 var src = iframe.getAttribute('src');
166 if (src) {
167 if ((src.indexOf('youtube.com/embed') != -1) || (src.indexOf('youtube-nocookie.com/embed') != -1)) {
168 iframe.contentWindow.postMessage(JSON.stringify({
169 'event': 'command',
170 'func': 'pauseVideo',
171 'args': []
172 }), "*");
173 }
174 }
175 }
176 });
177 });
178 });
179</script>
Verbessern Sie Ihre Kommune spürbar – mit der Umsetzung der WRRL
Gemeinsam Dinge in Fluss bringen: Als politische Entscheidungsträgerin und politischer Entscheidungsträger in Baden-Württemberg stehen Sie vor der Herausforderung, Maßnahmen entsprechend der europäischen Wasserrahmenrichtlinie (WRRL) umzusetzen. Wir helfen Ihnen dabei mit Informationen, Materialien und Verweisen auf die für Sie zuständigen Stellen – denn gemeinsam machen wir so Gewässer besser.
5 Gründe für die Verbesserung Ihrer Kommune
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] - Reached through: ${common.getAltText(curSlide.Image.da... [in template "20097#20125#SLIDER-FACTS" at line 25, column 227] ----
1<#import "/blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" as common>
2
3<#assign namespace = randomNamespace />
4
5<section class="slider-facts" id="slider_${namespace}">
6 <div class="slides-list" aria-roledescription="Karusell">
7
8 <#list Slide.getSiblings() as curSlide>
9
10 <#assign hasLink = false />
11 <#assign linkTarget = "" />
12 <#assign linkHref= "" />
13 <#assign linkText = "weiterlesen" />
14 <div class="slide" role="group" aria-roledescription="Folie" aria-label="Folie ${curSlide?index + 1} von ${Slide.siblings?size}">
15 <div class="slide-card">
16 <div class="slide-caption">
17 <#if (curSlide.Caption?? && curSlide.Caption.getData()?has_content)>
18 ${curSlide.Caption.getData()}
19 </#if>
20 </div>
21 <div class="slide-content">
22 <p class="slide-text">${curSlide.Text.getData()}</p>
23 <#if curSlide.Image?? && curSlide.Image?has_content>
24 <div class="slide-content-image">
25 <img src="${common.getScaledImageURL(curSlide.Image.getData(), "bg-image-medium")}" data-src="${common.getScaledImageURL(curSlide.Image.getData(), "bg-image-medium")}" class="slide__image" alt="${common.getAltText(curSlide.Image.data)}"/>
26 </div>
27 </#if>
28 </div>
29 </div>
30 </div>
31 </#list>
32 </div>
33</section>
34
35<script>
36 window.addEventListener("load", function () {
37 function ${namespace}_updateInfo(info) {
38 for (var i = 0; i < info.navItems.length; i++) {
39 info.navItems[i].setAttribute('aria-label','Folie ' + (i+1));
40 }
41
42 info.navItems[info.navCurrentIndex].setAttribute('aria-label','Folie ' + (info.navCurrentIndex + 1) + ' (aktuell)');
43
44 info.controlsContainer.setAttribute('aria-label', 'Navigationselemente');
45 info.prevButton.setAttribute('aria-label','zur vorhergehenden Folie springen');
46 info.nextButton.setAttribute('aria-label','zur nächsten Folie springen');
47 info.navContainer.setAttribute('aria-label','Auswahl der Folien')
48 }
49
50 var slider = tns({
51 container: '#slider_${namespace} .slides-list',
52 items: 1,
53 slideBy: 'page',
54 center: true,
55 controlsPosition: 'bottom',
56 navPosition: 'bottom',
57 touch: true,
58 mouseDrag: true,
59 freezable: true,
60 autoHeight: false,
61 speed: 600,
62 arrowKeys: true,
63 lazyload: true,
64 lazyloadSelector: '.slide__image',
65 controlsText: ['<span class="icon-bg icon-bg--arrow1-left"></span>','<span class="icon-bg icon-bg--arrow1-right"></span>'],
66 onInit: function (info) {
67 ${namespace}_updateInfo(info);
68 }
69 });
70 slider.events.on('indexChanged', function(info) {
71 ${namespace}_updateInfo(info);
72 });
73 });
74</script>
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 layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") />
4<#assign namespace = randomNamespace />
5<#assign AltText = "" />
6<#assign Copyright = "" />
7
8<#if AltTextImage?? && AltTextImage.getData()?has_content>
9 <#assign AltText = AltTextImage.data />
10</#if>
11
12<#assign AltText = common.getAltText(ImageLarge.data, AltText) />
13<#if (Button.ButtonStyle?? && Button.ButtonStyle.getData()?has_content)>
14 <#assign ButtonMarkup = common.getButtonMarkup(Button.ButtonInternalLink, Button.ButtonExternalLink, Button.ButtonText, Button.ButtonStyle.getData()) />
15 <#else>
16 <#assign ButtonMarkup = common.getButtonMarkup(Button.ButtonInternalLink, Button.ButtonExternalLink, Button.ButtonText) />
17</#if>
18
19<#if ImageLarge?? && ImageLarge.data?has_content && (common.getCopyrightText(ImageLarge.data)!"") != "">
20 <#assign Copyright = common.getCopyrightTag("",ImageLarge.data) />
21</#if>
22
23
24<section class="teaser">
25 <div class="colorable-bg">
26 <div class="container">
27 <div class="row justify-content-center">
28 <div class="col-md-6">
29 <section class="teaser__content">
30 <section class="image-large image-large--centered" id="image-large_${namespace}">
31 <div class="image-inner image-with-caption">
32 <#if SVG?? && SVG.getData()?has_content>
33 <div class="slide-content-image no-border svg-image">
34 ${SVG.getData()}
35 </div>
36 <#else>
37 <#if ImageLarge?? && ImageLarge.getData()?has_content>
38 <img src="${common.getScaledImageURL(ImageLarge.getData(), "bg-image-medium")}" alt="${common.getAltText(ImageLarge.data)}" class="image"/>
39 ${Copyright}
40 </#if>
41 </#if>
42 </div>
43 </section>
44 <h2>${Headline.getData()}</h2>
45 <#if Text?? && Text.getData()?has_content>
46 <p class="teaser-text">
47 ${Text.getData()}
48 </p>
49 </#if>
50 <#if Button.ButtonInternalLink.getData()?has_content || Button.ButtonExternalLink.getData()?has_content>
51 <div class="button-area">
52 ${ButtonMarkup}
53 </div>
54 </#if>
55 </section>
56 </div>
57 </div>
58 </div>
59 </div>
60
61</section>
Sie wollen ein Projekt starten? Unsere Linksammlung hilft Ihnen dabei
Wenn Sie daran denken, ein Projekt zu initiieren und eine Maßnahme umzusetzen, nutzen Sie einfach unsere Linksammlung als Startpunkt. Von dort aus gelangen Sie mit einem Klick zum Leitfaden zur Gewässerbewirtschaftung und zu weiteren relevanten Materialien, beispielsweise zu Informationen zum Ökokonto oder zu den Förderrichtlinien Wasserwirtschaft. Alles bequem an einem Ort.
Häufige Bedenken – und warum Sie diese vergessen können
Nein, Revitalisierungen müssen immer so gebaut sein, dass sich der Hochwasserabfluss dadurch nicht verschlechtert. Das wird in der Genehmigungsphase ausführlich geprüft. Eher im Gegenteil: Mit einer guten Planung ist es sogar vielmehr möglich, kleinere Defizite des Hochwasserschutzes bei dieser Gelegenheit auszubessern.
Im Gegenteil: Klar, es geht nicht ohne Aufwand – aber Sie werden in Ihrer Kommune die Auswirkungen schnell wahrnehmen. Revitalisierungen erhalten nämlich in der Regel viel Zustimmung. Auch und vor allem die Bürgerschaft nimmt sie meist gut an. Das Stadtbild wird durch mehr Grün spürbar aufgewertet – und es ist meistens möglich, angenehme Aufenthaltsbereiche zu schaffen. Menschen gehen wieder ans Wasser und verweilen dort – was nachgewiesenermaßen positive psychische Effekte hat. Vielerorts lassen sich Maßnahmen zum Hochwasserschutz mit einer Revitalisierung des Gewässers verbinden. Dann haben Sie sogar zwei Fliegen mit einer Klappe geschlagen.
Richtig ist: Gewässermaßnahmen können teuer werden. Aber ihr Wert für die Natur ist ebenso unbestreitbar. Deswegen fördert das Land ökologisch wertvolle Maßnahmen auch mit bis zu 85 Prozent. Sie können also für eine vergleichsweise günstige Investition Ihre Kommune spürbar verbessern. Und: Für den verbleibenden Anteil aus Ihrem Budget können Sie für viele Maßnahmen zusätzlich Ökopunkte bekommen.
Es zeugt von einem hohen Verantwortungsbewusstsein für die Umwelt, in eine bessere Abwasserreinigung zu investieren. Die Modernisierung schafft auch attraktivere Arbeitsplätze und senkt in der Regel dauerhaft die Abwasserabgabe.
Die Kosten sind sehr unterschiedlich und werden von den Bürgerinnen und Bürgern über Abwassergebühren finanziert. Sie hängen ab von der vorhandenen Ausstattung der Kläranlage, den Platzverhältnissen und der konkreten Umsetzungsplanung. Die Gemeinden können dafür eine Förderung erhalten. Und Sie haben die Möglichkeit, die Investitionen mit der Abwasserabgabe zu verrechnen. Dadurch können Sie Ihre Ausgaben in der Folgezeit spürbar senken.
Interesse? So geht es weiter
Konnten wir Ihr Interesse wecken? Setzen Sie sich bereits gedanklich mit der Umsetzung einer Maßnahme auseinander? Dann machen Sie Nägel mit Köpfen. Die Zulassungsbehörden sind in der Regel die unteren Wasserbehörden bei den Landratsämtern oder kreisfreien Städten. Sie sind damit auch Ihre erste Anlaufstelle für die Abstimmung und Zulassung eines Vorhabens – oder können an die richtige Stelle verweisen.
Auf dem Serviceportal Baden-Württemberg finden Sie unter der Rubrik „Zugehörige Leistungen“ Informationen zu den wasserrechtlichen Verfahren – und Ihre Ansprechpersonen.
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 namespace = randomNamespace />
4<#assign ButtonGlobalMarkup = "" >
5
6<section class="slider-related" id="slider_${namespace}">
7 <#if (HeadlineGlobal?? && HeadlineGlobal.getData()?has_content)>
8 <h2 class="headline">${HeadlineGlobal.getData()}</h2>
9 </#if>
10 <#if Text?? && Text.getData()?has_content>
11 <p>${Text.getData()}</p>
12 </#if>
13
14 <#assign hasLink = false />
15 <#assign linkTarget = "" />
16 <#assign linkHref = "" />
17 <#assign Items1280 = "4" />
18 <#assign Items1600 = "5" />
19 <#assign linkTitle = "" />
20 <#assign Copyright = "" />
21
22 <#if Elements1280?? && Elements1280.getData()?has_content>
23 <#assign Items1280 = Elements1280.getData() />
24 </#if>
25
26 <#if Elements1600?? && Elements1600.getData()?has_content>
27 <#assign Items1600 = Elements1600.getData() />
28 </#if>
29
30
31 <div class="slides-wrapper">
32
33 <div class="slides-list slides-l-${Items1280} slides-xl-${Items1600}" aria-roledescription="Karusell">
34
35 <#list Slide.getSiblings() as curSlide>
36
37
38 <#if (curSlide.Button.ButtonInternalLink??) && (curSlide.Button.ButtonInternalLink.getFriendlyUrl()?has_content)>
39 <#assign hasLink = true />
40 <#assign linkHref = curSlide.Button.ButtonInternalLink.getFriendlyUrl() />
41 </#if>
42
43 <#if ! curSlide.Button.ButtonInternalLink?has_content>
44 <#assign linkHref = "" />
45 <#if curSlide.Button.ButtonExternalLink?has_content>
46 <#assign linkHref = curSlide.Button.ButtonExternalLink.getData() />
47 <#assign linkTarget = "target='_blank'" />
48 </#if>
49 </#if>
50
51 <#if curSlide.Button.ButtonText?? && curSlide.Button.ButtonText?has_content>
52 <#assign linkTitle = curSlide.Button.ButtonText.getData() />
53 <#else>
54 <#assign linkTitle = "Zur Seite '" + curSlide.Headline.getData() + "'"/>
55 </#if>
56
57 <#if curSlide.Image?? && curSlide.Image.data?has_content && (common.getCopyrightText(curSlide.Image.data)!"") != "">
58 <#assign Copyright = common.getCopyrightTag("",curSlide.Image.data) />
59 </#if>
60
61 <div class="slide" role="group" aria-roledescription="Folie" aria-label="Folie ${curSlide?index + 1} von ${Slide.siblings?size}">
62 <div class="slide-content">
63 <#if curSlide.Image?? && curSlide.Image.data?has_content>
64 <div class="slide-content-image image-with-caption">
65 <a href="${linkHref}" ${linkTarget} alt="${linkTitle}" title="${linkTitle}" class="no-icon"><img src="${common.getScaledImageURL(curSlide.Image.getData(), "bg-image-medium")}"
66 data-src="${common.getScaledImageURL(curSlide.Image.getData(), "bg-image-medium")}"
67 class="slide__image" alt="${common.getAltText(curSlide.Image.data)}" role="img"/></a>
68 ${Copyright}
69 </div>
70 </#if>
71 <h1 class="title"><a href="${linkHref}" ${linkTarget} alt="${linkTitle}"
72 title="${linkTitle}" class="no-icon">${curSlide.Headline.getData()}</a></h1>
73 </div>
74 </div>
75 </#list>
76 </div>
77
78 </div>
79 <#if ButtonGlobal?? && ((ButtonGlobal.ButtonGlobalInternalLink?? && ButtonGlobal.ButtonGlobalInternalLink.getData()?has_content) ||
80 (ButtonGlobal.ButtonGlobalExternalLink?? && ButtonGlobal.ButtonGlobalExternalLink.getData()?has_content))>
81 <#assign ButtonGlobalMarkup = common.getButtonMarkup(ButtonGlobal.ButtonGlobalInternalLink, ButtonGlobal.ButtonGlobalExternalLink, ButtonGlobal.ButtonGlobalText, ButtonGlobal.ButtonGlobalStyle.getData()) />
82 <div class="button-area">
83 ${ButtonGlobalMarkup}
84 </div>
85 </#if>
86</section>
87
88<script>
89 window.addEventListener("load", function () {
90 function ${namespace}_updateInfo(info) {
91 if (info.navItems) {
92 for (var i = 0; i < info.navItems.length; i++) {
93 info.navItems[i].setAttribute('aria-label', 'Folie ' + (i + 1));
94 }
95
96 info.navItems[info.navCurrentIndex].setAttribute('aria-label', 'Folie ' + (info.navCurrentIndex + 1) + ' (aktuell)');
97 }
98
99 if (info.controlsContainer) {
100 info.controlsContainer.setAttribute('aria-label', 'Navigationselemente');
101 }
102 if (info.prevButton) {
103 info.prevButton.setAttribute('aria-label', 'zur vorhergehenden Folie springen');
104 }
105 if (info.nextButton) {
106 info.nextButton.setAttribute('aria-label', 'zur nächsten Folie springen');
107 }
108 if (info.navContainer) {
109 info.navContainer.setAttribute('aria-label', 'Auswahl der Folien')
110 }
111 }
112
113 var slider = tns({
114 container: '#slider_${namespace} .slides-list',
115 items: 2,
116 slideBy: 'page',
117 lazyload: true,
118 lazyloadSelector: '.slide__image',
119 loop: false,
120 // center: true,
121 controlsPosition: 'bottom',
122 controls: false,
123 navPosition: 'bottom',
124 touch: true,
125 mouseDrag: true,
126 freezable: true,
127 speed: 600,
128 arrowKeys: true,
129 controlsText: ['<span class="icon-bg icon-bg--arrow2-left"></span>', '<span class="icon-bg icon-bg--arrow2-right"></span>'],
130 responsive: {
131 768: {
132 items: 2,
133 edgePadding: 0,
134 gutter: 0
135 },
136 900: {
137 items: 3,
138 edgePadding: 0,
139 controls: true
140 },
141 1280: {
142 items: ${Items1280}, // 4
143 controls: true
144 },
145 1600: {
146 controls: true,
147 items: ${Items1600}
148 }
149 },
150 onInit: function (info) {
151 ${namespace}_updateInfo(info);
152 }
153 });
154 slider.events.on('indexChanged', function(info) {
155 ${namespace}_updateInfo(info);
156 });
157 });
158</script>