PageSourceSearch

https://www.onetz.de/oberpfalz/deutschland-welt/good-news-einfach-gute-nachrichten-id5481091.html

html onetz.de collected 2026-09-24 17:17:30 UTC 214,323 bytes, 4,025 lines download raw bytes

1<!DOCTYPE html>
2<html lang="de" dir="ltr">
3<head>
4<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5    <link rel="preconnect" href="https://d.delivery.consentmanager.net">
6  <link rel="preconnect" href="https://cdn.consentmanager.net">
7  <link rel="dns-prefetch" href="https://d.delivery.consentmanager.net">
8  <link rel="dns-prefetch" href="https://cdn.consentmanager.net">
9      
9<script>window.gdprAppliesGlobally = true;
10        if (!("cmp_id" in window) || window.cmp_id < 1) {
11          window.cmp_id = 0
12        }
13        if (!("cmp_cdid" in window)) {
14          window.cmp_cdid = "3c83d72c513f6"
15        }
16        if (!("cmp_params" in window)) {
17          window.cmp_params = ""
18        }
19        if (!("cmp_host" in window)) {
20          window.cmp_host = "delivery.consentmanager.net"
21        }
22        if (!("cmp_cdn" in window)) {
23          window.cmp_cdn = "cdn.consentmanager.net"
24        }
25        if (!("cmp_proto" in window)) {
26          window.cmp_proto = "https:"
27        }
28        if (!("cmp_codesrc" in window)) {
29          window.cmp_codesrc = "1"
30        }
31        window.cmp_getsupportedLangs = function () {
32          var b = ["DE", "EN", "FR", "IT", "NO", "DA", "FI", "ES", "PT", "RO", "BG", "ET", "EL", "GA", "HR", "LV", "LT", "MT", "NL", "PL", "SV", "SK", "SL", "CS", "HU", "RU", "SR", "ZH", "TR", "UK", "AR", "BS"];
33          if ("cmp_customlanguages" in window) {
34            for (var a = 0; a < window.cmp_customlanguages.length; a++) {
35              b.push(window.cmp_customlanguages[a].l.toUpperCase())
36            }
37          }
38          return b
39        };
40        window.cmp_getRTLLangs = function () {
41          var a = ["AR"];
42          if ("cmp_customlanguages" in window) {
43            for (var b = 0; b < window.cmp_customlanguages.length; b++) {
44              if ("r" in window.cmp_customlanguages[b] && window.cmp_customlanguages[b].r) {
45                a.push(window.cmp_customlanguages[b].l)
46              }
47            }
48          }
49          return a
50        };
51        window.cmp_getlang = function (j) {
52          if (typeof (j) != "boolean") {
53            j = true
54          }
55          if (j && typeof (cmp_getlang.usedlang) == "string" && cmp_getlang.usedlang !== "") {
56            return cmp_getlang.usedlang
57          }
58          var g = window.cmp_getsupportedLangs();
59          var c = [];
60          var f = location.hash;
61          var e = location.search;
62          var a = "languages" in navigator ? navigator.languages : [];
63          if (f.indexOf("cmplang=") != -1) {
64            c.push(f.substr(f.indexOf("cmplang=") + 8, 2).toUpperCase())
65          }
66          else {
67            if (e.indexOf("cmplang=") != -1) {
68              c.push(e.substr(e.indexOf("cmplang=") + 8, 2).toUpperCase())
69            }
70            else {
71              if ("cmp_setlang" in window && window.cmp_setlang != "") {
72                c.push(window.cmp_setlang.toUpperCase())
73              }
74              else {
75                if (a.length > 0) {
76                  for (var d = 0; d < a.length; d++) {
77                    c.push(a[d])
78                  }
79                }
80              }
81            }
82          }
83          if ("language" in navigator) {
84            c.push(navigator.language)
85          }
86          if ("userLanguage" in navigator) {
87            c.push(navigator.userLanguage)
88          }
89          var h = "";
90          for (var d = 0; d < c.length; d++) {
91            var b = c[d].toUpperCase();
92            if (g.indexOf(b) != -1) {
93              h = b;
94              break
95            }
96            if (b.indexOf("-") != -1) {
97              b = b.substr(0, 2)
98            }
99            if (g.indexOf(b) != -1) {
100              h = b;
101              break
102            }
103          }
104          if (h == "" && typeof (cmp_getlang.defaultlang) == "string" && cmp_getlang.defaultlang !== "") {
105            return cmp_getlang.defaultlang
106          }
107          else {
108            if (h == "") {
109              h = "EN"
110            }
111          }
112          h = h.toUpperCase();
113          return h
114        };
115        (function () {
116          var u = document;
117          var v = u.getElementsByTagName;
118          var h = window;
119          var o = "";
120          var b = "_en";
121          if ("cmp_getlang" in h) {
122            o = h.cmp_getlang().toLowerCase();
123            if ("cmp_customlanguages" in h) {
124              for (var q = 0; q < h.cmp_customlanguages.length; q++) {
125                if (h.cmp_customlanguages[q].l.toUpperCase() == o.toUpperCase()) {
126                  o = "en";
127                  break
128                }
129              }
130            }
131            b = "_" + o
132          }
133
134          function x(i, e) {
135            var w = "";
136            i += "=";
137            var s = i.length;
138            var d = location;
139            if (d.hash.indexOf(i) != -1) {
140              w = d.hash.substr(d.hash.indexOf(i) + s, 9999)
141            }
142            else {
143              if (d.search.indexOf(i) != -1) {
144                w = d.search.substr(d.search.indexOf(i) + s, 9999)
145              }
146              else {
147                return e
148              }
149            }
150            if (w.indexOf("&") != -1) {
151              w = w.substr(0, w.indexOf("&"))
152            }
153            return w
154          }
155
156          var k = ("cmp_proto" in h) ? h.cmp_proto : "https:";
157          if (k != "http:" && k != "https:") {
158            k = "https:"
159          }
160          var g = ("cmp_ref" in h) ? h.cmp_ref : location.href;
161          var j = u.createElement("script");
162          j.setAttribute("data-cmp-ab", "1");
163          var c = x("cmpdesign", "cmp_design" in h ? h.cmp_design : "");
164          var f = x("cmpregulationkey", "cmp_regulationkey" in h ? h.cmp_regulationkey : "");
165          var r = x("cmpgppkey", "cmp_gppkey" in h ? h.cmp_gppkey : "");
166          var n = x("cmpatt", "cmp_att" in h ? h.cmp_att : "");
167          j.src = k + "//" + h.cmp_host + "/delivery/cmp.php?" + ("cmp_id" in h && h.cmp_id > 0 ? "id=" + h.cmp_id : "") + ("cmp_cdid" in h ? "&cdid=" + h.cmp_cdid : "") + "&h=" + encodeURIComponent(g) + (c != "" ? "&cmpdesign=" + encodeURIComponent(c) : "") + (f != "" ? "&cmpregulationkey=" + encodeURIComponent(f) : "") + (r != "" ? "&cmpgppkey=" + encodeURIComponent(r) : "") + (n != "" ? "&cmpatt=" + encodeURIComponent(n) : "") + ("cmp_params" in h ? "&" + h.cmp_params : "") + (u.cookie.length > 0 ? "&__cmpfcc=1" : "") + "&l=" + o.toLowerCase() + "&o=" + (new Date()).getTime();
168          j.type = "text/javascript";
169          j.async = true;
170          if (u.currentScript && u.currentScript.parentElement) {
171            u.currentScript.parentElement.appendChild(j)
172          }
173          else {
174            if (u.body) {
175              u.body.appendChild(j)
176            }
177            else {
178              var t = v("body");
179              if (t.length == 0) {
180                t = v("div")
181              }
182              if (t.length == 0) {
183                t = v("span")
184              }
185              if (t.length == 0) {
186                t = v("ins")
187              }
188              if (t.length == 0) {
189                t = v("script")
190              }
191              if (t.length == 0) {
192                t = v("head")
193              }
194              if (t.length > 0) {
195                t[0].appendChild(j)
196              }
197            }
198          }
199          var m = "js";
200          var p = x("cmpdebugunminimized", "cmpdebugunminimized" in h ? h.cmpdebugunminimized : 0) > 0 ? "" : ".min";
201          var a = x("cmpdebugcoverage", "cmp_debugcoverage" in h ? h.cmp_debugcoverage : "");
202          if (a == "1") {
203            m = "instrumented";
204            p = ""
205          }
206          var j = u.createElement("script");
207          j.src = k + "//" + h.cmp_cdn + "/delivery/" + m + "/cmp" + b + p + ".js";
208          j.type = "text/javascript";
209          j.setAttribute("data-cmp-ab", "1");
210          j.async = true;
211          if (u.currentScript && u.currentScript.parentElement) {
212            u.currentScript.parentElement.appendChild(j)
213          }
214          else {
215            if (u.body) {
216              u.body.appendChild(j)
217            }
218            else {
219              var t = v("body");
220              if (t.length == 0) {
221                t = v("div")
222              }
223              if (t.length == 0) {
224                t = v("span")
225              }
226              if (t.length == 0) {
227                t = v("ins")
228              }
229              if (t.length == 0) {
230                t = v("script")
231              }
232              if (t.length == 0) {
233                t = v("head")
234              }
235              if (t.length > 0) {
236                t[0].appendChild(j)
237              }
238            }
239          }
240        })();
241        window.cmp_addFrame = function (b) {
242          if (!window.frames[b]) {
243            if (document.body) {
244              var a = document.createElement("iframe");
245              a.style.cssText = "display:none";
246              if ("cmp_cdn" in window && "cmp_ultrablocking" in window && window.cmp_ultrablocking > 0) {
247                a.src = "//" + window.cmp_cdn + "/delivery/empty.html"
248              }
249              a.name = b;
250              document.body.appendChild(a)
251            }
252            else {
253              window.setTimeout(window.cmp_addFrame, 10, b)
254            }
255          }
256        };
257        window.cmp_rc = function (h) {
258          var b = document.cookie;
259          var f = "";
260          var d = 0;
261          while (b != "" && d < 100) {
262            d++;
263            while (b.substr(0, 1) == " ") {
264              b = b.substr(1, b.length)
265            }
266            var g = b.substring(0, b.indexOf("="));
267            if (b.indexOf(";") != -1) {
268              var c = b.substring(b.indexOf("=") + 1, b.indexOf(";"))
269            }
270            else {
271              var c = b.substr(b.indexOf("=") + 1, b.length)
272            }
273            if (h == g) {
274              f = c
275            }
276            var e = b.indexOf(";") + 1;
277            if (e == 0) {
278              e = b.length
279            }
280            b = b.substring(e, b.length)
281          }
282          return (f)
283        };
284        window.cmp_stub = function () {
285          var a = arguments;
286          __cmp.a = __cmp.a || [];
287          if (!a.length) {
288            return __cmp.a
289          }
290          else {
291            if (a[0] === "ping") {
292              if (a[1] === 2) {
293                a[2]({
294                  gdprApplies: gdprAppliesGlobally,
295                  cmpLoaded: false,
296                  cmpStatus: "stub",
297                  displayStatus: "hidden",
298                  apiVersion: "2.0",
299                  cmpId: 31
300                }, true)
301              }
302              else {
303                a[2](false, true)
304              }
305            }
306            else {
307              if (a[0] === "getUSPData") {
308                a[2]({version: 1, uspString: window.cmp_rc("")}, true)
309              }
310              else {
311                if (a[0] === "getTCData") {
312                  __cmp.a.push([].slice.apply(a))
313                }
314                else {
315                  if (a[0] === "addEventListener" || a[0] === "removeEventListener") {
316                    __cmp.a.push([].slice.apply(a))
317                  }
318                  else {
319                    if (a.length == 4 && a[3] === false) {
320                      a[2]({}, false)
321                    }
322                    else {
323                      __cmp.a.push([].slice.apply(a))
324                    }
325                  }
326                }
327              }
328            }
329          }
330        };
331        window.cmp_gpp_ping = function () {
332          return {
333            gppVersion: "1.0",
334            cmpStatus: "stub",
335            cmpDisplayStatus: "hidden",
336            supportedAPIs: ["tcfca", "usnat", "usca", "usva", "usco", "usut", "usct"],
337            cmpId: 31
338          }
339        };
340        window.cmp_gppstub = function () {
341          var a = arguments;
342          __gpp.q = __gpp.q || [];
343          if (!a.length) {
344            return __gpp.q
345          }
346          var g = a[0];
347          var f = a.length > 1 ? a[1] : null;
348          var e = a.length > 2 ? a[2] : null;
349          if (g === "ping") {
350            return window.cmp_gpp_ping()
351          }
352          else {
353            if (g === "addEventListener") {
354              __gpp.e = __gpp.e || [];
355              if (!("lastId" in __gpp)) {
356                __gpp.lastId = 0
357              }
358              __gpp.lastId++;
359              var c = __gpp.lastId;
360              __gpp.e.push({id: c, callback: f});
361              return {eventName: "listenerRegistered", listenerId: c, data: true, pingData: window.cmp_gpp_ping()}
362            }
363            else {
364              if (g === "removeEventListener") {
365                var h = false;
366                __gpp.e = __gpp.e || [];
367                for (var d = 0; d < __gpp.e.length; d++) {
368                  if (__gpp.e[d].id == e) {
369                    __gpp.e[d].splice(d, 1);
370                    h = true;
371                    break
372                  }
373                }
374                return {eventName: "listenerRemoved", listenerId: e, data: h, pingData: window.cmp_gpp_ping()}
375              }
376              else {
377                if (g === "getGPPData") {
378                  return {
379                    sectionId: 3,
380                    gppVersion: 1,
381                    sectionList: [],
382                    applicableSections: [0],
383                    gppString: "",
384                    pingData: window.cmp_gpp_ping()
385                  }
386                }
387                else {
388                  if (g === "hasSection" || g === "getSection" || g === "getField") {
389                    return null
390                  }
391                  else {
392                    __gpp.q.push([].slice.apply(a))
393                  }
394                }
395              }
396            }
397          }
398        };
399        window.cmp_msghandler = function (d) {
400          var a = typeof d.data === "string";
401          try {
402            var c = a ? JSON.parse(d.data) : d.data
403          }
404          catch (f) {
405            var c = null
406          }
407          if (typeof (c) === "object" && c !== null && "__cmpCall" in c) {
408            var b = c.__cmpCall;
409            window.__cmp(b.command, b.parameter, function (h, g) {
410              var e = {__cmpReturn: {returnValue: h, success: g, callId: b.callId}};
411              d.source.postMessage(a ? JSON.stringify(e) : e, "*")
412            })
413          }
414          if (typeof (c) === "object" && c !== null && "__uspapiCall" in c) {
415            var b = c.__uspapiCall;
416            window.__uspapi(b.command, b.version, function (h, g) {
417              var e = {__uspapiReturn: {returnValue: h, success: g, callId: b.callId}};
418              d.source.postMessage(a ? JSON.stringify(e) : e, "*")
419            })
420          }
421          if (typeof (c) === "object" && c !== null && "__tcfapiCall" in c) {
422            var b = c.__tcfapiCall;
423            window.__tcfapi(b.command, b.version, function (h, g) {
424              var e = {__tcfapiReturn: {returnValue: h, success: g, callId: b.callId}};
425              d.source.postMessage(a ? JSON.stringify(e) : e, "*")
426            }, b.parameter)
427          }
428          if (typeof (c) === "object" && c !== null && "__gppCall" in c) {
429            var b = c.__gppCall;
430            window.__gpp(b.command, function (h, g) {
431              var e = {__gppReturn: {returnValue: h, success: g, callId: b.callId}};
432              d.source.postMessage(a ? JSON.stringify(e) : e, "*")
433            }, "parameter" in b ? b.parameter : null, "version" in b ? b.version : 1)
434          }
435        };
436        window.cmp_setStub = function (a) {
437          if (!(a in window) || (typeof (window[a]) !== "function" && typeof (window[a]) !== "object" && (typeof (window[a]) === "undefined" || window[a] !== null))) {
438            window[a] = window.cmp_stub;
439            window[a].msgHandler = window.cmp_msghandler;
440            window.addEventListener("message", window.cmp_msghandler, false)
441          }
442        };
443        window.cmp_setGppStub = function (a) {
444          if (!(a in window) || (typeof (window[a]) !== "function" && typeof (window[a]) !== "object" && (typeof (window[a]) === "undefined" || window[a] !== null))) {
445            window[a] = window.cmp_gppstub;
446            window[a].msgHandler = window.cmp_msghandler;
447            window.addEventListener("message", window.cmp_msghandler, false)
448          }
449        };
450        window.cmp_addFrame("__cmpLocator");
451        if (!("cmp_disableusp" in window) || !window.cmp_disableusp) {
452          window.cmp_addFrame("__uspapiLocator")
453        }
454        if (!("cmp_disabletcf" in window) || !window.cmp_disabletcf) {
455          window.cmp_addFrame("__tcfapiLocator")
456        }
457        if (!("cmp_disablegpp" in window) || !window.cmp_disablegpp) {
458          window.cmp_addFrame("__gppLocator")
459        }
460        window.cmp_setStub("__cmp");
461        if (!("cmp_disabletcf" in window) || !window.cmp_disabletcf) {
462          window.cmp_setStub("__tcfapi")
463        }
464        if (!("cmp_disableusp" in window) || !window.cmp_disableusp) {
465          window.cmp_setStub("__uspapi")
466        }
467        if (!("cmp_disablegpp" in window) || !window.cmp_disablegpp) {
468          window.cmp_setGppStub("__gpp")
469        }
470        ;</script>
470
471    <link rel="preconnect" href="https://sso.onetz.de">
472  <link rel="dns-prefetch" href="https://sso.onetz.de">
473  <link rel="preconnect" href="https://matomo.oberpfalzmedien.de">
474  <link rel="dns-prefetch" href="https://matomo.oberpfalzmedien.de">
475  <link rel="preconnect" href="https://media.onetz.de">
476  <link rel="dns-prefetch" href="https://media.onetz.de">
477  <!-- content from custom file - live -->
478    <link rel="preconnect" href="https://piano-connector.onetz.de"><link rel="dns-prefetch" href="https://piano-connector.onetz.de">
479    <link rel="dns-prefetch" href="https://www.npttech.com">
480    <link rel="preconnect" href="https://api-esp.piano.io"><link rel="dns-prefetch" href="https://api-esp.piano.io">
481    <link rel="preconnect" href="https://cdn.tinypass.com"><link rel="dns-prefetch" href="https://cdn.tinypass.com">
482    <link rel="preconnect" href="https://buy.tinypass.com"><link rel="dns-prefetch" href="https://buy.tinypass.com">
483    <link rel="dns-prefetch" href="https://cdnjs.cloudflare.com">
484    <link rel="dns-prefetch" href="https://cdn.cxense.com">
485    <link rel="dns-prefetch" href="https://api.cxense.com">
486    <link rel="dns-prefetch" href="https://api-v3.tinypass.com">
487    <link rel="dns-prefetch" href="https://comcluster.cxense.com">
488
489    
489<script> document.cookie = "__adblocker=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; var setNptTechAdblockerCookie = function(adblocker) { var d = new Date(); d.setTime(d.getTime() + 60 * 5 * 1000); document.cookie = "__adblocker=" + (adblocker ? "true" : "false") + "; expires=" + d.toUTCString() + "; path=/"; };</script>
489
490    
490<script async="true" src="//www.npttech.com/advertising.js" onerror="setNptTechAdblockerCookie(true);"></script>
490
491    
492    
492<script>
493      let pianoCallback = function() {
494        console.log("+++ Piano onload handler");
495        tp = window.tp || [];
496	//window.PianoESPConfig = {id: 83};
497	window.PianoESPConfig = {
498          hashId: "E715F212-84C0-4C99-AE1A-4CD98A9D31E9"
499	}
500
501        let head = document.head;
502        let script = document.createElement('script');
503        script.type = 'text/javascript';
504        script.src = "https://piano-connector.onetz.de/getScript";
505        script.async = true;
506        head.appendChild(script);
507      };
508
509      tp = window["tp"] || [];
510      tp.push(["setAid", 'CTNhWV49vr']);
511      tp.push(["setCxenseSiteId", "1139738195517256185"]);
512      tp.push(["setMaxCookieExpirationInDays", 14]);
513      tp.push(["setEndpoint", 'https://buy.tinypass.com/api/v3']);
514      tp.push(["setUseTinypassAccounts", false]);
515      tp.push(["setUsePianoIdUserProvider", false]);
516      tp.push(["setContentCreated", "2026-09-18T16:55:27"]);
517tp.push(["setContentAuthor", "Redaktion ONETZ"]);
518tp.push(["setContentSection", "Oberpfalz"]);
519tp.push(["setContentIsNative", "false"]);
520tp.push(["setTags", ["goodvibesonetz","Werbefrei","Foto","Artikelkategorie C","Bilder_als_Galerie","Artikel_immer_frei","Newsblog"]]);
521tp.push(["setCustomVariable", "inNewsApp", "false"]);
522tp.push(["setCustomVariable", "destPath", "node\/5481091"]);
523tp.push(["setCustomVariable", "Ort", "Deutschland und die Welt"]);
524tp.push(["setDontScrollTopModal", true]);
525
526          </script>
526
527    
527<script src="//cdn.tinypass.com/api/tinypass.min.js" async onload="pianoCallback()"></script>
527
528<!-- END: content from custom file - live -->
529        
529<script type="text/plain" class="cmplazyload" data-cmp-vendor="s905">
vendor: 328 bytes, lines 529-530
529
530    (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
530GTM-KW6RRB2
vendor: 3 bytes, line 530
530');
530</script>
530
531    <title>Good News: Einfach gute Nachrichten | Onetz</title>
532  <link rel="preload" href="/sites/all/themes/dnt_onet22/dist/fonts/Open_Sans_400.woff2" as="font" type="font/woff2" crossorigin>
533  <link rel="preload" href="/sites/all/themes/dnt_onet22/dist/fonts/Open_Sans_700.woff2" as="font" type="font/woff2" crossorigin>
534  
535<meta name="viewport" content="width=device-width, initial-scale=1.0" />
536<link rel="shortcut icon" href="/sites/all/themes/dnt_onet22/favicon.ico" type="image/x-icon" />
537<meta property="og:title" content="Good News: Einfach gute Nachrichten" />
538<meta name="description" content="Es gibt sie noch, die guten Nachrichten. Weil diese in der Informationsflut zu Krisen, Kriegen und Katastrophen aber untergehen, bieten wir in unserem Ticker nur positive Nachrichten." />
539<meta property="og:description" content="Es gibt sie noch, die guten Nachrichten. Weil diese in der Informationsflut zu Krisen, Kriegen und Katastrophen aber untergehen, bieten wir in unserem Ticker nur positive Nachrichten." />
540<meta name="keywords" content="Deutschland und die Welt,goodvibesonetz" />
541<meta property="og:image" content="https://www.onetz.de/f/ic/og/articlemedia/2026/09/16/d606c09a-9416-44c6-9227-a9feb8e09e48.jpg" />
542<meta property="og:type" content="article" />
543<link rel="canonical" href="https://www.onetz.de/oberpfalz/deutschland-welt/good-news-einfach-gute-nachrichten-id5481091.html" />
544<meta property="og:url" content="https://www.onetz.de/oberpfalz/deutschland-welt/good-news-einfach-gute-nachrichten-id5481091.html" />
545<meta name="revisit-after" content="1 day" />
546<meta name="robots" content="index, follow, noarchive, max-image-preview:large" />
547  <meta name="format-detection" content="telephone=no"/>
548  <meta name="p:domain_verify" content="a33e85b39b0429eab7efcf667957275a"/>
549  <meta name="cXenseParse:leb-user_needs" content="UpdateMe" /><meta name="cXenseParse:location" content="Deutschland und die Welt" /><meta name="pubdate" content="2026-09-18T16:55:27+02:00" /><meta name="cXenseParse:articleid" content="5481091" /><meta name="cXenseParse:publishtime" content="2026-09-18T16:55:27+02:00" /><meta name="cXenseParse:pageclass" content="article" /><meta property="article:modified_time" content="2026-09-18T16:55:53+02:00" />  
549<script type="application/ld+json">{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsMediaOrganization","@id":"https:\/\/www.onetz.de\/#organization","name":"Oberpfalz Medien","url":"https:\/\/www.oberpfalzmedien.de\/","foundingDate":"1946-05-31","logo":{"@type":"ImageObject","url":"https:\/\/www.onetz.de\/sites\/all\/themes\/dnt_onet\/images\/onetz_logo.png","width":218,"height":60},"sameAs":["https:\/\/www.facebook.com\/onetz.de\/","https:\/\/x.com\/onetz_de\/","https:\/\/www.instagram.com\/onetz.de\/","https:\/\/www.youtube.com\/user\/Oberpfalznetz"],"subOrganization":[{"@type":"Organization","@id":"https:\/\/zeitung.onetz.de\/","name":"Onetz Epaper"},{"@type":"Organization","@id":"https:\/\/trauer.onetz.de\/","name":"Onetz Traueranzeigen"}]},{"@type":"WebSite","@id":"https:\/\/www.onetz.de\/#website","name":"Onetz","url":"https:\/\/www.onetz.de\/","publisher":{"@id":"https:\/\/www.onetz.de\/#organization"},"inLanguage":"de-DE"},{"@type":"BreadcrumbList","@id":"https:\/\/www.onetz.de\/oberpfalz\/deutschland-welt\/good-news-einfach-gute-nachrichten-id5481091.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":0,"item":{"@id":"https:\/\/www.onetz.de\/","name":"Startseite"}},{"@type":"ListItem","position":1,"item":{"@id":"https:\/\/www.onetz.de\/oberpfalz","name":"Oberpfalz"}},{"@type":"ListItem","position":2,"item":{"@id":"https:\/\/www.onetz.de\/oberpfalz\/deutschland-welt\/good-news-einfach-gute-nachrichten-id5481091.html","name":"Good News: Einfach gute Nachrichten"}}]},{"@type":"WebPage","@id":"https:\/\/www.onetz.de\/oberpfalz\/deutschland-welt\/good-news-einfach-gute-nachrichten-id5481091.html#webpage","url":"https:\/\/www.onetz.de\/oberpfalz\/deutschland-welt\/good-news-einfach-gute-nachrichten-id5481091.html","name":"Good News: Einfach gute Nachrichten | Onetz","isPartOf":"https:\/\/www.onetz.de\/#website","breadcrumb":{"@id":"https:\/\/www.onetz.de\/oberpfalz\/deutschland-welt\/good-news-einfach-gute-nachrichten-id5481091.html#breadcrumb"},"publisher":{"@id":"https:\/\/www.onetz.de\/#organization"},"inLanguage":"de-DE","about":{"@id":"https:\/\/www.onetz.de\/oberpfalz\/deutschland-welt\/good-news-einfach-gute-nachrichten-id5481091.html#article"},"primaryImageOfPage":{"@id":"https:\/\/www.onetz.de\/oberpfalz\/deutschland-welt\/good-news-einfach-gute-nachrichten-id5481091.html#primaryimage"}},{"@type":"Article","@id":"https:\/\/www.onetz.de\/oberpfalz\/deutschland-welt\/good-news-einfach-gute-nachrichten-id5481091.html#article","headline":"Good News: Einfach gute Nachrichten","datePublished":"2026-09-18T16:55:27+02:00","dateModified":"2026-09-18T16:55:53+02:00","publisher":{"@id":"https:\/\/www.onetz.de\/#organization"},"mainEntityOfPage":{"@id":"https:\/\/www.onetz.de\/oberpfalz\/deutschland-welt\/good-news-einfach-gute-nachrichten-id5481091.html#webpage"},"speakable":{"@type":"SpeakableSpecification","cssSelector":["#page h1"]},"inLanguage":"de-DE","description":"Es gibt sie noch, die guten Nachrichten. Weil diese in der Informationsflut  \nzu Krisen, Kriegen und Katastrophen aber untergehen, bieten wir in unserem  \nTicker nur positive Nachrichten.\n","keywords":"goodvibesonetz","image":[{"@type":"ImageObject","@id":"https:\/\/www.onetz.de\/oberpfalz\/deutschland-welt\/good-news-einfach-gute-nachrichten-id5481091.html#primaryimage","url":"https:\/\/www.onetz.de\/f\/ic\/og\/articlemedia\/2026\/09\/16\/d606c09a-9416-44c6-9227-a9feb8e09e48.jpg","width":1280,"he
549ight":720,"caption":"Weil gute Nachrichten in der Informationsflut oft untergehen, bieten wir in unserem Ticker nur positive Nachrichten.","copyrightHolder":{"@type":"Person","name":"|Bild: Kiattisak - stock.adobe.com"}},{"@type":"ImageObject","url":"https:\/\/www.onetz.de\/f\/ic\/og-ft\/articlemedia\/2026\/09\/16\/d606c09a-9416-44c6-9227-a9feb8e09e48.jpg","width":1280,"height":960,"caption":"Weil gute Nachrichten in der Informationsflut oft untergehen, bieten wir in unserem Ticker nur positive Nachrichten.","copyrightHolder":{"@type":"Person","name":"|Bild: Kiattisak - stock.adobe.com"}},{"@type":"ImageObject","url":"https:\/\/www.onetz.de\/f\/ic\/og-sq\/articlemedia\/2026\/09\/16\/d606c09a-9416-44c6-9227-a9feb8e09e48.jpg","width":1200,"height":1200,"caption":"Weil gute Nachrichten in der Informationsflut oft untergehen, bieten wir in unserem Ticker nur positive Nachrichten.","copyrightHolder":{"@type":"Person","name":"|Bild: Kiattisak - stock.adobe.com"}}],"author":[{"@type":"Person","name":"Redaktion ONETZ","url":"https:\/\/www.onetz.de\/autoren\/redaktion-onetz-id2884544.html"}],"isAccessibleForFree":"true"}]}</script>
549  <link type="text/css" rel="stylesheet" media="all" href="/sites/default/files/css/css_f5c416940789b425c2f831281258f3b9.css" />
550<link type="text/css" rel="stylesheet" media="print" href="/sites/default/files/css/css_53fe562dc91931f00c2b171f18142621.css" />
551<link type="text/css" rel="stylesheet" media="all" href="/sites/default/files/ctools/css/798c0d94afe0ffe3090732fe775be78b.css?G" />
552<link type="text/css" rel="stylesheet" media="all" href="/sites/default/files/ctools/css/0e514fda0fde2f027c2ca630510ef11d.css?G" />
553<link type="text/css" rel="stylesheet" media="all" href="/sites/default/files/ctools/css/01f4950a0aeef3f3c05756a88ca9c1a8.css?G" />
554<link type="text/css" rel="stylesheet" media="all" href="/sites/default/files/ctools/css/416f18035ea0db50d547a850551b48e9.css?G" />
555  
555<script type="text/javascript" src="/sites/default/files/js/js_315865cf016fa6b9e9af81e9ded5b90f.jsmin.js"></script>
vendor: 1 bytes, line 555
555
556<script type="text/javascript">
557<!--//--><![CDATA[//><!--
558jQuery.extend(Drupal.settings, {"basePath":"\/","dntAdSettings":{"insertAdEvery":5,"commonAds":true},"dnt":{"staticnav_user_authenticated_path":"mein_onetzplus","staticnav_user_authenticated_label":"Profil","cmp2":true,"cmp2_previewsize":"300x300","cmp2_previewbgcolor":"#eaebee"},"hasso":{"url":"https:\/\/sso.onetz.de","clientid":"nativemedia","althreshold":"15","autologout_enabled":true,"udsync_enabled":true},"mimas":{"slickLazyload":"ondemand"},"dntAds":{"inlineminchar":500,"inlinemincharstart":250,"glomexContextualPlayerId":"4059a11hkc4r38zh","ariahidden":true},"CToolsUrlIsAjaxTrusted":{"\/deutschland-welt\/drogenschmuggel-koerper-festnahme-grenze-schirnding-id5199047.html":true,"\/oberpfalz\/deutschland-welt\/good-news-einfach-gute-nachrichten-id5481091.html":true}});
559//--><!]]>
560</script>
560
561  <!--[if lt IE 9]>
562    
562<script src="/sites/all/themes/mimas_sparkle/js/html5shiv.min.js"></script>
562
563    
563<script src="/sites/all/themes/mimas_sparkle/js/eCSStender.js"></script>
563
564  <![endif]-->
565    
565<script src="/sites/all/themes/dnt_onet22/dist/js/theme.js?v=17" defer></script>
565
566  
566<script type="text/javascript" src="/sites/default/files/js/js_874591d04e6fccd425bc1d693caac72b.js"></script>
566
567  
567<script id="trfAdSetup">// ads are disabled for this page</script>
567<script>var dntAdDocId=5481091;var dntAdInlineStartPos=0;</script>
567      
567<script>
568      (function (_config) {
569      var script = document.createElement("script");
570      script.src = "https://tag.aticdn.net/piano-analytics.js";
571      script.async = true;
572      script.crossorigin = "anonymous";
573      script.dataset.config = JSON.stringify(_config);
574      document.head.appendChild(script);
575    })({
576      site: 646196,
577      collectDomain: "nkndtjf.pa-cd.com",
578      consentDefaultMode: "opt-in",
579    });
580  </script>
580
581        
581<script type="text/plain" class="cmplazyload" data-cmp-vendor="s1016">
582    (function()
583    { var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = 'https://d.nativendo.de/cds/delivery/init'; var sc = document.getElementsByTagName('script')[0]; sc.parentNode.insertBefore(s, sc); }
584  )();
585  </script>
585
586        
586<script type="text/plain" class="cmplazyload" data-cmp-vendor="c34041" async id="ebx" data-cmp-src="//applets.ebxcdn.com/ebx.js" data-applet-id="hmhgxuvr"></script>
586
587          
587<script type='text/plain' class="cmplazyload" data-cmp-vendor="c46195" async data-cmp-src='https://d.smartico.one/get/hs/9bd1f4cd69ed3273e8460e081bf17bb504122282'></script>
587
588  
588<script type='text/plain' class="cmplazyload" data-cmp-vendor="c46195" async data-cmp-src='https://d.smartico.one/get/hs/f6511172f596fd2babb7eede57cfcbf993f91b80'></script>
588
589  <link rel='stylesheet' class="cmplazyload" type='text/css' data-cmp-vendor="c46195" data-cmp-href='https://d.smartico.one/get/hs/fbe34af0a453491a0a185231e4b352b39c749648' />
590      <!-- Extern HeadData -->
591</head>
592<body class="page not-front not-logged-in node-type-story no-sidebars i18n-de page-oberpfalz-deutschland-welt-good-news-einfach-gute-nachrichten-id5481091html section-oberpfalz page-panels dnt_onet22 not-admin-page no-premium-access nav-mobile">
593  <noscript><iframe scr="about:blank" class="cmplazyload" data-cmp-vendor="s905" data-cmp-src="https://www.googletagmanager.com/ns.html?id=GTM-KW6RRB2" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
594<!--atools -->
595  
595<script type="text/plain" async class="cmplazyload" data-cmp-vendor="c22017" data-cmp-src="https://www.getback.ch/app/tracking/HIVu3"></script>
595
596  
596<script type="text/plain" async class="cmplazyload" data-cmp-vendor="s1474" data-cmp-src="https://static.cleverpush.com/channel/loader/W98h9raGm8cf9R5Nf.js"></script>
596
597
598  
599    <div id="skip-link"><ul>
600        <!--        --><!--            <li><em><a href="#main-menu">--><!-- &darr;</a></em></li>-->
601<!--        --><!--            <li><em><a href="#navigation">--><!-- &darr;</a></em></li>-->
602<!--        -->        <li><em><a href="#content-area">Zum Inhalt springen &darr;</a></em></li>
603    </ul></div>
604
605  <div id="page-wrapper">
606    <div class="ad ad-left"><div class="region region-ad-left">
607  <section id="block-block-7" class="block block-block first last region-odd odd region-count-1 count-3">
608  
609  <div class="content">
610    <div id="traffective-ad-Skyscraper_2" style="display: none;" class="Skyscraper_2" aria-hidden="true"></div>  </div>
611
612  </section> <!-- /.block -->
613</div> <!-- /.region -->
614</div>	<div class="ad ad-right"><div class="region region-ad-right">
615  <section id="block-block-5" class="block block-block first last region-odd even region-count-1 count-4">
616  
617  <div class="content">
618    <div class="WPSkyscraper" id="traffective-ad-WPSkyscraper" style="display: none;" aria-hidden="true">&nbsp;</div>
619
620<div class="Skyscraper" id="traffective-ad-Skyscraper" style="display: none;" aria-hidden="true">&nbsp;</div>
621  </div>
622
623  </section> <!-- /.block -->
624</div> <!-- /.region -->
625</div>	<div class="ad ad-top"><div class="region region-ad-top">
626  <section id="block-block-4" class="block block-block first region-odd odd region-count-1 count-1">
627  
628  <div class="content">
629    <div class="WPSuperbanner" id="traffective-ad-WPSuperbanner" style="display: none;" aria-hidden="true">&nbsp;</div>
630  </div>
631
632  </section> <!-- /.block -->
633<section id="block-block-8" class="block block-block last region-even even region-count-2 count-2">
634  
635  <div class="content">
636     <div id="nl_signup_header"></div>   </div>
637
638  </section> <!-- /.block -->
639</div> <!-- /.region -->
640</div>    <div id="page">
641
642    <div class="region region-header-top">
643  <section id="block-menu-menu-servicelinks" class="block block-menu first last region-odd odd region-count-1 count-5">
644  
645  <div class="content">
646    <ul class="menu"><li class="leaf e-paper first"><a href="https://zeitung.onetz.de/" target="_blank">E-Paper</a></li>
647<li class="leaf anzeigen"><a href="/anzeigen-uebersicht">Anzeigen</a></li>
648<li class="leaf trauer"><a href="https://trauer.onetz.de?utm_source=onetz&amp;utm_medium=servicemenue" target="_blank">Trauer</a></li>
649<li class="leaf newsletter"><a href="https://www.onetz.de/newsletter">Newsletter</a></li>
650<li class="leaf podcasts"><a href="https://www.onetz.de/podcast/">Podcasts</a></li>
651<li class="leaf abo-service"><a href="/abo-service">Abo &amp; Service</a></li>
652<li class="leaf onetzplus-abonnieren last"><a href="https://www.onetz.de/plus">OnetzPlus abonnieren</a></li>
653</ul>  </div>
654
655  </section> <!-- /.block -->
656</div> <!-- /.region -->
657
658        <header id="header"><div class="section clearfix">
659
660    
661    <div class="region region-header">
662  <section id="block-block-3" class="block block-block first region-odd even region-count-1 count-6">
663  
664  <div class="content">
665     <div id="logo"><a href="/" id="front-header"><span class="txt">onetz</span></a></div><div id="abo_button"><a href="/plus"><span class="txt">abo</span></a></div>   </div>
666
667  </section> <!-- /.block -->
668<section id="block-dnt_custom_content_displays-2" class="block block-dnt_custom_content_displays region-even odd region-count-2 count-7">
669  
670  <div class="content">
671    <form action="/oberpfalz/deutschland-welt/good-news-einfach-gute-nachrichten-id5481091.html"  accept-charset="UTF-8" method="post" id="dnt-custom-content-displays-cntloc-search-form">
672<div><div class="container-inline"><div class="form-item" id="edit-cntloc-wrapper">
673 <label for="edit-cntloc">Ort / Thema: </label>
674 <input type="text" maxlength="128" name="cntloc" id="edit-cntloc" size="40" value="" class="form-text form-autocomplete" />
675</div>
676<input class="autocomplete" type="hidden" id="edit-cntloc-autocomplete" value="https://www.onetz.de/?q=dnt/search/cntloc/ac" disabled="disabled" /><input type="submit" name="op" id="edit-submit" value="Suche"  class="form-submit" />
677<input type="hidden" name="form_build_id" id="form-BzI64e7JYxhG_Qg4febeBaf441GN7daQW4p9uvZZIfg" value="form-BzI64e7JYxhG_Qg4febeBaf441GN7daQW4p9uvZZIfg"  />
678<input type="hidden" name="form_id" id="edit-dnt-custom-content-displays-cntloc-search-form" value="dnt_custom_content_displays_cntloc_search_form"  />
679<script>
680            jQuery("#dnt-custom-content-displays-cntloc-search-form .form-submit").replaceWith("<button type=\"submit\" name=\"op\" id=\"edit-submit-cntloc\" class=\"form-submit\" title=\"Suche\"><span>Suche</span></button>");
681            jQuery("#dnt-custom-content-displays-cntloc-search-form #edit-cntloc").attr("placeholder", "Ort / Thema");
682            </script>
682</div>
683</div></form>
684  </div>
685
686  </section> <!-- /.block -->
687<section id="block-dnt_custom_content_displays-3" class="block block-dnt_custom_content_displays last region-odd even region-count-3 count-8">
688  
689  <div class="content">
690    <ul class="static-nav">
691	<li class="navbar-element navbar-element-search"><a class="search-button" href="#" id="mobile-search"><span class="txt">Suchen</span></a></li><li class="navbar-element navbar-element-user"><a class="sl-button" href="#"><span class="txt">Login</span></a></li><li class="navbar-element navbar-element-hamburger"><button class="hamburger hamburger--squeeze" type="button" aria-label="Menü">
692    <span class="hamburger-box">
693        <span class="hamburger-inner">            
694        </span>
695    </span>
696</button><span class="txt">Menü</span></li>
697</ul>  </div>
698
699  </section> <!-- /.block -->
700</div> <!-- /.region -->
701
702    </div></header>
703
704    <hr />
705    
706    <div id="main-wrapper"><div id="main" class="clearfix with-navigation">
707
708      <div id="content" class="column"><div class="section">
709
710        
711        
712        <hr class="element-invisible">
713
714        
715        
716        
717        
718        
719        
720        <div id="content-area"><main>
721          <div class="panel-display panel-1col clear-block" >
722  <div class="panel-panel panel-col">
723    <div><div class="cnt-head-banner" aria-hidden="true"><div id="traffective-ad-Billboard" style="display: none;" class="Billboard childmargin" aria-hidden="true"></div></div><div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-node-content"  id="page-content-main" >
724  
725  
726  
727  <div class="pane-content">
728    
729    
730  <div class="field field-mimas-node-head-meta categories"><span id="cnt-id-main" data-mnid="5481091"></span>
731
732<a class="location" href="/oberpfalz/deutschland-welt">Deutschland und die Welt</a><div class="date">
73318.09.2026 - 16:55 Uhr</div>
734
735</div><div class="field field-mimas-node-title node-title"><h1 class="title">Good News: Einfach gute Nachrichten</h1></div><div class="field field-teaser">
736    <div class="field-items">
737            <div class="field-item odd">
738                     
739<p>Es gibt sie noch, die guten Nachrichten. Weil diese in der Informationsflut zu Krisen, Kriegen und Katastrophen aber untergehen, bieten wir in unserem Ticker nur positive Nachrichten.</p>
740
741         </div>
742        </div>
743</div>
744<div class="field field-mimas-node-author"><div class="author">von <span class="name"><a href="/autoren/redaktion-onetz-id2884544.html">Redaktion ONETZ</a></span></div></div><div class="field field-mimas-primary-article-image article-detail-image"><div class="picture"><a href="/f/ic/ga-large/articlemedia/2026/09/16/d606c09a-9416-44c6-9227-a9feb8e09e48.jpg" class="ps-item" data-psg="1" data-size="960x640" data-caption='<div>Bild: Kiattisak - stock.adobe.com</div>Weil gute Nachrichten in der Informationsflut oft untergehen, bieten wir in unserem Ticker nur positive Nachrichten.'><picture><source srcset="https://www.onetz.de/f/ic/Detailed-s/articlemedia/2026/09/16/d606c09a-9416-44c6-9227-a9feb8e09e48.webp 410w, https://www.onetz.de/f/ic/Detailed/articlemedia/2026/09/16/d606c09a-9416-44c6-9227-a9feb8e09e48.webp 805w" type="image/webp" sizes="(min-width: 44.6875rem) 805px, 410px" /><img src="https://www.onetz.de/f/ic/Detailed/articlemedia/2026/09/16/d606c09a-9416-44c6-9227-a9feb8e09e48.jpg" alt="Weil gute Nachrichten in der Informationsflut oft untergehen, bieten wir in unserem Ticker nur positive Nachrichten. Bild: Kiattisak - stock.adobe.com" title="" width="805" height="453" class="img-responsive"/></picture></a><div class="caption">Weil gute Nachrichten in der Informationsflut oft untergehen, bieten wir in unserem Ticker nur positive Nachrichten.</div><div class="legal">Bild: Kiattisak - stock.adobe.com</div></div></div><div class="field field-dnt-story-register possible-cnt-inner piano_container_artikel_anfang"><!-- --></div><div class="field field-dnt-body-cmp field-body">
745<p>Obwohl negative Nachrichten häufig mehr Aufmerksamkeit bekommen, passieren jeden Tag großartige Dinge, die Hoffnung geben, Mut machen, motivieren und ein Lächeln sc
745henken. Wir sammeln auf dieser Seite die besten "Good News" und wichtigsten lösungsorientierten Nachrichten. Damit zeigen wir, was sonst oft untergeht: inspirierende Geschichten, erfreuliche Meldungen und positive Entwicklungen aus der Oberpfalz, Bayern, Deutschland und aus aller Welt. </p>
746
747<div class="mt-custom">
747<script async data-cmp-vendor="c30759" data-cmp-src="https://cdn.tickaroo.com/webng/embedjs/tik4.js" class="cmplazyload" type="text/plain"></script>
747
748<tickaroo-liveblog liveblogid="6a8ecee647ab5937ec9c340b" themeid="lct_61dd6d819e04ac3a7c8ba531" clientid="61dd6d819e04ac3a7c8ba534" data-cmp-vendor="c30759" data-cmp-preview="300x300" data-cmp-preview-bgcolor="#eaebee"></tickaroo-liveblog></div>
749 
750</div><div class="field field-dnt-premium-piano-footer"><div class="piano_container_artikel_ende"></div>
751</div><div class="field field-mimas-smb"><ul id="mimas-smb-items" class="mimas-smb-items__list">
752    <li class="mimas-smb-items__element mimas-smb-items__element--whatsapp"><a class="mimas-smb-items__link mimas-smb-items__link--whatsapp" data-service="whatsapp" href="whatsapp://send?text=Good%20News%3A%20Einfach%20gute%20Nachrichten%20https%3A%2F%2Fwww.onetz.de%2Foberpfalz%2Fdeutschland-welt%2Fgood-news-einfach-gute-nachrichten-id5481091.html%3Fmtm_campaign%3Dsmb-from%26mtm_kwd%3Dwhatsapp" title="Bei WhatsApp teilen" rel="nofollow noreferrer"><span class="mimas-smb-items__text">WhatsApp</span></a>
753</li>
754    <li class="mimas-smb-items__element mimas-smb-items__element--facebook"><a class="mimas-smb-items__link mimas-smb-items__link--facebook" data-service="facebook" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.onetz.de%2Foberpfalz%2Fdeutschland-welt%2Fgood-news-einfach-gute-nachrichten-id5481091.html%3Fmtm_campaign%3Dsmb-from%26mtm_kwd%3Dfacebook" title="Bei Facebook teilen" rel="nofollow noreferrer"><span class="mimas-smb-items__text">Facebook</span></a>
755</li>
756    <li class="mimas-smb-items__element mimas-smb-items__element--messenger"><a class="mimas-smb-items__link mimas-smb-items__link--messenger" data-service="messenger" href="fb-messenger://share/?link=https%3A%2F%2Fwww.onetz.de%2Foberpfalz%2Fdeutschland-welt%2Fgood-news-einfach-gute-nachrichten-id5481091.html%3Fmtm_campaign%3Dsmb-from%26mtm_kwd%3Dmessenger" title="Bei Messenger teilen" rel="nofollow noreferrer"><span class="mimas-smb-items__text">Messenger</span></a>
757</li>
758    <li class="mimas-smb-items__element mimas-smb-items__element--pinterest"><a class="mimas-smb-items__link mimas-smb-items__link--pinterest" data-service="pinterest" href="https://www.pinterest.com/pin/create/link/?url=https%3A%2F%2Fwww.onetz.de%2Foberpfalz%2Fdeutschland-welt%2Fgood-news-einfach-gute-nachrichten-id5481091.html%3Fmtm_campaign%3Dsmb-from%26mtm_kwd%3Dpinterest&media=https%3A%2F%2Fwww.onetz.de%2Ff%2Fic%2Fog%2Farticlemedia%2F2026%2F09%2F16%2Fd606c09a-9416-44c6-9227-a9feb8e09e48.jpg&description=Good%20News%3A%20Einfach%20gute%20Nachrichten" title="Bei Pinterest pinnen" rel="nofollow noreferrer"><span class="mimas-smb-items__text">Pinterest</span></a>
759</li>
760    <li class="mimas-smb-items__element mimas-smb-items__element--twitter"><a class="mimas-smb-items__link mimas-smb-items__link--twitter" data-service="twitter" href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.onetz.de%2Foberpfalz%2Fdeutschland-welt%2Fgood-news-einfach-gute-nachrichten-id5481091.html%3Fmtm_campaign%3Dsmb-from%26mtm_kwd%3Dtwitter&text=Good%20News%3A%20Einfach%20gute%20Nachrichten" title="Bei X (Twitter) teilen" rel="nofollow noreferrer"><span class="mimas-smb-items__text">X (Twitter)</span></a>
761</li>
762    <li class="mimas-smb-items__element mimas-smb-items__element--mail"><a class="mimas-smb-items__link mimas-smb-items__link--mail" data-service="mail" href="mailto:?subject=Good%20News%3A%20Einfach%20gute%20Nachrichten&body=https%3A%2F%2Fwww.onetz.de%2Foberpfalz%2Fdeutschland-welt%2Fgood-news-einfach-gute-nachrichten-id5481091.html%3Fmtm_campaign%3Dsmb-from%26mtm_kwd%3Dmail" title="Per E-Mail versenden" rel="nofollow noreferrer"><span class="mimas-smb-items__text">Mail</span></a>
763</li>
764    <li class="mimas-smb-items__element mimas-smb-items__element--print"><a class="mimas-smb-items__link mimas-smb-items__link--print" data-service="print" href="javascript:window.print();" title="Drucken"><span class="mimas-smb-items__text">Print</span></a>
765</li>
766</ul>
767<script>
768  const mimas_smbs_list = document.getElementById("mimas-smb-items");
769  console.log("PAQ loaded");
770  if (mimas_smbs_list) {
771    const mimas_smbs_links = mimas_smbs_list.querySelectorAll(":scope a");
772    if (mimas_smbs_links) {
773      mimas_smbs_links.forEach(function(element) {
774        element.addEventListener("click", function(e) {
775          if (typeof _paq !== "undefined") {
776            _paq.push(["trackEvent", "SMB Share to", element.dataset.service, window.location.pathname]);
777          }
778        })
779      })
780    }
781  }
782</script>
782
783</div>  </div>
784
785  
786  
787  </div>
788<div class="panel-region-separator"></div><div>
788<script>dnt_insert_article_banner_inline();</script>
788</div><div class="panel-region-separator"></div><div id="traffective-ad-OutOfPage" style="display: none;" class="OutOfPage childmargin" aria-hidden="true"></div><div class="panel-region-separator"></div><div id="traffective-ad-Billboard_2" style="display: none;" class="Billboard_2 childmargin" aria-hidden="true"></div><div class="panel-region-separator"></div> <div>
788<script>
789$('[data-mnid]').each(function () {
790	var curnid = $(this).addClass('mimas-dr-processed').attr('data-mnid');
791    var curelem = this;
792
793    $('[data-mnid="' + curnid + '"]').each(function () {
794        if (curelem != this && !$(this).hasClass('mimas-dr-processed')) {
795            this.remove(); 
796        }
797    });
798});
799
800$(".pane-custom-article-teaser-panel-pane-18:not(:has(.row))").remove();
801</script>
801</div>
802 <div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-dnt-traffective-banner"  >
803  
804  
805  
806  <div class="pane-content">
807    
808    <div id="traffective-ad-Parallax" style="display: none;" class="Parallax childmargin" aria-hidden="true"></div>  </div>
809
810  
811  
812  </div>
813<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-node-comment-form noheader"  >
814  
815            <div class="pane-title text-header h2">Kommentare</div>
816      
817  
818  <div class="pane-content">
819    
820    <p>Um Kommentare verfassen zu können, müssen Sie sich <a href="/user/login?destination=node%2F5481091%23comment-form" rel="nofollow">anmelden</a>.</p><p>Bitte beachten Sie unsere <a href="/agb-portal/" target="_blank">Nutzungsregeln</a>.</p>  </div>
821
822  
823  
824  </div>
825<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-node-comments noheader"  >
826  
827  
828  
829  <div class="pane-content">
830    
831    <div id="comments"></div>  </div>
832
833  
834  
835  </div>
836<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-node-terms field-terms noheader"  >
837  
838            <div class="pane-title text-header h2">Klicken Sie hier für mehr Artikel zum Thema:</div>
839      
840  
841  <div class="pane-content">
842    
843    <div class="item-list"><ul><li class="first last"><a href="/themen/goodvibesonetz" rel="tag" title="">goodvibesonetz</a></li>
844</ul></div>  </div>
845
846  
847  
848  </div>
849<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-dnt-traffective-banner"  >
850  
851  
852  
853  <div class="pane-content">
854    
855    <div id="traffective-ad-Billboard_3" style="display: none;" class="Billboard_3 childmargin" aria-hidden="true"></div>  </div>
856
857  
858  
859  </div>
860<div class="panel-region-separator"></div>
860<div class="panels_pane panel-pane pane-views-panes pane-custom-most-popular-panel-pane-1 fullwidth noheader"   data-upscore-zone="Good News: Einfach gute Nachrichten">
861  
862            <div class="pane-title text-header h2">Meistgelesene Artikel</div>
863      
864  
865  <div class="pane-content">
866    
867    <div class="views_view view view-custom-most-popular view-id-custom_most_popular view-display-id-panel_pane_1 mostpopular view-dom-id-1">
868  
869  
870  
871  
872      <div class="view-content">
873        <ul>
874    <li class="row first" data-mnid-dis="5510664" data-upscore-object-id="5510664">
875    
876  <div class="field field-dnt-primary-article-image-teaser picturewrapper"><a class="picture" href="/oberpfalz/kuemmersbruck/seltener-gast-garten-oleanderschwaermer-kuemmersbruck-entdeckt-id5510664.html"><picture><source srcset="https://www.onetz.de/f/ic/ts-s/articlemedia/2026/09/23/f79637ee-e883-4fc8-b8ea-c226b2a0d9ae.webp?1790263624 114w, https://www.onetz.de/f/ic/ts/articlemedia/2026/09/23/f79637ee-e883-4fc8-b8ea-c226b2a0d9ae.webp?1790263624 410w" type="image/webp" sizes="(min-width: 44.6875rem) 410px, 114px" /><img src="https://www.onetz.de/f/ic/ts/articlemedia/2026/09/23/f79637ee-e883-4fc8-b8ea-c226b2a0d9ae.jpg?1790263624" alt="Bild: Gisela Reindl
877Diese besonderen Raupen fand Gisela Reindl in ihrem Garten in Kümmersbruck." title="" width="410" height="231" loading="lazy" decoding="async" class="img-responsive"/></picture><picture class="mp-picture__picture--alternative"><source srcset="https://www.onetz.de/f/ic/ts-s-43/articlemedia/2026/09/23/f79637ee-e883-4fc8-b8ea-c226b2a0d9ae.webp?1790263624" type="image/webp" /><img src="https://www.onetz.de/f/ic/ts-s-43/articlemedia/2026/09/23/f79637ee-e883-4fc8-b8ea-c226b2a0d9ae.jpg?1790263624" alt="Bild: Gisela Reindl
878Diese besonderen Raupen fand Gisela Reindl in ihrem Garten in Kümmersbruck." title="" width="120" height="98" loading="lazy" decoding="async" class="img-responsive mp-picture__image--alternative"/></picture></a><div class="properties"><div class=" inner transparent"><span class="property plus" title=""><span class="label">OnetzPlus</span></span></div></div></div><div class="field field-dnt-node-head-meta-teaser meta"><span class="location">Kümmersbruck</span><span class="date">23.09.2026</span></div><div class="field field-dnt-teasser-title-pm field-title"><span class="h2"><a href="/oberpfalz/kuemmersbruck/seltener-gast-garten-oleanderschwaermer-kuemmersbruck-entdeckt-id5510664.html" data-upscore-url="" data-upscore-title="">Seltener Gast im Garten: Oleanderschwärmer in Kümmersbruck entdeckt</a></span></div><div class="field field-dnt-article-teasertext-teaser teaser"><a href="/oberpfalz/kuemmersbruck/seltener-gast-garten-oleanderschwaermer-kuemmersbruck-entdeckt-id5510664.html">„Um Gottes Willen, was ist denn das für ein Viech?“ Gemeint hat Gisela  
879Reindl zwei Oleanderschwärmer, die sich in ihrem Garten heimisch gemacht  
880haben. Warum das Insekt bei uns selten und besonders ist – nachgefragt bei  
881einem Experten.
882</a></div>    </li>
883      <li class="row" data-mnid-dis="5511335" data-upscore-object-id="5511335">
884    
885  <div class="field field-dnt-primary-article-image-teaser picturewrapper"><a class="picture" href="/oberpfalz/amberg/ambergerin-annika-mutzbauer-glaenzt-fernsehshow-gefragt-gejagd-id5511335.html"><picture><source srcset="https://www.onetz.de/f/ic/ts-s/articlemedia/2026/09/24/37a04de7-fc68-42ee-9125-a37319a0e30c.webp 114w, https://www.onetz.de/f/ic/ts/articlemedia/2026/09/24/37a04de7-fc68-42ee-9125-a37319a0e30c.webp 410w" type="image/webp" sizes="(min-width: 44.6875rem) 410px, 114px" /><img src="https://www.onetz.de/f/ic/ts/articlemedia/2026/09/24/37a04de7-fc68-42ee-9125-a37319a0e30c.jpg" alt="Bild: Uwe Ernst/ARD
886Annika Mutzbauer (rechts) aus Amberg stellte bei &quot;Gefragt - Gejagt&quot; ihr Wissen unter Beweis. Und das mit Erfolg." title="" width="410" height="231" loading="lazy" decoding="async" class="img-responsive"/></picture><picture class="mp-picture__picture--alternative"><source srcset="https://www.onetz.de/f/ic/ts-s-43/articlemedia/2026/09/24/37a04de7-fc68-42ee-9125-a37319a0e30c.webp" type="image/webp" /><img src="https://www.onetz.de/f/ic/ts-s-43/articlemedia/2026/09/24/37a04de7-fc68-42ee-9125-a37319a0e30c.jpg" alt="Bild: Uwe Ernst/ARD
887Annika Mutzbauer (rechts) aus Amberg stellte bei &quot;Gefragt - Gejagt&quot; ihr Wissen unter Beweis. Und das mit Erfolg." title="" width="120" height="98" loading="lazy" decoding="async" class="img-responsive mp-picture__image--alternative"/></picture></a><div class="properties"><div class=" inner transparent"><span class="property plus" title=""><span class="label">OnetzPlus</span></span></div></div></div><div class="field field-dnt-node-head-meta-teaser meta"><span class="location">Amberg</span><span class="date">24.09.2026</span></div><div class="field field-dnt-teasser-title-pm field-title"><span class="h2"><a href="/oberpfalz/amberg/ambergerin-annika-mutzbauer-glaenzt-fernsehshow-gefragt-gejagd-id5511335.html" data-upscore-url="" data-upscore-title="">Ambergerin Annika Mutzbauer glänzt bei Fernsehshow &quot;Gefragt – Gejagt&quot;</a></span></div><div class="field field-dnt-article-teasertext-teaser teaser"><a href="/oberpfalz/amberg/ambergerin-annika-mutzbauer-glaenzt-fernsehshow-gefragt-gejagd-id5511335.html">Vier Kandidaten, eine Jägerin und viele Fragen. Die 24-jährige Annika  
888Mutzbauer stellte sich der Herausforderung und nahm an einer Quizshow teil.  
889Am Dienstag wurde die Sendung in der ARD ausgestrahlt. So schlug sich die  
890Ambergerin.
891</a></div>    </li>
892      <li class="row" data-mnid-dis="5510551" data-upscore-object-id="5510551">
893    
894  <div class="field field-dnt-primary-article-image-teaser picturewrapper"><a class="picture" href="/oberpfalz/trausnitz/ramona-schloegl-philipp-meindl-sagen-selbstgebackene-hoc
894hzeitstorte-geldgeschenke-schokopudding-id5510551.html"><picture><source srcset="https://www.onetz.de/f/ic/ts-s/articlemedia/2026/09/23/609dabe3-3655-42c1-9b49-8d4f70fa936c.webp 114w, https://www.onetz.de/f/ic/ts/articlemedia/2026/09/23/609dabe3-3655-42c1-9b49-8d4f70fa936c.webp 410w" type="image/webp" sizes="(min-width: 44.6875rem) 410px, 114px" /><img src="https://www.onetz.de/f/ic/ts/articlemedia/2026/09/23/609dabe3-3655-42c1-9b49-8d4f70fa936c.jpg" alt="Bild: Nathalie Süß
895Ein schöner Hochzeitstag: Ramona Schlögl und Philipp Meindl haben geheiratet." title="" width="410" height="231" loading="lazy" decoding="async" class="img-responsive"/></picture><picture class="mp-picture__picture--alternative"><source srcset="https://www.onetz.de/f/ic/ts-s-43/articlemedia/2026/09/23/609dabe3-3655-42c1-9b49-8d4f70fa936c.webp" type="image/webp" /><img src="https://www.onetz.de/f/ic/ts-s-43/articlemedia/2026/09/23/609dabe3-3655-42c1-9b49-8d4f70fa936c.jpg" alt="Bild: Nathalie Süß
896Ein schöner Hochzeitstag: Ramona Schlögl und Philipp Meindl haben geheiratet." title="" width="120" height="98" loading="lazy" decoding="async" class="img-responsive mp-picture__image--alternative"/></picture></a><div class="properties"><div class=" inner transparent"><span class="property plus" title=""><span class="label">OnetzPlus</span></span></div></div></div><div class="field field-dnt-node-head-meta-teaser meta"><span class="location">Trausnitz</span><span class="date">23.09.2026</span></div><div class="field field-dnt-teasser-title-pm field-title"><span class="h2"><a href="/oberpfalz/trausnitz/ramona-schloegl-philipp-meindl-sagen-selbstgebackene-hochzeitstorte-geldgeschenke-schokopudding-id5510551.html" data-upscore-url="" data-upscore-title="">Ramona Schlögl und Philipp Meindl sagen Ja: Selbstgebackene Hochzeitstorte und Geldgeschenke im Schokopudding</a></span></div><div class="field field-dnt-article-teasertext-teaser teaser"><a href="/oberpfalz/trausnitz/ramona-schloegl-philipp-meindl-sagen-selbstgebackene-hochzeitstorte-geldgeschenke-schokopudding-id5510551.html">Zwölf Jahre kennen und lieben sie sich, jetzt ist es auch amtlich: Ramona  
897Schlögl und Philipp Meindl heiraten in der Söllitzer Wallfahrtskirche. Mit  
898einem großen Fest geht es ins Eheglück.
899</a></div>    </li>
900      <li class="row" data-mnid-dis="5511283" data-upscore-object-id="5511283">
901    
902  <div class="field field-dnt-primary-article-image-teaser picturewrapper"><a class="picture" href="/oberpfalz/schwandorf/knochenbruch-schubser-90-jaehriger-bewohner-verletzt-pflegerin-schwer-id5511283.html"><picture><source srcset="https://www.onetz.de/f/ic/ts-s/articlemedia/2026/09/24/a3e6cb99-39f5-4256-ba89-1f611e75e8a4.webp 114w, https://www.onetz.de/f/ic/ts/articlemedia/2026/09/24/a3e6cb99-39f5-4256-ba89-1f611e75e8a4.webp 410w" type="image/webp" sizes="(min-width: 44.6875rem) 410px, 114px" /><img src="https://www.onetz.de/f/ic/ts/articlemedia/2026/09/24/a3e6cb99-39f5-4256-ba89-1f611e75e8a4.jpg" alt="Symbolbild: Boris Roessler/dpa
903In einem Pflegeheim in Schwandorf hat sich eine 60-jährige Pflegerin nach einem Schubser schwer verletzt." title="" width="410" height="231" loading="lazy" decoding="async" class="img-responsive"/></picture><picture class="mp-picture__picture--alternative"><source srcset="https://www.onetz.de/f/ic/ts-s-43/articlemedia/2026/09/24/a3e6cb99-39f5-4256-ba89-1f611e75e8a4.webp" type="image/webp" /><img src="https://www.onetz.de/f/ic/ts-s-43/articlemedia/2026/09/24/a3e6cb99-39f5-4256-ba89-1f611e75e8a4.jpg" alt="Symbolbild: Boris Roessler/dpa
904In einem Pflegeheim in Schwandorf hat sich eine 60-jährige Pflegerin nach einem Schubser schwer verletzt." title="" width="120" height="98" loading="lazy" decoding="async" class="img-responsive mp-picture__image--alternative"/></picture></a></div><div class="field field-dnt-node-head-meta-teaser meta"><span class="location">Schwandorf</span><span class="date">24.09.2026</span></div><div class="field field-dnt-teasser-title-pm field-title"><span class="h2"><a href="/oberpfalz/schwandorf/knochenbruch-schubser-90-jaehriger-bewohner-verletzt-pflegerin-schwer-id5511283.html" data-upscore-url="" data-upscore-title="">Knochenbruch nach Schubser: 90-jähriger Bewohner verletzt Pflegerin schwer</a></span></div><div class="field field-dnt-article-teasertext-teaser teaser"><a href="/oberpfalz/schwandorf/knochenbruch-schubser-90-jaehriger-bewohner-verletzt-pflegerin-schwer-id5511283.html">Eine Pflegerin hat sich in einem Schwandorfer Pflegeheim schwer verletzt,  
905nachdem sie ein Bewohner geschubst hatte. Der 90-Jährige kommt in eine  
906Fachklinik.
907</a></div>    </li>
908      <li class="row" data-mnid-dis="5511447" data-upscore-object-id="5511447">
909    
910  <div class="field field-dnt-primary-article-image-teaser picturewrapper"><a class="picture" href="/oberpfalz/amberg/leben-zerstoert-25-jaehrige-sagt-drogenprozess-amberg-gegen-ex-partner-id5511447.html"><picture><source srcset="https://www.onetz.de/f/ic/ts-s/articlemedia/2026/09/24/35c0be56-6278-4c37-8a07-680e4cef40f5.webp?1790262958 114w, https://www.onetz.de/f/ic/ts/articlemedia/2026/09/24/35c0be56-6278-4c37-8a07-680e4cef40f5.webp?1790262958 410w" type="image/webp" sizes="(min-width: 44.6875rem) 410px, 114px" /><img src="https://www.onetz.de/f/ic/ts/articlemedia/2026/09/24/35c0be56-6278-4c37-8a07-680e4cef40f5.jpg?1790262958" alt="Bild: Kathrin Halbhuber
911Seit Mittwoch muss sich ein mutmaßlicher Drogendealer vor dem Landgericht Amberg verantworten." title="" width="410" height="231" loading="lazy" decoding="async" class="img-responsive"/></picture><picture class="mp-picture__picture--alternative"><source srcset="https://www.onetz.de/f/ic/ts-s-43/articlemedia/2026/09/24/35c0be56-6278-4c37-8a07-680e4cef40f5.webp?1790262958" type="image/webp" /><img src="https://www.onetz.de/f/ic/ts-s-43/articlemedia/2026/09/24/35c0be56-6278-4c37-8a07-680e4cef40f5.jpg?1790262958" alt="Bild: Kathrin Halbhuber
912Seit Mittwoch muss sich ein mutmaßlicher Drogendealer vor dem Landgericht Amberg verantworten." title="" width="120" height="98" loading="lazy" decoding="async" class="img-responsive mp-picture__image--alternative"/></picture></a><div class="properties"><div class=" inner transparent"><span class="property plus" title=""><span class="label">OnetzPlus</span></span></div></div></div><div class="field field-dnt-node-head-meta-teaser meta"><span class="location">Amberg</span><span class="date">24.09.2026</span></div><div class="field field-dnt-teasser-title-pm field-title"><span class="h2"><a href="/oberpfalz/amberg/leben-zerstoert-25-jaehrige-sagt-drogenprozess-amberg-gegen-ex-partner-id5511447.html" data-upscore-url="" data-upscore-title="">&quot;Mein Leben zerstört&quot;: 25-Jährige sagt bei Drogenprozess in Amberg gegen Ex-Partner aus</a></span></div><div class="field field-dnt-article-teasertext-teaser teaser"><a href="/oberpfalz/amberg/leben-zerstoert-25-jaehrige-sagt-drogenprozess-amberg-gegen-ex-partner-id5511447.html">Er soll nicht nur mit Crystal Meth gedealt, sondern auch gewaltsam  
913Drogenschulden eingetrieben haben. Ein 29-Jähriger muss sich deswegen  
914aktuell vor dem Landgericht Amberg verantworten. Seine Ex-Partnerin belastet  
915ihn beim Auftakt schwer.
916</a></div>    </li>
917      <li class="row last" data-mnid-dis="5511971" data-upscore-object-id="5511971">
918    
919  <div class="field field-dnt-primary-article-image-teaser picturewrapper"><a class="picture" href="/oberpfalz/luhe-wildenau/welche-auswirkungen-h
919at-hoehbauer-insolvenz-kunden-id5511971.html"><picture><source srcset="https://www.onetz.de/f/ic/ts-s/articlemedia/2026/09/24/b354fbd4-0a05-41c7-b61b-a4597f2750b8.webp?1790263868 114w, https://www.onetz.de/f/ic/ts/articlemedia/2026/09/24/b354fbd4-0a05-41c7-b61b-a4597f2750b8.webp?1790263868 410w" type="image/webp" sizes="(min-width: 44.6875rem) 410px, 114px" /><img src="https://www.onetz.de/f/ic/ts/articlemedia/2026/09/24/b354fbd4-0a05-41c7-b61b-a4597f2750b8.jpg?1790263868" alt="Bild: Gabi Schönberger
920Was bedeutet die Höhbauer-Insolvenz für Kunden?" title="" width="410" height="231" loading="lazy" decoding="async" class="img-responsive"/></picture><picture class="mp-picture__picture--alternative"><source srcset="https://www.onetz.de/f/ic/ts-s-43/articlemedia/2026/09/24/b354fbd4-0a05-41c7-b61b-a4597f2750b8.webp?1790263766" type="image/webp" /><img src="https://www.onetz.de/f/ic/ts-s-43/articlemedia/2026/09/24/b354fbd4-0a05-41c7-b61b-a4597f2750b8.jpg?1790263766" alt="Bild: Gabi Schönberger
921Was bedeutet die Höhbauer-Insolvenz für Kunden?" title="" width="120" height="98" loading="lazy" decoding="async" class="img-responsive mp-picture__image--alternative"/></picture></a><div class="properties"><div class=" inner transparent"><span class="property plus" title=""><span class="label">OnetzPlus</span></span></div></div></div><div class="field field-dnt-node-head-meta-teaser meta"><span class="location">Luhe-Wildenau</span><span class="date">24.09.2026</span></div><div class="field field-dnt-teasser-title-pm field-title"><span class="h2"><a href="/oberpfalz/luhe-wildenau/welche-auswirkungen-hat-hoehbauer-insolvenz-kunden-id5511971.html" data-upscore-url="" data-upscore-title="">Welche Auswirkungen hat die Höhbauer-Insolvenz auf Kunden?</a></span></div><div class="field field-dnt-article-teasertext-teaser teaser"><a href="/oberpfalz/luhe-wildenau/welche-auswirkungen-hat-hoehbauer-insolvenz-kunden-id5511971.html">Die Höhbauer GmbH hat einen Insolvenzantrag gestellt. Viele Kunden stellen  
922sich nun Fragen: Was bedeutet das für mich? Was ist mit dem  
923Gewährleistungsanspruch? Was ist mit Vorauszahlungen?
924</a></div>    </li>
925    </ul>
926    </div>
927  
928  
929  
930  
931  
932  
933</div><!-- /.view -->
934  </div>
935
936  
937  
938  </div>
939<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-dnt-traffective-banner"  >
940  
941  
942  
943  <div class="pane-content">
944    
945    <div id="traffective-ad-Interstitial" style="display: none;" class="Interstitial childmargin" aria-hidden="true"></div>  </div>
946
947  
948  
949  </div>
950<div class="panel-region-separator"></div>
950<script async src="https://ins.oberpfalzmedien.de/service/gnikcart/public/gnikcart-script.js?element-id=5aa7f143-6966-4033-a046-d7eafda67893"></script>
950<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-node dm-nobg"  >
951  
952  
953  
954  <div class="pane-content">
955    
956    <article id="node-4257514" class="node node-type-thing build-mode-full clearfix ">
957
958    
959  
960  
961  <div class="content">
962     <!-- 
963CSS-SVG-Animation, die angezeigt wird, während Prozesse geladen werden. Normalerweise während der Checkout-Prozess nach Login oder Registrierung fortgesetzt wird.
964-->
965<div class="dnt_anim_overlay" id="dnt_anim_loader" style="display:none;">
966<div class="dnt_anim_loader"><svg class="spinner" data-name="Ebene 1" height="65px" id="Ebene_1" viewbox="0 0 65 65" width="65px" xmlns="http://www.w3.org/2000/svg"> <defs> </defs> <path class="cls-1" d="m65,32.5C65,14.55,50.45,0,32.5,0S0,14.55,0,32.5s14.55,32.5,32.5,32.5,32.5-14.55,32.5-32.5m-14.45,7.03c-1.51,4.01-4.22,7.21-7.56,9.37l-14.77,10.14v-7.52c-.84-.19-1.67-.42-2.5-.73-9.97-3.75-15.01-14.86-11.26-24.83,3.75-9.97,14.86-15.01,24.83-11.26,9.97,3.75,15.01,14.86,11.26,24.83"></path> </svg></div>
967</div>
968<script>
969/*
970Die Dokumentation der Funktionen ist im entsprechenden Confluence-Eintrag zu finden. 
971*/
972
973if(navigator.userAgent.toLowerCase().indexOf("fbav") > -1 || navigator.userAgent.toLowerCase().indexOf("fban") > -1 || navigator.userAgent.toLowerCase().indexOf("fb_iab") > -1 || navigator.userAgent.toLowerCase().indexOf("instagram") > -1)
974  {
975    console.log("%c4257514","background-color:darkolivegreen; color:white;","Facebook or Instagram in app browser detected.");
976  }
977
978else
979  {
980    if (typeof localStorage.dntCoParams != "undefined" && document.referrer != "" && document.referrer.toLowerCase().indexOf("onetz.de") > -1)
981      {
982        console.log("%c4257514","background-color:darkolivegreen; color:white;","Local Storage params object AND page referrer found. Showing busy animation.");
983        document.getElementById("dnt_anim_loader").style.display="block";
984      }
985
986    if (typeof localStorage.dntCoParams != "undefined" && (document.referrer == "" || document.referrer.toLowerCase().indexOf("onetz.de") < 0))
987      {
988        localStorage.removeItem("dntCoParams");
989        console.log("%c4257514","background-color:darkolivegreen; color:white;","Local storage params object detected but no page referrer found. Removing local storage object.");
990      }
991  }
992
993</script>
993
994
995<script>
996document.addEventListener("DOMContentLoaded", function () {
997  setTimeout(()=>{  
998    console.log("DOMContentLoaded");
999    // iOS
1000    window.webkit?.messageHandlers?.pageStatus?.postMessage("content_ready");
1001    // Android
1002    const iface = window.appInterface || window.appInterfaceAndroid;
1003    if (iface) { iface.event("content_ready"); }
1004  }, 750)
1005});
1006</script>
1006   </div>
1007
1008  
1009</article> <!-- /.node -->
1010  </div>
1011
1012  
1013  
1014  </div>
1015<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-node dm-nobg"  >
1016  
1017  
1018  
1019  <div class="pane-content">
1020    
1021    <article id="node-4287610" class="node node-type-thing build-mode-full clearfix ">
1022
1023    
1024  
1025  
1026  <div class="content">
1027     <!--
1028Stellt den Hasso-Login für den Login/Registrierung innerhalb des Kaufprozesses zur Verfügung.
1029-->
1030<div class="om_pw_overlay" id="om_pw_login" style="display:none!important;">
1031<div class="om_pw_overlay_content">
1032<div class="om_pw_overlay_head"><img src="https://media.onetz.de/piano_static/onetzplus rot.png" style="padding: 40px 0 25px; margin: 70px auto 0 auto; width: 100px;" /> <span id="om_pw_login_headline"><span id="om_pw_login_headline_static">Zum Fortsetzen bitte</span><br />
1033<span class="om_pw_login_headline_heavy" id="om_headline_dynamic">E-Mail eingeben</span></span></div>
1034
1035<div><iframe data-mimas-nosb="" frameborder="0" id="om_pw_inpage_login_iframe" scrolling="no" src="https://sso.onetz.de/auth/authorize?ajaxMode=1&amp;client_id=nativemedia&amp;responsetype=event&amp;domain=https://www.onetz.de&amp;theme=bright"></iframe></div>
1036
1037<div id="om_pw_login_back_btn"><button onclick="om_pw_hide_login()"><svg height="40" style="transform: rotate(180deg);" viewbox="0 -960 960 960" width="40" xmlns="http://www.w3.org/2000/svg"><path d="M480-352.667 607.333-480 480-607.333 456.667-584l87.077 87.077H343.077v33.846h200.667L456.667-376 480-352.667ZM480.134-120q-74.519 0-139.999-28.339-65.481-28.34-114.442-77.255-48.961-48.915-77.327-114.335Q120-405.348 120-479.866q0-74.673 28.339-140.41 28.34-65.737 77.255-114.365 48.915-48.627 114.335-76.993Q405.348-840 479.866-840q74.673 0 140.41 28.339 65.737 28.34 114.365 76.922 48.627 48.582 76.993 114.257Q840-554.806 840-480.134q0 74.519-28.339 139.999-28.34 65.481-76.922 114.442-48.582 48.961-114.257 77.327Q554.806-120 480.134-120ZM480-153.846q136.256 0 231.205-95.026Q806.154-343.897 806.154-480q0-136.256-94.949-231.205Q616.256-806.154 480-806.154q-136.103 0-231.128 94.949Q153.846-616.256 153.846-480q0 136.103 95.026 231.128Q343.897-153.846 480-153.846ZM480-480Z"></path></svg></button></div>
1038
1039<div id="om_pw_logged_in_msg">
1040<p style="text-align:center;">Sie sind bereits eingeloggt.<br />
1041<br />
1042Um diesen Artikel lesen zu können, benötigen Sie ein OnetzPlus- oder E-Paper-Abo.</p>
1043
1044<button onclick="om_pw_hide_login()"><svg height="40" style="transform: rotate(180deg);" viewbox="0 -960 960 960" width="40" xmlns="http://www.w3.org/2000/svg"><path d="M480-352.667 607.333-480 480-607.333 456.667-584l87.077 87.077H343.077v33.846h200.667L456.667-376 480-352.667ZM480.134-120q-74.519 0-139.999-28.339-65.481-28.34-114.442-77.255-48.961-48.915-77.327-114.335Q120-405.348 120-479.866q0-74.673 28.339-140.41 28.34-65.737 77.255-114.365 48.915-48.627 114.335-76.993Q405.348-840 479.866-840q74.673 0 140.41 28.339 65.737 28.34 114.365 76.922 48.627 48.582 76.993 114.257Q840-554.806 840-480.134q0 74.519-28.339 139.999-28.34 65.481-76.922 114.442-48.582 48.961-114.257 77.327Q554.806-120 480.134-120ZM480-153.846q136.256 0 231.205-95.026Q806.154-343.897 806.154-480q0-136.256-94.949-231.205Q616.256-806.154 480-806.154q-136.103 0-231.128 94.949Q153.846-616.256 153.846-480q0 136.103 95.026 231.128Q343.897-153.846 480-153.846ZM480-480Z"></path></svg></button></div>
1045</div>
1046</div>
1047<script>
1048
1049// *****************************************
1050// Die Dokumentation der Funktionen ist im entsprechenden Confluence-Eintrag zu finden. 
1051// *****************************************
1052window.addEventListener('message', function (event) {
1053 if (event.origin === "https://sso.onetz.de" && event.data.eventNature == "authorize" && event.data.code == 2200) {
1054    console.log("%c4287610","background-color:darkolivegreen; color:white;",
1055        "Received "+ event.data.eventNature +" event. Received code: " +  event.data.code +" Setting text: Passwort eingeben." );
1056    document.getElementById("om_headline_dynamic").innerHTML="Passwort eingeben";
1057  }
1058
1059  if (event.origin === "https://sso.onetz.de" && event.data.eventNature == "ssoAjaxBackLinkCalled") {
1060    console.log("%c4287610","background-color:darkolivegreen; color:white;",
1061        "Received "+ event.data.eventNature +" event. Setting text: E-Mail eingeben." );
1062    document.getElementById("om_headline_dynamic").innerHTML="E-Mail eingeben";
1063  }
1064
1065  if (event.origin === "https://sso.onetz.de" && event.data.eventNature == "ssoAjaxPwLinkCalled") {
1066    console.log("%c4287610","background-color:darkolivegreen; color:white;",
1067        "Received "+ event.data.eventNature +" event. Setting text: E-Mail eingeben." );
1068    document.getElementById("om_headline_dynamic").innerHTML="E-Mail eingeben";
1069  }
1070
1071  if (event.origin === "https://sso.onetz.de" && event.data.eventNature == "authorize" && event.data.code == 2000) {
1072    document.getElementById("om_pw_login_headline_static").style.display = "none";
1073    document.getElementById("om_headline_dynamic").innerHTML="Anmeldung erfolgreich!";
1074  }
1075
1076  if (event.origin === "https://sso.onetz.de" && event.data.eventNature == "ssoAjaxViewLoaded") {
1077    if (event.data.formId == "register") {
1078      document.getElementById("om_headline_dynamic").innerHTML="Registrierung abschließen";
1079    }
1080    else if (event.data.formId == "authorize") {
1081      document.getElementById("om_headline_dynamic").innerHTML="E-Mail eingeben";
1082    }
1083
1084    var frame_height = 0;
1085    if (event.data.formHeight < 100) {
1086      event.data.formHeight = 162;
1087    }
1088
1089    if (window.innerHeight <= 800) {
1090      frame_height = event.data.formHeight + 180;
1091    }
1092    else if (window.innerHeight > 800) {
1093      frame_height = event.data.formHeight + 80;
1094    }
1095    var frame = document.getElementById("om_pw_inpage_login_iframe");
1096    frame.style.height = frame_height + 'px';
1097
1098    console.log("%c4287610", "background-color:darkolivegreen; color:white;",
1099        "Received ssoAjaxViewLoaded event. Changing iframe height to match form - " + event.data.formId + " - with height of " + frame_height + "px.");
1100  }
1101});
1102
1103function create_login_evt_lstnr_pw() {
1104  window.addEventListener('message', function(event) {	
1105    if (event.origin === "https://sso.onetz.de") {
1106      var paywall_art_id = tp.customVariables.destPath.slice(5);
1107	  if(event.data.code === 2000) {
1108        if (typeof sessionStorage.mtm_login_event == "undefined" || sessionStorage.mtm_login_event != "true") {
1109          let paywall_success_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);  
1110          paywall_success_event.trackEvent("Paywall Events", "Login", paywall_art_id, 1);
1111          console.log("%c4287610","background-color:darkolivegreen; color:white;","SSO event received. Successful login on paywall tracked.");
1112          sessionStorage.setItem("mtm_login_event","true");
1113          console.log("%c4287610","background-color:darkolivegreen; color:white;","Session login variable set.");
1114        }
1115        else if (typeof sessionStorage.mtm_login_event != "undefined" && sessionStorage.mtm_login_event != "true") {
1116          console.log("%c4287610","background-color:darkolivegreen; color:white;","Session login variable wrong value.");
1117        }
1118        else if (typeof sessionStorage.mtm_login_event != "undefined" && sessionStorage.mtm_login_event == "true") {
1119          console.log("%c4287610","background-color:darkolivegreen; color:white;","Login tracking event already sent.");
1120        }
1121      }
1122      else if (event.data.code === 5000) {
1123        if (typeof sessionStorage.mtm_reg_event == "undefined" || sessionStorage.mtm_reg_event != "true") {
1124          let paywall_success_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);  
1125          paywall_success_event.trackEvent("Paywall Events", "Registration", paywall_art_id, 1);
1126          console.log("%c4287610","background-color:darkolivegreen; color:white;",
1127              "SSO event received. Successful registration on paywall tracked.");
1128          sessionStorage.setItem("mtm_reg_event","true");
1129          console.log("%c4287610","background-color:darkolivegreen; color:white;","Session reg variable set.");
1130        }
1131        else if (typeof window.sessionStorage.mtm_reg_event != "undefined" && window.sessionStorage.mtm_reg_event != "true") {
1132          console.log("%c4287610","background-color:darkolivegreen; color:white;","Session reg variable wrong value.");
1133        }
1134        else if (typeof window.sessionStorage.mtm_reg_event != "undefined" && window.sessionStorage.mtm_reg_event == "true") {
1135          console.log("%c4287610","background-color:darkolivegreen; color:white;","Registration tracking event already sent.");
1136        }
1137      }
1138      else {
1139        console.log("%c4287610","background-color:darkolivegreen; color:white;","SSO event received. But: No Login. No registration.");
1140      } 
1141    }
1142  }, false);
1143  console.log("%c4287610","background-color:darkolivegreen; color:white;","Paywall event listener ready.");
1144}
1145
1146function om_pw_show_login(){
1147  console.log("%c4287610","background-color:darkolivegreen; color:white;","Function om_pw_show_login called.");
1148
1149  let paywall_art_id = tp.customVariables.destPath.slice(5);
1150  let show_paywall_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
1151  show_paywall_event.trackEvent("Paywall Events", "Show paywall login", paywall_art_id, 1);
1152  console.log("%c4287610","background-color:darkolivegreen; color:white;","Show paywall login form event tracked.");  
1153  document.getElementById("om_pw_login").style.display="block";
1154    
1155  if (typeof sessionStorage.mtm_login_event != "undefined") {
1156    sessionStorage.removeItem("mtm_login_event")
1157    console.log("%c4287610","background-color:darkolivegreen; color:white;","Deleting login session variable.");
1158  }
1159  if (typeof sessionStorage.mtm_reg_event != "undefined") {
1160    sessionStorage.removeItem("mtm_reg_event")
1161    console.log("%c4287610","background-color:darkolivegreen; color:white;","Deleting reg session variable.");
1162  }
1163  console.log("%c4287610","background-color:darkolivegreen; color:white;","Initalizing paywall event listener.");
1164  create_login_evt_lstnr_pw();
1165}
1166
1167function om_pw_hide_login(){
1168  document.getElementById("om_pw_login").style.display="none";
1169  console.log("%c4287610","background-color:darkolivegreen; color:white;","Function om_pw_hide_login called.");
1170  dnt_piano_remove_checkout_params();
1171}
1172
1173if (document.getElementsByTagName("body")[0].classList.contains("logged-in") || (sessionStorage.encUID && sessionStorage.encUID != "")){
1174  document.getElementById("om_pw_inpage_login_iframe").src="";
1175  document.getElementById("om_pw_inpage_login_iframe").style.display="none";
1176  document.getElementById("om_pw_login_headline").style.display="none";
1177  document.getElementById("om_pw_login_back_btn").style.display="none";
1178  document.getElementById("om_pw_logged_in_msg").style.display="block";
1179  console.log("%c4287610","background-color:darkolivegreen; color:white;",
1180      "Already logged in. Removing paywall iframe-src-attribute to prevent page from refreshing.");
1181}
1182else{
1183  console.log("%c4287610","background-color:darkolivegreen; color:white;","Not logged in. Paywall login overlay screen ready.");
1184}
1185
1186</script>
1186   </div>
1187
1188  
1189</article> <!-- /.node -->
1190  </div>
1191
1192  
1193  
1194  </div>
1195<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-node dm-nobg"  >
1196  
1197  
1198  
1199  <div class="pane-content">
1200    
1201    <article id="node-4331613" class="node node-type-thing build-mode-full clearfix ">
1202
1203    
1204  
1205  
1206  <div class="content">
1207     <!--
1208Stellt den Hasso-Login für den Login/Registrierung als Registrierungsschranke zur Verfügung.
1209-->
1210<div class="om_rw_overlay" id="om_rw_login" style="display:none;">&nbsp;
1211<div class="om_rw_overlay_content"><img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNDUuMDYyIDk0LjgwNyIgaGVpZ2h0PSIxMDEuMTI4IiB3aWR0aD0iMzY4LjA2NiI+PHBhdGggZD0iTTI4OS43NSAyNS4zMDVWNDIuNzNoMjUuMTFsLTI4Ljc5MyA0OS41M2g1Ny40N1Y3NC44MzhoLTI3LjMwNGwyOC44My00OS41MzNIMjg5Ljc1em0tNDYuNzk0IDE3LjQyNGg2LjYxdjIyLjg3M2MwIDEuNzgzLS4wMTQgMy42MyAwIDUuMjQyLjEwMyAxMC43MDcgNC42NzcgMTkuMTgyIDE0LjUwNiAyMi4wMjcgMi4wMzUuNjI1IDMuMTk3LjU4OCA0LjEwNS42NjggMy40My4zMDUgOC41NTItMS4yNzggOC41NTItMS4yNzhzNi4yNi0xMS4wODcgMTAuMTUtMTcuNDI0Yy0yLjMxIDAtMTAuNzEuMDE1LTEyLjg3LS4wMDItNC42NjgtLjAzNC02LjA1Ni0xLjMzLTYuMDY1LTYuMDAyVjQyLjcyOWgxNC4wODhWMjUuMzA1aC0xNC4wODhWMi4xMWwtMTguMzc4IDguNzMyLS4wMDEgMTQuNDYzLTYuNjEuMDA0TTE5NC4wMDUgNTAuNmMxLjE3NC01LjgyNyA1LjQ3My05Ljc1NyAxMi41MS05Ljc1NyA3LjI5OCAwIDExLjcyOSAzLjM5IDEyLjc3MSA5Ljc1OGgtMjUuMjh6bTQ1LjQ4IDguMjVjMC0yMC4wNC0xMi42NC0zNC41MDgtMzIuOTctMzQuNTA4LTIwLjMyOSAwLTMyLjgzNyAxNC43MzktMzIuODM3IDM0LjUwOCAwIDE5Ljc3IDEyLjkgMzQuMzczIDM0LjAxMSAzNC4zNzMgMTQuNzI0IDAgMjIuNjc1LTUuMTM4IDI3Ljg4Ny0xMi40NGwtMTIuNzYtMTIuMTkzYy0zLjIgNS42NzctOC43MzUgOC41My0xNC45ODIgOC4yNjItNi4zODEtLjI3Mi0xNC4xOTUtNS40MzctMTQuMjItMTMuNTRoNDUuODcxVjU4Ljg1em0tNzQuOS0xNi45MzVjLTIuNzYtOC4yNy0xMC4yMzItMTcuNTc1LTMxLjE2Ny0xNy41NzUtMjQuMjE3IDAtMzAuODk0IDEyLjUxMi0zMC44OTQgMTIuNTEydjU1LjI1aDE5LjY1MVY0Ni4zODFzMy4zMDgtNC42NDQgMTEuNDY2LTQuNzY1YzguMDcyLS4xMTcgMTIuNDggMy4zNjUgMTIuNDggOC45OTVsLS4wMDUgNDEuNDgxaDE5Ljg0MlY0OS41NGMwLTIuODA0LS42LTUuMzA2LTEuMzczLTcuNjI1IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTQ3LjQwNCAwQzIxLjIyMyAwIDAgMjEuMjI3IDAgNDcuNDA0YzAgMjYuMTgzIDIxLjIyMyA0Ny40MDMgNDcuNDA0IDQ3LjQwMyAyNi4xODMgMCA0Ny40MDctMjEuMjIgNDcuNDA3LTQ3LjQwM0M5NC44MSAyMS4yMjcgNzMuNTg3IDAgNDcuNDA0IDB6bS4yNDQgMTguNzQ4YzMuMjExLjAyNyA2LjQ3LjYxMSA5LjY1IDEuODA3IDE0LjU0IDUuNDYzIDIxLjg5NiAyMS42OCAxNi40MyAzNi4yMTYtMi4xOTggNS44NTMtNi4xNTcgMTAuNTEyLTExLjAyNyAxMy42NjhMNDEuMTU0IDg1LjIzNmwtLjAxLTEwLjk3MmMtMS4yMTctLjI4LTIuNDMzLS42MTItMy42MzQtMS4wNjMtMTQuNTM4LTUuNDY1LTIxLjg5My0yMS42OC0xNi40MjgtMzYuMjE5IDQuMjY4LTExLjM1NiAxNS4xLTE4LjMzMiAyNi41NjYtMTguMjM0eiIgZmlsbD0iIzk0ZDEzMyIvPjwvc3ZnPg==" style="padding: 40px 0 20px; margin: 70px auto 5px auto; width: 100px; background-color:transparent;" />
1212<div class="om_rw_overlay_head"><span id="om_rw_login_headline"><span class="om_rw_login_headline_heavy" id="om_rw_login_headline_static">Zum Weiterlesen</span><br />
1213<span class="om_rw_login_headline_heavy" id="om_rw_login_headline_dynamic">einloggen oder kostenlos registrieren</span></span></div>
1214
1215
1216<p><iframe data-mimas-nosb="" frameborder="0" id="om_rw_inpage_login_iframe" scrolling="no" src="https://sso.onetz.de/auth/authorize?ajaxMode=1&amp;client_id=nativemedia&amp;responsetype=event&amp;domain=https://www.onetz.de&amp;theme=bright"></iframe></p>
1217
1218
1219<p style="text-align:center;"><a href="https://www.onetz.de" style="color:#002850;" target="_self">Zur Startseite</a></p>
1220
1221
1222<div id="om_rw_login_back_btn" style="display:none!important;"><button onclick="om_rw_hide_login()">×</button></div>
1223
1224<div id="om_rw_logged_in_msg">
1225<p style="text-align:center;">Sie sind bereits eingeloggt!</p>
1226
1227<button onclick="om_rw_hide_login()">×</button></div>
1228</div>
1229</div>
1230<script>
1231
1232// *****************************************
1233// Die Dokumentation der Funktionen ist im entsprechenden Confluence-Eintrag zu finden. 
1234// *****************************************
1235window.addEventListener('message', function (event) {
1236 if (event.origin === "https://sso.onetz.de" && event.data.eventNature == "authorize" && event.data.code == 2200) {
1237    console.log("%c4331613","background-color:darkolivegreen; color:white;",
1238        "Received "+ event.data.eventNature +" event. Received code: " +  event.data.code +" Setting text: Passwort eingeben." );
1239    document.getElementById("om_rw_login_headline_dynamic").innerHTML="Passwort eingeben";
1240  }
1241
1242  if (event.origin === "https://sso.onetz.de" && event.data.eventNature == "ssoAjaxBackLinkCalled") {
1243    console.log("%c4331613","background-color:darkolivegreen; color:white;",
1244        "Received "+ event.data.eventNature +" event. Setting text: E-Mail eingeben." );
1245    document.getElementById("om_rw_login_headline_dynamic").innerHTML="E-Mail eingeben";
1246  }
1247
1248  if (event.origin === "https://sso.onetz.de" && event.data.eventNature == "ssoAjaxPwLinkCalled") {
1249    console.log("%c4331613","background-color:darkolivegreen; color:white;",
1250        "Received "+ event.data.eventNature +" event. Setting text: E-Mail eingeben." );
1251    document.getElementById("om_headline_dynamic").innerHTML="E-Mail eingeben";
1252  }
1253
1254  if (event.origin === "https://sso.onetz.de" && event.data.eventNature == "authorize" && event.data.code == 2000) {
1255    document.getElementById("om_pw_login_headline_static").style.display = "none";
1256    document.getElementById("om_rw_login_headline_dynamic").innerHTML="Anmeldung erfolgreich!";
1257  }
1258
1259  if (event.origin === "https://sso.onetz.de" && event.data.eventNature == "ssoAjaxViewLoaded") {
1260    if (event.data.formId == "register") {
1261      document.getElementById("om_rw_login_headline_dynamic").innerHTML="Registrierung abschließen";
1262    }
1263    else if (event.data.formId == "authorize") {
1264      document.getElementById("om_rw_login_headline_dynamic").innerHTML="E-Mail eingeben";
1265    }
1266
1267    var frame_height = 0;
1268    if (event.data.formHeight < 100) {
1269      event.data.formHeight = 162;
1270    }
1271
1272    if (window.innerHeight <= 800) {
1273      frame_height = event.data.formHeight + 180;
1274    }
1275    else if (window.innerHeight > 800) {
1276      frame_height = event.data.formHeight + 80;
1277    }
1278    var frame = document.getElementById("om_rw_inpage_login_iframe");
1279    frame.style.height = frame_height + 'px';
1280
1281    console.log("%c4331613", "background-color:darkolivegreen; color:white;",
1282        "Received ssoAjaxViewLoaded event. Changing iframe height to match form - " + event.data.formId + " - with height of " + frame_height + "px.");
1283  }
1284});
1285
1286function create_login_evt_lstnr_rw()
1287  {
1288    window.addEventListener('message', function(event)
1289      {	
1290	    if (event.origin === "https://sso.onetz.de")   
1291          {
1292            var regwall_art_id = tp.customVariables.destPath.slice(5);
1293		    if(event.data.code === 2000)
1294			  {
1295                if (typeof window.sessionStorage.rw_mtm_login_event == "undefined" || window.sessionStorage.rw_mtm_login_event != "true")
1296                  {
1297                    let regwall_success_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);  
1298                    regwall_success_event.trackEvent("Regwall Events", "Login", regwall_art_id, 1);
1299                    console.log("%c4331613","background-color:darkolivegreen; color:white;","SSO event received. Successful login on regwall tracked.");
1300                    window.sessionStorage.setItem("rw_mtm_login_event","true");
1301                    console.log("%c4331613","background-color:darkolivegreen; color:white;","Session login variable set.");
1302                  }
1303                else if (typeof window.sessionStorage.rw_mtm_login_event != "undefined" && window.sessionStorage.rw_mtm_login_event != "true")
1304                  {
1305                    console.log("%c4331613","background-color:darkolivegreen; color:white;","Session login variable wrong value.");
1306                  }
1307                else if (typeof window.sessionStorage.rw_mtm_login_event != "undefined" && window.sessionStorage.rw_mtm_login_event == "true")
1308                  {
1309                    console.log("%c4331613","background-color:darkolivegreen; color:white;","Login tracking event already sent.");
1310                  }
1311	          }
1312            else if (event.data.code === 5000)
1313			  {
1314                if (typeof window.sessionStorage.rw_mtm_reg_event == "undefined" || window.sessionStorage.rw_mtm_reg_event != "true")
1315                  {
1316                    let regwall_success_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);  
1317                    regwall_success_event.trackEvent("Regwall Events", "Registration", regwall_art_id, 1);
1318                    console.log("%c4331613","background-color:darkolivegreen; color:white;","SSO event received. Successful registration on regwall tracked.");
1319                    window.sessionStorage.setItem("rw_mtm_reg_event","true");
1320                    console.log("%c4331613","background-color:darkolivegreen; color:white;","Session reg variable set.");
1321                  }
1322                else if (typeof window.sessionStorage.rw_mtm_reg_event != "undefined" && window.sessionStorage.rw_mtm_reg_event != "true")
1323                  {
1324                    console.log("%c4331613","background-color:darkolivegreen; color:white;","Session reg variable wrong value.");
1325                  }
1326                else if (typeof window.sessionStorage.rw_mtm_reg_event != "undefined" && window.sessionStorage.rw_mtm_reg_event == "true")
1327                  {
1328                    console.log("%c4331613","background-color:darkolivegreen; color:white;","Registration tracking event already sent.");
1329                  }
1330	          }
1331            else
1332			  {
1333                console.log("%c4331613","background-color:darkolivegreen; color:white;","SSO event received. But: No Login. No registration.");
1334	          } 
1335          }
1336      }, false);
1337    console.log("%c4331613","background-color:darkolivegreen; color:white;","Regwall event listener ready.");
1338  }
1339
1340function om_rw_show_login()
1341  {
1342    console.log("%c4331613","background-color:darkolivegreen; color:white;","Function om_rw_show_login called.");
1343
1344    let regwall_art_id = tp.customVariables.destPath.slice(5);
1345    let show_regwall_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
1346    show_regwall_event.trackEvent("Regwall Events", "Show regwall", regwall_art_id, 1);
1347    console.log("%c4331613","background-color:darkolivegreen; color:white;","Show regwall event tracked.");
1348
1349    document.getElementById("om_rw_login").style.display="block";
1350    
1351    if (typeof window.sessionStorage.rw_mtm_login_event != "undefined")
1352      {
1353        window.sessionStorage.removeItem("rw_mtm_login_event")
1354        console.log("%c4331613","background-color:darkolivegreen; color:white;","Deleting login session variable.");
1355      }
1356    if (typeof window.sessionStorage.rw_mtm_reg_event != "undefined")
1357      {
1358        window.sessionStorage.removeItem("rw_mtm_reg_event")
1359        console.log("%c4331613","background-color:darkolivegreen; color:white;","Deleting reg session variable.");
1360      }
1361    console.log("%c4331613","background-color:darkolivegreen; color:white;","Initalizing regwall event listener.");
1362    create_login_evt_lstnr_rw();
1363  }
1364
1365function om_rw_hide_login()
1366  {
1367    document.getElementById("om_rw_login").style.display="none";
1368    console.log("%c4331613","background-color:darkolivegreen; color:white;","Function om_rw_hide_login called.");
1369    //dnt_piano_remove_checkout_params();
1370    //location.reload();
1371    //om_unblur_content();
1372  }
1373
1374
1375if (document.getElementsByTagName("body")[0].classList.contains("logged-in"))
1376  {
1377    document.getElementById("om_rw_inpage_login_iframe").src="";
1378    document.getElementById("om_rw_inpage_login_iframe").style.display="none";
1379    document.getElementById("om_rw_login_headline").style.display="none";
1380    document.getElementById("om_rw_login_back_btn").style.display="none";
1381    document.getElementById("om_rw_logged_in_msg").style.display="block";
1382    console.log("%c4331613","background-color:darkolivegreen; color:white;","Already logged in. Removing regwall iframe-src-attribute to prevent page from refreshing.");
1383  }
1384else
1385  {
1386    console.log("%c4331613","background-color:darkolivegreen; color:white;","Not logged in. Regwall login overlay screen ready. new");
1387  }
1388</script>
1388   </div>
1389
1390  
1391</article> <!-- /.node -->
1392  </div>
1393
1394  
1395  
1396  </div>
1397<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-node dm-nobg"  >
1398  
1399  
1400  
1401  <div class="pane-content">
1402    
1403    <article id="node-4295949" class="node node-type-thing build-mode-full clearfix ">
1404
1405    
1406  
1407  
1408  <div class="content">
1409     
1409<script data-cmp-ab="1" data-cmp-vendor="c21267">
1410
1411// *****************************************
1412// Einträge im sessionStorage bereinigen - z.B. nach Logout
1413// *****************************************
1414async function om_wipe_sessionStorage(){
1415  if (sessionStorage.hasResAccess){sessionStorage.removeItem("hasResAccess");}
1416  if (sessionStorage.jwotChecked){sessionStorage.removeItem("jwotChecked");}
1417  if (sessionStorage.uuid){sessionStorage.removeItem("uuid");}
1418  if (sessionStorage.encUN){sessionStorage.removeItem("encUN");}
1419  if (sessionStorage.mtm_cur_mail){sessionStorage.removeItem("mtm_cur_mail");}
1420  if (sessionStorage.hasPremiumAccess){sessionStorage.removeItem("hasPremiumAccess");}
1421  if (sessionStorage.encUID){sessionStorage.removeItem("encUID");}
1422  if (sessionStorage.mtm_login_event){sessionStorage.removeItem("mtm_login_event");}
1423  if (sessionStorage.encMail){sessionStorage.removeItem("encMail");}
1424  if (sessionStorage.auth_check){sessionStorage.removeItem("auth_check");}
1425  if (sessionStorage.sso_logged_in){sessionStorage.removeItem("sso_logged_in");}
1426}
1427
1428// *****************************************
1429// Checkout nach Abo-Check wieder fortsetzen.
1430// *****************************************
1431async function restart_checkout(return_code){
1432  console.log("%c4295949","background-color:darkolivegreen; color:white;","Function restart_checkout called");
1433  let params = dnt_piano_get_checkout_params();
1434  dnt_piano_start_checkout(params, 10);
1435  //return return_code;
1436}
1437
1438// *****************************************
1439// Überprüfen, ob der Benutzer bereits bei Piano angelegt wurde.
1440// Ergebnis an check_for_user zurückgeben.
1441// *****************************************
1442async function check_user_at_piano(uuid) {
1443  return new Promise(resolve => {
1444    setTimeout(() => { 
1445      console.log("%c4295949","background-color:darkolivegreen; color:white;","Function check_user_at_piano called");           
1446      var send_string = "?action=check_user&uuid=" + uuid;
1447      var the_URL_2 ="https://newsapptec.onetz.de:8085" + send_string;
1448      var xhr_2 = new XMLHttpRequest();
1449      xhr_2.open('GET', the_URL_2, true);
1450      xhr_2.send();
1451      xhr_2.onloadend = function () {
1452        var response_code=JSON.parse(xhr_2.responseText).code;
1453        var response_info=JSON.parse(xhr_2.responseText).info;
1454        var response_complete = response_code + " " + response_info;
1455
1456        if (response_code === '200') {
1457          console.log("%c4295949","background-color:darkolivegreen; color:white;","Function check_user_at_piano: VX success: " + response_complete);
1458        }
1459        else if (response_code === '2004') {
1460          console.log("%c4295949","background-color:darkolivegreen; color:white;","Function check_user_at_piano: VX success: " + response_complete);
1461        }
1462        else {
1463          console.log("%c4295949","background-color:darkolivegreen; color:white;","Function check_user_at_piano: VX error: " + response_complete);
1464        }
1465        resolve(response_code);
1466      };
1467    }, 500);
1468  });
1469}
1470
1471// *****************************************
1472// Async-Zwischenfunktion - Überprüfen ob ein Nutzer bereits bei Piano angelegt wurde. 
1473// *****************************************
1474async function check_for_user(uuid) {
1475  console.log("%c4295949","background-color:darkolivegreen; color:white;","Function check_for_user called. Async wrapper function.");
1476  var safe_count = 0;
1477  var user_return_code = "2004";
1478
1479  do {
1480    console.log("%c4295949","background-color:darkolivegreen; color:white;","Function check_for_user: looping user check: "+ safe_count);
1481    user_return_code = await check_user_at_piano (uuid);
1482    if (user_return_code === '200'){
1483      console.log("%c4295949","background-color:darkolivegreen; color:white;","Function check_for_user: user found");
1484    }
1485    safe_count ++;
1486  } while (user_return_code != '200' && safe_count <= 5);
1487
1488  if (user_return_code != '200' && safe_count > 5) {
1489    console.log("%c4295949","background-color:darkolivegreen; color:white;","Function check_for_user: error at VX-server!");
1490    alert ("Leider kam es zu einem Server-Fehler.\n\nBitte wenden Sie sich an unseren Leserservice unter Angabe dieses Fehlercodes: VX-2004.");
1491  }
1492  console.log("%c4295949","background-color:darkolivegreen; color:white;","Function check_for_user: sending user return code.");
1493  return user_return_code;
1494}
1495
1496// *****************************************
1497// obsolete Event-Listener - Start
1498// *****************************************
1499window.addEventListener('message', function(event) {
1500
1501  // *****************************************
1502  // Web-Event - Regwall anzeigen - Regwall aber nicht mehr vorhanden
1503  // *****************************************
1504  if (event.origin == 'https://www.onetz.de' && typeof(event.data.event_id) !== 'undefined') {
1505    if (event.data.event_id == 'show_regwall' && event.data.code === 1717) {
1506      console.log("%c4295949","background-color:darkolivegreen; color:white;",
1507          "Received show_regwall event. Adding protection and displaying regwall");
1508      //om_blur_content();
1509      om_rw_show_login();          
1510    }
1511  }
1512
1513  // *****************************************
1514  // Piano Events
1515  // *****************************************
1516  if (event.origin == 'https://buy.tinypass.com' && typeof(event.data.event_id) !== 'undefined') {
1517
1518    // *****************************************
1519    // Ein Piano-Template übermittelt ein Login-Event (Login-iframe in Piano Template) - CMS Login anstoßen
1520    // *****************************************
1521    if (event.data.event_id == 'login' && event.data.code === 2000) {
1522        console.log("%c4295949","background-color:darkolivegreen; color:white;",
1523            "Received auth event from piano for default login. Performing local login.");
1524        window.location = 'https://www.onetz.de/user/login';
1525    }
1526
1527    // *****************************************
1528    // Eventhandler für Login/Registrierung auf altem Piano-Login-Template.
1529    // Nachdem der Login inzwischen anders integriert ist, könnten wir das wahrscheinlich entfernen. 
1530    // *****************************************
1531    if (event.data.event_id == 'checkout' && (event.data.code === 2000 || event.data.code === 5000)) {
1532      console.log("%c4295949","background-color:darkolivegreen; color:white;",
1533          "Received checkout event from piano. Resuming checkout. Code:" + event.data.code);
1534      window.dispatchEvent(new CustomEvent('ssoAuthStateChanged', {detail:{}}));
1535
1536      setTimeout(function() {
1537        console.log("%c4295949","background-color:darkolivegreen; color:white;","Performing JWT-based subscription check.");
1538        var theURL = "";
1539
1540        // *****************************************
1541        // uuid im sessionStorage? Wenn ja, dann für den JWOT-Abruf nutzen.
1542        // Wenn nein, wird der Session-Cookie genutzt (unzuverlässiger und langsamer).
1543        // *****************************************
1544        if (sessionStorage.encUID){
1545          theURL = "https://piano-connector.onetz.de/api/jwt/"+atob(sessionStorage.encUID);
1546        }
1547        else {
1548          theURL = "https://piano-connector.onetz.de/api/jwt";
1549        }
1550
1551        // *****************************************
1552        // Hasso JWOT abfragen - Abo-Infos erhalten.
1553        // *****************************************
1554        let xhr = new XMLHttpRequest();
1555        xhr.open("GET", theURL);
1556        xhr.withCredentials = true;
1557        xhr.setRequestHeader("Content-Type", "application/json");
1558        xhr.send();
1559
1560        // *****************************************
1561        // Allgemeiner Fehlerhandler
1562        // *****************************************
1563        xhr.onerror = function () {
1564          console.error("%c4295949", "background-color:darkolivegreen; color:white;",
1565              "XHR Error .onerror: " + xhr.status);
1566        };
1567
1568        // *****************************************
1569        // Firefox blockt den Request.
1570        // *****************************************
1571        xhr.onload = function () {
1572          if (xhr.status == 404) {
1573            if (navigator.userAgent.toLowerCase().indexOf("firefox") > -1) {
1574              console.error("%c4295949", "background-color:darkolivegreen; color:white;",
1575                  "404 detected. Browser is Firefox");
1576            }
1577            else {
1578              console.error("%c4295949", "background-color:darkolivegreen; color:white;",
1579                  "404 detected. Performing page refresh");
1580              //setTimeout(function () { location.reload(); }, 500);
1581            }
1582          }
1583        };
1584
1585        // *****************************************
1586        // JWOT empfangen
1587        // *****************************************
1588        xhr.onloadend = function () {
1589          if (xhr.status == 200) {
1590            var base64Url = xhr.responseText.split('.')[1];
1591            var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
1592            var jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function(c) {
1593              return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
1594            }).join(''));
1595
1596            var antw = JSON.parse(jsonPayload);
1597            var resAccess=(antw.resourceAccess);
1598            var encUN = btoa(antw.name);
1599            var encUID = btoa(antw.sub);
1600            sessionStorage.setItem("encUN", encUN);
1601            sessionStorage.setItem("encUID", encUID);
1602
1603            // *****************************************
1604            // Nutzer hat Abo-Einträge - Plus oder EP
1605            // *****************************************
1606            if (resAccess.length > 0) {
1607              sessionStorage.setItem("hasResAccess", "true"); 
1608
1609              if(typeof data.targetedTermId == "undefined" && data.offerType != "upgradeOffer") {
1610              //if(data.offerType != "upgradeOffer" && data.type != "gift") {
1611                // *****************************************
1612                // Kein Upgrade - Info anzeigen
1613                // *****************************************
1614                console.log("%c4295949","background-color:darkolivegreen; color:white;","User has active subscription.");
1615                let CheckPlus = false;
1616                for (let i=0; i < resAccess.length; i++) {
1617                  if (resAccess[i].includes("Plus") || resAccess[i].includes("plus")) {
1618                    CheckPlus = true;
1619                  }
1620                }
1621
1622                $(".tp-close").click();                        
1623                document.addEventListener("visibilitychange", () => {
1624                  console.log("%c4295949","background-color:darkolivegreen; color:white;",
1625                      "Received visibilitychange event. Cancel checkout and remove data.");
1626                  dnt_piano_remove_checkout_params();
1627                  dnt_piano_finalize_checkout();
1628                });
1629    
1630                if (CheckPlus === true) {
1631                  sessionStorage.setItem("hasPremiumAccess", "true");
1632                  tp.template.show({'templateId':'OTQ75DD8YVX7', 'showCloseButton': false});
1633                }
1634                else {
1635                  sessionStorage.setItem("hasPremiumAccess", "false");
1636                  tp.template.show({'templateId':'OTQ75DD8YVX7',templateVariantId: 'OTVR9XDA00P5X', 'showCloseButton': false});
1637                }
1638              }
1639              else {
1640                // *****************************************
1641                // Upgrade - Kauf fortsetzen, wenn Login oder Registrierung abgeschlossen.
1642                // *****************************************
1643                let params = dnt_piano_get_checkout_params();
1644                if (event.data.code === 2000) {
1645                  console.log("Wait 0.5 sec then proceed.");
1646                  dnt_piano_start_checkout(params, 500);
1647                }
1648                else if (event.data.code === 5000) {
1649                  check_for_user(antw.sub)
1650                  .then(restart_checkout);
1651                }
1652              }
1653            }
1654            else {
1655              // *****************************************
1656              // Kein Abo - Kauf fortsetzen, wenn Login oder Registrierung abgeschlossen.
1657              // *****************************************
1658              console.log("%c4295949","background-color:darkolivegreen; color:white;","User has NO active subscriptions. Resume checkout.");
1659              let params = dnt_piano_get_checkout_params();
1660              if (event.data.code === 2000) {
1661                console.log("%c4295949","background-color:darkolivegreen; color:white;","User already registered.");
1662                dnt_piano_start_checkout(params, 50);
1663              }
1664              else if (event.data.code === 5000) {
1665                 console.log("%c4295949","background-color:darkolivegreen; color:white;","Newly registered user. Waiting for Hasso-Piano-Sync.");
1666                 check_for_user(antw.sub)
1667                 .then(restart_checkout);
1668              }
1669            }
1670          }
1671          else {
1672            // *****************************************
1673            // Fehler beim Abo-Check - Kauf fortsetzen.
1674            // *****************************************
1675            console.log("%c4295949","background-color:darkolivegreen; color:white;",
1676                 "XHR Error - resume checkout without subscription check: " +  xhr.status);
1677            let params = dnt_piano_get_checkout_params();
1678            dnt_piano_start_checkout(params, 500);
1679          }                      
1680        };
1681      }, 500);
1682    }
1683  }
1684});
1685// *****************************************
1686// obsolete Event-Listener - Ende
1687// *****************************************
1688
1689
1690
1691// *****************************************
1692// Event-Listener, die auf Signale von Hasso, Piano oder der Website warten. 
1693// *****************************************
1694window.addEventListener('message', function(event) {
1695
1696  // *****************************************
1697  // Hasso-Events
1698  // *****************************************
1699  // Login oder Registrierung erfolgreich.
1700  // *****************************************
1701  if (event.origin == 'https://sso.onetz.de' && (event.data.code === 2000 || event.data.code === 5000)) {
1702    console.log("%c4295949","background-color:darkolivegreen; color:white;","User is logged in. Forced page reload.");
1703    location.reload();
1704
1705    //ursprünglicher Fenni-Code
1706    //$('.sso-login-box-wrapper').remove();
1707    //window.dispatchEvent(new CustomEvent('ssoAuthStateChanged', {detail: {}}));
1708    //let params = dnt_piano_get_checkout_params();
1709    //dnt_piano_start_checkout(params, 2000);
1710  }
1711
1712  // *****************************************
1713  // Bei einem Logout werden die sessionStorage-Einträge gelöscht
1714  // *****************************************
1715  if (event.origin == 'https://sso.onetz.de' && event.data.code === 2100) {
1716    console.log("%c4295949","background-color:darkolivegreen; color:white;","User is NOT logged in. Removing data from sessionStorage.");
1717    om_wipe_sessionStorage();
1718  }
1719
1720  // *****************************************
1721  // Piano-Events
1722  // *****************************************
1723  if (event.origin == 'https://buy.tinypass.com' && typeof(event.data.event_id) !== 'undefined') {
1724
1725    // *****************************************
1726    // MyAccount - nach einem Tab-Klick Seite nach oben scrollen.
1727    // *****************************************
1728    if (event.data.event_id == 'tab-klick' && event.data.code === 1000) {    
1729      window.scrollTo({top: 200,left: 0, behavior: 'smooth' });
1730    }
1731
1732    // *****************************************
1733    // Firefox-Nutzer - Infomeldung wird entfernt und für 180 Tage ausgeblendet.
1734    // *****************************************
1735    if (event.data.event_id == 'msg_close_click' && event.data.code === 1010) {
1736      console.log("%c4295949","background-color:darkolivegreen; color:white;","Received message close click event from Firefox info message.");
1737      const d = new Date();
1738      d.setTime(d.getTime() + (180*24*60*60*1000));
1739      let expires = "expires="+ d.toUTCString();
1740      document.cookie = "_pc_ff_msg_close = true;" + expires + ";path=/";
1741      console.log("%c4295949","background-color:darkolivegreen; color:white;","Set _pc_ff_msg_close cookie.");
1742      let ff_msg_boxes = document.getElementsByClassName('piano_container_infotext')
1743      for (let i_ff = 0; i_ff < ff_msg_boxes.length; i_ff++) {
1744        ff_msg_boxes[i_ff].classList.add('dnt_versteckt');
1745      }
1746    }
1747
1748    // *****************************************
1749    // Checkout abgebrochen und weiter zu Plus Upgrade-Seite geleitet
1750    // *****************************************
1751    if (event.data.event_id == 'gotoinfo_plus' && event.data.code === 4242) {
1752      console.log("%c4295949","background-color:darkolivegreen; color:white;",
1753          "Received gotoinfo_plus event from piano. Cancel checkout got to info page.");
1754      window.location = 'https://www.onetz.de/plus_upgrades';
1755    }
1756
1757    // *****************************************
1758    // Checkout abgebrochen und weiter zu E-Paper Vorteils-Seite geleitet
1759    // *****************************************
1760    if (event.data.event_id == 'gotoinfo_ep' && event.data.code === 4242) {
1761      console.log("%c4295949","background-color:darkolivegreen; color:white;",
1762          "Received gotoinfo_ep event from piano. Cancel checkout got to info page.");
1763      window.location = 'https://www.onetz.de/pr/epaper-alle-vorteile-ueberblick-id2633267.html';
1764    }
1765
1766    // *****************************************
1767    // Checkout abgebrochen und Meldung geschlossen - keine weiter Aktion
1768    // *****************************************
1769    if (event.data.event_id == 'cancle' && event.data.code === 4343) {
1770      console.log("%c4295949","background-color:darkolivegreen; color:white;","Received cancel event from piano. Cancel checkout.");
1771      dnt_piano_remove_checkout_params();
1772      dnt_piano_finalize_checkout();
1773    }
1774
1775    // *****************************************
1776    // Login-Link auf Paywall geklickt - Hasso-Layer anzeigen.
1777    // *****************************************
1778    if (event.data.event_id == 'just_login' && event.data.code === 7777) {
1779      console.log("%c4295949","background-color:darkolivegreen; color:white;","Received just_login event from piano. Showing inpage login.");
1780      dnt_piano_store_redirect_url(window.location.pathname);
1781      om_pw_show_login(); 
1782    }
1783
1784    // *****************************************
1785    // Matomo-Tracking innerhalb eines VX-Templates empfangen
1786    // *****************************************
1787    if (event.data.event_id == 'mtm_click_tracked' && event.data.code === 8585) {
1788      console.log("%c4295949","background-color:darkolivegreen; color:white;","Received mtm_click_tracked event: "+event.data.item_clicked);
1789    }
1790  }
1791
1792  // *****************************************
1793  // Events, die sowohl von Piano als auch von onetz.de aus ausgelöst werden können. 
1794  // *****************************************  
1795  if ((event.origin == 'https://buy.tinypass.com' || event.origin == 'https://www.onetz.de') && typeof(event.data.event_id) !== 'undefined') {
1796    // *****************************************
1797    // Wird von System Template Receipt aufgerufe, nachdem Schließen (auch schließen 'X') geklickt wurde.
1798    // Speichert aktuelle URL für page reload nach dem Kauf.
1799    // *****************************************
1800    if ((event.data.event_id == 'finish_purchase' || event.data.event_id == 'has_access') && event.data.code === 5555) {
1801      if (window.location.href.includes("/plus") === false && window.location.href.includes("onetzplus-abo-verwalten") === false) {
1802        localStorage.setItem("dntCoTarget", window.location.pathname);
1803      }
1804      else {
1805        localStorage.setItem("dntCoTarget", "/onetzplus");
1806      }
1807      console.log("%c4295949","background-color:darkolivegreen; color:white;","Page refresh event after purchase: " + localStorage.dntCoTarget);
1808      dnt_piano_finalize_checkout();
1809    }    
1810  }
1811});
1812
1813
1814// *****************************************
1815// Piano-VX - Eventhandler - In den Start des Checkouts die Abo-Überprüfung integrieren. 
1816// *****************************************
1817tp = window["tp"] || [];
1818tp.push(["addHandler", "startCheckout", function(data) {
1819  console.log("%c4295949","background-color:darkolivegreen; color:white;","Start Checkout.");
1820  // console.log("%c4295949","background-color:darkolivegreen; color:white;"," Start Checkout Data: " + JSON.stringify(data));
1821  // *****************************************
1822  // Rücksprungziel für nach dem Login sichern. 
1823  // *****************************************
1824  let redir_url = new URLSearchParams(location.search).get('doi_success_redirect');
1825  if (redir_url === null) {
1826    console.log("%c4295949","background-color:darkolivegreen; color:white;","No doi_success_redirect value in location.search.");
1827    if (location.href.match(/(id\d{7})/gi) === null ) {
1828      if (data.isRedemption == true || data.isRedemption == "true"){
1829        console.log("%c4295949","background-color:darkolivegreen; color:white;","Gift subscription redemption page.");
1830        //redir_url = "/plus_test_lp_voucher";
1831        redir_url = "/onetzplus";
1832      }
1833      else {
1834        console.log("%c4295949","background-color:darkolivegreen; color:white;","No article id in location.href.");
1835        redir_url = "/onetzplus";
1836      }
1837    }
1838    else {
1839      console.log("%c4295949","background-color:darkolivegreen; color:white;","Article id in location.href.");
1840      redir_url = location.pathname;
1841    }
1842  }
1843  console.log("%c4295949","background-color:darkolivegreen; color:white;","doi_success_redirect: "+redir_url);
1844
1845  dnt_piano_store_redirect_url(redir_url);
1846  console.log("%c4295949","background-color:darkolivegreen; color:white;","DOI redirect url stored.");
1847  
1848  // *****************************************
1849  // Handelt es sich um ein Upgrade oder nicht?
1850  // Bei einem Upgrade wird der Kauf nicht unterbrochen.
1851  // *****************************************
1852
1853
1854  if (typeof data.offerType != "undefined" && data.offerType == "upgradeOffer"){  
1855    // *****************************************
1856    // Upgrade - Kauf fortsetzen
1857    // *****************************************
1858    console.log("%c4295949","background-color:darkolivegreen; color:white;","Subscription type upgrade. Resume checkout.");
1859    
1860    // *****************************************
1861    // Ladeanimation ausblenden
1862    // *****************************************
1863    if (document.getElementById("dnt_anim_loader")) {
1864      document.getElementById("dnt_anim_loader").style.display="none";
1865    }
1866  }
1867  else if (typeof data.type != "undefined" && data.type == "gift") {
1868    // *****************************************
1869    // Voucher - Kauf fortsetzen
1870    // *****************************************
1871    console.log("%c4295949","background-color:darkolivegreen; color:white;","Subscription type voucher. Resume checkout.");
1872    
1873    // *****************************************
1874    // Ladeanimation ausblenden
1875    // *****************************************
1876    if (document.getElementById("dnt_anim_loader")) {
1877      document.getElementById("dnt_anim_loader").style.display="none";
1878    }
1879  }
1880  else if (typeof data.isRedemption != "undefined" && (data.isRedemption == true || data.isRedemption == "true")) {
1881    // *****************************************
1882    // Vouchereinlösung - Kauf fortsetzen
1883    // *****************************************
1884    console.log("%c4295949","background-color:darkolivegreen; color:white;","Voucher redemption. Resume checkout.");
1885    
1886    // *****************************************
1887    // Ladeanimation ausblenden
1888    // *****************************************
1889    const anim_wait = setTimeout (function (){
1890      document.getElementById("dnt_anim_loader").style.display = "none";
1891    },2500);
1892  }
1893  else {
1894    console.log("%c4295949","background-color:darkolivegreen; color:white;","No upgrade. No voucher redemption. Continue subscription check.");
1895
1896    // *****************************************
1897    // Gibt es bereits gespeicherte Abo-Infos?
1898    // *****************************************
1899    if (sessionStorage.hasResAccess) {
1900      console.log("%c4295949","background-color:darkolivegreen; color:white;","SessionStorage entry hasResAccess found.");
1901
1902      if (sessionStorage.hasResAccess == "true"){
1903        // *****************************************
1904        // Aktives Abo - Meldung entsprechend anzeigen
1905        // *****************************************
1906
1907
1908        // *****************************************
1909        // Ladeanimation einblenden
1910        // *****************************************
1911        if (document.getElementById("dnt_anim_loader")) {
1912          document.getElementById("dnt_anim_loader").style.display="block";
1913        }
1914
1915        console.log("%c4295949","background-color:darkolivegreen; color:white;","User has active subscription.");
1916        //$(".tp-close").click();
1917        tp.offer.close();
1918
1919        // *****************************************
1920        // Der Prozess arbeitet zu schnell für die Seite - 750ms warten. 
1921        // *****************************************
1922        setTimeout(function(){ 
1923          // *****************************************
1924          // Ladeanimation ausblenden
1925          // *****************************************
1926          if (document.getElementById("dnt_anim_loader")) {
1927            document.getElementById("dnt_anim_loader").style.display="none";
1928          }
1929
1930          tp.offer.showBackdrop();
1931          if (sessionStorage.hasPremiumAccess && sessionStorage.hasPremiumAccess == "true") {
1932            console.log("%c4295949","background-color:darkolivegreen; color:white;","User has premium subscription.");
1933            tp.template.show({'templateId':'OTQ75DD8YVX7', 'showCloseButton': false});
1934
1935          }
1936          else {
1937            console.log("%c4295949","background-color:darkolivegreen; color:white;","User has epaper subscription.");
1938            tp.template.show({'templateId':'OTQ75DD8YVX7',templateVariantId: 'OTVR9XDA00P5X', 'showCloseButton': false});
1939          }
1940        }, 750);
1941      }
1942      else {
1943        // *****************************************
1944        // Kein Abo - Kauf fortsetzen
1945        // *****************************************
1946        console.log("%c4295949","background-color:darkolivegreen; color:white;","User has NO active subscriptions. Resume checkout.");
1947
1948        // *****************************************
1949        // Ladeanimation ausblenden
1950        // *****************************************
1951        if (document.getElementById("dnt_anim_loader")) {
1952          document.getElementById("dnt_anim_loader").style.display="none";
1953        }
1954      }
1955    }
1956    else {
1957      // *****************************************
1958      // Kein gespeicherten Abo-Informationen. Abo Check mit JWOT wird ausgeführt. 
1959      // *****************************************
1960      console.log("%c4295949","background-color:darkolivegreen; color:white;","No sessionStorage entry hasResAccess. Continue subscription check");
1961
1962      var theURL = "";
1963
1964      // *****************************************
1965      // encUID im sessionStorage? Wenn ja, dann für den JWOT-Abruf nutzen.
1966      // Wenn nein, wird der Session-Cookie genutzt (unzuverlässiger und langsamer).
1967      // *****************************************
1968      if (sessionStorage.encUID){
1969        theURL = "https://piano-connector.onetz.de/api/jwt/"+atob(sessionStorage.encUID);
1970      }
1971      else {
1972        theURL = "https://piano-connector.onetz.de/api/jwt";
1973      }
1974
1975      // *****************************************
1976      // Hasso JWOT abfragen - Abo-Infos erhalten.
1977      // *****************************************
1978      var xhr = new XMLHttpRequest();
1979      xhr.open("GET", theURL);
1980      xhr.withCredentials = true;
1981      xhr.setRequestHeader("Content-Type", "application/json");
1982      xhr.send();
1983      
1984      // *****************************************
1985      // Allgemeiner Fehlerhandler
1986      // *****************************************
1987      xhr.onerror = function () {
1988        console.error("%c4295949 - TP startCheckout", "background-color:darkolivegreen; color:white;",
1989              "XHR Error .onerror: " + xhr.status);
1990      }
1991
1992      // *****************************************
1993      // Firefox blockt den Request.
1994      // *****************************************
1995      xhr.onload = function () {
1996        if (xhr.status == 404) {
1997          if (navigator.userAgent.toLowerCase().indexOf("firefox") > -1) {
1998            console.error("%c4295949", "background-color:darkolivegreen; color:white;",
1999                "404 detected. Browser is Firefox");
2000          }
2001          else {
2002            console.error("%c4295949", "background-color:darkolivegreen; color:white;",
2003                "404 detected. Performing page refresh");
2004            //setTimeout(function () { location.reload(); }, 500);
2005          }
2006        }
2007      };
2008
2009      // *****************************************
2010      // JWOT empfangen
2011      // *****************************************
2012      xhr.onloadend = function () {
2013        if (xhr.status == 200) {
2014          console.log("%c4295949","background-color:darkolivegreen; color:white;","JWT successfully received.");
2015          var base64Url = xhr.responseText.split('.')[1];
2016          var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
2017          var jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function(c) {
2018            return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
2019          }).join(''));
2020
2021          var antw = JSON.parse(jsonPayload);
2022          var resAccess=(antw.resourceAccess);
2023          var encUN = btoa(antw.name);
2024          var encUID = btoa(antw.sub);
2025          sessionStorage.setItem("encUN", encUN);
2026          sessionStorage.setItem("encUID", encUID);
2027
2028          // *****************************************
2029          // Ladeanimation ausblenden
2030          // *****************************************
2031          if (document.getElementById("dnt_anim_loader")){document.getElementById("dnt_anim_loader").style.display="none";}
2032
2033          // *****************************************
2034          // Nutzer hat Abo-Einträge - Plus oder EP
2035          // *****************************************
2036          if (resAccess.length > 0) {
2037            sessionStorage.setItem("hasResAccess", "true");
2038
2039            if(typeof data.targetedTermId === "undefined" && data.offerType != "upgradeOffer"){
2040
2041              // *****************************************
2042              // Kein Upgrade - Meldung entsprechend anzeigen
2043              // *****************************************
2044              console.log("%c4295949","background-color:darkolivegreen; color:white;","No upgrade. Continue subscription check."); 
2045              console.log("%c4295949","background-color:darkolivegreen; color:white;","User has active subscription.");
2046              let CheckPlus = false;
2047              for (let i=0; i < resAccess.length; i++) {
2048                if (resAccess[i].includes("Plus") || resAccess[i].includes("plus")) {
2049                  CheckPlus = true;
2050                }
2051              }
2052              tp.offer.close();
2053
2054              if (CheckPlus === true) {
2055                sessionStorage.setItem("hasPremiumAccess", "true");
2056                tp.template.show({'templateId':'OTQ75DD8YVX7', 'showCloseButton': false});
2057              }
2058              else {
2059                sessionStorage.setItem("hasPremiumAccess", "false");
2060                tp.template.show({'templateId':'OTQ75DD8YVX7',templateVariantId: 'OTVR9XDA00P5X', 'showCloseButton': false});
2061              }
2062            }
2063            else {
2064              // *****************************************
2065              // Upgrade - Kauf fortsetzen
2066              // *****************************************
2067              console.log("%c4295949","background-color:darkolivegreen; color:white;","Upgrade. Skipping subscription check.");
2068            }
2069          }
2070          else {
2071            // *****************************************
2072            // Kein Abo - Kauf fortsetzen
2073            // *****************************************
2074            console.log("%c4295949","background-color:darkolivegreen; color:white;","User has NO active subscriptions. Resume checkout.");
2075          }
2076        }
2077        else {
2078          // *****************************************
2079          // Fehler beim Abo-Check - Kauf fortsetzen.
2080          // *****************************************
2081          console.log("%c4295949","background-color:darkolivegreen; color:white;",
2082              "XHR Error - resume checkout without subscription check: " +  xhr.status);
2083          let params = dnt_piano_get_checkout_params();
2084          dnt_piano_start_checkout(params, 500); 
2085        }
2086      };
2087    }
2088  }
2089}]);
2090
2091if (location.search.includes("loggedout") || location.search.includes("loggedOut")){
2092  om_wipe_sessionStorage()
2093  .then (()=> {
2094    let search_para = new URLSearchParams(location.search);
2095    search_para.delete("loggedOut");
2096    search_para.delete("loggedout");
2097    let new_url = "";
2098    if (typeof location.pathname != "undefined") {
2099      new_url = location.origin + location.pathname;
2100    } else {
2101      new_url = location.origin;
2102    }
2103    if (search_para.size > 0){
2104      new_url = new_url + "?" + search_para;
2105    }
2106    location.replace(new_url);
2107    console.warn ("Session storage wiped");
2108  });
2109}
2110</script>
2110   </div>
2111
2112  
2113</article> <!-- /.node -->
2114  </div>
2115
2116  
2117  
2118  </div>
2119<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-node dm-nobg"  >
2120  
2121  
2122  
2123  <div class="pane-content">
2124    
2125    <article id="node-4296323" class="node node-type-thing build-mode-full clearfix ">
2126
2127    
2128  
2129  
2130  <div class="content">
2131     
2132<p>
2132<script data-cmp-ab="1" data-cmp-vendor="c21267">
2133
2134// *****************************************
2135// toggle_ad_z_index - Ändert den Z-index der Footer-Werbeelmente, damit diese nicht das Menü überdecken.
2136// *****************************************
2137function toggle_ad_z_index(button){
2138  console.log("%c4296323","background-color:darkolivegreen; color:white;","Button clicked: "+button);
2139  let sticky_cont = document.getElementsByClassName('trf-ad-bottom-sticky-container');
2140  let nav_header = document.getElementById('header');
2141  let nav_menu = document.getElementById('navigation');
2142  if (nav_menu.classList.contains('nav-open')) {
2143    nav_menu.style.zIndex = "2147483636";
2144    nav_header.style.zIndex = "2147483646";
2145  } else {
2146    nav_menu.style.zIndex = "5000000";
2147    nav_header.style.zIndex = "5000010";
2148  }
2149  for (let cont_item of sticky_cont){
2150    if (cont_item.style.display != "none"){
2151      console.log("%c4296323","background-color:darkolivegreen; color:white;","Active sticky footer found.");
2152      if (cont_item.style.zIndex == 1){ 
2153        console.log("%c4296323","background-color:darkolivegreen; color:white;","Z-index set to 2147483646");
2154        cont_item.style.zIndex = "2147483646";
2155      }
2156      else {
2157        console.log("%c4296323","background-color:darkolivegreen; color:white;","Z-index set to 1");
2158        cont_item.style.zIndex = "1";
2159      }
2160    }
2161    else {
2162      console.log("%c4296323","background-color:darkolivegreen; color:white;","Sticky footer NOT found");
2163    }
2164  }
2165}
2166
2167document.addEventListener('trfSlotRendered', function(){
2168  console.warn(event.detail.placement);
2169});
2170
2171// *****************************************
2172// navbar-element-user click event listener hinzufügen - Werbung verstecken bei Klick auf Nutzerprofil/Login-Icon
2173// *****************************************
2174if (typeof document.getElementsByClassName("navbar-element-user") != "undefined" 
2175      && document.getElementsByClassName("navbar-element-user").length > 0 ) { 
2176  document.getElementsByClassName("navbar-element-user")[0].addEventListener("click", function() {
2177    toggle_ad_z_index("profile");
2178  });
2179}
2180
2181// *****************************************
2182// Burger-Navi click event listener hinzufügen - Werbung verstecken bei Klick auf Burger-Navi
2183// *****************************************
2184if (typeof document.getElementsByClassName("navbar-element-hamburger") != "undefined" 
2185      && document.getElementsByClassName("navbar-element-hamburger").length > 0) {
2186  document.getElementsByClassName("navbar-element-hamburger")[0].addEventListener("click", function() {
2187    toggle_ad_z_index("burger");
2188  });
2189}
2190
2191window.addEventListener('message', function(event) {
2192
2193  // *****************************************
2194  //Show-Hide event listener triggered by login requests on Paywall
2195  // *****************************************
2196  if (event.origin === "https://www.onetz.de" || event.origin === "https://buy.tinypass.com" || event.origin === "https://sso.onetz.de") {
2197
2198    // *****************************************
2199    // Paywall oder andere Elemente können dieses Event schicken und damit alle Footer-Werbeelemente verstecken, 
2200    // damit diese keine funktionalen Elemente der Website oder anderer Prozesse überdecken. 
2201    // *****************************************
2202    if (event.data.event_id == 'hide' && event.data.code === 8080) {
2203      console.log("%c4296323","background-color:darkolivegreen; color:white;","Received hide sticky container event from webpage: " + event.origin);
2204      let sticky_cont = document.getElementsByClassName('trf-ad-bottom-sticky-container');
2205      for (let cont_item of sticky_cont){
2206        if (cont_item.style.display != "none"){            
2207          cont_item.style.zIndex = "1";
2208        }
2209      }
2210    }
2211    if (event.data.event_id == 'restore' && event.data.code === 8081) {
2212      console.log('got restore event from webpage: ' + event.origin);
2213      let sticky_cont = document.getElementsByClassName('trf-ad-bottom-sticky-container');
2214      for (let cont_item of sticky_cont){
2215        if (cont_item.style.display != "none"){            
2216          cont_item.style.zIndex = "2147483646";
2217        }
2218      }
2219    }
2220  }
2221
2222  // *****************************************
2223  // Event-Listener, der auf Hasso-Events bei erfolgreichem Login oder Registrierung reagiert. Nutzen unbekannt. 
2224  // Die Website empfängt die Events in dem Moment sowieso und informiert sich quasi ein zweites Mal selbst darüber.
2225  // *****************************************
2226  if (event.origin === "https://sso.onetz.de") {
2227    if(event.data.code === 2000) {
2228      parent.postMessage({event_id: 'login', code: 2000}, 'https://www.onetz.de');
2229      console.log("%c4296323","background-color:darkolivegreen; color:white;","Handing down message event - sso to www.");
2230	}
2231    else if(event.data.code === 5000) {
2232      parent.postMessage({event_id: 'login', code: 5000}, 'https://www.onetz.de');
2233      console.log("%c4296323","background-color:darkolivegreen; color:white;","Handing down message event - sso to www.");
2234	}
2235  }
2236});
2237
2238tp = window["tp"] || [];
2239var dnt_piano_checkout_disabled = true;
2240
2241
2242// *****************************************
2243// Piano-VX - Eventhandler - Reagiert auf das LoginRequired-Event, das am Anfang des Checkouts ausgelöst wird.
2244// Kauf ist nur eingeloggten Nutzern möglich. Da wir Piano ID nicht nutzen, muss der Login im Checkout manuell gesteuert werden. 
2245// *****************************************
2246tp.push(["addHandler", "loginRequired", function(params, data){
2247  console.log("%c4296323","background-color:darkolivegreen; color:white;","Login required.");
2248  console.log("%c4296323","background-color:darkolivegreen; color:white;","Log req Data: " + JSON.stringify(data) );
2249
2250
2251  // *****************************************
2252  // Das Piano-Params-Objekt enthält Informationen über den zuvor begonnen Checkout/Kauf.
2253  // *****************************************
2254  dnt_piano_store_checkout_params(params);
2255  //tp.offer.close();
2256
2257  // *****************************************
2258  // Rücksprungziel für nach dem Login sichern. 
2259  // *****************************************
2260  let url = new URLSearchParams(location.search).get('doi_success_redirect');
2261  if (url === null) {
2262    console.log("%c4296323","background-color:darkolivegreen; color:white;","No doi_success_redirect value in location.search.");
2263    if (location.href.match(/(id\d{7})/gi) === null ) {
2264      if (data.isRedemption == true || data.isRedemption == "true"){
2265        console.log("%c4296323","background-color:darkolivegreen; color:white;","Gift subscription redemption page.");
2266        //url = "plus_test_lp_voucher";
2267        url = "/onetzplus";
2268      }
2269      else {
2270        console.log("%c4296323","background-color:darkolivegreen; color:white;","No article id in location.href.");
2271        url = "/onetzplus";
2272      }
2273    }
2274    else {
2275      console.log("%c4296323","background-color:darkolivegreen; color:white;","Article id in location.href.");
2276      url = location.pathname;
2277    }
2278  }
2279  console.log("%c4296323","background-color:darkolivegreen; color:white;","doi_success_redirect: "+url);
2280
2281  dnt_piano_store_redirect_url(url);
2282  console.log("%c4296323","background-color:darkolivegreen; color:white;","DOI redirect url stored.");
2283
2284  // *****************************************
2285  // Login-Layer anzeigen - in-Page-Login.
2286  // *****************************************
2287  om_pw_show_login();
2288  console.log("%c4296323","background-color:darkolivegreen; color:white;","Function om_pw_show_login(4287610) called.");
2289
2290  return false;
2291}]);
2292
2293// *****************************************
2294// In der Onetz-App des Website-CMP deaktivieren. 
2295// *****************************************
2296if (navigator.userAgent.includes("_onetz_app") == true) {
2297  console.log ("%c4296323","background-color:limegreen; color:black;","Onetz App - Webview CMP-layer deactivated.");
2298  window.cmp_noscreen = true;
2299}
2300
2301</script>
2301</p>
2302
2303   </div>
2304
2305  
2306</article> <!-- /.node -->
2307  </div>
2308
2309  
2310  
2311  </div>
2312<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-node dm-nobg"  >
2313  
2314  
2315  
2316  <div class="pane-content">
2317    
2318    <article id="node-4855048" class="node node-type-thing build-mode-full clearfix ">
2319
2320    
2321  
2322  
2323  <div class="content">
2324     
2324<script data-cmp-ab="2" data-cmp-vendor="c21267">
2325
2326// *****************************************
2327// hole ID aus der URL; wenn keine da ist: ID = URL ohne Parameter
2328// *****************************************
2329function getArtikelID() {
2330  let artikel_id = window.location.toString().match(/d\d{7}/);
2331  if (artikel_id === null) {
2332    artikel_id = window.location.toString().split('www.')[1];
2333    artikel_id = artikel_id.split('?')[0];
2334    return artikel_id;
2335  }
2336  else {
2337    return artikel_id.toString().substring(1);
2338  }
2339}
2340
2341// *****************************************
2342// User Needs, Themen-Kategorie und ReporterTeam aus den Meta-Tags auslesen und als Custom Dimensions an Matomo übermitteln. 
2343// *****************************************
2344function setCustomDimensions(){
2345    let user_needs = document.querySelectorAll("meta[name*='user_needs']");
2346    let topic_cats = document.querySelectorAll("meta[name*='themen_kat']");
2347    let editorial_teams = document.querySelectorAll("meta[name*='ContentEditorialTeam']");
2348    let page_class = document.querySelectorAll("meta[name*='pageclass']");
2349    let user_need = "n/a";
2350    let topic_cat = "n/a";
2351    let editorial_team = "n/a";
2352
2353    if (page_class.length != 1) {
2354         console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2355            "Matomo-Integration - setCustomDimensions - page class - wrong number of entries: ", page_class.length);
2356        return;       
2357    }
2358    if (page_class[0].content != "article") {
2359        console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2360            "Matomo-Integration - setCustomDimensions - no article.");
2361        return;
2362    }
2363
2364    if (user_needs.length >= 1){
2365        user_need = user_needs[0].content;
2366    }
2367
2368    if (topic_cats.length >= 1){
2369        topic_cat = topic_cats[0].content;
2370    }
2371
2372    for (team of editorial_teams){
2373        if (team.content != "MedienProduktion" && editorial_team == "n/a"){
2374            editorial_team = team.content;
2375        }
2376    }
2377
2378    console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2379        "Matomo-Integration - setCustomDimensions - user need: " + user_need + " - topic cat: " + topic_cat + " - editorial team: " + editorial_team );
2380    _paq.push(['setCustomDimension', customDimensionId = 6, customDimensionValue = user_need]);
2381    _paq.push(['setCustomDimension', customDimensionId = 7, customDimensionValue = topic_cat]);
2382    _paq.push(['setCustomDimension', customDimensionId = 8, customDimensionValue = editorial_team]);
2383
2384    return;
2385}
2386
2387// *****************************************
2388// Mail-Adresse für Checkout ermittln.
2389// Mail-Adresse bei internem Dienst abfragen und verschlüsselt zur Verfügung stellen. 
2390// *****************************************
2391function om_get_mail_addr(uuid) {
2392  var action = "";
2393  var send_string = "?action=get_mail_addr_only&uuid=" + uuid;
2394  var the_URL = "https://newsapptec.onetz.de:8086" + send_string;
2395  var xhr = new XMLHttpRequest();
2396
2397
2398  xhr.open('GET', the_URL, true);
2399  //xhr.withCredentials = true;
2400  //xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
2401  xhr.send();
2402  xhr.onerror = function () {
2403    console.error("%c4855048", "background-color:darkolivegreen; color:white;", "om_get_mail_addr - request error: " + xhr.status);
2404  }
2405  xhr.onloadend = function () {
2406    if (xhr.status === 200) {
2407      var response_code = JSON.parse(xhr.responseText).code;
2408      var response_info = JSON.parse(xhr.responseText).info;
2409      var response_mail = JSON.parse(xhr.responseText).mail;
2410      if (response_code == '200') {
2411        sessionStorage.setItem("mtm_cur_mail", response_mail);
2412        sessionStorage.setItem("encMail", btoa(response_mail));
2413      }
2414      else {
2415        console.error("%c4855048", "background-color:darkolivegreen; color:white;",
2416            "om_get_mail_addr - code: " + response_code + " - info: " + response_info);
2417      }
2418    }
2419  };
2420}
2421
2422// *****************************************
2423// Abo-Status ermittln.
2424// *****************************************
2425function om_check_subs_jwot() {
2426  return new Promise(function (resolve, reject) {
2427
2428    // *****************************************
2429    // Überprüfen, ob es bereits einen gespeicherten Abo-Status gibt. 
2430    // *****************************************
2431    if (sessionStorage.hasResAccess && sessionStorage.hasResAccess != "") {
2432      if (sessionStorage.hasResAccess == "true") {
2433        _paq.push(['setCustomDimension', customDimensionId = 3, customDimensionValue = "Ja"]);
2434        console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2435            "Matomo-Integration - om_check_subs_jwot - user has premium access.");
2436        sessionStorage.setItem("hasResAccess", "true");
2437      }
2438      else {
2439        _paq.push(['setCustomDimension', customDimensionId = 3, customDimensionValue = "Nein"]);
2440        console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2441            "Matomo-Integration - om_check_subs_jwot - user has no premium access.");
2442        sessionStorage.setItem("hasResAccess", "false");
2443      }
2444      resolve();
2445    }
2446    else {
2447
2448      // *****************************************
2449      // Kein gespeicherten Abo-Informationen. Abo Check mit JWOT wird ausgeführt. 
2450      // *****************************************
2451      var theURL = "";
2452
2453      // *****************************************
2454      // encUID im sessionStorage? Wenn ja, dann für den JWOT-Abruf nutzen.
2455      // Wenn nein, wird der Session-Cookie genutzt (unzuverlässiger und langsamer).
2456      // *****************************************
2457      if (sessionStorage.encUID) {
2458        theURL = "https://piano-connector.onetz.de/api/jwt/"+atob(sessionStorage.encUID);
2459      }
2460      else {
2461        theURL = "https://piano-connector.onetz.de/api/jwt";
2462      }
2463 
2464      // *****************************************
2465      // Hasso JWOT abfragen - Abo-Infos erhalten.
2466      // *****************************************
2467      let xhr = new XMLHttpRequest();
2468      xhr.open("GET", theURL);
2469      xhr.withCredentials = true;
2470      xhr.setRequestHeader("Content-Type", "application/json");
2471      xhr.send();
2472
2473      // *****************************************
2474      // Allgemeiner Fehlerhandler
2475      // *****************************************
2476      xhr.onerror = function () {
2477        console.error("%c4855048", "background-color:darkolivegreen; color:white;",
2478            "Matomo-Integration - om_check_subs_jwot - XHR Error .onerror: " + xhr.status);
2479      };
2480
2481      // *****************************************
2482      // Firefox blockt den Request.
2483      // *****************************************
2484      xhr.onload = function () {
2485        if (xhr.status == 404) {
2486          if (navigator.userAgent.toLowerCase().indexOf("firefox") > -1) {
2487            console.error("%c4855048", "background-color:darkolivegreen; color:white;",
2488                "Matomo-Integration - om_check_subs_jwot - 404 detected. Browser is Firefox");
2489          }
2490          else {
2491            console.error("%c4855048", "background-color:darkolivegreen; color:white;",
2492                "Matomo-Integration - om_check_subs_jwot - 404 detected. Performing page refresh");
2493            //setTimeout(function () { location.reload(); }, 500);
2494          }
2495        }
2496      };
2497
2498      // *****************************************
2499      // JWOT empfangen
2500      // *****************************************
2501      xhr.onloadend = function () {
2502        if (xhr.status == 200) {
2503          sessionStorage.setItem("jwotChecked", "true");
2504          var base64Url = xhr.responseText.split('.')[1];
2505          var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
2506          var jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function (c) {
2507            return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
2508          }).join(''));
2509          var antw = JSON.parse(jsonPayload);
2510          var resAccess = (antw.resourceAccess);
2511          var encUN = btoa(antw.name);
2512          var encUID = btoa(antw.sub);
2513          sessionStorage.setItem("encUN", encUN);
2514          sessionStorage.setItem("encUID", encUID);
2515          console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2516              "Matomo-Integration - om_check_subs_jwot - setting encUN: " +encUN );
2517
2518          // *****************************************
2519          // Nutzer hat Abo-Einträge - Plus oder EP
2520          // *****************************************
2521          if (resAccess.length > 0) {
2522            _paq.push(['setCustomDimension', customDimensionId = 3, customDimensionValue = "Ja"]);
2523            console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2524                "Matomo-Integration - om_check_subs_jwot - user has premium access.");
2525            sessionStorage.setItem("hasResAccess", "true");
2526            sessionStorage.setItem("hasPremiumAccess", "false");
2527            let CheckPlus = false;
2528            for (let item of resAccess) {
2529              if (item.includes("Plus") || item.includes("plus")) {
2530                sessionStorage.setItem("hasPremiumAccess", "true");
2531              }
2532            }
2533          }
2534          else {
2535            _paq.push(['setCustomDimension', customDimensionId = 3, customDimensionValue = "Nein"]);
2536            console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2537                "Matomo-Integration - om_check_subs_jwot - user has no premium access.");
2538            sessionStorage.setItem("hasResAccess", "false");
2539          }
2540          resolve();
2541        }
2542        else {
2543          _paq.push(['setCustomDimension', customDimensionId = 3, customDimensionValue = "unbekannt - FF"]);
2544          console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2545              "Matomo-Integration - om_check_subs_jwot - access unknown - Firefox.");
2546          resolve();
2547        }
2548      }
2549    }
2550  });
2551}
2552
2553// *****************************************
2554// Login-Status ermitteln.
2555// Wenn der Login-Status schon im sessionStorage abgelegt ist, wird dieser genutzt.
2556// Andernfalls wird er neu ermittelt. 
2557// *****************************************
2558function om_check_logon_state() {
2559  return new Promise(function (resolve, reject) {
2560    if (sessionStorage.encUID && sessionStorage.encUID != "") {
2561      _paq.push(['setCustomDimension', customDimensionId = 2, customDimensionValue = "Ja"]);
2562      console.log("%c4855048", "background-color:darkolivegreen; color:white;", 
2563          "Matomo-Integration - om_check_logon_state - User logged in.")
2564      resolve(true);
2565    }
2566    else{
2567      var the_sso_URL = "https://sso.onetz.de/auth/logonstatus";
2568      var xhr = new XMLHttpRequest();
2569      xhr.open("POST", the_sso_URL);
2570      xhr.withCredentials = true;
2571      xhr.setRequestHeader("Content-Type", "application/json");
2572      xhr.send();
2573      xhr.onloadend = function () {
2574        var antw = JSON.parse(xhr.responseText);
2575        console.log("%c4855048", "background-color:darkolivegreen; color:white;", 
2576            "Matomo-Integration - om_check_logon_state - Checking Logon_status...");
2577        if (antw.code == 2100) {
2578          _paq.push(['setCustomDimension', customDimensionId = 2, customDimensionValue = "Nein"]);
2579          console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2580              "Matomo-Integration - om_check_logon_state - User not logged in.");
2581          resolve(false);
2582        }
2583        else if (antw.code == 2000) {
2584          sessionStorage.setItem("uuid", antw.uuid);
2585          sessionStorage.setItem("encUID", btoa(antw.uuid));
2586          _paq.push(['setCustomDimension', customDimensionId = 2, customDimensionValue = "Ja"]);
2587          console.log("%c4855048", "background-color:darkolivegreen; color:white;", 
2588              "Matomo-Integration - om_check_logon_state - User logged in.")
2589          resolve(true);
2590        }
2591      };
2592    }
2593  });
2594}
2595
2596// *****************************************
2597// Überprüft den Referrer auf Google-Discover-Traffic
2598// *****************************************
2599function check_for_discover() {
2600  let art_id = getArtikelID();
2601  let doc_ref = document.referrer || "";
2602  doc_ref.toLowerCase();
2603  let app_string = "android-app://";
2604  var ref_string = "";
2605  var evt_cat = "";
2606
2607  console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2608      "Matomo-Integration - check_for_discover - Checking for Google Discover.");
2609
2610  // *****************************************
2611  // Referrer mit Suchmustern vergleichen - Google Discover
2612  // *****************************************
2613  if (doc_ref.startsWith(app_string) == true && doc_ref.includes("com.google.android.googlequicksearchbox") == true) {
2614    console.log("%c4855048", "background-color:darkolivegreen; color:white;", 
2615        "Matomo-Integration - check_for_discover - AppReferrer Google Discover found.");
2616    tp = window["tp"] || [];
2617    tp.push(["setCustomVariable", "google_discover", "true"]);
2618    ref_string = "Google Discover";
2619    evt_cat = "AppReferrer";
2620  }
2621
2622  // *****************************************
2623  // Referrer mit Suchmustern vergleichen - Andere App z.B. Facebook oder LinkedIn-App
2624  // *****************************************
2625  else if (doc_ref.startsWith(app_string) == true && doc_ref.includes("com.google.android.googlequicksearchbox") == false) {
2626    console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2627        "Matomo-Integration - check_for_discover - Other AppReferrer: " + doc_ref);
2628    ref_string = doc_ref;
2629    evt_cat = "AppReferrer";
2630  }
2631
2632  // **
2632***************************************
2633  // Referrer mit Suchmustern vergleichen - Google Discover aber ohne die Android-App-Kennung
2634  // *****************************************
2635  else if (doc_ref.startsWith(app_string) == false && doc_ref.includes("googlequicksearchbox") == true) {
2636    console.log("%c4855048", "background-color:darkolivegreen; color:white;", 
2637        "Matomo-Integration - check_for_discover - Non Android Google Discover AppReferrer: " + doc_ref);
2638    ref_string = doc_ref;
2639    evt_cat = "AppReferrer - non Android";
2640  }
2641
2642  // *****************************************
2643  //Referrer mit Suchmustern vergleichen - kein App-Referrer
2644  // *****************************************
2645  else {
2646    console.log("%c4855048", "background-color:darkolivegreen; color:white;", 
2647        "Matomo-Integration - check_for_discover - No AppReferrer: " + doc_ref);
2648    if (doc_ref != "") {
2649      ref_string = doc_ref;
2650    }
2651    else {
2652      ref_string = "direct";
2653    }
2654    evt_cat = "nosend";
2655  }
2656
2657  // *****************************************
2658  // Überprüfen, ob Matomo schon bereit ist. Wenn ja, wird ein entsprechendes Event an Matomo geschickt.
2659  // Wenn nein, wird alle 150ms überprüft, ob Matomo bereit ist. Nach 1,5 Sekunden wird abgebrochen. 
2660  // *****************************************
2661  if (typeof Matomo != "undefined") {
2662    console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2663        "Matomo-Integration - check_for_discover - Matomo ready. Sending event: " + ref_string + " - " + evt_cat);
2664    if (evt_cat != "nosend") {
2665      let ref_track = Matomo.getAsyncTracker("https://matomo.oberpfalzmedien.de/matomo.php", 2);
2666      ref_track.trackEvent(evt_cat, ref_string, art_id);
2667    }
2668  }
2669  else {
2670    var mtm_int_count = 0;
2671    const mtm_interval = setInterval(function() {
2672      console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2673          "Matomo-Integration - check_for_discover - Matomo not ready. Looping.");
2674
2675      if (typeof Matomo != "undefined") {
2676        clearInterval(mtm_interval);
2677        console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2678            "Matomo-Integration - check_for_discover - Matomo finally ready. Sending event: " + ref_string + " - " + evt_cat);
2679        if (evt_cat != "nosend") {
2680          let ref_track = Matomo.getAsyncTracker("https://matomo.oberpfalzmedien.de/matomo.php", 2);
2681          ref_track.trackEvent(evt_cat, ref_string, art_id);
2682        }
2683      }
2684      else {
2685        if (mtm_int_count <= 9) {
2686          mtm_int_count ++;
2687          console.log("%c4855048", "background-color:darkolivegreen; color:white;",
2688              "Matomo-Integration - check_for_discover - Matomo still not ready. Looping.");
2689        }
2690        else {
2691          clearInterval(mtm_interval);
2692          console.warn("%c4855048", "background-color:darkolivegreen; color:white;",
2693              "Matomo-Integration - check_for_discover - Matomo still not ready. Event skipped.");
2694        }
2695      }
2696    }, 150);
2697  }
2698  return;
2699}
2700
2701
2702// *****************************************
2703// Matomo-Integration
2704// *****************************************
2705
2706var _paq = window._paq = window._paq || [];
2707
2708// *****************************************
2709// Erfolgt der Seitenaufruf aus einer App
2710// *****************************************
2711var is_app = 'Start';
2712if (navigator.userAgent.toLowerCase().indexOf("_onetz_app") > -1) {
2713  is_app = 'Newsapp';
2714}
2715else if (location.search.includes("clientVersion=Oberpfalz")) {
2716  is_app = 'E-Paper';
2717}
2718else {
2719  is_app = 'Nein';
2720}
2721
2722// *****************************************
2723// Matomo - Grundkonfiguration
2724// *****************************************
2725_paq.push(["setCookieDomain", "*.onetz.de"]);
2726_paq.push(["setExcludedQueryParams", ["_gb_c", "gb_clk", "appview", "client_id", "redirect_uri", "destination", "tslg", 
2727        "doi_success_redirect", "email", "camp_id", "pnespid", "udid", "clientVersion", "code", "google_preview", "iu",
2728        "gdfp_req", "lineItemId", "creativeId", "del_user", "aboNo", "cx_testId", "cx_testVariant", "cx_artPos", "cx_experienceId",
2729        "response_type", "fr", "region", "deviceType", "deviceLocale", "os", "cx_experienceA
2729ctionId"]]);
2730_paq.push(['setCustomDimension', customDimensionId = 1, customDimensionValue = is_app]);
2731
2732// *****************************************
2733// Überprüfung ob es sich um einen Premium-Artikel handelt. 
2734// *****************************************
2735var json_ld;
2736if (typeof $('script[type="application/ld+json"]').html() != "undefined") {
2737  json_ld = JSON.parse($('script[type="application/ld+json"]').html());
2738  if (json_ld.isAccessibleForFree === "false") {
2739    _paq.push(['setCustomDimension', customDimensionId = 5, customDimensionValue = "Premium"]);
2740    console.log("%c4855048", "background-color:darkolivegreen; color:white;", "Matomo-Integration - premium article.");
2741  }
2742  else {
2743    _paq.push(['setCustomDimension', customDimensionId = 5, customDimensionValue = "Free"]);
2744    console.log("%c4855048", "background-color:darkolivegreen; color:white;", "Matomo-Integration - free article.");
2745  }
2746}
2747else {
2748  console.log("%c4855048", "background-color:darkolivegreen; color:white;", "Matomo-Integration - JSON+LD not found.");
2749}
2750
2751_paq.push(['enableHeartBeatTimer', 5]);
2752_paq.push(['trackPageView']);
2753_paq.push(['enableLinkTracking']);
2754
2755// *****************************************
2756// Das Matomo-Skript wird nach einigen Überprüfungen integriert. 
2757// om_check_logon_state() prüft den Login-Status.
2758// om_check_subs_jwot() prüft bei eingeloggten Nutzern den Abo-Status.
2759// Nach den Überprüfungen wird der Grundcode von Matomo eingefügt.
2760// om_get_mail_addr() stellt die Mail-Adresse für Checkout-Funktionen zur Verfügung.  
2761// *****************************************
2762om_check_logon_state()
2763  .then((logon_state_tf) => {
2764    if (logon_state_tf === true) {
2765      return om_check_subs_jwot();
2766    }
2767    else {
2768      return;
2769    }
2770  })
2771  .then(() => {
2772    var u = "https://matomo.oberpfalzmedien.de/";
2773    _paq.push(['setTrackerUrl', u + 'matomo.php']);
2774    _paq.push(['setSiteId', '2']);
2775    console.log("%c4855048", "background-color:darkolivegreen; color:white;", "Matomo-Integration - Tracking initalized");
2776    var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
2777    g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s);
2778  })
2779  .then(() => {
2780    if ((sessionStorage.encUID && sessionStorage.encUID != "") && !sessionStorage.encMail) {
2781      console.log("%c4855048", "background-color:darkolivegreen; color:white;", "Matomo-Integration - Session-Storage - UUID found");
2782      return om_get_mail_addr(atob(sessionStorage.encUID));
2783    }
2784    else if (sessionStorage.encMail) {
2785      console.log("%c4855048", "background-color:darkolivegreen; color:white;", "Matomo-Integration - Session-Storage - email found");
2786      return;
2787    }
2788    else {
2789      console.log("%c4855048", "background-color:darkolivegreen; color:white;", "Matomo-Integration - Session-Storage - unknown user");
2790      return;
2791    }
2792  })
2793  .then(() => {
2794    //Überprüfe den Referrer der Seite, ob diese von Google Discover (oder einer anderen App) aufgerufen wurde.
2795    check_for_discover();
2796    return;
2797  })
2798  .then(() => {
2799    //Überprüfe den Referrer der Seite, ob diese von Google Discover (oder einer anderen App) aufgerufen wurde.
2800    setCustomDimensions();
2801    return;
2802  });
2803
2804</script>
2804<noscript>
2805  
2806<p><img src="https://matomo.oberpfalzmedien.de/matomo.php?idsite=2&amp;rec=1" style="border:0;" alt="" /></p>
2807
2808</noscript><!-- End Matomo Code -->
2808<script data-cmp-ab="2" data-cmp-vendor="c21267">
2809
2810// *****************************************
2811// Zusätzliche Messpunkte für Matomo
2812// *****************************************
2813
2814// *****************************************
2815// Scrolltiefenmessung - Start
2816// Die Scrolltiefe wird mit Hilfe von Intersection Observern gemessen. 
2817// *****************************************
2818let scrollMarker = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
2819let scrollMarker_Artikel = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
2820
2821// *****************************************
2822// Sende gemessene Scrolltiefe an Matomo, passe Markerliste an und setze den Marker.
2823// *****************************************
2824function sendScrollData(scrolldepth, marker, scrollMarkerArr, trackedBody) {
2825  let artikel_id = getArtikelID();
2826
2827  while (marker <= scrolldepth) {
2828    let depth_track = Matomo.getAsyncTracker("https://matomo.oberpfalzmedien.de/matomo.php", 2);
2829    depth_track.trackEvent('Scrolltiefe', marker + ' Prozent (' + trackedBody + ')', artikel_id, marker);
2830    console.log("Scrolltiefe: " + marker + " Prozent; ID: " + artikel_id + "; Messung: " + trackedBody);
2831    scrollMarkerArr.shift();
2832    marker = scrollMarkerArr[0];
2833  }
2834  return scrollMarkerArr;
2835}
2836
2837// *****************************************
2838// Hole die Scrolltiefe eines übergebenen Elements.
2839// *****************************************
2840  function getScrollDepth(child, parent) {
2841    let scrollTopC = child.getBoundingClientRect().bottom + window.scrollY;
2842    let scrollTopP = parent.getBoundingClientRect().top + window.scrollY;
2843    let scrollTopDif = scrollTopC - scrollTopP;
2844    let parentHeight = parent.scrollHeight;
2845    let result = (scrollTopDif / parentHeight) * 100;
2846    return Math.round(result / 10) * 10;
2847  }
2848
2849// *****************************************  
2850// Wenn ein beobachtetes Element im Viewport auftaucht, löse den Callback des Observers aus.
2851// *****************************************
2852function observerCallback(entries, observer) {
2853  entries.forEach((entry) => {
2854    if (entry.isIntersecting === true) {
2855      let parent = document.getElementsByTagName("main")[0];
2856      let child = entry.target;
2857      let scrolldepth = getScrollDepth(child, parent);
2858
2859      scrollMarker = sendScrollData(scrolldepth, scrollMarker[0], scrollMarker, "Seitenlänge");
2860      observer.unobserve(entry.target);
2861    }
2862  });
2863}
2864
2865// *****************************************
2866// Wenn ein beobachtetes Element im Viewport auftaucht, löse den Callback des Observers für Artikel aus.
2867// *****************************************
2868function observerCallback_Article(entries, observer) {
2869  entries.forEach((entry) => {
2870    if (entry.isIntersecting === true) {
2871      let scrollRelationElement = document.getElementsByClassName("pane-node-content")[0];
2872      let scrolldepth = getScrollDepth(entry.target, scrollRelationElement);
2873      scrollMarker_Artikel = sendScrollData(scrolldepth, scrollMarker_Artikel[0], scrollMarker_Artikel, "Artikellänge");
2874      observer.unobserve(entry.target);
2875    }
2876  });
2877}
2878
2879// *****************************************
2880// Sobald die Seite fertig geladen ist, werden die Objekte vorbereitet, die für die Scrolltiefenmessung relevant sind. 
2881// Darüber hinaus werden Klicktracker eingerichtet. Aller Tracker arbeiten komplett anonym.
2882// Seitenlänge und Artikellänge werden getrennt gemessen. 
2883// *****************************************
2884window.onload = function () {
2885
2886  // *****************************************
2887  // warte 750ms damit die panels_pane Klassen geladen werden können.
2888  // *****************************************
2889  setTimeout(() => {
2890    let elementsToTrack = document.querySelectorAll("h1, h2, h3, h4, p, img, iframe, ul, form, glomex-integration, tab");
2891    let observer = new IntersectionObserver(observerCallback, {
2892      root: null,
2893      rootMargin: "0px 0px 0px 0px",
2894      threshold: 1.0
2895    });
2896
2897    // *****************************************
2898    // Observer für die einzelnen HTML-Elemente anlegen. 
2899    // *****************************************
2900    elementsToTrack.forEach(element => {
2901      observer.observe(element);
2902    });
2903
2904    // *****************************************
2905    // Observer für den Inhaltsbereich von Artikeln anlegen. 
2906    // *****************************************
2907    if (document.getElementsByClassName("pane-node-content")[0]) {
2908      let articleElement = document.getElementsByClassName("pane-node-content")[0];
2909      let elementsToTrack_Article = articleElement.querySelectorAll("h1, h2, h3, h4, p, img, iframe, ul, form, glomex-integration, tab");
2910      let observer_Article = new IntersectionObserver(observerCallback_Article, {
2911        root: null,
2912        rootMargin: "0px 0px 0px 0px",
2913        threshold: 1.0
2914      });
2915
2916      elementsToTrack_Article.forEach(element => {
2917        observer_Article.observe(element);
2918      });
2919    }
2920
2921    // *****************************************
2922    // Observer für das nachladende Outbrain-Element anlegen. 
2923    // *****************************************
2924    if (document.getElementsByClassName(".OUTBRAIN")) {
2925      let mutObserver = new MutationObserver((mutationsList, mutObserver) => {
2926        for (let mutation of mutationsList) {
2927          for (let node of mutation.addedNodes) {
2928            if (node.matches && node.matches('.OUTBRAIN')) {
2929              observer.observe(node);
2930            }
2931          }
2932        }
2933      });
2934
2935      mutObserver.observe(document.body, { childList: true, subtree: true });
2936    }
2937
2938    if (document.getElementById("footer")) {
2939      let footer = document.getElementById("footer");
2940      let observer_Footer = new IntersectionObserver(observerCallback, {
2941        root: null,
2942        rootMargin: "0px 0px 0px 0px",
2943        threshold: 1.0
2944      });
2945      observer_Footer.observe(footer);
2946    }
2947  }, 750);
2948  // *****************************************
2949  // Scrolltiefenmessung - Ende
2950  // *****************************************    
2951
2952  // *****************************************
2953  // Menü Klicktracking - Start
2954  // Kein Klicktracking in der App.
2955  // *****************************************
2956  if (is_app === "Nein") {
2957
2958    // *****************************************
2959    // Klickevent an Matomo übermitteln.
2960    // *****************************************
2961    function log_click(clickedMenu, eventTextContent) {
2962      let matomo_phpURL = "https://matomo.oberpfalzmedien.de/matomo.php";
2963      let menu_click_track = Matomo.getAsyncTracker(matomo_phpURL, 2);
2964      menu_click_track.trackEvent('Menüklicks', clickedMenu, eventTextContent, 1);
2965      console.info("%c4855048", "background-color:darkolivegreen; color:white;",
2966          "Matomo-Integration - " + clickedMenu + " clicked - " + eventTextContent);
2967    }
2968
2969    // *****************************************
2970    // Klicktracking - oberes Menü
2971    // *****************************************
2972    (function () {
2973      let pElements = document.getElementById("block-menu-menu-servicelinks");
2974      pElements = pElements.getElementsByTagName("ul");
2975      for (let cElement of pElements[0].getElementsByTagName("li")) {
2976        cElement.addEventListener('click', log_click_service_menu_right);
2977      }
2978    })();
2979
2980    function log_click_service_menu_right(event) {
2981      let clickedMenu = 'Servicemenü';
2982      log_click(clickedMenu, event.target.textContent);
2983    }
2984  
2985    // *****************************************
2986    // Klicktracking - Burger-Menü
2987    // *****************************************
2988    (function () {
2989      let pElements = document.getElementById("block-menu-primary-links");
2990      pElements = pElements.getElementsByTagName("ul");
2991      for (let cElement of pElements[0].getElementsByTagName("li")) {
2992        if (!cElement.classList.contains("expanded")) {
2993          cElement.addEventListener('click', log_click_primary_menu);
2994        }
2995      }
2996    })();
2997
2998    function log_click_primary_menu(event) {
2999      let clickedMenu = 'Hauptmenü';
3000      log_click(clickedMenu, event.target.textContent);
3001    }
3002
3003    // *****************************************    
3004    // Klicktracking - Logo
3005    // *****************************************
3006    (function () {
3007      let logo_icon = document.getElementById("front-header");
3008      logo_icon.addEventListener('click', log_click_logo_icon);
3009    })();
3010
3011    function log_click_logo_icon(event) {
3012      let clickedMenu = 'Logo';
3013      log_click(clickedMenu, event.target.textContent);
3014    }
3015
3016    // *****************************************
3017    // Klicktracking - Header Menü
3018    // *****************************************
3019    (function () {
3020      var pElements = document.getElementById("block-dnt_custom_content_displays-3");
3021      pElements = pElements.getElementsByTagName("ul");
3022
3023      for (let cElement of pElements[0].getElementsByTagName("li")) {
3024        if (cElement.getElementsByTagName("a").length > 0) {
3025          let aTagElement = cElement.getElementsByTagName("a");
3026          aTagElement[0].addEventListener('click', log_click_header_menu);
3027        }
3028        else {
3029          if (cElement.classList.contains("navbar-element-hamburger")) {
3030            cElement.addEventListener('click', log_click_header_menu);
3031          }
3032        }
3033      }
3034    })();
3035
3036    function log_click_header_menu(event) {
3037      let clickedMenu = 'Header-Menü';
3038      let clk_text = event.target.textContent.trim();
3039      if (clk_text) {
3040        clk_text = "Menü";
3041      }
3042      log_click(clickedMenu, clk_text);
3043    }
3044
3045    // *****************************************
3046    // Klicktracking - Contentmodule
3047    // Die Liste der Content-Modul-IDs muss bei Änderungen an den ausgespielten Content-Modulen angepasst werden. 
3048    // *****************************************
3049
3050    function log_click_content_module(event) {
3051      let parentID = this.closest('[id^="cxense-"]').id;
3052      let content_module_id = parentID.substring("cxense-".length);
3053      let content_module_track = Matomo.getAsyncTracker("https://matomo.oberpfalzmedien.de/matomo.php", 2);
3054      let pageTitle = document.querySelector('[class^=title]');
3055
3056      if (pageTitle != null) {
3057        content_module_track.trackEvent('Contentklick', pageTitle.textContent, content_module_id, 1);
3058        console.log("%c4855048", "background-color:darkolivegreen; color:white;",
3059            "Matomo-Integration - Contentmodul clicked: " + content_module_id + "; Title: " + pageTitle.textContent);
3060      }
3061      else {
3062        content_module_track.trackEvent('Contentklick', 'Homepage', content_module_id, 1);
3063        console.log("%c4855048", "background-color:darkolivegreen; color:white;", 
3064            "Matomo-Integration - Contentmodul clicked: " + content_module_id + "; Title: Homepage");
3065      }
3066    }
3067
3068    (function () {
3069      /*  IDs der zu trackenden Contentmodule anhand der Modul Widget ID:
3070          AUFMACHER - HOME - REGULARS - AUTO // b4b0bc52b385aa157967f5a218280221f91c4931
3071          AUFMACHER - HOME - REGULARS - AUTO - CLTC 60PLUS // 71857695a6e20799c5c854c54d4cfef5c0e9af30
3072          AUFMACHER - HOME - FLYBYS - AUTO OPTIMIZED // dd25fac26f73b9e9ca324a6c80d18d89ce8ae1aa
3073          AUFMACHER - HOME - FLYBYS - CLTC 60PLUS // 859ee0bf4c9ac1c9c18787ce1eaae5274acb4e67
3074          HOME 4X2 EMPFEHLUNGEN FÜR SUBSCRIBER // facf66a7f99861c979c78c44d829151ee6cc331f
3075          HOME 4X2 EMPFEHLUNGEN FÜR REGULAR // 3ee1cb3d579f909ae1600d91e1ef62be890a56bd
3076          HOME 4X2 EMPFEHLUNGEN FÜR FLYBYS // b464a0c4c5f8156abbc5f76005f44f733d3a2432
3077          HOME 4X2 EMPFEHLUNGEN FÜR REGULAR CLTC // c43163da39bb90130bd156024c44ab70c96ccd0b
3078          HOME 4X2 EMPFEHLUNGEN FÜR FLYBYS CLTC // 56ea8a69fed8411a66129f3a601f89447020f34c
3079          BAYERN - ÜBERSICHTSSEITE - OHNE TEASER - 2X4 // 46b086a94629ff2e98cfdd600bcf4783de783f21
3080          SPORT - ALLGEMEIN - ÜBERSICHTSSEITE - OHNE TEASER - 2X4 // b05c9316661987c5fc74416a6a6fefcfb8ce2d2c
3081          Aufmacher - Home - Auto - AB-Test 2026 // 25427cee0c1768c2cfd62ee52c95472874083301
3082      */
3083      let content_module = [
3084          "b4b0bc52b385aa157967f5a218280221f91c4931",
3085          "71857695a6e20799c5c854c54d4cfef5c0e9af30",
3086          "dd25fac26f73b9e9ca324a6c80d18d89ce8ae1aa",
3087          "859ee0bf4c9ac1c9c18787ce1eaae5274acb4e67",
3088          "facf66a7f99861c979c78c44d829151ee6cc331f",
3089          "3ee1cb3d579f909ae1600d91e1ef62be890a56bd",
3090          "b464a0c4c5f8156abbc5f76005f44f733d3a2432",
3091          "c43163da39bb90130bd156024c44ab70c96ccd0b",
3092          "56ea8a69fed8411a66129f3a601f89447020f34c",
3093          "46b086a94629ff2e98cfdd600bcf4783de783f21",
3094          "b05c9316661987c5fc74416a6a6fefcfb8ce2d2c",
3095          "25427cee0c1768c2cfd62ee52c95472874083301"
3096      ];
3097
3098      for (let contentID of content_module) {
3099        let item_by_id = document.getElementById("cxense-" + contentID);
3100        if (item_by_id != undefined) {
3101          for (let a_tag of item_by_id.getElementsByTagName("a")) {
3102            a_tag.addEventListener('click', log_click_content_module);
3103          }
3104        }
3105      }
3106    })();
3107  // *****************************************
3108  // Ende der Klicktracker.
3109  // *****************************************
3110  }
3111}
3112</script>
3112   </div>
3113
3114  
3115</article> <!-- /.node -->
3116  </div>
3117
3118  
3119  
3120  </div>
3121<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-node dm-nobg"  >
3122  
3123  
3124  
3125  <div class="pane-content">
3126    
3127    <article id="node-4309331" class="node node-type-thing build-mode-full clearfix ">
3128
3129    
3130  
3131  
3132  <div class="content">
3133     
3133<script>
3134function om_app_sitelogin(dest_url) {
3135console.log("%com_app_sitelogin","background-color:red; color:white","om_app_sitelogin() called!");
3136console.log("%com_app_sitelogin","background-color:red; color:white","URL passed to the function: "+dest_url );
3137  window.location = 'https://' + window.location.hostname + '/user/login?destination=' + dest_url;
3138return "Done!";
3139}
3140</script>
3140   </div>
3141
3142  
3143</article> <!-- /.node -->
3144  </div>
3145
3146  
3147  
3148  </div>
3149<div class="panel-region-separator"></div><div class="panels_pane panel-pane pane-node dm-nobg"  >
3150  
3151  
3152  
3153  <div class="pane-content">
3154    
3155    <article id="node-5033586" class="node node-type-thing build-mode-full clearfix ">
3156
3157    
3158  
3159  
3160  <div class="content">
3161     
3162<p>
3162<script>
3163// *****************************************
3164// Trackt die einzelnen Stufen im Piano Checkout-Prozess.
3165// Piano-VX übermittelt in den einzelnen Stufen Message-Events. Für diese werden hier entsprechende Event-Handler angelegt.
3166// Die Event-Handler propagieren die Events dann entsprechend in Richtung DMP und Matomo.
3167// Zusätzlich sind die Funktionen integriert, die für die Vermarktung durch Sovendus und Jurodo nötig sind. 
3168// *****************************************
3169
3170// *****************************************
3171// Sovendus-Integration - Teil 1 - Start
3172// *****************************************
3173// Überprüfen, ob die URL einen Sovendus-Tracking-Parameter enthält. Wenn ja, wird dieser als Sessionvariable - sovReqToken - gespeichert
3174// und im Teil 2 des Skripts für das erstellen des Conversion-Tracking-Pixels verwendet. Wenn der Token bereits verwendet wurde, wurde in
3175// Teil 2 die Sessionvariable - sovReqTokenDel - gesetzt. Auf diese wird hier geprüft und dann der Sovendus-Parameter aus der URL entfernt.
3176// Dieser ist auch nach dem neu Laden normalerweise noch vorhanden, darf aber nicht mehr genutzt werden. Anschließend wird auch die
3177// Sessionvariable - sovReqTokenDel - entfernt. Wird die Seite verlassen, werden die Sessionvariablen entfernt. Spätere Conversions während
3178// der selben Session werden damit nicht mehr Sovendus zugeschrieben.
3179// *****************************************
3180
3181function sov_cleanup (url_parameter) {
3182  console.log ("%c5033586 - Sovendus - Sec 1", "background-color:red; color: white;", "sov_cleanup running.");
3183  if (sessionStorage.sovReqToken) {
3184    sessionStorage.removeItem("sovReqToken");
3185  }
3186  if (url_parameter.get("sovReqToken") != null) {
3187    url_parameter.delete("sovReqToken");
3188    var url_path = "";
3189    (url_parameter.size > 0)? url_path = location.pathname + "?" + url_parameter : url_path = location.pathname;
3190    const new_url = new URL(location.protocol + '//' + location.host + url_path);
3191    console.log ("%c5033586 - Sovendus - Sec 1", "background-color:red; color: white;", "New URL: "+new_url);
3192    window.history.replaceState({},document.title,new_url );
3193  }
3194}
3195
3196var url_parameter = new URL(location.href).searchParams;
3197
3198if (url_parameter.get("sovReqToken") != null) {
3199  if (!sessionStorage.sovReqTokenDel) {
3200    var sovReqToken = url_parameter.get("sovReqToken");
3201    sessionStorage.setItem("sovReqToken", sovReqToken);
3202    console.log ("%c5033586 - Sovendus - Sec 1", "background-color:red; color: white;", "Sovendus token found and stored: "+ sovReqToken);
3203  }
3204  else {
3205    console.log ("%c5033586 - Sovendus - Sec 1", "background-color:red; color: white;",
3206        "Sovendus token already used. Removing parameter from storage and URL.");
3207    sov_cleanup (url_parameter);
3208  }
3209}
3210
3211if (url_parameter.get("sovReqToken") == null && sessionStorage.sovReqTokenDel == true) {
3212  url_parameter.delete("sovReqTokenDel");
3213  console.log ("%c5033586 - Sovendus - Sec 1", "background-color:red; color: white;", "Old sovReqTokenDel found and removed");
3214}
3215
3216window.addEventListener("unload", function() {
3217  if (sessionStorage.sovReqToken) {  
3218    sessionStorage.removeItem("sovReqToken");
3219    console.log ("%c5033586 - Sovendus - Sec 1", "background-color:red; color: white;", "sovReqToken removed from storage"); 
3220  }
3221  else { 
3222    console.log ("%c5033586 - Sovendus - Sec 1", "background-color:red; color: white;", "No sovReqToken stored");
3223  }
3224  console.log ("%c5033586 - Sovendus - Sec 1", "background-color:red; color: white;", "Page exit cleanup done");
3225});
3226// *****************************************
3227// Sovendus-Integration - Teil 1 - Ende
3228// *****************************************
3229
3230// *****************************************
3231// tp-(Piano Composer)- und cX-(Piano DMP)-Objekte vorbereiten und die Grundkonfiguration anlegen. 
3232// *****************************************
3233tp = window["tp"] || [];
3234var cX = window.cX = window.cX || {};
3235cX.callQueue = cX.callQueue || [];
3236
3237if (window.cX && window.cX.callQueue) {
3238  console.log ("%c5033586 - cX init", "background-color:red; color: white;", "cX object created");
3239  cX.callQueue.push(['setEventAttributes', { origin: 'leb-website', persistedQueryId: '2f6954c69235367df5b29db7e308695ae60929b7' }]);
3240}
3241
3242// *****************************************
3243// Ermitteln, ob das Checkout Event auf einer Landingpage oder auf einem Artikel erzeugt wird. 
3244// *****************************************
3245var checkout_art_id = "";
3246var event_name = "";
3247var cx_event_page = "";
3248
3249var seiten_url = window.location;
3250seiten_url = seiten_url.toString();
3251
3252var new_reg_exp = /id\d{7}/; //URL enthält eine Artikel-ID die mit id beginnt.
3253var checkout_art_id = seiten_url.match(new_reg_exp);
3254var skip_jurodo = false;
3255
3256if (checkout_art_id === null) {
3257  new_reg_exp = /d\d{7}/; //URL enthält eine Artikel-ID die nur mit d beginnt.
3258  checkout_art_id = seiten_url.match(new_reg_exp);
3259  if (checkout_art_id === null) {
3260    checkout_art_id = seiten_url;
3261    if (seiten_url.includes("_upgrades")) {
3262      event_name = "Checkout Events - Landingpage - Upgrades";
3263      cx_event_page = "LP Upgrades";
3264      skip_jurodo = true;
3265    }
3266    else if (seiten_url.includes("_angebote")) {
3267      event_name = "Checkout Events - Landingpage - Angebote";
3268      cx_event_page = "LP Angebote";
3269    }
3270    else if (seiten_url.includes("_winback")) {
3271      event_name = "Checkout Events - Landingpage - Winback";
3272      cx_event_page = "LP Winback";
3273      skip_jurodo = true;
3274    }
3275    else if (seiten_url.includes("_promo")) {
3276      event_name = "Checkout Events - Landingpage - Promo";
3277      cx_event_page = "LP Promo";
3278      skip_jurodo = true;
3279    }
3280    else if (seiten_url.includes("_sovendus")) {
3281      event_name = "Checkout Events - Landingpage - Sovendus";
3282      cx_event_page = "LP Sovendus";
3283      skip_jurodo = true;
3284    }
3285    else if (seiten_url.includes("_jurodo")) {
3286      event_name = "Checkout Events - Landingpage - Jurodo";
3287      cx_event_page = "LP Jurodo";
3288      skip_jurodo = false;
3289    }
3290    else if (seiten_url.includes("_blackfriday")) {
3291      event_name = "Checkout Events - Landingpage - Black Friday";
3292      cx_event_page = "LP Blackfriday";
3293      skip_jurodo = false;
3294    }
3295    else if (seiten_url.includes("_test_lp")) {
3296      event_name = "Checkout Events - Landingpage - Test";
3297      cx_event_page = "LP Test";
3298    }
3299    else if (seiten_url.includes("plus") === true && seiten_url.includes("plus_") === false && seiten_url.includes("onetzplus") === false ) {
3300      event_name = "Checkout Events - Landingpage - Plus";
3301      cx_event_page = "LP Plus";
3302    }
3303    else {
3304      event_name = "Checkout Events - Landingpage - Andere";
3305      cx_event_page = "LP Andere";
3306    }
3307  }
3308  else {
3309    checkout_art_id = checkout_art_id.toString();
3310    checkout_art_id = checkout_art_id.substring(1);
3311    event_name = "Checkout Events - Article";
3312    cx_event_page = "Article";
3313  }
3314}
3315else {
3316  checkout_art_id = checkout_art_id.toString();
3317  checkout_art_id = checkout_art_id.substring(2);
3318  event_name = "Checkout Events - Article";
3319  cx_event_page = "Article";
3320}
3321console.log ("%c5033586 - "+ event_name, "background-color:red; color: white;", "Page: " + checkout_art_id);
3322
3323// *****************************************
3324// Den Query-String der URL auf den GCLID-Parameter überprüfen.
3325// Falls dieser gefunden wird, wird an Matomo und die DMP ein entsprechendes Event geschickt. 
3326// *****************************************
3327const searchParams = new URLSearchParams(window.location.search);
3328if ( searchParams.has('gclid')){
3329  console.log ("%c5033586 - Promo Event", "background-color:red; color: white;", "GCLID found");
3330
3331  //Überprüfen, ob Matomo schon bereit ist. Wenn ja, wird ein entsprechendes Event an Matomo geschickt.
3332  //Wenn nein, wird ein Interval mit max. 15 Wiederholungen gestartet. 
3333  if (typeof Matomo != "undefined") {
3334    console.log ("%c5033586 - Promo Event", "background-color:red; color: white;", "Sending gclid found event.");
3335    let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3336    mtm_checkout_event.trackEvent("Promo Event", "gclid found", checkout_art_id, 1);
3337  }
3338  else {
3339    console.log("%c5033586 - Promo Event", "background-color:red; color:white;", "Matomo not ready. Starting interval.");
3340    var matChkIntCnt = 0;
3341    const matChkInt= setInterval(() => {
3342      if (typeof Matomo != "undefined") {
3343        clearInterval(matChkInt);
3344        console.log ("%c4879507 - Promo Event", "background-color:red; color: white;", "Tracking gclid found event.");
3345        let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3346        mtm_checkout_event.trackEvent("Promo Event", "gclid found", checkout_art_id, 1);
3347      }
3348      else if (typeof Matomo == "undefined" && matChkIntCnt >= 15) {
3349        console.log ("%c5033586 - Promo Event", "background-color:red; color: white;", "Looped 15 times - Skipping Matomo Event.");
3350        clearInterval(matChkInt);
3351      }
3352      else if (typeof Matomo == "undefined" && matChkIntCnt < 15) {
3353        console.log("%c5033586 - Promo Event", "background-color:red; color:white;", "Matomo not ready. Counting... " + matChkIntCnt);
3354        matChkIntCnt ++;
3355      }
3356    }, 100);
3357  }
3358
3359  cX.callQueue.push(['sendEvent','om_promo_event',{evt_action: "gclid found", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3360    {'callback': function(result) { 
3361      console.log ("%c5033586 - Promo Event cX", "background-color:red; color: white;", "Promo event - gclid found - response: " + result.httpStatus);
3362    }
3363  }]);
3364}
3365
3366// *****************************************
3367// Piano-VX Checkout-Callback-Eventhandler
3368// Jedes Callback-Event löst ein DMP und ein Matomo-Event aus.
3369// *****************************************
3370// Custom-Events sind im Checkout manuell ausgelöste Events.
3371// *****************************************
3372tp.push(["addHandler", "checkoutCustomEvent", function(event) {
3373  console.log ("%c5033586 - "+ event_name, "background-color:red; color: white;", "checkoutCustomEvent: " + event.eventName);
3374  let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3375
3376  switch(event.eventName) {
3377    case "just_login":
3378      mtm_checkout_event.trackEvent(event_name, "CustomEvent - just login", checkout_art_id, 1);
3379
3380      cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "just_login", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3381        {'callback': function(result) { 
3382            console.log ("%c4879507 - cX event", "background-color:red; color: white;", "cX Event - just_login: " + result.httpStatus); 
3383          }
3384        }]);
3385      break;
3386    case "payment_paypal":
3387      break;
3388    case "payment_stripe":
3389      break;
3390    case "payment_other":
3391      break;
3392  }
3393}]);
3394
3395// *****************************************
3396// Wird ausgelöst sobald ein Angebot angezeigt wird.
3397// *****************************************
3398tp.push(["addHandler", "showOffer", function(offerParams) {
3399  let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3400  mtm_checkout_event.trackEvent(event_name, "showOffer", checkout_art_id, 1);
3401
3402  cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "showOffer", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3403    {'callback': function(result) { 
3404        console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - showOffer: " + result.httpStatus); 
3405      }
3406  }]);
3407
3408  var modal_list = document.getElementsByClassName("tp-modal");
3409  for (x in modal_list) {
3410     modal_list[x].classList.add("tp-modal-centered");
3411  }
3412}]);
3413
3414// *****************************************
3415// Wird ausgelöst sobald ein Kaufvorgang gestartet wird.
3416// *****************************************
3417tp.push( [ "addHandler", "startCheckout", function () {
3418  let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3419  mtm_checkout_event.trackEvent(event_name, "startCheckout", checkout_art_id, 1);
3420
3421  cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "startCheckout", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3422    {'callback': function(result) { 
3423        console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - startCheckout: " + result.httpStatus); 
3424      }
3425  }]);
3426
3427  var modal_list = document.getElementsByClassName("tp-modal");
3428  for (x in modal_list){
3429    modal_list[x].classList.add("tp-modal-centered");
3430  }
3431}]);
3432
3433// *****************************************
3434// Wird ausgelöst sobald eine Zahlungsübermittlung gestartet wird.
3435// *****************************************
3436tp.push( [ "addHandler", "submitPayment", function (data) {
3437  let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3438  mtm_checkout_event.trackEvent(event_name, "submitPayment", checkout_art_id, 1);
3439
3440  cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "submitPayment", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3441    {'callback': function(result) { 
3442        console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - submitPayment: " + result.httpStatus); 
3443      }
3444  }]);
3445}]);
3446
3447// *****************************************
3448// Wird ausgelöst nachdem State 2 erreicht wurde und der Term sicher bekannt ist. 
3449// *****************************************
3450tp.push(["addHandler", "checkoutSelectTerm", function(termDetails, iframeId) {
3451  let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3452  mtm_checkout_event.trackEvent(event_name, "checkoutSelectTerm - " + termDetails.termName, checkout_art_id, 1);
3453
3454  cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "checkoutSelectTerm", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3455    {'callback': function(result) { 
3456        console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - checkoutSelectTerm: " + result.httpStatus); 
3457      }
3458  }]);
3459}]);
3460
3461
3462// *****************************************
3463// Überwacht verschiedene Schritte innerhalb des Checkout-Prozesses.
3464// *****************************************
3465tp.push(["addHandler", "checkoutStateChange", function(event) {
3466  let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3467  console.log ("%c5033586 - "+ event_name, "background-color:red; color: white;", "checkoutStateChange: " + JSON.stringify(event.stateName)  );
3468  switch (event.stateName) {
3469    case "offer":
3470      //mtm_checkout_event.trackEvent(event_name, "checkoutStateChange - " + event.stateName, checkout_art_id, 1);
3471      break;
3472
3473    case "state1":
3474      mtm_checkout_event.trackEvent(event_name, "checkoutStateChange - " + event.stateName, checkout_art_id, 1);
3475
3476      cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "StateChange_State_1", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3477        {'callback': function(result) { 
3478            console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - StateChange_State_1: " + result.httpStatus); 
3479          }
3480      }]);
3481      break;
3482
3483    case "state2":
3484      document.getElementsByClassName("tp-modal")[0].classList.add("tp-modal-centered");
3485      mtm_checkout_event.trackEvent(event_name, "checkoutStateChange - " + event.stateName, checkout_art_id, 1);
3486
3487      cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "StateChange_State_2", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3488        {'callback': function(result) { 
3489            console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - StateChange_State_2: " + result.httpStatus); 
3490          }
3491      }]);
3492
3493      if (sessionStorage.encMail){
3494        window.PianoESP && "function" == typeof window.PianoESP.handleUserDataPromise && window.PianoESP.handleUserDataPromise({
3495          email: atob(sessionStorage.encMail),
3496          squads: [11338]
3497        });
3498      }
3499      break;
3500
3501    case "alreadyHasAccess":
3502      mtm_checkout_event.trackEvent(event_name, "checkoutStateChange - " + event.stateName, checkout_art_id, 1);
3503
3504      cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "alreadyHasAccess", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3505        {'callback': function(result) { 
3506            console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - alreadyHasAccess: " + result.httpStatus); 
3507          }
3508      }]);
3509      break;
3510
3511    case "confirmation":
3512      mtm_checkout_event.trackEvent(event_name, "checkoutStateChange - " + event.stateName, checkout_art_id, 1);
3513
3514      cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "confirmation", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3515        {'callback': function(result) { 
3516            console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - confirmation: " + result.httpStatus); 
3517          }
3518      }]);
3519      break;
3520
3521    case "receipt":
3522      mtm_checkout_event.trackEvent(event_name, "checkoutStateChange - " + event.stateName, checkout_art_id, 1);
3523
3524
3525      // *****************************************
3526      // Sovendus-Integration - Teil 2 - Start
3527      // *****************************************
3528      // Wenn ein Sovendus-Token in der Sessionvariable - sovReqToken - gespeichert ist, wird dieser verwendet, um den 
3529      // Sovendus-Conversion-Pixel zu erzeugen. Dieser Pixel wird dann dynamisch im DOM eingefügt. Anschließend wird die
3530      // Sessionvariable - sovReqToken - gelöscht und die Sessionvariable - sovReqTokenDel - gesetzt. Diese wird im Teil 1
3531      // genutzt, um den Sovendus-URL-Parameter zu entfernen und sicherzustellen, dass der Sovendus-Token nicht doppelt genutzt wird.
3532
3533      if (sessionStorage.sovReqToken) {
3534        var sov_sess_token = sessionStorage.sovReqToken;
3535        console.log ("%c5033586 - Checkout complete - Sovendus - Sec 2 - ", "background-color:red; color: white;", "Session storage variable found: "
3536            + sov_sess_token);
3537        var sov_img = document.createElement('img');
3538        sov_img.src = 'https://press-order-api.sovendus.com/ext/966d6a2c-7e0d-3288-95aa-b693769be6f8/image?sovReqToken='+sov_sess_token;
3539        document.getElementsByTagName('body')[0].appendChild(sov_img);
3540        console.log ("%c5033586 - Checkout complete - Sovendus - Sec 2 - ", "background-color:red; color: white;", "Pixel created: "+ sov_sess_token);
3541        sessionStorage.setItem("sovReqTokenDel", true);
3542        sessionStorage.removeItem("sovReqToken");
3543        console.log ("%c5033586 - Checkout complete - Sovendus - Sec 2 - ", "background-color:red; color: white;", "Session storage variable removed.");
3544      }
3545      // *****************************************
3546      // Sovendus-Integration - Teil 2 - Ende
3547      // *****************************************
3548
3549
3550      // *****************************************
3551      // Jurodo Conversiontracking - Start
3552      // *****************************************
3553      if (skip_jurodo != true) {
3554        var juro_track_terms = ["TMXUF9ILKYT5","TMQ3XML2D5QQ","TM6OGABKKECN","TMJOT5N14787","TMBA5B7L1XX9","TMPW169EOBMO" ];
3555
3556        if (juro_track_terms.includes(event.termId)) {
3557          console.log ("%c5033586 - Checkout complete - Jurodo", "background-color:red; color: white;", "Converted on trackable term: "
3558              + event.termId );
3559          dataLayer.push({
3560              'sub_val_1': event.termId,
3561              'sub_val_2': "n/a",
3562              'event': 'order_submit'
3563          });
3564        }
3565      }
3566      // *****************************************
3567      // Jurodo Conversiontracking - Ende
3568      // *****************************************
3569
3570      if (window.location.href.includes("onetzplus-abo-verwalten") === true){
3571        sessionStorage.setItem("upgrade_done","true");
3572        console.log ("%c5033586 - "+ event_name, "background-color:red; color: white;",
3573            "sessionStorage.upgrade_done: " + sessionStorage.upgrade_done);
3574      }
3575
3576      cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "receipt", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3577        {'callback': function(result) { 
3578            console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - receipt: " + result.httpStatus); 
3579          }
3580      }]);
3581
3582      break;
3583  }
3584}]);
3585
3586// *****************************************
3587// Überwacht verschiedene Gründe, aus denen der Checkout geschlossen werden kann.
3588// *****************************************
3589tp.push(["addHandler", "checkoutClose", function(event) {
3590  console.log ("%c5033586 - "+ event_name, "background-color:red; color: white;", "checkoutClose: " + JSON.stringify(event) );
3591  let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3592  mtm_checkout_event.trackEvent(event_name, "checkoutClose - " + event.state,
3592 checkout_art_id, 1);
3593
3594  switch (event.state) {
3595    case 'checkoutCompleted':
3596      if (sessionStorage.encMail){
3597        window.PianoESP && "function" == typeof window.PianoESP.handleUserDataPromise && window.PianoESP.handleUserDataPromise ({
3598          email: atob(sessionStorage.encMail),
3599          squads: [11340]
3600        });
3601      }
3602
3603      cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "Cl_checkoutCompleted", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3604        {'callback': function(result) { 
3605            console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - Cl_checkoutCompleted: " + result.httpStatus); 
3606          }
3607      }]);
3608      break;
3609
3610    case 'alreadyHasAccess':
3611      cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "Cl_alreadyHasAccess", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3612        {'callback': function(result) { 
3613            console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - Cl_alreadyHasAccess: " + result.httpStatus); 
3614          }
3615      }]);
3616      break;
3617
3618    case 'voucherRedemptionCompleted':
3619      cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "Cl_voucherRedemption", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3620        {'callback': function(result) { 
3621            console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - Cl_voucherRedemption: " + result.httpStatus); 
3622          }
3623      }]);
3624    break;
3625
3626    case 'close':
3627      if (sessionStorage.encMail) {
3628        window.PianoESP && "function" == typeof window.PianoESP.handleUserDataPromise && window.PianoESP.handleUserDataPromise ({
3629          email: atob(sessionStorage.encMail),
3630          squads: [11341]
3631        });
3632      }
3633      var modal_list = document.getElementsByClassName("tp-modal");
3634      for (x in modal_list){
3635        modal_list[x].classList.remove("tp-modal-centered");
3636      }
3637
3638      cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "Close_only", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3639        {'callback': function(result) { 
3640            console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - Close_only: " + result.httpStatus); 
3641          }
3642      }]);
3643      break;
3644  }
3645}]);
3646
3647// *****************************************
3648// Wird ausgelöst wenn ein Kauf erfolgreich abgeschlossen wurde.
3649// *****************************************
3650tp.push(["addHandler", "checkoutComplete", function(conversion) { 
3651  let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3652  mtm_checkout_event.trackEvent(event_name, "checkoutComplete", checkout_art_id, 1);
3653
3654  sessionStorage.setItem("hasResAccess", "true");
3655  sessionStorage.setItem("hasPremiumAccess", "true");
3656
3657  window.PianoESP && "function" == typeof window.PianoESP.handleUserDataPromise && window.PianoESP.handleUserDataPromise ({
3658    email: conversion.email,
3659    squads: [933, 11340]
3660  });
3661
3662  cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "checkoutComplete", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3663    {'callback': function(result) { 
3664        console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - checkoutComplete: " + result.httpStatus); 
3665      }
3666  }]);
3667}]);
3668
3669// *****************************************
3670// Wird bei Fehlern innerhalb des Checkouts ausgelöst. 
3671// *****************************************
3672tp.push(["addHandler", "checkoutError", function(errorData) {
3673  console.log ("%c5033586 - "+ event_name, "background-color:red; color: white;", "checkoutError: " + errorData.message );
3674  let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3675  mtm_checkout_event.trackEvent(event_name, "checkoutError: " + errorData.message, checkout_art_id, 1);
3676
3677  cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "checkoutError", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3678    {'callback': function(result) { 
3679        console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - checkoutError: " + result.httpStatus); 
3680      }
3681  }]);
3682}]);
3683
3684
3685// *****************************************
3686// Wird ausgelöst wenn ein Upgrade erfolgreich gekauft wurde.
3687// *****************************************
3688tp.push(["addHandler", "completeUpgradePurchase", function(params) {
3689  let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3690  mtm_checkout_event.trackEvent(event_name, "completeUpgradePurchase", checkout_art_id, 1);
3691
3692  cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "completeUpgradePurchase", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3693    {'callback': function(result) { 
3694        console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - completeUpgradePurchase: " + result.httpStatus); 
3695      }
3696  }]);
3697}]);
3698
3699// *****************************************
3700// Funktion unbekannt - Event aus Logs abgeleitet. Tracking, um die Häufigkeit zu erfassen.
3701// *****************************************
3702tp.push(["addHandler", "onCheckoutClose", function() {
3703  let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3704  mtm_checkout_event.trackEvent(event_name, "onCheckoutClose", checkout_art_id, 1);
3705
3706  cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "onCheckoutClose", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3707    {'callback': function(result) { 
3708        console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - onCheckoutClose: " + result.httpStatus); 
3709      }
3710  }]);
3711}]);
3712
3713// *****************************************
3714// Funktion unbekannt - Event aus Logs abgeleitet. Tracking, um die Häufigkeit zu erfassen.
3715// *****************************************
3716tp.push(["addHandler", "purge", function() {
3717  let mtm_checkout_event = Matomo.getAsyncTracker('https://matomo.oberpfalzmedien.de/matomo.php', 2);
3718  mtm_checkout_event.trackEvent(event_name, "purge", checkout_art_id, 1);
3719
3720  cX.callQueue.push(['sendEvent','om_checkout_event',{evt_action: "purge", evt_page: cx_event_page, evt_art_id: checkout_art_id},
3721    {'callback': function(result) { 
3722        console.log ("%c5033586 - cX event", "background-color:red; color: white;", "cX Event - purge: " + result.httpStatus); 
3723      }
3724  }]);
3725}]);
3726
3727</script>
3727</p>
3728
3729   </div>
3730
3731  
3732</article> <!-- /.node -->
3733  </div>
3734
3735  
3736  
3737  </div>
3738</div>
3739  </div>
3740</div>
3741        </main></div>
3742
3743        
3744        
3745      </div></div> <!-- /.section, /#content -->
3746
3747      
3748      
3749    </div></div> <!-- /#main, /#main-wrapper -->
3750
3751    <hr />
3752
3753    <div id="toplink" class="toplink-wrapper"><a class="toplink" href="#page-wrapper"><span class="txt">Nach oben</span></a></div>
3754
3755          <footer id="footer"><div class="section">
3756         <div class="region region-footer">
3757  <section id="block-block-6" class="block block-block first last region-odd even region-count-1 count-10">
3758  
3759  <div class="content">
3760    <div class="upper">
3761<div class="sociallinks"><span class="txt">Folgen Sie uns auf:</span>
3762<ul aria-label="Wir in den sozialen Netzwerken">
3763	<li><a class="fb" href="https://www.facebook.com/onetz.de/" rel="nofollow noreferrer" target="_blank"><span class="txt">Facebook</span></a></li>
3764	<li><a class="youtube" href="https://www.youtube.com/user/Oberpfalznetz" rel="nofollow noreferrer" target="_blank"><span class="txt">YouTube</span></a></li>
3765	<li><a class="insta" href="https://www.instagram.com/onetz.de/" rel="nofollow noreferrer" target="_blank"><span class="txt">Instagram</span></a></li>
3766        <li><a class="tiktok" href="https://www.tiktok.com/discover/oberpfalz-medien" rel="nofollow noreferrer" target="_blank"><span class="txt">Tik Tok</span></a></li>
3767        <li><a class="linkedin" href="https://www.linkedin.com/company/oberpfalzmedien" rel="nofollow noreferrer" target="_blank"><span class="txt">LinkedIn</span></a></li>
3768</ul>
3769</div>
3770
3771<div class="opmlogo"><a href="https://www.oberpfalzmedien.de/" rel="nofollow noreferrer" target="_blank"><span class="txt">Verlag</span></a></div>
3772<div class="footernav">
3773<ul aria-label="Kontaktmöglichkeiten und wichtige Informationen">
3774        <li><a href="/kontakt/">Kontakt</a></li>
3775	<li><a href="https://www.oberpfalzmedien.de/" rel="nofollow noreferrer" target="_blank">Verlag</a></li>
3776	<li class="break-after"><a href="https://www.oberpfalzmedien.de/karriere/" rel="nofollow noreferrer" target="_blank">Karriere</a></li>
3777	<li><a href="https://oberpfalzmedien.de/mediadaten/" rel="nofollow noreferrer" target="_blank">Mediadaten</a></li>
3778        <li><a href="/kuendigung-abonnement/" target="_blank">Abo kündigen</a></li>
3779        <li><a href="/onetz-app-download.html" target="_blank">App</a></li>
3780        <li><a href="#" onclick="__cmp('showScreen'); return false;" >Datenschutz-Einstellungen</a></li>
3781</ul>
3782</div>
3783
3784</div>
3785
3786<div class="lower">
3787<div class="footernav">
3788<ul aria-label="Rechtliches">
3789	<li><a href="https://om-datenschutz.de/impressum" rel="nofollow noreferrer">Impressum</a></li>
3790	<li><a href="/erklaerung-barrierefreiheit-fuer-wwwonetzde.html" rel="nofollow noreferrer">Barrierefreiheit</a></li>
3791	<li><a href="https://om-datenschutz.de/" rel="nofollow noreferrer">Datenschutz</a></li>
3792	<li><a href="/agbs/">AGB</a></li>
3793        <li><a href="/widerrufsformular/">Widerruf</a></li>
3794</ul>
3795</div>
3796
3797<div class="subfooter">
3798Copyright &copy; - powered by <a href="https://www.nativemedia.de" target="_blank">native:media</a>
3799</div>
3800
3801</div>
3802
3803  </div>
3804
3805  </section> <!-- /.block -->
3806</div> <!-- /.region -->
3807      </div></footer> <!-- /.section, /#footer -->
3808    
3809  </div> <!-- /#page -->
3810
3811  </div> <!-- /#page-wrapper -->
3812
3813    <nav id="navigation"><div class="section clearfix">
3814
3815            
3816            <div class="region region-navigation">
3817  <section id="block-menu-primary-links" class="block block-menu first last region-odd odd region-count-1 count-9">
3818  
3819  <div class="content">
3820    <ul class="menu"><li class="expanded lokales first active-trail"><a href="/oberpfalz">Lokales</a><ul class="menu"><li class="leaf amberg first"><a href="/oberpfalz/region-amberg">Amberg</a></li>
3821<li class="leaf cham"><a href="https://www.onetz.de/oberpfalz/region-cham">Cham</a></li>
3822<li class="leaf eschenbach"><a href="/oberpfalz/region-eschenbach">Eschenbach</a></li>
3823<li class="leaf kemnath"><a href="/oberpfalz/region-kemnath">Kemnath</a></li>
3824<li class="leaf nabburg"><a href="/oberpfalz/region-nabburg">Nabburg</a></li>
3825<li class="leaf oberviechtach-neunburg"><a href="/oberpfalz/region-oberviechtach-neunburg">Oberviechtach/Neunburg</a></li>
3826<li class="leaf regensburg"><a href="/oberpfalz/region-regensburg">Regensburg</a></li>
3827<li class="leaf schwandorf"><a href="/oberpfalz/region-schwandorf">Schwandorf</a></li>
3828<li class="leaf sulzbach-rosenberg"><a href="/oberpfalz/region-sulzbach-rosenberg">Sulzbach-Rosenberg</a></li>
3829<li class="leaf tirschenreuth"><a href="/oberpfalz/region-tirschenreuth">Tirschenreuth</a></li>
3830<li class="leaf vohenstrauss"><a href="/oberpfalz/region-vohenstrauss">Vohenstrauß</a></li>
3831<li class="leaf weiden-neustadt-adwn">
3831<a href="/oberpfalz/region-weiden-neustadt-waldnaab">Weiden/Neustadt a.d.WN</a></li>
3832<li class="leaf polizei-feuerwehr"><a href="/polizei_feuerwehr">Polizei &amp; Feuerwehr</a></li>
3833<li class="leaf vereinen-oberpfalzdaheimde last"><a href="https://www.oberpfalzdaheim.de" target="_blank">Aus den Vereinen (oberpfalzdaheim.de)</a></li>
3834</ul></li>
3835<li class="expanded onetzplus"><a href="https://www.onetz.de/onetzplus">OnetzPlus</a><ul class="menu"><li class="leaf onetzplus-artikel first"><a href="https://www.onetz.de/onetzplus">OnetzPlus Artikel</a></li>
3836<li class="leaf onetzplus-hintergrund"><a href="https://www.onetz.de/onetzplushintergrund">OnetzPlus Hintergrund</a></li>
3837<li class="leaf onetzplus-empfehlungen"><a href="https://www.onetz.de/onetzplusempfehlungen">OnetzPlus Empfehlungen</a></li>
3838<li class="leaf onetzplus-abo last"><a href="https://www.onetz.de/plus">OnetzPlus Abo</a></li>
3839</ul></li>
3840<li class="expanded sport"><a href="/sport">Sport</a><ul class="menu"><li class="leaf fussball-oberpfalz first"><a href="https://www.onetz.de/amateurfussball">Fußball in der Oberpfalz</a></li>
3841<li class="leaf blue-devils-weiden"><a href="https://www.onetz.de/blue-devils">Blue Devils Weiden</a></li>
3842<li class="leaf handball"><a href="https://www.onetz.de/handball">Handball</a></li>
3843<li class="leaf basketball"><a href="https://www.onetz.de/basketball">Basketball</a></li>
3844<li class="leaf sport-oberpfalz"><a href="https://www.onetz.de/sport">Sport aus der Oberpfalz</a></li>
3845<li class="leaf sport-ueberregional last"><a href="https://www.onetz.de/themen/sport_ueberregional">Sport überregional</a></li>
3846</ul></li>
3847<li class="expanded politik-wirtschaft-justiz"><a href="/deutschland-und-welt">Politik | Wirtschaft | Justiz</a><ul class="menu"><li class="leaf wirtschaft first">
3847<a href="/themen/wirtschaft">Wirtschaft</a></li>
3848<li class="leaf gericht-justiz"><a href="/Gericht_Justiz">Gericht &amp; Justiz</a></li>
3849<li class="leaf bayern"><a href="/themen/bayern">Bayern</a></li>
3850<li class="leaf politik last"><a href="/themen/politik">Politik</a></li>
3851</ul></li>
3852<li class="expanded magazin"><a href="/themen">Magazin</a><ul class="menu"><li class="leaf essen-geniessen first"><a href="https://www.onetz.de/essen-geniessen">Essen &amp; Genießen</a></li>
3853<li class="leaf bauen-wohnen"><a href="https://www.onetz.de/themen/bauen-wohnen">Bauen &amp; Wohnen</a></li>
3854<li class="leaf landwirtschaft"><a href="https://www.onetz.de/themen/landwirtschaft">Landwirtschaft</a></li>
3855<li class="leaf damals-geschichte-oberpfalz"><a href="https://www.onetz.de/damals">Damals - Geschichte der Oberpfalz</a></li>
3856<li class="leaf hochzeit"><a href="https://www.onetz.de/hochzeit">Hochzeit</a></li>
3857<li class="leaf kultur"><a href="/themen/kultur">Kultur</a></li>
3858<li class="leaf leo"><a href="/leo" class="service">LEO</a></li>
3859<li class="leaf owz"><a href="/owz" class="service">OWZ</a></li>
3860<li class="leaf magazine last"><a href="/magazine" class="service">Magazine</a></li>
3861</ul></li>
3862<li class="expanded anzeigen-maerkte"><a href="/anzeigen-uebersicht">Anzeigen und Märkte</a><ul class="menu"><li class="leaf trauer-gedenkportal first"><a href="https://trauer.onetz.de?utm_source=onetz&amp;utm_medium=servicemenue" class="service" target="_blank">Trauer- und Gedenkportal</a></li>
3863<li class="leaf stellenmarkt"><a href="https://stellen.onetz.de?utm_source=onetz&amp;utm_medium=servicemenue" class="service" target="_blank">Stellenmarkt</a></li>
3864<li class="leaf ausbildung-oberpfalzde"><a href="https://www.ausbildung-oberpfalz.de/?utm_source=Menue-Ratgeber&amp;utm_medium=Menueeintrag" target="_blank">Ausbildung-Oberpfalz.de</a></li>
3865<li class="leaf immobilienmarkt"><a href="https://immo.onetz.de/?utm_source=onetz&amp;utm_medium=servicemenue" class="service" target="_blank">Immobilienmarkt</a></li>
3866<li class="leaf zweisam-partnersuche"><a href="https://zweisam.onetz.de/?AID=servicemenue?utm_source=Service%20Men%C3%BC&amp;utm_medium=Link" class="service" target="_blank">Zweisam - die Partnersuche</a></li>
3867<li class="leaf anzeigen-uebersicht"><a href="/anzeigen-uebersicht">Anzeigen Übersicht</a></li>
3868<li class="leaf anzeige-aufgeben"><a href="https://www.onetz.de/anzeige-aufgeben/">Anzeige aufgeben</a></li>
3869<li class="leaf prospektbeilagen"><a href="/prospekte" class="service">Prospektbeilagen</a></li>
3870<li class="leaf mediadaten last"><a href="https://oberpfalzmedien.de/mediadaten/">Mediadaten</a></li>
3871</ul></li>
3872<li class="expanded service"><a href="/">Service</a><ul class="menu"><li class="leaf podcasts first"><a href="https://www.onetz.de/podcast/">Podcasts</a></li>
3873<li class="leaf wichtigste-morgen-amberg"><a href="https://www.onetz.de/oberpfalz/amberg/gut-informiert-tag-nachrichten-amberg-hoeren-id5333807.html">Das Wichtigste am Morgen - Amberg</a></li>
3874<li class="leaf wichtigste-morgen-weiden"><a href="https://www.onetz.de/oberpfalz/weiden-oberpfalz/gut-informiert-tag-nachrichten-weiden-hoeren-id5333810.html">Das Wichtigste am Morgen - Weiden</a></li>
3875<li class="leaf waswannwo"><a href="https://www.onetz.de/waswannwo">WasWannWo</a></li>
3876<li class="leaf ticketshop"><a href="https://www.onetz.de/ticket">Ticketshop</a></li>
3877<li class="leaf junior-club"><a href="https://www.onetz.de/junior-club">Junior-Club</a></li>
3878<li class="leaf tv-programm"><a href="https://tv.onetz.de" target="_blank">TV-Programm</a></li>
3879<li class="leaf leseranwalt"><a href="/themen/leseranwalt">Leseranwalt</a></li>
3880<li class="leaf wetter"><a href="https://www.onetz.de/wetter" class="preservice">Wetter</a></li>
3881<li class="leaf newsletter"><a href="https://www.onetz.de/newsletter" class="service">Newsletter</a></li>
3882<li class="leaf whatsapp last"><a href="https://www.onetz.de/deutschland-welt/oberpfalz/nachrichten-onetz-gibt-whatsapp-id4647762.html">WhatsApp</a></li>
3883</ul></li>
3884<li class="expanded e-paper"><a href="https://zeitung.onetz.de/" class="service" target="_blank">E-Paper</a><ul class="menu"><li class="leaf e-paper-lesen first"><a href="https://zeitung.onetz.de/">E-Paper lesen</a></li>
3885<li class="leaf e-paper-archiv"><a href="https://zeitung.onetz.de/gridshelf.act">E-Paper-Archiv</a></li>
3886<li class="leaf e-paper-abo last"><a href="https://www.onetz.de/abo-service?sec=digital">E-Paper-Abo</a></li>
3887</ul></li>
3888<li class="expanded abo"><a href="https://www.onetz.de/abo-service">Abo</a><ul class="menu"><li class="leaf abo-angebote first"><a href="https://www.onetz.de/abo-service" class="service">Abo-Angebote</a></li>
3889<li class="leaf geschenkabo"><a href="https://www.onetz.de/aboschenken">Geschenkabo</a></li>
3890<li class="leaf onetzplus-abo"><a href="https://www.onetz.de/plus">OnetzPlus Abo</a></li>
3891<li class="leaf schnupperabo"><a href="https://www.onetz.de/schnupperabo">Schnupperabo</a></li>
3892<li class="leaf e-paper-abo"><a href="https://www.onetz.de/abo-service?sec=digital">E-Paper-Abo</a></li>
3893<li class="leaf onetzplus"><a href="https://www.onetz.de/plus" class="service">OnetzPlus</a></li>
3894<li class="leaf abo-service last"><a href="https://www.onetz.de/abo-service?sec=service">Abo-Service</a></li>
3895</ul></li>
3896<li class="expanded onetz last"><a href="/mein-onetz">Mein Onetz</a><ul class="menu"><li class="leaf e-paper first"><a href="https://zeitung.onetz.de/dashboard.act" target="_blank">Mein E-Paper</a></li>
3897<li class="leaf push-meldungen"><a href="https://www.onetz.de/desktop-push.html" class="service">Push-Meldungen</a></li>
3898<li class="leaf newsletter-verwalten"><a href="https://www.onetz.de/newsletter">Newsletter verwalten</a></li>
3899<li class="leaf rss-feeds"><a href="/intern.html-6" class="service">RSS-Feeds</a></li>
3900<li class="leaf leserreisen"><a href="https://leserreisen-onetz.de/">Leserreisen</a></li>
3901<li class="leaf lesershop"><a href="https://www.onetz-shop.de" class="service">Lesershop</a></li>
3902<li class="leaf kursangebote"><a href="https://www.onetz.de/kursangebote" class="service">Kursangebote</a></li>
3903<li class="leaf netiquette last"><a href="https://www.onetz.de/netiquette">Netiquette</a></li>
3904</ul></li>
3905</ul>  </div>
3906
3907  </section> <!-- /.block -->
3908</div> <!-- /.region -->
3909
3910        </div></nav> <!-- /.section, /#navigation -->
3911
3912  
3913  
3914    <div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
3915    <div class="pswp__bg"></div>
3916    <div class="pswp__scroll-wrap">
3917      <div class="pswp__container"><div class="pswp__item"></div><div class="pswp__item"></div><div class="pswp__item"></div></div>
3918      <div class="pswp__ui pswp__ui--hidden">
3919        <div class="pswp__top-bar">
3920          <div class="pswp__counter"></div>
3921          <button class="pswp__button pswp__button--close" title="Schließen (Esc)"></button>
3922          <button class="pswp__button pswp__button--fs" title="Vollbildmodus aktivieren/deaktivieren"></button>
3923          <button class="pswp__button pswp__button--zoom" title="Zoom"></button>
3924          <div class="pswp__preloader">
3925            <div class="pswp__preloader__icn"><div class="pswp__preloader__cut"><div class="pswp__preloader__donut"></div></div></div>
3926          </div>
3927        </div>
3928        <button class="pswp__button pswp__button--arrow--left" title="Zurück (Cursor links)"></button>
3929        <button class="pswp__button pswp__button--arrow--right" title="Vor (Cursor rechts)"></button>
3930        <div class="pswp__caption"><div class="pswp__caption__center"></div></div>
3931      </div>
3932    </div>
3933  </div>
3934  
3935  
3935<script id="pa-event">
3936    function waitForPa() {
3937        let attempts = 0;
3938
3939        function checkPaAvailable() {
3940            attempts++;
3941
3942            if (typeof pa !== "undefined") {
3943                const params = {"content_gated":false,"content_is_promoted":false,"content_article_name":"Good News: Einfach gute Nachrichten","content_article_id":"5481091","content_publication_date":"2026-09-18T16:55:27+02:00","content_authors":["Redaktion ONETZ"],"page_content_type":"article","content_user_needs":["UpdateMe"],"content_section":"Oberpfalz"};
3944                params.page = document.title.replace(" | Onetz", "");
3945
3946                pa.sendEvent('page.display', params);
3947                console.log('PA event fired with params', params);
3948                return;
3949            }
3950
3951            if (attempts >= 20) {
3952                console.log("PA object not found within 20 attempts. Aborting send event loop.");
3953                return;
3954            }
3955
3956            setTimeout(checkPaAvailable, 100);
3957        }
3958
3959        checkPaAvailable();
3960    }
3961
3962    waitForPa();
3963  </script>
3963
3964
3965
3966
3967            
3967<script type="text/plain" class="cmplazyload" data-cmp-vendor="s2570">
3968              (function(u,p,s,c,r){u[r]=u[r]||function(p){(u[r].q=u[r].q||[]).push(p)},u[r].ls=1*new Date();
3969              var a=p.createElement(s),m=p.getElementsByTagName(s)[0];a.async=1;a.src=c;m.parentNode.insertBefore(a,m)
3970          })(window,document,'script','//files.upscore.com/async/upScore.js','upScore');
3971          upScore({"config":{"domain":"onetz.de","article":".pane-node-content","track_positions":false},"data":{"taxonomy":"UpdateMe, goodvibesonetz","object_type":"article","user_status":0,"custom_app":0,"object_id":"5481091","pubdate":"2026-09-18T16:55:27+02:00","author":"Redaktion ONETZ","custom_video":0,"content_type":0,"content_blocked":0,"section":"Oberpfalz"}});
3972          console.log('upScore activated');
3973      </script>
3973
3974  
3975        
3975<script src='/dnt7/ivwcfg.php'></script>
3975
3976      <!-- IOM TCF2.0 -->
3977          
3977<script type="text/plain" class="cmplazyload" data-cmp-vendor="s1481" data-cmp-src="https://data-7023b17a38.onetz.de/iomm/latest/bootstrap/stub.js"></script>
3977
3978      
3978<script type="text/plain" class="cmplazyload" data-cmp-vendor="s1481">
3979          // set for slick events
3980          var iomPageCode = 'localnews';
3981
3982          var cm_intervalIOMm = setInterval(watchCMPiomm, 100);
3983
3984          function watchCMPiomm () {
3985              if (typeof IOMm == 'function') {
3986                  clearInterval(cm_intervalIOMm);
3987
3988                  IOMm('configure', { st: ivwOfferId, dn: 'data-7023b17a38.onetz.de', mh:5 });
3989                  IOMm('pageview', { cp: 'localnews' });
3990
3991                  console.log('IOM cfg init');
3992              }
3993          }
3994      </script>
3994
3995      
3995<script type="text/plain" class="cmplazyload" data-cmp-vendor="s1481" data-cmp-src='https://data-7023b17a38.onetz.de/iomm/latest/manager/base/es5/bundle.js'></script>
3995
3996      
3997  
3997<script type="text/javascript" src="/sites/default/files/js/js_e756e0a0b5e965e359ddbe3695eec0a0.jsmin.js"></script>
3997
3998
3999  <div class="region region-bottom-includes">
4000  <section id="block-block-9" class="block block-block first last region-odd odd region-count-1 count-11">
4001  
4002  <div class="content">
4003       
4004    
4004<script src="/sites/all/themes/dnt_onet22/dist/js/vendor/ext-piano-integration.js?v=6"></script>
4004
4005
4006
4007<script>
4008if (typeof iom !== 'undefined') {
4009  iom.c = function(){};
4010  var iam_data = {};
4011}
4012</script>
4012
4013
4014<script>
4015function dnt_perform_sitelogin() {
4016  console.log('perform site login for app. pathname: ' + window.location.pathname);
4017  window.location = 'https://' + window.location.hostname + '/user/login?destination=' + window.location.pathname;
4018}
4019</script>
4019  </div>
4020
4021  </section> <!-- /.block -->
4022</div> <!-- /.region -->
4023
4024</body>
4025</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.