Widget:GOV

aus GenWiki, dem genealogischen Lexikon zum Mitmachen.
Version vom 28. Februar 2025, 15:05 Uhr von Ernestus (Diskussion • Beiträge) (Laden der Wikidaten auch bei ersetzter GOV-ID)
Zur Navigation springen Zur Suche springen
   <noscript>

⚠ JavaScript wird benötigt, um diese Inhalte anzuzeigen.

   </noscript>

???? Lade GOV-Daten... Falls nichts erscheint, ist JavaScript deaktiviert.

Um das GOV-Objekt direkt im GOV aufzurufen, <a href="https://gov.genealogy.net/item/show/" target="_blank">klicken Sie hier</a>

<script>

   (function () {
       const govId = ""; 
       const checkURL = `https://gov.genealogy.net/api/checkObjectId?itemId=${govId}`;
       const fetchURL = `https://gov.genealogy.net/item/wikihtml/${govId}`;
       const baseURL = "https://gov.genealogy.net";
       const containerId = `widget-container-${govId}`;
       const contentId = `widget-content-${govId}`;
       const warningId = `js-warning-${govId}`;
       const headerId = `gov-header-${govId}`;
       const widgetContainer = document.getElementById(containerId);
       const contentContainer = document.getElementById(contentId);
       const jsWarning = document.getElementById(warningId);
       const govHeader = document.getElementById(headerId);
       if (!widgetContainer || !contentContainer || !govHeader) {
           console.error("Fehler: Container für GOV-ID nicht gefunden:", govId);
           return;
       }
       // Entfernt den Ladehinweis, wenn JavaScript aktiv ist
       if (jsWarning) jsWarning.style.display = "none";
       let govIdNew = null; // Globale Variable für neue GOV-ID
       fetch(checkURL)
           .then(response => {
               if (response.status === 200) {
                   return response.text(); // GOV-ID ist gültig → Weiter mit Hauptabfrage
               } else if (response.status === 301) {
                   return response.text().then(body => {
                       govIdNew = body.trim(); // Speichert die neue GOV-ID
                       console.debug(`Check-Response Body:`, govIdNew);
                       // **Sicherstellen, dass der Header aktualisiert wird**
                       if (govHeader) {
                           govHeader.innerHTML = `Das GOV-Objekt ${govId} existiert nicht mehr. Es wurde durch ${govIdNew} ersetzt.
                               <a href="https://gov.genealogy.net/item/show/${govIdNew}" target="_blank">
                               klicken Sie hier</a>, um Näheres zu erfahren.`;
                       }
                       // **Statt Fehler zu werfen, weiter mit neuem govIdNew**

widgetContainer.innerHTML += `

Die GOV-ID ${govId} ist nicht mehr gültig und wurde durch ${govIdNew} ersetzt.

`;

                       return govIdNew; // Gebe die neue ID weiter
                   });
               } else if (response.status === 302) {
                   if (govHeader) {
                       govHeader.innerHTML = `Das GOV-Objekt ${govId} existiert nicht mehr. 
                           <a href="https://gov.genealogy.net/item/show/${govId}" target="_blank">
                           klicken Sie hier</a>, um Näheres zu erfahren.`;
                   }

widgetContainer.innerHTML += `

Die GOV-ID ${govId} ist nicht mehr gültig und wurde durch eine andere ersetzt.

`;

                   throw new Error("GOV-ID ersetzt");                
               } else if (response.status === 404) {

widgetContainer.innerHTML = `

${govId} ist keine gültige GOV-ID!

`;

                   throw new Error("GOV-ID nicht gültig");
               } else {
                   throw new Error(`Unerwarteter Status: ${response.status}`);
               }
           })
           .then(newGovId => {
               if (newGovId) {
                   govIdNew = newGovId;
               }
               const fetchTarget = govIdNew || govId;
               return fetch(`https://gov.genealogy.net/item/wikihtml/${fetchTarget}`);
           })
           .then(response => {
               if (!response.ok) {
                   throw new Error(`HTTP-Fehler! Status: ${response.status}`);
               }
               return response.text();
           })
           .then(html => {
               contentContainer.innerHTML = html; // Fügt den HTML-Inhalt in das Widget ein
           })
           .catch(error => {
               console.error("Fehler beim Laden:", error);
           });
   })();

</script>