From 1530d9dd5709136370f4e24a01060e862a6d0ef7 Mon Sep 17 00:00:00 2001 From: Jannik Menzel Date: Tue, 20 May 2025 18:20:07 +0200 Subject: [PATCH] added News RSS --- assets/css/main.css | 97 ++++++++++++++++++++++++++++++++- assets/js/main.js | 22 +++++++- layouts/_default/home.html | 6 ++ layouts/_partials/head.html | 1 + layouts/neuigkeiten/single.html | 8 +++ 5 files changed, 128 insertions(+), 6 deletions(-) create mode 100644 layouts/neuigkeiten/single.html diff --git a/assets/css/main.css b/assets/css/main.css index 7c163a5..674fa87 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -258,7 +258,7 @@ li .dropdown-item-mobile { .hero-card.left-1 a:hover, .hero-card.left-1 a:active { - color: var(--color-accent); + color: var(--color-link); } .hero-card.left-1 svg { @@ -271,7 +271,7 @@ li .dropdown-item-mobile { .hero-card.right-1 svg:hover, .hero-card.right-1 svg:active{ - color: var(--color-accent); + color: var(--color-link); } .left-1 { @@ -399,6 +399,7 @@ li .dropdown-item-mobile { } .btn-secondary:hover, .btn-secondary:active { + text-decoration: none !important; color: var(--color-primary-button-dark) !important; background-color: transparent !important; border-color: var(--color-primary-button-dark); @@ -460,6 +461,90 @@ footer { outline: none; } +/* ======================== + News + ======================== */ +.feed-section #feed { + margin: 2rem auto; + padding: 1rem; + display: flex; + flex-wrap: wrap; + gap: 2rem; + justify-content: center; +} + +.page { + max-width: 80%; + margin: 0 auto; +} + +.feed-heading { + font-size: 2.5rem; + margin-top: 0; + display: block; + width: max-content; + margin-left: auto; + margin-right: auto; + color: var(--color-text); + background-color: var(--color-accent); + border-radius: 8px; + padding: 5px 10px; + box-shadow: 0 4px 0 0 var(--color-text); +} + +.dark .feed-heading { + color: var(--color-text-dark); + box-shadow: 0 4px 0 0 var(--color-off); +} + +.feed-entry { + flex: 0 1 calc(50% - 2rem); + box-sizing: border-box; + background-color: var(--color-off); + border: 1px solid var(--color-text); + border-radius: 20px; + box-shadow: 0 4px 0 0 var(--color-text); + padding: 1.5rem; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.page .feed-entry { + margin-bottom: 2rem; +} + +.feed-content { + font-size: 1rem; + line-height: 1.6; + margin-bottom: 0.75rem; + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 4; + -webkit-box-orient: vertical; + text-overflow: ellipsis; +} + +.page .feed-content { + overflow: visible !important; + display: block !important; + -webkit-line-clamp: unset !important; + -webkit-box-orient: unset !important; + text-overflow: unset !important; + white-space: normal !important; +} + +.feed-content a { + color: var(--color-link); + text-decoration: none; + transition: color 0.3s; +} + +.feed-content a:hover { + color: var(--color-link); + text-decoration: underline; +} + /* ======================== 404 Error Page ======================== */ @@ -529,7 +614,7 @@ footer { padding: 0 !important; } - .ese-section .card-body { + .ese-section .card-body .page { max-width: 100%; } } @@ -557,4 +642,10 @@ footer { .hero-section p { font-size: 1.1rem; } +} + +@media (max-width: 768px) { + .feed-entry { + flex: 0 1 100%; + } } \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js index d4c5f59..54b2011 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -35,7 +35,7 @@ document.addEventListener("DOMContentLoaded", () => { // update on change const observer = new MutationObserver(updateBodyThemeAttr); - observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class"] }); + observer.observe(document.documentElement, {attributes: true, attributeFilter: ["class"]}); prefersDarkScheme.addEventListener("change", () => { updateBodyThemeAttr(); @@ -45,7 +45,7 @@ document.addEventListener("DOMContentLoaded", () => { /* ======================== Details Toggle ======================== */ -window.toggleDetails = function(element) { +window.toggleDetails = function (element) { element.classList.toggle('expanded'); const plusIcon = element.querySelector('.icon-plus'); @@ -55,4 +55,20 @@ window.toggleDetails = function(element) { plusIcon.style.display = isExpanded ? 'none' : 'inline'; minusIcon.style.display = isExpanded ? 'inline' : 'none'; -}; \ No newline at end of file +}; + +fetch('https://api.rss2json.com/v1/api.json?rss_url=https://toot.kif.rocks/@ifsr.rss') + .then(res => res.json()) + .then(data => { + const container = document.getElementById('feed'); + data.items.slice(0, 5).forEach(item => { + const cleanedContent = item.content.replace(/