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 ${(SliderTyp??)?then(SliderTyp.getData(), "")}" 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)}" />
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="about:blank" allowfullscreen="" 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
111 window.addEventListener("resize", function () {
112 updateIframeHeight();
113 });
114
115 // Liferay.on('endNavigate', updateVideoWrapper);
116 // $(document).ready(updateVideoWrapper);
117
118 window.addEventListener("load", function () {
119 function ${namespace}_updateInfo(info) {
120 for (var i = 0; i < info.navItems.length; i++) {
121 info.navItems[i].setAttribute('aria-label','Folie ' + (i+1));
122 }
123
124 info.navItems[info.navCurrentIndex].setAttribute('aria-label','Folie ' + (info.navCurrentIndex + 1) + ' (aktuell)');
125
126 info.controlsContainer.setAttribute('aria-label', 'Navigationselemente');
127 info.prevButton.setAttribute('aria-label','zur vorhergehenden Folie springen');
128 info.nextButton.setAttribute('aria-label','zur nächsten Folie springen');
129 info.navContainer.setAttribute('aria-label','Auswahl der Folien')
130 }
131
132 const imgStyle = document.querySelector('.image-slider-style');
133
134 var slider = tns({
135 container: '#slider_${namespace} .slides-list',
136 items: 1,
137 slideBy: 'page',
138 center: true,
139 controlsPosition: 'bottom',
140 navPosition: 'bottom',
141 touch: true,
142 mouseDrag: true,
143 freezable: true,
144 speed: 600,
145 loop: false,
146 arrowKeys: true,
147 lazyload: true,
148 autoHeight: true,
149 lazyloadSelector: '.slide__image',
150 autoplay: !!imgStyle,
151 autoplayHoverPause: true,
152 autoplayTimeout: 3500,
153 autoplayText: [
154 "▶",
155 "❚❚"
156 ],
157 controlsText: ['<span class="icon-bg icon-bg--arrow2-left"></span>','<span class="icon-bg icon-bg--arrow2-right"></span>'],
158 onInit: function (info) {
159 ${namespace}_updateInfo(info);
160 }
161 });
162
163 slider.events.on('indexChanged', function(info) {
164 ${namespace}_updateInfo(info);
165 });
166
167 slider.events.on('transitionStart', function(info, eventName) {
168 var currentSlideId = '#tns1-item' + info.navCurrentIndex;
169
170 var otherSlides = info.container.querySelectorAll('.tns-item:not(' + currentSlideId + ')')
171
172 otherSlides.forEach(function(slide) {
173 var iframe = slide.querySelector( 'iframe');
174
175 if (iframe != null) {
176 var src = iframe.getAttribute('src');
177 if (src) {
178 if ((src.indexOf('youtube.com/embed') != -1) || (src.indexOf('youtube-nocookie.com/embed') != -1)) {
179 iframe.contentWindow.postMessage(JSON.stringify({
180 'event': 'command',
181 'func': 'pauseVideo',
182 'args': []
183 }), "*");
184 }
185 }
186 }
187 });
188 });
189 const mediaQuery = window.matchMedia('(max-width: 767px)')
190 if (mediaQuery.matches) {
191 const bulletList = document.querySelectorAll('.slider-hero .tns-nav');
192
193 bulletList.forEach(bullet => {
194 const slider = bullet.previousElementSibling.getBoundingClientRect();
195 const bulletNav = bullet.getBoundingClientRect();
196
197 const bulletNavTop = bulletNav.top;
198 const sliderTop = slider.top;
199
200 const arrowsPos = bulletNavTop - sliderTop - 5;
201
202 const prev = bullet.nextElementSibling.children[0];
203 const prevBtnWidth = prev.clientWidth;
204 const next = bullet.nextElementSibling.children[1];
205
206 const sliderControls = bullet.nextElementSibling;
207 const firstBulletLeftSpace = bullet.firstElementChild.offsetLeft;
208 const firstBulletWidth = bullet.firstElementChild.clientWidth;
209 const lastBulletLeftSpace = bullet.lastElementChild.offsetLeft;
210
211 const nextBtnPos = lastBulletLeftSpace + 59;
212 const prevBtnPos = firstBulletLeftSpace - prevBtnWidth - firstBulletWidth - 87;
213
214 const playPauseBtn = bullet.parentElement.firstElementChild;
215 const playPauseBtnLeftPos = lastBulletLeftSpace + 15;
216
217 sliderControls.style.top = arrowsPos + 'px';
218
219 next.style.left = nextBtnPos + 'px';
220
221 prev.style.left = prevBtnPos + 'px';
222
223 playPauseBtn.style.left = playPauseBtnLeftPos + 'px';
224
225 console.log(sliderControls.style.top);
226 });
227 }
228 });
229</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
37 window.addEventListener("load", function () {
38 function ${namespace}_updateInfo(info) {
39 for (var i = 0; i < info.navItems.length; i++) {
40 info.navItems[i].setAttribute('aria-label','Folie ' + (i+1));
41 }
42
43 info.navItems[info.navCurrentIndex].setAttribute('aria-label','Folie ' + (info.navCurrentIndex + 1) + ' (aktuell)');
44
45 info.controlsContainer.setAttribute('aria-label', 'Navigationselemente');
46 info.prevButton.setAttribute('aria-label','zur vorhergehenden Folie springen');
47 info.nextButton.setAttribute('aria-label','zur nächsten Folie springen');
48 info.navContainer.setAttribute('aria-label','Auswahl der Folien')
49 }
50
51 var slider = tns({
52 container: '#slider_${namespace} .slides-list',
53 items: 1,
54 slideBy: 'page',
55 center: true,
56 controlsPosition: 'bottom',
57 navPosition: 'bottom',
58 touch: true,
59 mouseDrag: true,
60 freezable: true,
61 autoHeight: false,
62 speed: 600,
63 arrowKeys: true,
64 lazyload: true,
65 lazyloadSelector: '.slide__image',
66 controlsText: ['<span class="icon-bg icon-bg--arrow2-left"></span>','<span class="icon-bg icon-bg--arrow2-right"></span>'],
67 onInit: function (info) {
68 ${namespace}_updateInfo(info);
69 }
70 });
71 slider.events.on('indexChanged', function(info) {
72 ${namespace}_updateInfo(info);
73 });
74 });
75</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
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.