Author SHA1 Message Date
greggy 4ca48a7445 Merge pull request 'fix: JavaScript doppelte Funktionen & toter Code (#39)' (#40) from feature/39-js-duplicate-functions-fix into main
Reviewed-on: #40
2026-05-19 15:13:29 +02:00
greggy 6b13b95102 fix: remove duplicate openLightbox/closeLightbox and dead code (#39)
Deploy Feature Branch to Test / deploy (push) Successful in 26s
- Consolidate openLightbox() and closeLightbox() to single vanilla JS definition
- Remove orphaned keyboard handler block that caused ReferenceError
- Refs: #39
2026-05-19 12:41:58 +00:00
greggy 9a8776412e Merge pull request 'Fix #36: Favicon erstellen und einbinden' (#37) from feature/issue-36-favicon into main 2026-05-15 10:45:31 +02:00
greggy 127faaffaf feat(favicon): use Außenansicht as favicon base
Deploy Feature Branch to Test / deploy (push) Successful in 24s
2026-05-15 08:43:47 +00:00
greggy c6eda36750 feat(favicon): add favicon and browser icons for Issue #36
Deploy Feature Branch to Test / deploy (push) Successful in 37s
- favicon.ico (16x16 + 32x32)
- favicon-32x32.png, favicon-16x16.png
- apple-touch-icon.png (180x180)
- site.webmanifest
- Linked in index.php head

Resolves #36
2026-05-15 08:40:16 +00:00
greggy 336fbc12a6 Merge pull request 'Fix #18: Accessibility – ARIA-Labels, Focus-Management, Skip-Navigation' (#24) from feature/issue-18-accessibility into main 2026-05-15 10:32:45 +02:00
7 changed files with 23 additions and 32 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

+10
View File
@@ -0,0 +1,10 @@
{
"name": "Haus Schleusingen",
"short_name": "HS",
"icons": [
{ "src": "/bilder/favicon/favicon-32x32.png", "sizes": "32x32", "type": "image/png" },
{ "src": "/bilder/favicon/favicon-16x16.png", "sizes": "16x16", "type": "image/png" }
],
"theme_color": "#1c1917",
"background_color": "#fafaf9"
}
+5
View File
@@ -126,6 +126,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<html lang="de"> <html lang="de">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/png" sizes="32x32" href="/bilder/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/bilder/favicon/favicon-16x16.png">
<link rel="icon" type="image/x-icon" href="/bilder/favicon/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/bilder/favicon/apple-touch-icon.png">
<link rel="manifest" href="/bilder/favicon/site.webmanifest">
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Einfamilienhaus mieten Schleusingen | 227 m², 6 Zimmer | 1.300 € Kaltmiete</title> <title>Einfamilienhaus mieten Schleusingen | 227 m², 6 Zimmer | 1.300 € Kaltmiete</title>
<meta name="description" content="Einfamilienhaus zur Langzeitmiete in Schleusingen: 227 m² Wohnfläche, 6 Zimmer, 3 Etagen mit Dachterrasse. Kaltmiete 1.300 €. Bahnhofstraße 10, 98553 Schleusingen. Ab sofort verfügbar." /> <meta name="description" content="Einfamilienhaus zur Langzeitmiete in Schleusingen: 227 m² Wohnfläche, 6 Zimmer, 3 Etagen mit Dachterrasse. Kaltmiete 1.300 €. Bahnhofstraße 10, 98553 Schleusingen. Ab sofort verfügbar." />
+8 -32
View File
@@ -81,10 +81,6 @@ document.addEventListener("DOMContentLoaded", function () {
this.click(); this.click();
} }
}); });
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
$(this).trigger("click");
}
}); });
// Lightbox track last focused element for focus return // Lightbox track last focused element for focus return
@@ -92,27 +88,26 @@ document.addEventListener("DOMContentLoaded", function () {
function openLightbox(src) { function openLightbox(src) {
lightboxTrigger = document.activeElement; lightboxTrigger = document.activeElement;
$("#lightboxImg").attr("src", src).attr("alt", ""); document.getElementById("lightboxImg").setAttribute("src", src);
$("#lightbox").addClass("open"); document.getElementById("lightboxImg").setAttribute("alt", "");
$("body").css("overflow", "hidden"); document.getElementById("lightbox").classList.add("open");
document.body.style.overflow = "hidden";
// Set focus to close button // Set focus to close button
setTimeout(function () { setTimeout(function () {
$("#lightboxClose").focus(); document.getElementById("lightboxClose").focus();
}, 50); }, 50);
} }
function closeLightbox() { function closeLightbox() {
$("#lightbox").removeClass("open"); document.getElementById("lightbox").classList.remove("open");
$("body").css("overflow", ""); document.body.style.overflow = "";
// Return focus to trigger // Return focus to trigger
if (lightboxTrigger) { if (lightboxTrigger) {
$(lightboxTrigger).focus(); lightboxTrigger.focus();
lightboxTrigger = null; lightboxTrigger = null;
} }
} }
// Lightbox gallery grid items
// Lightbox gallery grid items // Lightbox gallery grid items
document.querySelectorAll(".grid-item").forEach(function (item) { document.querySelectorAll(".grid-item").forEach(function (item) {
item.addEventListener("click", function () { item.addEventListener("click", function () {
@@ -139,26 +134,7 @@ document.addEventListener("DOMContentLoaded", function () {
}); });
}); });
function openLightbox(src) {
lightboxTrigger = document.activeElement;
document.getElementById("lightboxImg").setAttribute("src", src);
document.getElementById("lightbox").classList.add("open");
document.body.style.overflow = "hidden";
// Focus close button
setTimeout(function () {
document.getElementById("lightboxClose").focus();
}, 100);
}
function closeLightbox() {
document.getElementById("lightbox").classList.remove("open");
document.body.style.overflow = "";
// Return focus to trigger
if (lightboxTrigger) {
lightboxTrigger.focus();
lightboxTrigger = null;
}
}
document.getElementById("lightboxClose").addEventListener("click", closeLightbox); document.getElementById("lightboxClose").addEventListener("click", closeLightbox);
document.getElementById("lightbox").addEventListener("click", function (e) { document.getElementById("lightbox").addEventListener("click", function (e) {