Add havelseite
This commit is contained in:
3
generator/templates/banner.html
Normal file
3
generator/templates/banner.html
Normal file
@ -0,0 +1,3 @@
|
||||
<section class="banner">
|
||||
{{ content | safe }}
|
||||
</section>
|
||||
75
generator/templates/base.html
Normal file
75
generator/templates/base.html
Normal file
@ -0,0 +1,75 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ settings.language | default("de") }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>{{ settings.title }}</title>
|
||||
<style>
|
||||
:root {
|
||||
--color-background: {{ settings.colors.background | e }};
|
||||
--color-text: {{ settings.colors.text | e }};
|
||||
--color-link: {{ settings.colors.link | e }};
|
||||
--color-link-hover: {{ settings.colors.link_hover | e }};
|
||||
--color-surface: {{ settings.colors.surface | e }};
|
||||
--color-surface-alt: {{ settings.colors.surface_alt | e }};
|
||||
--color-muted-text: {{ settings.colors.muted_text | e }};
|
||||
--color-border: {{ settings.colors.border | e }};
|
||||
--color-header-background: {{ settings.colors.header_background | e }};
|
||||
--color-header-hover: {{ settings.colors.header_hover | e }};
|
||||
--color-header-text: {{ settings.colors.header_text | e }};
|
||||
--color-footer-background: {{ settings.colors.footer_background | e }};
|
||||
--color-footer-text: {{ settings.colors.footer_text | e }};
|
||||
--color-hero-background: {{ settings.colors.hero_background | e }};
|
||||
--color-accent: {{ settings.colors.accent | e }};
|
||||
--font-body: {{ settings.typography.body | default("system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif") | e }};
|
||||
--font-heading: {{ settings.typography.heading | default(settings.typography.body | default("system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif")) | e }};
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="{{ static_path }}">
|
||||
</head>
|
||||
<body class="nav-height-{{ settings.navigation.height | default("medium") }} nav-position-{{ settings.navigation.position | default("sticky") }} nav-align-{{ settings.navigation.align | default("center") }} mobile-menu-{{ settings.mobile_menu.align | default("auto") }} mobile-submenus-{{ settings.mobile_menu.submenus | default("closed") }} font-{{ settings.typography.font | default("system") }} font-size-{{ settings.typography.size | default("medium") }} icons-{{ settings.icons.style | default("round") }} images-{{ "rounded" if settings.gallery.rounded | default(true) else "square" }}{% if logo.enabled %} logo-placement-{{ "header" if logo.header else "footer" }} logo-align-{{ logo.align | default("left") }}{% endif %}">
|
||||
<header class="site-header">
|
||||
<div class="nav-wrap">
|
||||
{% if logo.enabled and logo.header %}
|
||||
<a class="site-logo site-logo-nav" href="{{ navigation[0].url if navigation }}">
|
||||
{% if logo.url %}
|
||||
<img src="{{ logo.url }}" alt="{{ logo.alt }}">
|
||||
{% else %}
|
||||
<span>{{ logo.text }}</span>
|
||||
{% endif %}
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
<input type="checkbox" id="nav-toggle" class="nav-toggle">
|
||||
<label for="nav-toggle" class="burger">☰</label>
|
||||
|
||||
<nav class="main-nav">
|
||||
{% for item in navigation %}
|
||||
{% if item.type == "link" %}
|
||||
<div class="nav-item">
|
||||
<a href="{{ item.url }}">{{ item.title }}</a>
|
||||
</div>
|
||||
{% elif item.type == "dropdown" %}
|
||||
<div class="nav-item dropdown">
|
||||
<button class="dropdown-label" type="button" aria-expanded="{{ "true" if settings.mobile_menu.submenus | default("open") == "open" else "false" }}">{{ item.title }}</button>
|
||||
|
||||
<div class="submenu">
|
||||
{% for child in item.children %}
|
||||
<a href="{{ child.url }}">{{ child.title }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="site-main">
|
||||
{{ body | safe }}
|
||||
</main>
|
||||
|
||||
{{ footer | safe }}
|
||||
|
||||
<script type="module" src="{{ static_path | replace('style.css', 'external-content.js') }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
11
generator/templates/cards.html
Normal file
11
generator/templates/cards.html
Normal file
@ -0,0 +1,11 @@
|
||||
<section class="cards-section cards-layout-{{ layout }}">
|
||||
{{ title | safe }}
|
||||
|
||||
<div class="cards">
|
||||
{% for card in cards %}
|
||||
<article class="card">
|
||||
{{ card | safe }}
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
5
generator/templates/contact.html
Normal file
5
generator/templates/contact.html
Normal file
@ -0,0 +1,5 @@
|
||||
<section class="contact-section">
|
||||
<div class="contact-box">
|
||||
{{ content | safe }}
|
||||
</div>
|
||||
</section>
|
||||
13
generator/templates/downloads.html
Normal file
13
generator/templates/downloads.html
Normal file
@ -0,0 +1,13 @@
|
||||
<section class="downloads-section">
|
||||
<div class="downloads-title">
|
||||
{{ title | safe }}
|
||||
</div>
|
||||
|
||||
<div class="download-list">
|
||||
{% for link in links %}
|
||||
<a class="download-item" href="{{ link.href }}">
|
||||
<span>{{ link.label }}</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
22
generator/templates/event.html
Normal file
22
generator/templates/event.html
Normal file
@ -0,0 +1,22 @@
|
||||
<section class="event-section">
|
||||
<article class="event-box{% if image %} event-has-image{% endif %}">
|
||||
<div class="event-content">
|
||||
{{ content | safe }}
|
||||
</div>
|
||||
|
||||
<dl class="event-facts">
|
||||
{% for key, value in values.items() %}
|
||||
<div>
|
||||
<dt>{{ key.replace("_", " ").title() }}</dt>
|
||||
<dd>{{ value | safe }}</dd>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</dl>
|
||||
|
||||
{% if image %}
|
||||
<figure class="event-image">
|
||||
<img src="{{ image.src }}" alt="{{ image.alt }}">
|
||||
</figure>
|
||||
{% endif %}
|
||||
</article>
|
||||
</section>
|
||||
28
generator/templates/events.html
Normal file
28
generator/templates/events.html
Normal file
@ -0,0 +1,28 @@
|
||||
<section class="event-section">
|
||||
{{ title | safe }}
|
||||
|
||||
<div class="event-list">
|
||||
{% for event in events %}
|
||||
<article class="event-box{% if event.image %} event-has-image{% endif %}">
|
||||
<div class="event-content">
|
||||
{{ event.content | safe }}
|
||||
</div>
|
||||
|
||||
<dl class="event-facts">
|
||||
{% for key, value in event.facts.items() %}
|
||||
<div>
|
||||
<dt>{{ key.replace("_", " ").title() }}</dt>
|
||||
<dd>{{ value | safe }}</dd>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</dl>
|
||||
|
||||
{% if event.image %}
|
||||
<figure class="event-image">
|
||||
<img src="{{ event.image.src }}" alt="{{ event.image.alt }}">
|
||||
</figure>
|
||||
{% endif %}
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
11
generator/templates/faq.html
Normal file
11
generator/templates/faq.html
Normal file
@ -0,0 +1,11 @@
|
||||
<section class="faq">
|
||||
<div class="faq-title">
|
||||
{{ title | safe }}
|
||||
</div>
|
||||
|
||||
{% for item in items %}
|
||||
<article class="faq-item">
|
||||
{{ item | safe }}
|
||||
</article>
|
||||
{% endfor %}
|
||||
</section>
|
||||
44
generator/templates/footer.html
Normal file
44
generator/templates/footer.html
Normal file
@ -0,0 +1,44 @@
|
||||
<footer class="site-footer">
|
||||
<div class="footer-inner">
|
||||
<div class="footer-brand">
|
||||
{{ title | safe }}
|
||||
</div>
|
||||
|
||||
<div class="footer-grid">
|
||||
{% if logo and logo.enabled and logo.footer %}
|
||||
<div class="footer-column footer-logo-column">
|
||||
<a class="site-logo footer-logo" href="{{ logo.home_url if logo.home_url }}">
|
||||
{% if logo.url %}
|
||||
<img src="{{ logo.url }}" alt="{{ logo.alt }}">
|
||||
{% else %}
|
||||
<span>{{ logo.text }}</span>
|
||||
{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% for column in columns %}
|
||||
<div class="footer-column">
|
||||
{{ column | safe }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
{% if social_links %}
|
||||
<div class="footer-column footer-social-column">
|
||||
<h2>Social</h2>
|
||||
<div class="social-links">
|
||||
{% for social in social_links %}
|
||||
<a href="{{ social.url }}" aria-label="{{ social.label }}">
|
||||
<span>{{ social.icon }}</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<p class="footer-credit">
|
||||
Erstellt mit Havelseiten von Binnenrevier
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
42
generator/templates/gallery.html
Normal file
42
generator/templates/gallery.html
Normal file
@ -0,0 +1,42 @@
|
||||
<section class="gallery-section gallery-layout-{{ gallery.layout | default("square") }}">
|
||||
<div class="gallery-title">
|
||||
{{ title | safe }}
|
||||
</div>
|
||||
|
||||
{% if needs_external_consent %}
|
||||
<div class="gallery-placeholder external-placeholder">
|
||||
<button
|
||||
type="button"
|
||||
class="gallery-load-button"
|
||||
>
|
||||
Externe Galerie-Bilder laden
|
||||
</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="gallery-grid"{% if needs_external_consent %} hidden{% endif %}>
|
||||
{% for image in images %}
|
||||
<a
|
||||
href="{{ image.src }}"
|
||||
class="gallery-link"
|
||||
data-pswp-width="{{ image.width }}"
|
||||
data-pswp-height="{{ image.height }}"
|
||||
aria-label="Bild öffnen"
|
||||
>
|
||||
<figure class="gallery-item">
|
||||
<img
|
||||
src="{{ image.src }}"
|
||||
alt="{{ image.alt }}"
|
||||
loading="lazy"
|
||||
>
|
||||
|
||||
{% if image.alt and gallery.captions | default(true) %}
|
||||
<figcaption>
|
||||
{{ image.alt }}
|
||||
</figcaption>
|
||||
{% endif %}
|
||||
</figure>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
44
generator/templates/hero.html
Normal file
44
generator/templates/hero.html
Normal file
@ -0,0 +1,44 @@
|
||||
{% set hero_classes = "hero" %}
|
||||
{% if hero %}
|
||||
{% set hero_classes = hero_classes ~ " hero-has-media hero-" ~ hero.type %}
|
||||
{% endif %}
|
||||
|
||||
<section
|
||||
class="{{ hero_classes }}"
|
||||
{% if hero and hero.style %}style="{{ hero.style | e }}"{% endif %}
|
||||
>
|
||||
{% if hero and hero.type == "image" %}
|
||||
<img class="hero-media" src="{{ hero.src | e }}" alt="">
|
||||
{% elif hero and hero.type == "video" %}
|
||||
<video class="hero-media" src="{{ hero.src | e }}" autoplay muted loop playsinline></video>
|
||||
{% elif hero and hero.type == "youtube" and external_content_enabled %}
|
||||
<iframe
|
||||
class="hero-media hero-youtube-frame"
|
||||
src="{{ hero.src | e }}"
|
||||
title="YouTube-Hero"
|
||||
allow="autoplay; encrypted-media; picture-in-picture"
|
||||
allowfullscreen
|
||||
></iframe>
|
||||
{% elif hero and hero.type == "youtube" %}
|
||||
<div class="hero-media external-placeholder">
|
||||
<div>
|
||||
<strong>Externes YouTube-Video</strong>
|
||||
<p>Dieses Video wird aus Datenschutzgruenden nicht automatisch geladen.</p>
|
||||
<button
|
||||
class="external-load-button"
|
||||
type="button"
|
||||
data-embed-src="{{ hero.src | e }}"
|
||||
data-embed-class="hero-media hero-youtube-frame"
|
||||
data-embed-title="YouTube-Hero"
|
||||
data-embed-allow="autoplay; encrypted-media; picture-in-picture"
|
||||
>
|
||||
Video laden
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="hero-content">
|
||||
{{ content | safe }}
|
||||
</div>
|
||||
</section>
|
||||
11
generator/templates/image-text.html
Normal file
11
generator/templates/image-text.html
Normal file
@ -0,0 +1,11 @@
|
||||
<section class="image-text">
|
||||
{% if image %}
|
||||
<div class="image-text-image">
|
||||
<img src="{{ image.src }}" alt="{{ image.alt }}">
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="image-text-content">
|
||||
{{ content | safe }}
|
||||
</div>
|
||||
</section>
|
||||
26
generator/templates/location.html
Normal file
26
generator/templates/location.html
Normal file
@ -0,0 +1,26 @@
|
||||
<section class="location-section">
|
||||
<div class="location-content">
|
||||
{{ content | safe }}
|
||||
|
||||
{% if address %}
|
||||
<p class="location-address">{{ address }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if address %}
|
||||
<div class="location-placeholder">
|
||||
<strong>Externe Karte</strong>
|
||||
<p>Die Karte wird aus Datenschutzgruenden nicht automatisch geladen.</p>
|
||||
<button
|
||||
class="external-load-button"
|
||||
type="button"
|
||||
data-map-address="{{ address | e }}"
|
||||
data-embed-class="location-map"
|
||||
data-embed-title="Karte"
|
||||
{% if external_content_enabled %}data-auto-load="true"{% endif %}
|
||||
>
|
||||
Karte laden
|
||||
</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
</section>
|
||||
13
generator/templates/people.html
Normal file
13
generator/templates/people.html
Normal file
@ -0,0 +1,13 @@
|
||||
<section class="people-section">
|
||||
<div class="people-title">
|
||||
{{ title | safe }}
|
||||
</div>
|
||||
|
||||
<div class="people-grid">
|
||||
{% for person in people %}
|
||||
<article class="person-card">
|
||||
{{ person | safe }}
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
5
generator/templates/person.html
Normal file
5
generator/templates/person.html
Normal file
@ -0,0 +1,5 @@
|
||||
<section class="person-section">
|
||||
<article class="person-card person-card-single">
|
||||
{{ content | safe }}
|
||||
</article>
|
||||
</section>
|
||||
5
generator/templates/quote.html
Normal file
5
generator/templates/quote.html
Normal file
@ -0,0 +1,5 @@
|
||||
<section class="quote-section">
|
||||
<div class="quote-box">
|
||||
{{ content | safe }}
|
||||
</div>
|
||||
</section>
|
||||
17
generator/templates/sponsors.html
Normal file
17
generator/templates/sponsors.html
Normal file
@ -0,0 +1,17 @@
|
||||
<section class="sponsors-section">
|
||||
<div class="sponsors-title">
|
||||
{{ title | safe }}
|
||||
</div>
|
||||
|
||||
<div class="sponsor-grid">
|
||||
{% for sponsor in sponsors %}
|
||||
<figure class="sponsor-logo">
|
||||
<img src="{{ sponsor.src }}" alt="{{ sponsor.alt }}">
|
||||
|
||||
{% if sponsor.alt %}
|
||||
<figcaption>{{ sponsor.alt }}</figcaption>
|
||||
{% endif %}
|
||||
</figure>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
3
generator/templates/text.html
Normal file
3
generator/templates/text.html
Normal file
@ -0,0 +1,3 @@
|
||||
<section class="text-section">
|
||||
{{ content | safe }}
|
||||
</section>
|
||||
11
generator/templates/timeline.html
Normal file
11
generator/templates/timeline.html
Normal file
@ -0,0 +1,11 @@
|
||||
<section class="timeline">
|
||||
<div class="timeline-title">
|
||||
{{ title | safe }}
|
||||
</div>
|
||||
|
||||
{% for item in items %}
|
||||
<article class="timeline-item">
|
||||
{{ item | safe }}
|
||||
</article>
|
||||
{% endfor %}
|
||||
</section>
|
||||
13
generator/templates/two-columns.html
Normal file
13
generator/templates/two-columns.html
Normal file
@ -0,0 +1,13 @@
|
||||
<section class="two-columns">
|
||||
<div class="two-columns-title">
|
||||
{{ title | safe }}
|
||||
</div>
|
||||
|
||||
<div class="column">
|
||||
{{ left | safe }}
|
||||
</div>
|
||||
|
||||
<div class="column">
|
||||
{{ right | safe }}
|
||||
</div>
|
||||
</section>
|
||||
Reference in New Issue
Block a user