diff --git a/calendar/1WeihnachtsfeiertagKalenderbild.jpg b/calendar/1WeihnachtsfeiertagKalenderbild.jpg new file mode 100644 index 0000000..620ab13 Binary files /dev/null and b/calendar/1WeihnachtsfeiertagKalenderbild.jpg differ diff --git a/calendar/2WeihnachtsfeiertagKalenderbild.jpg b/calendar/2WeihnachtsfeiertagKalenderbild.jpg new file mode 100644 index 0000000..9831d46 Binary files /dev/null and b/calendar/2WeihnachtsfeiertagKalenderbild.jpg differ diff --git a/calendar/AugsburgerFriedenKalenderbild.jpg b/calendar/AugsburgerFriedenKalenderbild.jpg new file mode 100644 index 0000000..16303d5 Binary files /dev/null and b/calendar/AugsburgerFriedenKalenderbild.jpg differ diff --git a/calendar/BussBettagKalenderbild.jpg b/calendar/BussBettagKalenderbild.jpg new file mode 100644 index 0000000..b98ef61 Binary files /dev/null and b/calendar/BussBettagKalenderbild.jpg differ diff --git a/calendar/DeutscheEinheitKalenderbild.jpg b/calendar/DeutscheEinheitKalenderbild.jpg new file mode 100644 index 0000000..3ec9531 Binary files /dev/null and b/calendar/DeutscheEinheitKalenderbild.jpg differ diff --git a/calendar/FrauentagKalenderbild.jpg b/calendar/FrauentagKalenderbild.jpg new file mode 100644 index 0000000..463bc82 Binary files /dev/null and b/calendar/FrauentagKalenderbild.jpg differ diff --git a/calendar/FronleichnamKalenderbild.jpg b/calendar/FronleichnamKalenderbild.jpg new file mode 100644 index 0000000..caafe6b Binary files /dev/null and b/calendar/FronleichnamKalenderbild.jpg differ diff --git a/calendar/HDKKalenderbild.jpg b/calendar/HDKKalenderbild.jpg new file mode 100644 index 0000000..f18997a Binary files /dev/null and b/calendar/HDKKalenderbild.jpg differ diff --git a/calendar/KalenderbildAllerheiligen.jpg b/calendar/KalenderbildAllerheiligen.jpg new file mode 100644 index 0000000..31b7453 Binary files /dev/null and b/calendar/KalenderbildAllerheiligen.jpg differ diff --git a/calendar/KalenderbildHimmelfahrt.jpg b/calendar/KalenderbildHimmelfahrt.jpg new file mode 100644 index 0000000..0e80006 Binary files /dev/null and b/calendar/KalenderbildHimmelfahrt.jpg differ diff --git a/calendar/KalenderbildMariaHimmelfahrt.jpg b/calendar/KalenderbildMariaHimmelfahrt.jpg new file mode 100644 index 0000000..eefb9b2 Binary files /dev/null and b/calendar/KalenderbildMariaHimmelfahrt.jpg differ diff --git a/calendar/KalenderbildOstermontag.jpg b/calendar/KalenderbildOstermontag.jpg new file mode 100644 index 0000000..b711caf Binary files /dev/null and b/calendar/KalenderbildOstermontag.jpg differ diff --git a/calendar/KarfreitagKalenderbild.jpg b/calendar/KarfreitagKalenderbild.jpg new file mode 100644 index 0000000..7c341c2 Binary files /dev/null and b/calendar/KarfreitagKalenderbild.jpg differ diff --git a/calendar/NeujahrKalenderbild.jpg b/calendar/NeujahrKalenderbild.jpg new file mode 100644 index 0000000..495c3e8 Binary files /dev/null and b/calendar/NeujahrKalenderbild.jpg differ diff --git a/calendar/OstersonntagKalenderbild.jpg b/calendar/OstersonntagKalenderbild.jpg new file mode 100644 index 0000000..d19dc49 Binary files /dev/null and b/calendar/OstersonntagKalenderbild.jpg differ diff --git a/calendar/PfingstmontagKalenderbild.jpg b/calendar/PfingstmontagKalenderbild.jpg new file mode 100644 index 0000000..595214d Binary files /dev/null and b/calendar/PfingstmontagKalenderbild.jpg differ diff --git a/calendar/PfingstsonntagKalenderbild.jpg b/calendar/PfingstsonntagKalenderbild.jpg new file mode 100644 index 0000000..6703307 Binary files /dev/null and b/calendar/PfingstsonntagKalenderbild.jpg differ diff --git a/calendar/ReformationstagKalenderbild.jpg b/calendar/ReformationstagKalenderbild.jpg new file mode 100644 index 0000000..a81fc38 Binary files /dev/null and b/calendar/ReformationstagKalenderbild.jpg differ diff --git a/calendar/TagderArbeitKalenderbild.jpg b/calendar/TagderArbeitKalenderbild.jpg new file mode 100644 index 0000000..e138c1f Binary files /dev/null and b/calendar/TagderArbeitKalenderbild.jpg differ diff --git a/calendar/WeltkindertagKalenderbild.jpg b/calendar/WeltkindertagKalenderbild.jpg new file mode 100644 index 0000000..6adb029 Binary files /dev/null and b/calendar/WeltkindertagKalenderbild.jpg differ diff --git a/calendar/WeltkriegKalenderbild.jpg b/calendar/WeltkriegKalenderbild.jpg new file mode 100644 index 0000000..d7d8e6d Binary files /dev/null and b/calendar/WeltkriegKalenderbild.jpg differ diff --git a/calendar/events.json b/calendar/events.json new file mode 100644 index 0000000..32469ff --- /dev/null +++ b/calendar/events.json @@ -0,0 +1,359 @@ +[ + { + "date": "2026-01-01", + "events": [ + { + "time": "", + "image": "calendar/NeujahrKalenderbild.jpg", + "texts": [ + "Neujahr", + "01.01.2026", + "bundesweit" + ], + "link": "https://de.wikipedia.org/wiki/Neujahr", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-01-06", + "events": [ + { + "time": "", + "image": "calendar/HDKKalenderbild.jpg", + "texts": [ + "Heilige Drei K\u00f6nige", + "06.01.2026", + "Baden-W\u00fcrttemberg, Bayern, Sachsen-Anhalt" + ], + "link": "https://de.wikipedia.org/wiki/Heilige_Drei_K%C3%B6nige", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-03-08", + "events": [ + { + "time": "", + "image": "calendar/FrauentagKalenderbild.jpg", + "texts": [ + "Internationaler Frauentag", + "08.03.2026", + "Berlin, Mecklenburg-Vorpommern" + ], + "link": "https://de.wikipedia.org/wiki/Internationaler_Frauentag", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-04-18", + "events": [ + { + "time": "", + "image": "calendar/KarfreitagKalenderbild.jpg", + "texts": [ + "Karfreitag", + "18.04.2026", + "bundesweit" + ], + "link": "https://de.wikipedia.org/wiki/Karfreitag", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-04-20", + "events": [ + { + "time": "", + "image": "calendar/OstersonntagKalenderbild.jpg", + "texts": [ + "Ostersonntag", + "20.04.2026", + "Brandenburg (Einzig das Land Brandenburg behandelt den Ostersonntag explizit als gesetzlichen Feiertag.)" + ], + "link": "https://de.wikipedia.org/wiki/Ostersonntag", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-04-21", + "events": [ + { + "time": "", + "image": "calendar/KalenderbildOstermontag.jpg", + "texts": [ + "Ostermontag", + "21.04.2026", + "bundesweit" + ], + "link": "https://de.wikipedia.org/wiki/Ostermontag", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-05-01", + "events": [ + { + "time": "", + "image": "calendar/TagderArbeitKalenderbild.jpg", + "texts": [ + "Tag der Arbeit", + "01.05.2026", + "bundesweit" + ], + "link": "https://de.wikipedia.org/wiki/Tag_der_Arbeit", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-05-08", + "events": [ + { + "time": "", + "image": "calendar/WeltkriegKalenderbild.jpg", + "texts": [ + "Jahrestag der Befreiung vom Nationalsozialismus und Ende des Zweiten Weltkriegs", + "08.05.2026", + "Berlin (nur 2026)" + ], + "link": "https://de.wikipedia.org/wiki/Ende_des_Zweiten_Weltkriegs", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-05-29", + "events": [ + { + "time": "", + "image": "calendar/KalenderbildHimmelfahrt.jpg", + "texts": [ + "Christi Himmelfahrt", + "29.05.2026", + "bundesweit" + ], + "link": "https://de.wikipedia.org/wiki/Christi_Himmelfahrt", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-06-08", + "events": [ + { + "time": "", + "image": "calendar/PfingstsonntagKalenderbild.jpg", + "texts": [ + "Pfingstsonntag", + "08.06.2026", + "Brandenburg (Einzig das Land Brandenburg behandelt den Pfingstsonntag explizit als gesetzlichen Feiertag.)" + ], + "link": "https://de.wikipedia.org/wiki/Pfingstsonntag", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-06-09", + "events": [ + { + "time": "", + "image": "calendar/PfingstmontagKalenderbild.jpg", + "texts": [ + "Pfingstmontag", + "09.06.2026", + "bundesweit" + ], + "link": "https://de.wikipedia.org/wiki/Pfingstmontag", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-06-19", + "events": [ + { + "time": "", + "image": "calendar/FronleichnamKalenderbild.jpg", + "texts": [ + "Fronleichnam", + "19.06.2026", + "Baden-W\u00fcrttemberg, Bayern, Hessen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, In Sachsen nur teilweise.*, In Th\u00fcringen nur teilweise.**" + ], + "link": "https://de.wikipedia.org/wiki/Fronleichnam", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-08-08", + "events": [ + { + "time": "", + "image": "calendar/AugsburgerFriedenKalenderbild.jpg", + "texts": [ + "Augsburger Friedensfest", + "08.08.2026", + "Nur im Stadtgebiet von Augsburg (nicht jedoch im angrenzenden Umland)" + ], + "link": "https://de.wikipedia.org/wiki/Augsburger_Friedensfest", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-08-15", + "events": [ + { + "time": "", + "image": "calendar/KalenderbildMariaHimmelfahrt.jpg", + "texts": [ + "Mari\u00e4 Himmelfahrt", + "15.08.2026", + "Saarland, In Bayern nur teilweise.***" + ], + "link": "https://de.wikipedia.org/wiki/Mari%C3%A4_Himmelfahrt", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-09-20", + "events": [ + { + "time": "", + "image": "calendar/WeltkindertagKalenderbild.jpg", + "texts": [ + "Weltkindertag", + "20.09.2026", + "Th\u00fcringen" + ], + "link": "https://de.wikipedia.org/wiki/Weltkindertag", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-10-03", + "events": [ + { + "time": "", + "image": "calendar/DeutscheEinheitKalenderbild.jpg", + "texts": [ + "Tag der deutschen Einheit", + "03.10.2026", + "bundesweit" + ], + "link": "https://de.wikipedia.org/wiki/Tag_der_deutschen_Einheit", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-10-31", + "events": [ + { + "time": "", + "image": "calendar/ReformationstagKalenderbild.jpg", + "texts": [ + "Reformationstag", + "31.10.2026", + "Brandenburg, Bremen, Hamburg, Mecklenburg-Vorpommern, Niedersachsen, Sachsen, Sachsen-Anhalt, Schleswig-Holstein, Th\u00fcringen" + ], + "link": "https://de.wikipedia.org/wiki/Reformationstag", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-11-01", + "events": [ + { + "time": "", + "image": "calendar/KalenderbildAllerheiligen.jpg", + "texts": [ + "Allerheiligen", + "01.11.2026", + "Baden-W\u00fcrttemberg, Bayern, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland" + ], + "link": "https://de.wikipedia.org/wiki/Allerheiligen", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-11-19", + "events": [ + { + "time": "", + "image": "calendar/BussBettagKalenderbild.jpg", + "texts": [ + "Bu\u00df- und Bettag", + "19.11.2026", + "Sachsen" + ], + "link": "https://de.wikipedia.org/wiki/Bu%C3%9F-_und_Bettag", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-12-25", + "events": [ + { + "time": "", + "image": "calendar/1WeihnachtsfeiertagKalenderbild.jpg", + "texts": [ + "1. Weihnachtsfeiertag", + "25.12.2026", + "bundesweit" + ], + "link": "https://de.wikipedia.org/wiki/Weihnachtsfeiertag", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + }, + { + "date": "2026-12-26", + "events": [ + { + "time": "", + "image": "calendar/2WeihnachtsfeiertagKalenderbild.jpg", + "texts": [ + "2. Weihnachtsfeiertag", + "26.12.2026", + "bundesweit" + ], + "link": "https://de.wikipedia.org/wiki/Weihnachtsfeiertag", + "color": "#FFCC99", + "txtcolor": "#FFFFFF" + } + ] + } +] \ No newline at end of file diff --git a/calendar/trans.png b/calendar/trans.png new file mode 100644 index 0000000..b691ed8 Binary files /dev/null and b/calendar/trans.png differ diff --git a/eventcalendar.php b/eventcalendar.php index 3683e8b..26c2f01 100644 --- a/eventcalendar.php +++ b/eventcalendar.php @@ -77,7 +77,7 @@ /* Event-Container am Ende der Zelle */ .event { font-size: 0.8em; - background-color: rgba(255, 255, 255, 0.7); /* Transparenter Hintergrund */ + background-color: rgba(0, 0, 0, 0.7); /* Weniger Transparenz, schwarzer Hintergrund */ padding: 2px 4px; border-radius: 3px; margin-top: auto; /* Nach unten schieben */ @@ -85,6 +85,11 @@ z-index: 1; } + /* Event-Box mit Bild als Hintergrund */ + .event.has-bgimg .event-content { + background: rgba(0, 0, 0, 0.7); /* Weniger Transparenz, schwarzer Hintergrund */ + } + /* Event-Textzeile */ .event-text { margin: 2px 0; @@ -120,6 +125,34 @@ display: block; margin-top: auto; } + + /* Event-Bild als Hintergrundbild der Zelle */ + .event.has-bgimg { + background-size: cover !important; + background-position: center !important; + min-height: 120px; + min-width: 120px; + position: relative; + } + /* .event.has-bgimg .event-content { + position: relative; + z-index: 2; + background: rgba(0, 0, 0, 0.5); + border-radius: 6px; + padding: 4px; + margin: 0; + } */ + .event.has-bgimg a.event-img-link, .event.has-bgimg img.event-img { + display: none !important; + } + + /* Abstand zwischen Tageseinträgen (Events) */ + .events-container .event { + margin-bottom: 4px; + } + .events-container .event:last-child { + margin-bottom: 0; + } @@ -214,57 +247,86 @@ for (let day = 1; day <= daysInMonth; day++) { const dateCell = document.createElement('div'); dateCell.classList.add('date'); - + // Tag-Nummer hinzufügen const dateNumber = document.createElement('div'); dateNumber.classList.add('date-number'); dateNumber.textContent = day; dateCell.appendChild(dateNumber); - // Event für diesen Tag suchen - const event = events.find(e => - new Date(e.date).toDateString() === new Date(year, month, day).toDateString() - ); - - // Wenn ein Event existiert, Details hinzufügen - if (event) { - // Hintergrundbild falls vorhanden - if (event.image) { - const imageContainer = document.createElement('div'); - imageContainer.classList.add('image-container'); - const img = document.createElement('img'); - img.src = event.image; - imageContainer.appendChild(img); - dateCell.appendChild(imageContainer); - } - - // Hintergrundfarbe falls definiert - if (event.color) { - dateCell.style.backgroundColor = event.color; - } - - // Textfarbe falls definiert - if (event.txtcolor) { - dateCell.style.color = event.txtcolor; - } - - // Event-Texte hinzufügen (erste Zeile fett) - event.texts.forEach((text, index) => { - const eventTextElement = document.createElement('div'); - eventTextElement.classList.add('event-text'); - if (index === 0) { - eventTextElement.classList.add('event-text-bold'); + // Alle Events für diesen Tag suchen (verschachteltes Format) + const dateStr = new Date(year, month, day).toISOString().slice(0, 10); + const dayEntry = events.find(e => e.date === dateStr); + if (dayEntry && Array.isArray(dayEntry.events)) { + // Container für alle Events dieses Tages + const eventsContainer = document.createElement('div'); + eventsContainer.classList.add('events-container'); + dayEntry.events.sort((a, b) => (a.time || '').localeCompare(b.time || '')); + dayEntry.events.forEach(event => { + // Einzelnes Event-Element + const eventBlock = document.createElement('div'); + eventBlock.classList.add('event'); + // Bild als Hintergrund, falls vorhanden + if (event.image) { + eventBlock.classList.add('has-bgimg'); + eventBlock.style.backgroundImage = `url('${event.image}')`; } - eventTextElement.textContent = text; - dateCell.appendChild(eventTextElement); + // Container für Event-Inhalt (Text, Uhrzeit, Link) + const eventContent = document.createElement('div'); + eventContent.classList.add('event-content'); + // Uhrzeit + if (event.time) { + const timeElement = document.createElement('span'); + timeElement.classList.add('event-text', 'event-time'); + timeElement.style.fontWeight = 'bold'; + timeElement.textContent = event.time + ' '; + eventContent.appendChild(timeElement); + } + // Event-Texte (erste Zeile fett) + if (event.texts) { + event.texts.forEach((text, index) => { + const eventTextElement = document.createElement('span'); + eventTextElement.classList.add('event-text'); + if (index === 0) eventTextElement.classList.add('event-text-bold'); + eventTextElement.textContent = text + ' '; + eventContent.appendChild(eventTextElement); + }); + } + // Link + if (event.link) { + const lastWord = event.link.split('/').pop(); + const linkElement = document.createElement('a'); + linkElement.href = event.link; + linkElement.target = '_blank'; + linkElement.classList.add('event-link'); + linkElement.textContent = lastWord; + eventContent.appendChild(linkElement); + } + // Bild als Link (nur für Klick, nicht sichtbar, aber für Originalbild im neuen Tab) + if (event.image) { + const link = document.createElement('a'); + link.href = event.image; + link.target = '_blank'; + link.rel = 'noopener noreferrer'; + link.classList.add('event-img-link'); + // Unsichtbares Bild für Accessibility (optional) + const img = document.createElement('img'); + img.src = event.image; + img.classList.add('event-img'); + img.alt = 'Event Bild'; + img.style.width = '1px'; + img.style.height = '1px'; + img.style.opacity = '0'; + link.appendChild(img); + eventContent.appendChild(link); + } + // Farben (optional) + if (event.color) eventBlock.style.backgroundColor = event.color; + if (event.txtcolor) eventBlock.style.color = event.txtcolor; + eventBlock.appendChild(eventContent); + eventsContainer.appendChild(eventBlock); }); - - // Event-Link hinzufügen (letzter Teil der URL als Text) - const eventElement = document.createElement('div'); - eventElement.classList.add('event'); - const lastWord = event.link.split('/').pop(); // Letzten URL-Teil extrahieren - eventElement.innerHTML = `${lastWord}`; - dateCell.appendChild(eventElement); + dateCell.appendChild(eventsContainer); } // Fertige Zelle zum Kalender hinzufügen diff --git a/eventedit.php b/eventedit.php index d5484b8..026bc97 100644 --- a/eventedit.php +++ b/eventedit.php @@ -1,4 +1,3 @@ - alert('Events erfolgreich gespeichert!');"; } // Events speichern - if (file_put_contents($filepath, json_encode($events, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)) === false) { + if (file_put_contents($filepath, json_encode($eventsByDate, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)) === false) { echo ""; } } @@ -121,6 +129,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['events'])) { +
+ + +
@@ -159,18 +171,40 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['events'])) {