{"id":325,"date":"2026-05-09T14:35:00","date_gmt":"2026-05-09T12:35:00","guid":{"rendered":"https:\/\/segelflicker.de\/?page_id=325"},"modified":"2026-05-10T11:31:55","modified_gmt":"2026-05-10T09:31:55","slug":"segelflieger-worldwide-bilder-hochladen","status":"publish","type":"page","link":"https:\/\/segelflicker.de\/?page_id=325","title":{"rendered":"Segelflicker Worldwide Bilder hochladen"},"content":{"rendered":"\n    <link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css\"\/>\n    <link rel=\"stylesheet\" href=\"https:\/\/segelflicker.de\/wp-content\/plugins\/segelflicker-v6\/assets\/form.css?v=6.0.0\"\/>\n\n    <div id=\"sf-wrap\">\n        <div id=\"sf-form-box\">\n            <h3>&#128205; Deinen Sticker eintragen<\/h3>\n            <p class=\"sf-sub\">Hast du einen Segelflicker-Sticker irgendwo auf der Welt geklebt? Trag ihn hier ein!<\/p>\n            <form id=\"sf-form\">\n                <input type=\"hidden\" id=\"sf_nonce\" name=\"sf_nonce\" value=\"d0b45e7fa4\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F325\" \/>                <div class=\"sf-field\">\n                    <label>Dein Name \/ Spitzname *<\/label>\n                    <input type=\"text\" name=\"sf_name\" placeholder=\"z.B. Kapt'n M\u00fcmmelmann\" required\/>\n                <\/div>\n                <div class=\"sf-field\">\n                    <label>Deine E-Mail (wird nicht ver\u00f6ffentlicht) *<\/label>\n                    <input type=\"email\" name=\"sf_email\" placeholder=\"du@example.com\" required\/>\n                <\/div>\n                <div class=\"sf-field\">\n                    <label>Name des Ortes *<\/label>\n                    <input type=\"text\" name=\"sf_location\" placeholder=\"z.B. Hamburg Speicherstadt\" required\/>\n                <\/div>\n                <div class=\"sf-field\">\n                    <label>Land *<\/label>\n                    <input type=\"text\" name=\"sf_country\" placeholder=\"z.B. Deutschland\" required\/>\n                <\/div>\n                <div class=\"sf-field\">\n                    <label>Standort *<\/label>\n                    <div style=\"display:flex;gap:8px;margin-bottom:8px;align-items:stretch\">\n                        <input type=\"text\" id=\"sf-location-input\" placeholder=\"Google Maps Link oder Koordinaten (z.B. 53.5753, 10.0153)\" style=\"flex:1;padding:10px 14px;border:2px solid #e0e0e0;border-radius:8px;font-size:14px\"\/>\n                        <button type=\"button\" id=\"sf-location-go\" style=\"padding:10px 16px;background:#1a1a2e;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px;white-space:nowrap\">&#128205; Setzen<\/button>\n                    <\/div>\n                    <p class=\"sf-hint\">Google Maps Link, Koordinaten eingeben <strong>oder<\/strong> direkt auf die Karte klicken<\/p>\n                    <div id=\"sf-pick-map\" style=\"height:280px;border-radius:10px;border:2px solid #e0e0e0;overflow:hidden\"><\/div>\n                    <input type=\"hidden\" name=\"sf_lat\" id=\"sf_flat\"\/>\n                    <input type=\"hidden\" name=\"sf_lng\" id=\"sf_flng\"\/>\n                    <div id=\"sf-coord-info\" style=\"display:none;margin-top:8px;font-size:13px;color:#166534;font-weight:600;background:#f0fdf4;padding:6px 12px;border-radius:6px;border:1px solid #bbf7d0\"><\/div>\n                    <div id=\"sf-coord-err\" style=\"display:none;margin-top:8px;font-size:13px;color:#991b1b;background:#fef2f2;padding:6px 12px;border-radius:6px;border:1px solid #fecaca\"><\/div>\n                <\/div>\n                <div class=\"sf-field\">\n                    <label>Foto deines Stickers *<\/label>\n                    <div class=\"sf-drop\" id=\"sf-drop\">\n                        <input type=\"file\" name=\"sf_photo\" id=\"sf_photo\" accept=\"image\/jpeg,image\/png,image\/webp\" required\/>\n                        <div class=\"sf-drop-label\">\n                            <span style=\"font-size:36px;display:block;margin-bottom:8px\">&#128248;<\/span>\n                            <span id=\"sf-drop-text\">Bild ausw\u00e4hlen oder hierher ziehen<\/span>\n                        <\/div>\n                        <img decoding=\"async\" id=\"sf-preview\" src=\"\" alt=\"\" style=\"display:none;max-width:100%;max-height:200px;border-radius:8px;margin-top:12px;object-fit:cover\"\/>\n                    <\/div>\n                    <p class=\"sf-hint\">Max. 5 MB &middot; JPG, PNG oder WebP<\/p>\n                <\/div>\n                <div class=\"sf-field\">\n                    <label>Instagram-Post URL (optional)<\/label>\n                    <input type=\"url\" name=\"sf_ig\" placeholder=\"https:\/\/www.instagram.com\/p\/...\"\/>\n                <\/div>\n                <button type=\"submit\" id=\"sf-btn\">&#128238; Einsenden<\/button>\n            <\/form>\n            <div id=\"sf-error\" class=\"sf-error\" style=\"display:none\"><\/div>\n        <\/div>\n        <div id=\"sf-success\" style=\"display:none;text-align:center;padding:40px 20px;background:#f0fdf4;border-radius:12px;border:2px solid #bbf7d0\">\n            <div style=\"font-size:56px\">&#127881;<\/div>\n            <h3 style=\"color:#166534\">Danke! Dein Sticker wurde eingereicht.<\/h3>\n            <p>Wir pr\u00fcfen deinen Eintrag und schalten ihn bald frei. Du bekommst eine Best\u00e4tigung per Mail!<\/p>\n        <\/div>\n    <\/div>\n\n    <script>\n    (function(){\n        function initUploadForm(){\n            if (typeof L === 'undefined') { setTimeout(initUploadForm, 100); return; }\n\n            var map = L.map('sf-pick-map').setView([20,10], 2);\n            L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png', {\n                attribution:'&copy; OpenStreetMap'\n            }).addTo(map);\n\n            \/\/ Karte nach Render-Cycle neu berechnen (fixes hidden-container bug)\n            setTimeout(function(){ map.invalidateSize(); }, 300);\n\n            var marker = null;\n\n            function sfSetPin(lat, lng, zoom) {\n                lat = parseFloat(parseFloat(lat).toFixed(6));\n                lng = parseFloat(parseFloat(lng).toFixed(6));\n                document.getElementById('sf_flat').value = lat;\n                document.getElementById('sf_flng').value = lng;\n                document.getElementById('sf-coord-info').textContent = '\ud83d\udccd ' + lat + ', ' + lng;\n                document.getElementById('sf-coord-info').style.display = 'block';\n                document.getElementById('sf-coord-err').style.display = 'none';\n                if (marker) map.removeLayer(marker);\n                marker = L.marker([lat, lng]).addTo(map);\n                map.setView([lat, lng], zoom || 10);\n            }\n\n            function sfParseLocation(val) {\n                val = val.trim();\n                \/\/ Google Maps: @lat,lng or ?q=lat,lng or \/place\/...\/@lat,lng or maps?ll=lat,lng\n                var patterns = [\n                    \/@(-?\\d+\\.?\\d*),(-?\\d+\\.?\\d*)\/,\n                    \/[?&]q=(-?\\d+\\.?\\d*),(-?\\d+\\.?\\d*)\/,\n                    \/[?&]ll=(-?\\d+\\.?\\d*),(-?\\d+\\.?\\d*)\/,\n                    \/maps\\\/place\\\/[^\/]*\\\/@(-?\\d+\\.?\\d*),(-?\\d+\\.?\\d*)\/,\n                    \/\\?mlat=(-?\\d+\\.?\\d*)&mlon=(-?\\d+\\.?\\d*)\/,\n                ];\n                for (var i = 0; i < patterns.length; i++) {\n                    var m = val.match(patterns[i]);\n                    if (m) return {lat: parseFloat(m[1]), lng: parseFloat(m[2])};\n                }\n                \/\/ Koordinaten: \"53.5753, 10.0153\" oder \"53.5753 10.0153\"\n                var coord = val.match(\/^(-?\\d+\\.?\\d*)[,\\s]+(-?\\d+\\.?\\d*)$\/);\n                if (coord) return {lat: parseFloat(coord[1]), lng: parseFloat(coord[2])};\n                return null;\n            }\n\n            var resolveApi = 'https:\/\/segelflicker.de\/index.php?rest_route=\/segelflicker\/v1\/resolve-location';\n\n            function sfHandleLocationInput() {\n                var val = document.getElementById('sf-location-input').value.trim();\n                if (!val) return;\n                document.getElementById('sf-coord-err').style.display = 'none';\n\n                \/\/ Zuerst: direkt parsebar? (lange URL oder Koordinaten)\n                var result = sfParseLocation(val);\n                if (result) { sfSetPin(result.lat, result.lng, 12); return; }\n\n                \/\/ Short-Link oder nicht parsebar -> server-seitig aufl\u00f6sen\n                var btn = document.getElementById('sf-location-go');\n                btn.textContent = '\u23f3';\n                btn.disabled = true;\n\n                fetch(resolveApi, {\n                    method: 'POST',\n                    headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': '8223a9da9a'},\n                    body: JSON.stringify({url: val})\n                })\n                .then(function(r){ return r.json(); })\n                .then(function(d){\n                    btn.textContent = '\ud83d\udccd Setzen'; btn.disabled = false;\n                    if (d.lat && d.lng) {\n                        sfSetPin(d.lat, d.lng, 12);\n                    } else {\n                        document.getElementById('sf-coord-err').textContent = '\u26a0\ufe0f Keine Koordinaten gefunden. Bitte klick direkt auf die Karte.';\n                        document.getElementById('sf-coord-err').style.display = 'block';\n                    }\n                })\n                .catch(function(){\n                    btn.textContent = '\ud83d\udccd Setzen'; btn.disabled = false;\n                    document.getElementById('sf-coord-err').textContent = '\u26a0\ufe0f Verbindungsfehler. Bitte klick direkt auf die Karte.';\n                    document.getElementById('sf-coord-err').style.display = 'block';\n                });\n            }\n\n            document.getElementById('sf-location-go').addEventListener('click', sfHandleLocationInput);\n\n            \/\/ Enter im Textfeld\n            document.getElementById('sf-location-input').addEventListener('keydown', function(e){\n                if (e.key === 'Enter') { e.preventDefault(); sfHandleLocationInput(); }\n            });\n\n            map.on('click', function(e){\n                sfSetPin(e.latlng.lat, e.latlng.lng);\n                document.getElementById('sf-location-input').value = '';\n            });\n\n            \/\/ Bild-Preview\n            document.getElementById('sf_photo').addEventListener('change', function(e){\n                var file = e.target.files[0];\n                if (!file) return;\n                document.getElementById('sf-drop-text').textContent = file.name;\n                var reader = new FileReader();\n                reader.onload = function(ev){\n                    var img = document.getElementById('sf-preview');\n                    img.src = ev.target.result;\n                    img.style.display = 'block';\n                    var lbl = document.querySelector('.sf-drop-label');\n                    if (lbl) lbl.style.display = 'none';\n                };\n                reader.readAsDataURL(file);\n            });\n\n            \/\/ Formular absenden\n            document.getElementById('sf-form').addEventListener('submit', function(e){\n                e.preventDefault();\n                if (!document.getElementById('sf_flat').value) {\n                    showErr('Bitte markiere deinen Standort auf der Karte.');\n                    return;\n                }\n                var btn = document.getElementById('sf-btn');\n                btn.textContent = '\u23f3 Wird gesendet...';\n                btn.disabled = true;\n                document.getElementById('sf-error').style.display = 'none';\n                var fd = new FormData(this);\n                fd.append('action', 'sf_submit');\n                fetch('https:\/\/segelflicker.de\/wp-admin\/admin-ajax.php', {method:'POST', body:fd})\n                .then(function(r){ return r.json(); })\n                .then(function(d){\n                    if (d.success) {\n                        document.getElementById('sf-form-box').style.display = 'none';\n                        document.getElementById('sf-success').style.display = 'block';\n                    } else {\n                        showErr(d.data || 'Fehler. Bitte versuche es erneut.');\n                        btn.textContent = '\ud83d\udcee Einsenden';\n                        btn.disabled = false;\n                    }\n                })\n                .catch(function(){\n                    showErr('Verbindungsfehler. Bitte versuche es erneut.');\n                    btn.textContent = '\ud83d\udcee Einsenden';\n                    btn.disabled = false;\n                });\n            });\n\n            function showErr(msg){\n                var el = document.getElementById('sf-error');\n                el.textContent = '\u26a0\ufe0f ' + msg;\n                el.style.display = 'block';\n            }\n        }\n        initUploadForm();\n    })();\n    <\/script>\n    <script src=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js\"><\/script>\n    \n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-325","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/segelflicker.de\/index.php?rest_route=\/wp\/v2\/pages\/325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/segelflicker.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/segelflicker.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/segelflicker.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/segelflicker.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=325"}],"version-history":[{"count":2,"href":"https:\/\/segelflicker.de\/index.php?rest_route=\/wp\/v2\/pages\/325\/revisions"}],"predecessor-version":[{"id":351,"href":"https:\/\/segelflicker.de\/index.php?rest_route=\/wp\/v2\/pages\/325\/revisions\/351"}],"wp:attachment":[{"href":"https:\/\/segelflicker.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}