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 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 gespeichert. 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.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) { 
168                            iframe.contentWindow.postMessage(JSON.stringify({ 
169                                'event': 'command', 
170                                'func': 'pauseVideo', 
171                                'args': [] 
172                            }), "*"); 
173
174
175
176            }); 
177        }); 
178    }); 
179</script> 
 

Gewässerpädagogik: Gewässer erleben und begreifen

Bildung, Bindung, Begeisterung: Gewässerpädagogik hat den Auftrag, Groß und Klein unsere Gewässer näher zu bringen. Denn je mehr wir über unsere Natur wissen, je besser wir sie kennen, desto verantwortungsvoller gehen wir mit ihr um. Gewässerpädagogik bietet zahlreiche Angebote für unterschiedliche Zielgruppen – entdecken Sie mit uns welche!

 
 

Wasser mit allen Sinnen erleben

Die Gewässerpädagogik zählt zur Umweltbildung und ist damit ein wichtiges Teilgebiet der Bildung für nachhaltige Entwicklung. Im Fokus steht dabei, den Menschen ans Gewässer zu führen und Wasser mit allen Sinnen erlebbar zu machen. Mit auf die Zielgruppen ausgerichteten Angeboten wird in der Gewässerpädagogik „Wissen rund ums Wasser“ abwechslungsreich und spielerisch vermittelt. 

Von Wasser-Profis lernen

Gewässer sind Orte, an denen sich Mensch, Technik und Natur begegnen. Hier lassen sich Konflikte zwischen dem Schutzanspruch der natürlichen Umwelt und den Bedürfnissen des Menschen optimal vermitteln. Diese Aufgabe übernehmen Baden-Württembergs ausgebildete Gewässerführerinnen und Gewässerführer. Sie bieten Führungen zu spannenden Themen wie der historischen Gewässernutzung, erforschen Wasserlebewesen oder führen Kunstaktionen durch. Interessierte können sich auch zum Gewässerpädagogen ausbilden lassen. Dazu haben wir Ihnen hier Informationsmaterial zusammengestellt.

Gewässer mit Kindern erleben

Eltern wissen: Wasser übt auf Kinder eine besondere Faszination aus. Hier lernen sie spielerisch die Natur kennen – zum Beispiel bei einer Schatzsuche per Geocaching. Oder Sie besuchen mit Ihren Kindern eine der Führungen und Aktionen der Gewässerführerinnen und Gewässerführer in Ihrer Umgebung. Hier können Sie sich zu den Möglichkeiten bei Ihnen vor Ort informieren.

Klassenzimmer am Wasser

Ob Kindergarten oder Schule, auch für Lehrkräfte bieten Gewässer als Lernorte die Chance, Kindern, Schülerinnen und Schülern Wasserthemen anschaulich und in direktem Kontakt mit der Natur zu vermitteln. Zum Thema Lernort Gewässer haben wir Ihnen Nützliches und Wissenswertes zusammengestellt.

 
 

Sie möchten in der Gewässerpädagogik aktiv werden? Ob Fortbildung für Erwachsene, Familienangebote oder Materialien für Lehrkräfte – in unserer Linksammlung haben wir Ihnen sämtliches Informationsmaterial und weiterführende Links zusammengestellt. Klicken Sie sich durch!

 
 
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 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>