1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8"/> 5 <link href="https://media.base44.com/files/public/69e3cdb079db5ce10c527c98/228f2221f_AppLogo512.icon" rel="icon" type="image/svg+xml"/> 6 <meta content="width=device-width, initial-scale=1.0" name="viewport"/> 7 <link href="/manifest.json" rel="manifest"/> 8 <title> 9 Admin Dashboard | TierNotruf 10 </title> 11 <!-- Open Graph / Facebook --> 12 <meta content="website" property="og:type"/> 13 <meta content="https://tier-notruf-0c527c98.base44.app/admin" property="og:url"/> 14 <meta content="TierNotruf" property="og:site_name"/> 15 <meta content="Admin Dashboard | TierNotruf" property="og:title"/> 16 <meta content="Admin Dashboard on TierNotruf. Die schnelle Notfall-App für Tierfreunde: Fundtiere in Ihrer Nähe direkt an das ." property="og:description"/> 17 <meta content="https://media.base44.com/files/public/69e3cdb079db5ce10c527c98/228f2221f_AppLogo512.icon" property="og:image"/> 18 <meta content="de_DE" property="og:locale"/> 19 <meta content="945972461581538" property="fb:app_id"/> 20 <!-- Twitter / allgemein --> 21 <meta content="summary_large_image" name="twitter:card"/> 22 <meta content="Admin Dashboard | TierNotruf" name="twitter:title"/> 23 <meta content="Admin Dashboard on TierNotruf. Die schnelle Notfall-App für Tierfreunde: Fundtiere in Ihrer Nähe direkt an das ." name="twitter:description"/> 24 <meta content="https://media.base44.com/files/public/69e3cdb079db5ce10c527c98/228f2221f_AppLogo512.icon" name="twitter:image"/> 25 <!-- SEO --> 26 <meta content="Admin Dashboard on TierNotruf. Die schnelle Notfall-App für Tierfreunde: Fundtiere in Ihrer Nähe direkt an das ." name="description"/> 27
27<script crossorigin="" src="/assets/index-CGUZJ0pi.js" type="module"> 28 </script>
28 29 <link crossorigin="" href="/assets/index-DKbW9BL5.css" rel="stylesheet"/> 30
30<script type="module"> 31 if (window.self === window.top) { 32 let lastPath = ""; 33 function getPageNameFromPath(path) { 34 const segments = path.split("/").filter(Boolean); 35 return segments[0] || null; 36 } 37 function trackPageView() { 38 const path = window.location.pathname; 39 if (path === lastPath) return; 40 lastPath = path; 41 const pageName = getPageNameFromPath(path) || "home"; 42 const appId = "69e3cdb079db5ce10c527c98"; 43 if (!appId) return; 44 fetch(`/api/app-logs/${appId}/log-user-in-app/${pageName}`, { 45 method: "POST", 46 }).catch(() => {}); 47 } 48 const originalPushState = history.pushState.bind(history); 49 history.pushState = function (...args) { 50 originalPushState(...args); 51 trackPageView(); 52 }; 53 const originalReplaceState = history.replaceState.bind(history); 54 history.replaceState = function (...args) { 55 originalReplaceState(...args); 56 trackPageView(); 57 }; 58 window.addEventListener("popstate", trackPageView); 59 trackPageView(); 60} 61 </script>
61 62 <meta content="https://tier-notruf-0c527c98.base44.app/admin" name="twitter:url"/> 63
63<script> 64 (function () { 65 var titles = {"/melden": "TierNotruf", "/uebersicht": "Overview | TierNotruf", "/admin": "Admin Dashboard | TierNotruf", "/meine-meldungen": "My Reports | TierNotruf", "/einstellungen": "Account Settings | TierNotruf", "/report-animal": "TierNotruf", "/reportanimal": "TierNotruf"}; 66 // PascalCase boundaries -> "-", mirroring _PASCAL_BOUNDARY_RE without lookbehind 67 // (old Safari fails to PARSE a lookbehind, taking the whole script down). 68 var dashed = function (s) { 69 return s.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2"); 70 }; 71 var decode = function (s) { 72 // A %2F inside ONE segment must not become a structural separator: /blog/foo%2Fbar is a 73 // dynamic slug, and letting it split would match a static /blog/foo/bar and write ITS title. 74 try { var d = decodeURIComponent(s); return d.indexOf("/") < 0 ? d : s; } catch (e) { return s; } 75 }; 76 var segments = function (path) { return path.split("/").filter(Boolean).map(decode); }; 77 var norm = function (path) { 78 var parts = segments(path).map(function (s) { return dashed(s).toLowerCase(); }); 79 return parts.length ? "/" + parts.join("/") : "/"; 80 }; 81 var lastPath = location.pathname, written = document.title, on = true; 82 var sync = function () { 83 // Path only: a hash/query change is the same page, and the SDK strips its own auth 84 // params with replaceState -- neither must clobber a server-rendered title in place. 85 if (!on || location.pathname === lastPath) return; 86 lastPath = location.pathname; 87 if (document.title !== written) { on = false; return; } 88 // Write ONLY a title the map proves. An unmapped path is a dynamic route (/blog/:slug) the 89 // map cannot carry, and writing a placeholder there is destructive, not merely vague: the 90 // prerender worker runs no setUserAgent, so its capture browser reads as human and executes 91 // this script, and coordinator.js's settle wait explicitly tolerates a full navigation -- 92 // a redirect landing on an unmapped path would bake the placeholder into the stored 93 // snapshot. Leaving the title alone degrades to today's behavior instead. 94 // Exact lookup only. A dash-stripped retry here would let a genuinely different /set-up 95 // claim /setup: the map carries a dash-free key only where a PascalCase boundary put the 96 // dashes there, and the client cannot tell the two apart. The map emits every reachable 97 // shape per segment instead (_client_url_variants). 98 var title = titles[norm(location.pathname)]; 99 if (title === undefined) return; 100 document.title = title; 101 // Re-read: the setter stores verbatim but the getter strips and collapses whitespace, so 102 // keeping the assigned string would make the next sync() read our own write as the app's. 103 written = document.title; 104 }; 105 var wrap = function (fn) { 106 // The history entry is already pushed by the time sync() runs, so a throw here would 107 // surface inside the host app's router and break navigation. This is injected into apps 108 // we cannot test, so it swallows rather than trusting the trace. 109 return function () { 110 var r = fn.apply(this, arguments); 111 try { sync(); } catch (e) {} 112 return r; 113 }; 114 }; 115 history.pushState = wrap(history.pushState); 116 history.replaceState = wrap(history.replaceState); 117 window.addEventListener("popstate", sync); 118})(); 119 </script>
119 120 <meta content="yes" name="mobile-web-app-capable"/> 121 <meta content="black" name="apple-mobile-web-app-status-bar-style"/> 122 <meta content="TierNotruf" name="apple-mobile-web-app-title"/> 123 <link href="https://tier-notruf-0c527c98.base44.app/admin" rel="canonical"/> 124
124<script data-seo-source="builder" type="application/ld+json"> 125 {"name": "TierNotruf", "@context": "https://schema.org", "@type": "WebSite", "url": "https://tier-notruf-0c527c98.base44.app"} 126 </script>
126 127
127<script data-seo-source="builder" type="application/ld+json"> 128 {"name": "TierNotruf", "logo": "https://media.base44.com/images/public/69e3cdb079db5ce10c527c98/243b5b614_hf_20260420_201212_28100910-3aec-4ea6-9b9c-dcdc4fca1f3c.png", "@context": "https://schema.org", "@type": "Organization", "url": "https://tier-notruf-0c527c98.base44.app"} 129 </script>
129 130
130<script data-seo-source="builder" type="application/ld+json"> 131 {"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://tier-notruf-0c527c98.base44.app/"}, {"@type": "ListItem", "position": 2, "name": "Admin Dashboard | TierNotruf", "item": "https://tier-notruf-0c527c98.base44.app/admin"}]} 132 </script>
132 133 </head> 134 <body> 135 <div id="root"> 136 <div data-seo-source="builder" id="seo-snapshot" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;"> 137 <main> 138 <header> 139 <h1> 140 Admin Dashboard | TierNotruf 141 </h1> 142 <p> 143 Admin Dashboard on TierNotruf. Die schnelle Notfall-App für Tierfreunde: Fundtiere in Ihrer Nähe direkt an das . 144 </p> 145 </header> 146 <nav aria-label="Pages"> 147 <h2> 148 Pages 149 </h2> 150 <ul> 151 <li> 152 <a href="/melden"> 153 Report Animal 154 </a> 155 </li> 156 <li> 157 <a href="/uebersicht"> 158 Overview 159 </a> 160 â Overview on TierNotruf. Die schnelle Notfall-App für Tierfreunde: Fundtiere in Ihrer Nähe direkt an das . 161 </li> 162 <li> 163 <a href="/admin"> 164 Admin Dashboard 165 </a> 166 â Admin Dashboard on TierNotruf. Die schnelle Notfall-App für Tierfreunde: Fundtiere in Ihrer Nähe direkt an das . 167 </li> 168 <li> 169 <a href="/meine-meldungen"> 170 My Reports 171 </a> 172 â My Reports on TierNotruf. Die schnelle Notfall-App für Tierfreunde: Fundtiere in Ihrer Nähe direkt an das . 173 </li> 174 <li> 175 <a href="/einstellungen"> 176 Account Settings 177 </a> 178 â Account Settings on TierNotruf. Die schnelle Notfall-App für Tierfreunde: Fundtiere in Ihrer Nähe direkt an das . 179 </li> 180 </ul> 181 </nav> 182 </main> 183 </div> 184 </div> 185 </body> 186</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.