<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://playground-mw.bitplan.com/index.php?action=history&amp;feed=atom&amp;title=Widget%3AGOV</id>
	<title>Widget:GOV - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="http://playground-mw.bitplan.com/index.php?action=history&amp;feed=atom&amp;title=Widget%3AGOV"/>
	<link rel="alternate" type="text/html" href="http://playground-mw.bitplan.com/Thanatos/index.php?title=Widget:GOV&amp;action=history"/>
	<updated>2026-04-08T09:48:13Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in wiki</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>http://playground-mw.bitplan.com/Thanatos/index.php?title=Widget:GOV&amp;diff=474&amp;oldid=prev</id>
		<title>Sysop: pushed from genwiki-devel by wikipush</title>
		<link rel="alternate" type="text/html" href="http://playground-mw.bitplan.com/Thanatos/index.php?title=Widget:GOV&amp;diff=474&amp;oldid=prev"/>
		<updated>2025-03-06T16:03:44Z</updated>

		<summary type="html">&lt;p&gt;pushed from genwiki-devel by wikipush&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div id=&amp;quot;widget-container-&amp;lt;!--{$GOVID|escape:&amp;#039;url&amp;#039;}--&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;noscript&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color: red;&amp;quot;&amp;gt;⚠ JavaScript wird benötigt, um diese Inhalte anzuzeigen.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/noscript&amp;gt;&lt;br /&gt;
    &amp;lt;p id=&amp;quot;js-warning-&amp;lt;!--{$GOVID|escape:&amp;#039;url&amp;#039;}--&amp;gt;&amp;quot; style=&amp;quot;color: red;&amp;quot;&amp;gt;???? Lade GOV-Daten... Falls nichts erscheint, ist JavaScript deaktiviert.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 id=&amp;quot;gov-header-&amp;lt;!--{$GOVID|escape:&amp;#039;url&amp;#039;}--&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
        Um das GOV-Objekt &amp;lt;!--{$GOVID|escape:&amp;#039;url&amp;#039;}--&amp;gt; direkt im GOV aufzurufen, &lt;br /&gt;
        &amp;lt;a href=&amp;quot;https://gov.genealogy.net/item/show/&amp;lt;!--{$GOVID|escape:&amp;#039;url&amp;#039;}--&amp;gt;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;klicken Sie hier&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div id=&amp;quot;widget-content-&amp;lt;!--{$GOVID|escape:&amp;#039;url&amp;#039;}--&amp;gt;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    (function () {&lt;br /&gt;
        const govId = &amp;quot;&amp;lt;!--{$GOVID|escape:&amp;#039;url&amp;#039;}--&amp;gt;&amp;quot;; &lt;br /&gt;
        const checkURL = `https://gov.genealogy.net/api/checkObjectId?itemId=${govId}`;&lt;br /&gt;
        const fetchURL = `https://gov.genealogy.net/item/wikihtml/${govId}`;&lt;br /&gt;
        const baseURL = &amp;quot;https://gov.genealogy.net&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        const containerId = `widget-container-${govId}`;&lt;br /&gt;
        const contentId = `widget-content-${govId}`;&lt;br /&gt;
        const warningId = `js-warning-${govId}`;&lt;br /&gt;
        const headerId = `gov-header-${govId}`;&lt;br /&gt;
&lt;br /&gt;
        const widgetContainer = document.getElementById(containerId);&lt;br /&gt;
        const contentContainer = document.getElementById(contentId);&lt;br /&gt;
        const jsWarning = document.getElementById(warningId);&lt;br /&gt;
        const govHeader = document.getElementById(headerId);&lt;br /&gt;
&lt;br /&gt;
        if (!widgetContainer || !contentContainer || !govHeader) {&lt;br /&gt;
            console.error(&amp;quot;Fehler: Container für GOV-ID nicht gefunden:&amp;quot;, govId);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Entfernt den Ladehinweis, wenn JavaScript aktiv ist&lt;br /&gt;
        if (jsWarning) jsWarning.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        // GOV-ID-Prüfung vor dem Laden der Daten&lt;br /&gt;
let govIdNew = null; // Globale Variable für neue GOV-ID&lt;br /&gt;
&lt;br /&gt;
fetch(checkURL)&lt;br /&gt;
    .then(response =&amp;gt; {&lt;br /&gt;
        if (response.status === 200) {&lt;br /&gt;
            return response.text(); // GOV-ID ist gültig → Weiter mit Hauptabfrage&lt;br /&gt;
        } else if (response.status === 301) {&lt;br /&gt;
            return response.text().then(body =&amp;gt; {&lt;br /&gt;
                govIdNew = body.trim(); // Speichert die neue GOV-ID&lt;br /&gt;
                console.debug(`Check-Response Body:`, govIdNew);&lt;br /&gt;
&lt;br /&gt;
                // **Sicherstellen, dass der Header aktualisiert wird**&lt;br /&gt;
                if (govHeader) {&lt;br /&gt;
                    govHeader.innerHTML = `Das GOV-Objekt ${govId} existiert nicht mehr. Es wurde durch ${govIdNew} ersetzt.&lt;br /&gt;
                        &amp;lt;a href=&amp;quot;https://gov.genealogy.net/item/show/${govId}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&lt;br /&gt;
                        klicken Sie hier&amp;lt;/a&amp;gt;, um Näheres zu erfahren.`;&lt;br /&gt;
                }&lt;br /&gt;
                // **Statt fetch() wird nur der Hinweis ausgegeben**&lt;br /&gt;
                widgetContainer.innerHTML += `&amp;lt;p style=&amp;quot;color: red;&amp;quot;&amp;gt;Die GOV-ID ${govId} ist nicht mehr gültig und wurde durch ${govIdNew} ersetzt.&amp;lt;/p&amp;gt;`;&lt;br /&gt;
                throw new Error(&amp;quot;GOV-ID ersetzt&amp;quot;);&lt;br /&gt;
            });&lt;br /&gt;
        } else if (response.status === 302) {&lt;br /&gt;
            // **Sicherstellen, dass der Header aktualisiert wird**&lt;br /&gt;
            if (govHeader) {&lt;br /&gt;
                govHeader.innerHTML = `Das GOV-Objekt ${govId} existiert nicht mehr. &lt;br /&gt;
                    &amp;lt;a href=&amp;quot;https://gov.genealogy.net/item/show/${govId}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&lt;br /&gt;
                    klicken Sie hier&amp;lt;/a&amp;gt;, um Näheres zu erfahren.`;&lt;br /&gt;
            }&lt;br /&gt;
            // **Statt fetch() wird nur der Hinweis ausgegeben**&lt;br /&gt;
            widgetContainer.innerHTML += `&amp;lt;p style=&amp;quot;color: red;&amp;quot;&amp;gt;Die GOV-ID ${govId} ist nicht mehr gültig und wurde durch eine andere ersetzt.&amp;lt;/p&amp;gt;`;&lt;br /&gt;
            throw new Error(&amp;quot;GOV-ID ersetzt&amp;quot;);                &lt;br /&gt;
        } else if (response.status === 404) {&lt;br /&gt;
            widgetContainer.innerHTML = `&amp;lt;p style=&amp;quot;color: red;&amp;quot;&amp;gt;${govId} ist keine gültige GOV-ID!&amp;lt;/p&amp;gt;`;&lt;br /&gt;
            throw new Error(&amp;quot;GOV-ID nicht gültig&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            throw new Error(`Unerwarteter Status: ${response.status}`);&lt;br /&gt;
        }&lt;br /&gt;
    })&lt;br /&gt;
    .then(() =&amp;gt; {&lt;br /&gt;
        // Falls die GOV-ID gültig ist oder ersetzt wurde, lade die Daten mit der neuen GOV-ID (falls vorhanden)&lt;br /&gt;
        const fetchTarget = govIdNew || govId;&lt;br /&gt;
        return fetch(`https://gov.genealogy.net/item/wikihtml/${fetchTarget}`);&lt;br /&gt;
    })&lt;br /&gt;
            .then(response =&amp;gt; {&lt;br /&gt;
                if (!response.ok) {&lt;br /&gt;
                    throw new Error(`HTTP-Fehler! Status: ${response.status}`);&lt;br /&gt;
                }&lt;br /&gt;
                return response.text();&lt;br /&gt;
            })&lt;br /&gt;
            .then(html =&amp;gt; {&lt;br /&gt;
                // Shadow DOM erstellen&lt;br /&gt;
                const shadow = contentContainer.attachShadow({ mode: &amp;#039;open&amp;#039; });&lt;br /&gt;
&lt;br /&gt;
                // Stile für das Widget im Shadow DOM hinzufügen&lt;br /&gt;
                const style = document.createElement(&amp;#039;style&amp;#039;);&lt;br /&gt;
                style.textContent = `&lt;br /&gt;
                    :host {&lt;br /&gt;
                        all: initial;&lt;br /&gt;
                        display: block;&lt;br /&gt;
                        max-width: 1200px;&lt;br /&gt;
                        margin: 20px auto;&lt;br /&gt;
                        padding: 0;&lt;br /&gt;
                        border: none;&lt;br /&gt;
                        background-color: #fff;&lt;br /&gt;
                        overflow: auto;&lt;br /&gt;
                        font-family: Arial, sans-serif;&lt;br /&gt;
                        font-size: 16px;&lt;br /&gt;
                    }&lt;br /&gt;
                    table {&lt;br /&gt;
                        width: 100%;&lt;br /&gt;
                        table-layout: auto;&lt;br /&gt;
                        border-collapse: collapse;&lt;br /&gt;
                        margin: 10px 0;&lt;br /&gt;
                        border: 1px solid #ccc;&lt;br /&gt;
                    }&lt;br /&gt;
                    th, td {&lt;br /&gt;
                        border: 1px solid #ddd;&lt;br /&gt;
                        padding: 10px;&lt;br /&gt;
                        text-align: left;&lt;br /&gt;
                        word-wrap: break-word;&lt;br /&gt;
                    }&lt;br /&gt;
                    th {&lt;br /&gt;
                        background-color: #f2f2f2;&lt;br /&gt;
                    }&lt;br /&gt;
                    td:first-child {&lt;br /&gt;
                        width: 1%;&lt;br /&gt;
                        white-space: nowrap;&lt;br /&gt;
                    }&lt;br /&gt;
                    ul {&lt;br /&gt;
                        padding-left: 20px;&lt;br /&gt;
                        margin: 10px 0;&lt;br /&gt;
                    }&lt;br /&gt;
                    object {&lt;br /&gt;
                        max-width: 100%;&lt;br /&gt;
                        width: 100%;&lt;br /&gt;
                        height: 500;&lt;br /&gt;
                        display: block;&lt;br /&gt;
                        margin: 0;&lt;br /&gt;
                    }&lt;br /&gt;
                    .map-container {&lt;br /&gt;
                        text-align: left;&lt;br /&gt;
                    }&lt;br /&gt;
                    a {&lt;br /&gt;
                        color: #007BFF;&lt;br /&gt;
                        text-decoration: none;&lt;br /&gt;
                    }&lt;br /&gt;
                    a:hover {&lt;br /&gt;
                        text-decoration: underline;&lt;br /&gt;
                    }&lt;br /&gt;
                `;&lt;br /&gt;
&lt;br /&gt;
                // Geladenen HTML-Inhalt einfügen&lt;br /&gt;
                const content = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
                content.innerHTML = html;&lt;br /&gt;
&lt;br /&gt;
                // 1) Passe width und height in &amp;lt;object&amp;gt; an&lt;br /&gt;
                const objects = content.querySelectorAll(&amp;#039;object[data^=&amp;quot;https://www.genealogy.net/viewer-js/&amp;quot;]&amp;#039;);&lt;br /&gt;
                objects.forEach(obj =&amp;gt; {&lt;br /&gt;
                    obj.setAttribute(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;);&lt;br /&gt;
                    obj.setAttribute(&amp;#039;height&amp;#039;, &amp;#039;500&amp;#039;);&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // 2) Passe &amp;lt;a&amp;gt; und &amp;lt;img&amp;gt; für den relationshipGraph an&lt;br /&gt;
                const imageLinks = content.querySelectorAll(&amp;#039;a[href*=&amp;quot;relationshipGraph&amp;quot;]&amp;#039;);&lt;br /&gt;
                imageLinks.forEach(link =&amp;gt; {&lt;br /&gt;
                    const originalHref = link.getAttribute(&amp;#039;href&amp;#039;);&lt;br /&gt;
                    link.setAttribute(&amp;#039;href&amp;#039;, baseURL + originalHref);&lt;br /&gt;
&lt;br /&gt;
                    const img = link.querySelector(&amp;#039;img&amp;#039;);&lt;br /&gt;
                    if (img) {&lt;br /&gt;
                        const originalSrc = img.getAttribute(&amp;#039;src&amp;#039;);&lt;br /&gt;
                        img.setAttribute(&amp;#039;src&amp;#039;, baseURL + originalSrc + &amp;quot;?full-size=1&amp;quot;);&lt;br /&gt;
                        img.setAttribute(&amp;#039;width&amp;#039;, &amp;#039;80%&amp;#039;);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // 3) Füge Base-URL zu allen relativen &amp;lt;a&amp;gt; hinzu&lt;br /&gt;
                const allLinks = content.querySelectorAll(&amp;#039;a[href^=&amp;quot;/&amp;quot;]&amp;#039;);&lt;br /&gt;
                allLinks.forEach(link =&amp;gt; {&lt;br /&gt;
                    const originalHref = link.getAttribute(&amp;#039;href&amp;#039;);&lt;br /&gt;
                    link.setAttribute(&amp;#039;href&amp;#039;, baseURL + originalHref);&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // 4) Füge Base-URL zu allen relativen &amp;lt;img&amp;gt; hinzu&lt;br /&gt;
                const allImages = content.querySelectorAll(&amp;#039;img[src^=&amp;quot;/&amp;quot;]&amp;#039;);&lt;br /&gt;
                allImages.forEach(img =&amp;gt; {&lt;br /&gt;
                    const originalSrc = img.getAttribute(&amp;#039;src&amp;#039;);&lt;br /&gt;
                    img.setAttribute(&amp;#039;src&amp;#039;, baseURL + originalSrc);&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Stile und Inhalte in das Shadow DOM einfügen&lt;br /&gt;
                shadow.appendChild(style);&lt;br /&gt;
                shadow.appendChild(content);&lt;br /&gt;
            })&lt;br /&gt;
            .catch(error =&amp;gt; {&lt;br /&gt;
                console.error(&amp;#039;Fehler beim Laden:&amp;#039;, error);&lt;br /&gt;
            });&lt;br /&gt;
    })();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sysop</name></author>
	</entry>
</feed>