Widget:GOV

aus GenWiki, dem genealogischen Lexikon zum Mitmachen.
Version vom 26. Februar 2025, 21:36 Uhr von Ernestus (Diskussion • Beiträge) (Erneuter Versuch, Fehler 301 zu behandeln)
Zur Navigation springen Zur Suche springen
   <noscript>

⚠ Dieses Widget benötigt JavaScript, um 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;
   }
   if (jsWarning) jsWarning.style.display = "none";
   fetch(checkURL)
       .then(response => {
           if (response.status === 200) {
               return response.text();
           } else if (response.status === 301) {
               return response.json().then(data => {
                   const govIdNew = data.newId;
                   if (govHeader) {
                       govHeader.innerHTML = `Das GOV-Objekt ${govId} existiert nicht mehr und ist durch das Objekt ${govIdNew} ersetzt worden. 
                           <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} wurde durch ${govIdNew} ersetzt.

`;

                   throw new Error("GOV-ID durch neue ID ersetzt");
               });
           } 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(() => fetch(fetchURL))
       .then(response => {
           if (!response.ok) {
               throw new Error(`HTTP-Fehler! Status: ${response.status}`);
           }
           return response.text();
       })
       .then(html => {
           const shadow = contentContainer.attachShadow({ mode: 'open' });
           const style = document.createElement('style');
           style.textContent = `
               :host {
                   all: initial;
                   display: block;
                   max-width: 1200px;
                   margin: 20px auto;
                   padding: 0;
                   border: none;
                   background-color: #fff;
                   overflow: auto;
                   font-family: Arial, sans-serif;
                   font-size: 16px;
               }
               table {
                   width: 100%;
                   table-layout: auto;
                   border-collapse: collapse;
                   margin: 10px 0;
                   border: 1px solid #ccc;
               }
               th, td {
                   border: 1px solid #ddd;
                   padding: 10px;
                   text-align: left;
                   word-wrap: break-word;
               }
               th {
                   background-color: #f2f2f2;
               }
               td:first-child {
                   width: 1%;
                   white-space: nowrap;
               }
               ul {
                   padding-left: 20px;
                   margin: 10px 0;
               }
               object {
                   max-width: 100%;
                   width: 100%;
                   height: 500;
                   display: block;
                   margin: 0;
               }
               .map-container {
                   text-align: left;
               }
               a {
                   color: #007BFF;
                   text-decoration: none;
               }
               a:hover {
                   text-decoration: underline;
               }
           `;
           const content = document.createElement('div');
           content.innerHTML = html;
           shadow.appendChild(style);
           shadow.appendChild(content);
       })
       .catch(error => {
           console.error('Fehler beim Laden:', error);
       });

})();


</script>