Widget:GOV-Test: Unterschied zwischen den Versionen
Aus Altes Köln
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| (8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
<!--Test-Widget von Christopher zum Austesten des GOV-Aufrufes (eigentlich für das GenWiki)--> | <!--Test-Widget von Christopher zum Austesten des GOV-Aufrufes (eigentlich für das GenWiki)--> | ||
<div id="widget-container"></div> | <div id="widget-container"></div> | ||
<script> | <script> | ||
(function () { | (function () { | ||
const fetchURL = "https://gov.genealogy.net/item/wikihtml/ | const fetchURL = "https://gov.genealogy.net/item/wikihtml/<!--{$GOVID|escape:'url'}-->"; | ||
const baseURL = "https://gov.genealogy.net"; | |||
fetch(fetchURL) | fetch(fetchURL) | ||
| Zeile 24: | Zeile 24: | ||
style.textContent = ` | style.textContent = ` | ||
:host { | :host { | ||
all: initial; | all: initial; | ||
display: block; | display: block; | ||
max-width: | max-width: 1200px; | ||
margin: 20px auto; | margin: 20px auto; | ||
padding: | padding: 0; | ||
border: | border: none; | ||
background-color: # | background-color: #fff; | ||
overflow: auto; | overflow: auto; | ||
font-family: Arial, sans-serif; | font-family: Arial, sans-serif; | ||
font-size: 16px; | |||
} | } | ||
table { | table { | ||
width: 100%; | width: 100%; | ||
table-layout: | table-layout: auto; | ||
border-collapse: collapse; | border-collapse: collapse; | ||
margin: 10px 0; | margin: 10px 0; | ||
border: 1px solid #ccc; | |||
} | } | ||
th, td { | th, td { | ||
border: 1px solid #ddd; | border: 1px solid #ddd; | ||
padding: 10px; | padding: 10px; | ||
text-align: left; | text-align: left; | ||
word-wrap: break-word; | word-wrap: break-word; | ||
} | } | ||
th { | th { | ||
background-color: #f2f2f2; | background-color: #f2f2f2; | ||
} | } | ||
td:first-child { | |||
width: 1%; | |||
white-space: nowrap; | |||
} | |||
ul { | ul { | ||
padding-left: 20px; | padding-left: 20px; | ||
margin: 10px 0; | margin: 10px 0; | ||
} | } | ||
object { | object { | ||
max-width: 100%; | max-width: 100%; | ||
height: | height: 400px; /* Feste Höhe */ | ||
display: block; | display: block; | ||
margin: | margin: 0; | ||
} | |||
.map-container { | |||
text-align: left; | |||
} | } | ||
a { | a { | ||
color: #007BFF; | color: #007BFF; | ||
text-decoration: none; | text-decoration: none; | ||
} | } | ||
a:hover { | a:hover { | ||
text-decoration: underline; | text-decoration: underline; | ||
| Zeile 79: | Zeile 80: | ||
const content = document.createElement('div'); | const content = document.createElement('div'); | ||
content.innerHTML = html; | content.innerHTML = html; | ||
// 1) Passe width und height in <object> an | |||
const objects = content.querySelectorAll('object[data^="https://www.genealogy.net/viewer-js/"]'); | |||
objects.forEach(obj => { | |||
obj.setAttribute('width', '400'); // Setze Breite auf 400 | |||
obj.setAttribute('height', '400'); // Setze Höhe auf 400 | |||
}); | |||
// 2) Passe <a> und <img> für den relationshipGraph an | |||
const imageLinks = content.querySelectorAll('a[href*="relationshipGraph"]'); | |||
imageLinks.forEach(link => { | |||
// Passe das <a>-Tag an die Base-URL an | |||
const originalHref = link.getAttribute('href'); | |||
link.setAttribute('href', baseURL + originalHref); | |||
// Passe das <img>-Tag im <a>-Tag an | |||
const img = link.querySelector('img'); | |||
if (img) { | |||
const originalSrc = img.getAttribute('src'); | |||
img.setAttribute('src', baseURL + originalSrc + "?full-size=1"); // Absoluten Pfad setzen | |||
img.setAttribute('width', '80%'); // Breite auf 80% setzen | |||
} | |||
}); | |||
// 3) Füge Base-URL zu allen relativen <a> hinzu | |||
const allLinks = content.querySelectorAll('a[href^="/"]'); | |||
allLinks.forEach(link => { | |||
const originalHref = link.getAttribute('href'); | |||
link.setAttribute('href', baseURL + originalHref); | |||
}); | |||
// 4) Füge Base-URL zu allen relativen <img> hinzu | |||
const allImages = content.querySelectorAll('img[src^="/"]'); | |||
allImages.forEach(img => { | |||
const originalSrc = img.getAttribute('src'); | |||
img.setAttribute('src', baseURL + originalSrc); | |||
}); | |||
// Stile und Inhalte in das Shadow DOM einfügen | // Stile und Inhalte in das Shadow DOM einfügen | ||
| Zeile 90: | Zeile 128: | ||
}); | }); | ||
})(); | })(); | ||
</script> | </script> | ||
Aktuelle Version vom 22. Januar 2025, 18:18 Uhr
<script>
(function () {
const fetchURL = "https://gov.genealogy.net/item/wikihtml/";
const baseURL = "https://gov.genealogy.net";
fetch(fetchURL)
.then(response => {
if (!response.ok) {
throw new Error(`HTTP-Fehler! Status: ${response.status}`);
}
return response.text();
})
.then(html => {
const widgetContainer = document.getElementById('widget-container');
// Shadow DOM erstellen
const shadow = widgetContainer.attachShadow({ mode: 'open' });
// Stile für das Widget im Shadow DOM hinzufügen
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%;
height: 400px; /* Feste Höhe */
display: block;
margin: 0;
}
.map-container {
text-align: left;
}
a {
color: #007BFF;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
`;
// Geladenen HTML-Inhalt einfügen
const content = document.createElement('div');
content.innerHTML = html;
// 1) Passe width und height in <object> an
const objects = content.querySelectorAll('object[data^="https://www.genealogy.net/viewer-js/"]');
objects.forEach(obj => {
obj.setAttribute('width', '400'); // Setze Breite auf 400
obj.setAttribute('height', '400'); // Setze Höhe auf 400
});
// 2) Passe <a> und <img> für den relationshipGraph an
const imageLinks = content.querySelectorAll('a[href*="relationshipGraph"]');
imageLinks.forEach(link => {
// Passe das <a>-Tag an die Base-URL an
const originalHref = link.getAttribute('href');
link.setAttribute('href', baseURL + originalHref);
// Passe das <img>-Tag im <a>-Tag an
const img = link.querySelector('img');
if (img) {
const originalSrc = img.getAttribute('src');
img.setAttribute('src', baseURL + originalSrc + "?full-size=1"); // Absoluten Pfad setzen
img.setAttribute('width', '80%'); // Breite auf 80% setzen
}
});
// 3) Füge Base-URL zu allen relativen <a> hinzu
const allLinks = content.querySelectorAll('a[href^="/"]');
allLinks.forEach(link => {
const originalHref = link.getAttribute('href');
link.setAttribute('href', baseURL + originalHref);
});
// 4) Füge Base-URL zu allen relativen <img> hinzu
const allImages = content.querySelectorAll('img[src^="/"]');
allImages.forEach(img => {
const originalSrc = img.getAttribute('src');
img.setAttribute('src', baseURL + originalSrc);
});
// Stile und Inhalte in das Shadow DOM einfügen
shadow.appendChild(style);
shadow.appendChild(content);
})
.catch(error => {
console.error('Fehler beim Laden:', error);
const widgetContainer = document.getElementById('widget-container');
widgetContainer.textContent = "Fehler: Inhalte konnten nicht geladen werden.";
});
})();
</script>
