chore: reformat and clean up PHP templates, snippets, and configurations
Standardized code formatting across multiple files for improved readability and consistency.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'debug' => true,
|
||||
];
|
||||
return [
|
||||
'debug' => true,
|
||||
];
|
||||
+75
-45
@@ -1,54 +1,84 @@
|
||||
<?php
|
||||
// Daten abrufen und deserialisieren
|
||||
$url = 'https://www.schachbund.de/php/dewis/verein.php?zps=25318&format=array';
|
||||
$data = @file_get_contents($url);
|
||||
$players = $data ? @unserialize($data) : [];
|
||||
|
||||
function safe($val) {
|
||||
return $val === null || $val === false || $val === '' || $val === 'N' ? '-' : htmlspecialchars($val);
|
||||
}
|
||||
// Daten abrufen und deserialisieren
|
||||
$url = 'https://www.schachbund.de/php/dewis/verein.php?zps=25318&format=array';
|
||||
$data = @file_get_contents($url);
|
||||
$players = $data ? @unserialize($data) : [];
|
||||
|
||||
// Nach DWZ absteigend sortieren
|
||||
if ($players && is_array($players)) {
|
||||
usort($players, function($a, $b) {
|
||||
$dwzA = isset($a['dwz']) && is_numeric($a['dwz']) ? (int)$a['dwz'] : 0;
|
||||
$dwzB = isset($b['dwz']) && is_numeric($b['dwz']) ? (int)$b['dwz'] : 0;
|
||||
return $dwzB <=> $dwzA;
|
||||
});
|
||||
}
|
||||
function safe($val)
|
||||
{
|
||||
return $val === null || $val === false || $val === '' || $val === 'N'
|
||||
? '-' : htmlspecialchars($val);
|
||||
}
|
||||
|
||||
// Nach DWZ absteigend sortieren
|
||||
if ($players && is_array($players)) {
|
||||
usort($players, function ($a, $b) {
|
||||
$dwzA = isset($a['dwz']) && is_numeric($a['dwz']) ? (int)$a['dwz']
|
||||
: 0;
|
||||
$dwzB = isset($b['dwz']) && is_numeric($b['dwz']) ? (int)$b['dwz']
|
||||
: 0;
|
||||
|
||||
return $dwzB <=> $dwzA;
|
||||
});
|
||||
}
|
||||
?>
|
||||
|
||||
<section class="py-24 bg-sf_grau-50">
|
||||
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
||||
<table class="min-w-full border border-sf_blau-200 rounded-xl overflow-hidden">
|
||||
<thead class="bg-sf_blau-600 text-white font-bold">
|
||||
<tr>
|
||||
<th class="px-3 py-2">Platz</th>
|
||||
<th class="px-3 py-2">Mitgl.</th>
|
||||
<th class="px-3 py-2">Titel</th>
|
||||
<th class="px-3 py-2">Name</th>
|
||||
<th class="px-3 py-2">DWZ</th>
|
||||
<th class="px-3 py-2">ELO</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php if ($players && is_array($players)): ?>
|
||||
<?php $platz = 1; foreach ($players as $p): ?>
|
||||
<tr class="even:bg-sf_grau-100 odd:bg-white">
|
||||
<td class="px-3 py-2 text-center"><?php echo $platz++; ?></td>
|
||||
<td class="px-3 py-2 text-center"><?php echo safe($p['mglnr']); ?></td>
|
||||
<td class="px-3 py-2 text-center"><?php echo safe($p['titel']); ?></td>
|
||||
<td class="px-3 py-2 font-semibold text-xl text-sf_blau-500 hover:text-sf_gelb-300">
|
||||
<a href="http://www.schachbund.de/spieler.html?pkz=<?php echo safe($p['id']); ?>" target="_blank">
|
||||
<?php echo safe($p['nachname'] . ', ' . $p['vorname']); ?></td>
|
||||
<table class="min-w-full border border-sf_blau-200 rounded-xl overflow-hidden">
|
||||
<thead class="bg-sf_blau-600 text-white font-bold">
|
||||
<tr>
|
||||
<th class="px-3 py-2">Platz</th>
|
||||
<th class="px-3 py-2">Mitgl.</th>
|
||||
<th class="px-3 py-2">Titel</th>
|
||||
<th class="px-3 py-2">Name</th>
|
||||
<th class="px-3 py-2">DWZ</th>
|
||||
<th class="px-3 py-2">ELO</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
if ($players && is_array($players)): ?>
|
||||
<?php
|
||||
$platz = 1;
|
||||
foreach ($players as $p): ?>
|
||||
<tr class="even:bg-sf_grau-100 odd:bg-white">
|
||||
<td class="px-3 py-2 text-center"><?php
|
||||
echo $platz++; ?></td>
|
||||
<td class="px-3 py-2 text-center"><?php
|
||||
echo safe($p['mglnr']); ?></td>
|
||||
<td class="px-3 py-2 text-center"><?php
|
||||
echo safe($p['titel']); ?></td>
|
||||
<td class="px-3 py-2 font-semibold text-xl text-sf_blau-500 hover:text-sf_gelb-300">
|
||||
<a href="http://www.schachbund.de/spieler.html?pkz=<?php
|
||||
echo safe($p['id']); ?>"
|
||||
target="_blank">
|
||||
<?php
|
||||
echo safe(
|
||||
$p['nachname'].', '
|
||||
.$p['vorname'],
|
||||
); ?></td>
|
||||
</a>
|
||||
<td class="px-3 py-2 text-right text-xl"><?php echo safe($p['dwz']); ?>-<?php echo safe($p['dwzindex']); ?></td>
|
||||
<td class="px-3 py-2 text-right text-xl"><?php echo safe($p['fideelo']); ?></td>
|
||||
<td class="px-3 py-2 text-right text-xl"><?php
|
||||
echo safe($p['dwz']); ?>
|
||||
-<?php
|
||||
echo safe($p['dwzindex']); ?></td>
|
||||
<td class="px-3 py-2 text-right text-xl"><?php
|
||||
echo safe($p['fideelo']); ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
endforeach; ?>
|
||||
<?php
|
||||
else: ?>
|
||||
<tr>
|
||||
<td colspan="6" class="px-3 py-4 text-center text-red-500">
|
||||
Keine Daten verfügbar.
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php else: ?>
|
||||
<tr><td colspan="6" class="px-3 py-4 text-center text-red-500">Keine Daten verfügbar.</td></tr>
|
||||
<?php endif; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php
|
||||
endif; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
@@ -1,13 +1,13 @@
|
||||
<?php
|
||||
/*
|
||||
Snippets are a great way to store code snippets for reuse
|
||||
or to keep your templates clean.
|
||||
/*
|
||||
Snippets are a great way to store code snippets for reuse
|
||||
or to keep your templates clean.
|
||||
|
||||
This footer snippet is reused in all templates.
|
||||
This footer snippet is reused in all templates.
|
||||
|
||||
More about snippets:
|
||||
https://getkirby.com/docs/guide/templates/snippets
|
||||
*/
|
||||
More about snippets:
|
||||
https://getkirby.com/docs/guide/templates/snippets
|
||||
*/
|
||||
|
||||
?>
|
||||
<footer class="bg-sf_grau-400 w-full" data-pgc-define="footer"
|
||||
@@ -132,7 +132,8 @@
|
||||
<!--Grid-->
|
||||
<div class="py-7 border-t border-gray-700">
|
||||
<div class="flex items-center justify-center">
|
||||
<span class="text-base text-sf_gray-700">© 2025 - <a href="https://www.schachfreunde-badsteben.de/">Schachfreunde Bad Steben </a></span>
|
||||
<span class="text-base text-sf_gray-700">© 2025 - <a
|
||||
href="https://www.schachfreunde-badsteben.de/">Schachfreunde Bad Steben </a></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+23
-23
@@ -1,15 +1,15 @@
|
||||
<?php
|
||||
/*
|
||||
Snippets are a great way to store code snippets for reuse
|
||||
or to keep your templates clean.
|
||||
/*
|
||||
Snippets are a great way to store code snippets for reuse
|
||||
or to keep your templates clean.
|
||||
|
||||
This header snippet is reused in all templates.
|
||||
It fetches information from the `site.txt` content file
|
||||
and contains the site navigation.
|
||||
This header snippet is reused in all templates.
|
||||
It fetches information from the `site.txt` content file
|
||||
and contains the site navigation.
|
||||
|
||||
More about snippets:
|
||||
https://getkirby.com/docs/guide/templates/snippets
|
||||
*/
|
||||
More about snippets:
|
||||
https://getkirby.com/docs/guide/templates/snippets
|
||||
*/
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
@@ -20,21 +20,21 @@
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
|
||||
<?php
|
||||
/*
|
||||
In the title tag we show the title of our
|
||||
site and the title of the current page
|
||||
*/
|
||||
/*
|
||||
In the title tag we show the title of our
|
||||
site and the title of the current page
|
||||
*/
|
||||
|
||||
?>
|
||||
|
||||
<title><?= $site->title()->esc() ?> | <?= $page->title()->esc() ?></title>
|
||||
|
||||
<?php
|
||||
/*
|
||||
Stylesheets can be included using the `css()` helper.
|
||||
Kirby also provides the `js()` helper to include script file.
|
||||
More Kirby helpers: https://getkirby.com/docs/reference/templates/helpers
|
||||
*/
|
||||
/*
|
||||
Stylesheets can be included using the `css()` helper.
|
||||
Kirby also provides the `js()` helper to include script file.
|
||||
More Kirby helpers: https://getkirby.com/docs/reference/templates/helpers
|
||||
*/
|
||||
|
||||
?>
|
||||
|
||||
@@ -44,11 +44,11 @@
|
||||
]) ?>
|
||||
|
||||
<?php
|
||||
/*
|
||||
The `url()` helper is a great way to create reliable
|
||||
absolute URLs in Kirby that always start with the
|
||||
base URL of your site.
|
||||
*/
|
||||
/*
|
||||
The `url()` helper is a great way to create reliable
|
||||
absolute URLs in Kirby that always start with the
|
||||
base URL of your site.
|
||||
*/
|
||||
|
||||
?>
|
||||
|
||||
|
||||
+196
-133
@@ -1,112 +1,139 @@
|
||||
<?php
|
||||
// URL der öffentlichen ICS-Datei
|
||||
define('CAL_URL', 'https://calendar.google.com/calendar/ical/jv1bq94un3ivoa8ka0rk9ngq4k%40group.calendar.google.com/public/basic.ics');
|
||||
|
||||
// ICS-Datei laden
|
||||
$ics = @file_get_contents(CAL_URL);
|
||||
if (!$ics) {
|
||||
echo '<div class="text-red-600">Kalender konnte nicht geladen werden.</div>';
|
||||
return;
|
||||
}
|
||||
// URL der öffentlichen ICS-Datei
|
||||
define(
|
||||
'CAL_URL',
|
||||
'https://calendar.google.com/calendar/ical/jv1bq94un3ivoa8ka0rk9ngq4k%40group.calendar.google.com/public/basic.ics',
|
||||
);
|
||||
|
||||
// Termine parsen
|
||||
function parse_ics($ics) {
|
||||
$lines = explode("\n", $ics);
|
||||
$events = [];
|
||||
$event = [];
|
||||
$inEvent = false;
|
||||
foreach ($lines as $line) {
|
||||
$line = trim($line);
|
||||
if ($line === 'BEGIN:VEVENT') {
|
||||
$inEvent = true;
|
||||
$event = [];
|
||||
} elseif ($line === 'END:VEVENT') {
|
||||
$inEvent = false;
|
||||
$events[] = $event;
|
||||
} elseif ($inEvent) {
|
||||
// Property kann Parameter enthalten, z.B. DTSTART;TZID=Europe/Berlin:20240701T19000000
|
||||
$parts = explode(':', $line, 2);
|
||||
if (count($parts) === 2) {
|
||||
$key = $parts[0];
|
||||
$val = $parts[1];
|
||||
// Nur den eigentlichen Property-Namen extrahieren
|
||||
$key = strtoupper(preg_replace('/;.+$/', '', $key));
|
||||
$event[$key] = $val;
|
||||
}
|
||||
// ICS-Datei laden
|
||||
$ics = @file_get_contents(CAL_URL);
|
||||
if ( ! $ics) {
|
||||
echo '<div class="text-red-600">Kalender konnte nicht geladen werden.</div>';
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Termine parsen
|
||||
function parse_ics($ics)
|
||||
{
|
||||
$lines = explode("\n", $ics);
|
||||
$events = [];
|
||||
$event = [];
|
||||
$inEvent = false;
|
||||
foreach ($lines as $line) {
|
||||
$line = trim($line);
|
||||
if ($line === 'BEGIN:VEVENT') {
|
||||
$inEvent = true;
|
||||
$event = [];
|
||||
} elseif ($line === 'END:VEVENT') {
|
||||
$inEvent = false;
|
||||
$events[] = $event;
|
||||
} elseif ($inEvent) {
|
||||
// Property kann Parameter enthalten, z.B. DTSTART;TZID=Europe/Berlin:20240701T19000000
|
||||
$parts = explode(':', $line, 2);
|
||||
if (count($parts) === 2) {
|
||||
$key = $parts[0];
|
||||
$val = $parts[1];
|
||||
// Nur den eigentlichen Property-Namen extrahieren
|
||||
$key = strtoupper(preg_replace('/;.+$/', '', $key));
|
||||
$event[$key] = $val;
|
||||
}
|
||||
}
|
||||
return $events;
|
||||
}
|
||||
|
||||
function format_ics_date($date) {
|
||||
// Unterstützt sowohl ganztägige als auch Zeitangaben
|
||||
if (strpos($date, 'T') !== false) {
|
||||
$dt = DateTime::createFromFormat('Ymd\THis', substr($date, 0, 15));
|
||||
return $dt ? $dt->format('d.m.Y H:i') : $date;
|
||||
} else {
|
||||
$dt = DateTime::createFromFormat('Ymd', $date);
|
||||
return $dt ? $dt->format('d.m.Y') : $date;
|
||||
}
|
||||
}
|
||||
return $events;
|
||||
}
|
||||
|
||||
$events = parse_ics($ics);
|
||||
// Nur Events mit DTSTART berücksichtigen
|
||||
$events = array_filter($events, function($event) {
|
||||
return isset($event['DTSTART']) && !empty($event['DTSTART']);
|
||||
});
|
||||
// Nach Datum sortieren
|
||||
usort($events, function($a, $b) {
|
||||
return strcmp($a['DTSTART'], $b['DTSTART']);
|
||||
});
|
||||
function format_ics_date($date)
|
||||
{
|
||||
// Unterstützt sowohl ganztägige als auch Zeitangaben
|
||||
if (strpos($date, 'T') !== false) {
|
||||
$dt = DateTime::createFromFormat('Ymd\THis', substr($date, 0, 15));
|
||||
|
||||
// Aktuelles Datum
|
||||
$today = (new DateTime())->format('Ymd');
|
||||
|
||||
// Nur zukünftige Termine anzeigen
|
||||
$future_events = array_filter($events, function($event) use ($today) {
|
||||
return isset($event['DTSTART']) && $event['DTSTART'] >= $today;
|
||||
});
|
||||
|
||||
// --- Deutsche Monatsnamen ---
|
||||
$de_months = [
|
||||
'01' => 'Januar', '02' => 'Februar', '03' => 'März', '04' => 'April', '05' => 'Mai', '06' => 'Juni',
|
||||
'07' => 'Juli', '08' => 'August', '09' => 'September', '10' => 'Oktober', '11' => 'November', '12' => 'Dezember'
|
||||
];
|
||||
|
||||
// --- Gruppierung aller Termine nach Jahr und Monat für die Sidebar ---
|
||||
function group_events_by_year_month($events) {
|
||||
$grouped = [];
|
||||
foreach ($events as $event) {
|
||||
if (!isset($event['DTSTART'])) continue;
|
||||
$date = $event['DTSTART'];
|
||||
$year = substr($date, 0, 4);
|
||||
$month = substr($date, 4, 2);
|
||||
$grouped[$year][$month][] = $event;
|
||||
}
|
||||
krsort($grouped); // Jahre absteigend
|
||||
foreach ($grouped as &$months) {
|
||||
krsort($months); // Monate absteigend
|
||||
}
|
||||
return $grouped;
|
||||
}
|
||||
$all_events_grouped = group_events_by_year_month($events);
|
||||
|
||||
// --- Filter aus URL ---
|
||||
$filter_jahr = $_GET['jahr'] ?? null;
|
||||
$filter_monat = $_GET['monat'] ?? null;
|
||||
if ($filter_jahr && $filter_monat) {
|
||||
$filtered_events = array_filter($events, function($event) use ($filter_jahr, $filter_monat) {
|
||||
$date = $event['DTSTART'] ?? '';
|
||||
return substr($date, 0, 4) === $filter_jahr && substr($date, 4, 2) === $filter_monat;
|
||||
});
|
||||
} elseif ($filter_jahr) {
|
||||
$filtered_events = array_filter($events, function($event) use ($filter_jahr) {
|
||||
$date = $event['DTSTART'] ?? '';
|
||||
return substr($date, 0, 4) === $filter_jahr;
|
||||
});
|
||||
return $dt ? $dt->format('d.m.Y H:i') : $date;
|
||||
} else {
|
||||
$filtered_events = $future_events;
|
||||
$dt = DateTime::createFromFormat('Ymd', $date);
|
||||
|
||||
return $dt ? $dt->format('d.m.Y') : $date;
|
||||
}
|
||||
}
|
||||
|
||||
$events = parse_ics($ics);
|
||||
// Nur Events mit DTSTART berücksichtigen
|
||||
$events = array_filter($events, function ($event) {
|
||||
return isset($event['DTSTART']) && ! empty($event['DTSTART']);
|
||||
});
|
||||
// Nach Datum sortieren
|
||||
usort($events, function ($a, $b) {
|
||||
return strcmp($a['DTSTART'], $b['DTSTART']);
|
||||
});
|
||||
|
||||
// Aktuelles Datum
|
||||
$today = (new DateTime())->format('Ymd');
|
||||
|
||||
// Nur zukünftige Termine anzeigen
|
||||
$future_events = array_filter($events, function ($event) use ($today) {
|
||||
return isset($event['DTSTART']) && $event['DTSTART'] >= $today;
|
||||
});
|
||||
|
||||
// --- Deutsche Monatsnamen ---
|
||||
$de_months = [
|
||||
'01' => 'Januar',
|
||||
'02' => 'Februar',
|
||||
'03' => 'März',
|
||||
'04' => 'April',
|
||||
'05' => 'Mai',
|
||||
'06' => 'Juni',
|
||||
'07' => 'Juli',
|
||||
'08' => 'August',
|
||||
'09' => 'September',
|
||||
'10' => 'Oktober',
|
||||
'11' => 'November',
|
||||
'12' => 'Dezember',
|
||||
];
|
||||
|
||||
// --- Gruppierung aller Termine nach Jahr und Monat für die Sidebar ---
|
||||
function group_events_by_year_month($events)
|
||||
{
|
||||
$grouped = [];
|
||||
foreach ($events as $event) {
|
||||
if ( ! isset($event['DTSTART'])) {
|
||||
continue;
|
||||
}
|
||||
$date = $event['DTSTART'];
|
||||
$year = substr($date, 0, 4);
|
||||
$month = substr($date, 4, 2);
|
||||
$grouped[$year][$month][] = $event;
|
||||
}
|
||||
krsort($grouped); // Jahre absteigend
|
||||
foreach ($grouped as &$months) {
|
||||
krsort($months); // Monate absteigend
|
||||
}
|
||||
|
||||
return $grouped;
|
||||
}
|
||||
|
||||
$all_events_grouped = group_events_by_year_month($events);
|
||||
|
||||
// --- Filter aus URL ---
|
||||
$filter_jahr = $_GET['jahr'] ?? null;
|
||||
$filter_monat = $_GET['monat'] ?? null;
|
||||
if ($filter_jahr && $filter_monat) {
|
||||
$filtered_events = array_filter($events, function ($event) use ($filter_jahr, $filter_monat) {
|
||||
$date = $event['DTSTART'] ?? '';
|
||||
|
||||
return substr($date, 0, 4) === $filter_jahr && substr($date, 4, 2) === $filter_monat;
|
||||
});
|
||||
} elseif ($filter_jahr) {
|
||||
$filtered_events = array_filter($events, function ($event) use ($filter_jahr) {
|
||||
$date = $event['DTSTART'] ?? '';
|
||||
|
||||
return substr($date, 0, 4) === $filter_jahr;
|
||||
});
|
||||
} else {
|
||||
$filtered_events = $future_events;
|
||||
}
|
||||
?>
|
||||
<section class="py-24 bg-sf_grau-50">
|
||||
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 flex flex-col md:flex-row gap-8">
|
||||
@@ -115,27 +142,54 @@
|
||||
<div class="bg-white rounded-lg shadow p-4">
|
||||
<h2 class="text-lg font-semibold mb-3">Termine nach Jahr/Monat</h2>
|
||||
<ul class="space-y-1">
|
||||
<?php foreach ($all_events_grouped as $year => $months): ?>
|
||||
<li class="mb-2">
|
||||
<div class="flex items-center">
|
||||
<a href="?jahr=<?php echo $year; ?>" class="font-bold text-sf_blau-600 focus:outline-none flex items-center group<?php if ($filter_jahr === $year && !$filter_monat) echo ' underline'; ?><?php if ($filter_jahr === $year && !$filter_monat) echo ' selected'; ?>" onclick="event.stopPropagation(); openYear('<?php echo $year; ?>')">
|
||||
<span><?php echo $year; ?></span>
|
||||
</a>
|
||||
<button type="button" class="ml-1 focus:outline-none" onclick="toggleYear('<?php echo $year; ?>')">
|
||||
<svg class="w-4 h-4 transition-transform" id="arrow-<?php echo $year; ?>" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>
|
||||
</button>
|
||||
</div>
|
||||
<ul class="ml-4 mt-1 hidden" id="months-<?php echo $year; ?>">
|
||||
<?php foreach ($months as $month => $evts): ?>
|
||||
<li>
|
||||
<a href="?jahr=<?php echo $year; ?>&monat=<?php echo $month; ?>" class="text-sf_blau-500 hover:underline<?php if ($filter_jahr === $year && $filter_monat === $month) echo ' font-bold underline selected'; ?>">
|
||||
<?php echo $de_months[$month]; ?> (<?php echo count($evts); ?>)
|
||||
<?php
|
||||
foreach ($all_events_grouped as $year => $months): ?>
|
||||
<li class="mb-2">
|
||||
<div class="flex items-center">
|
||||
<a href="?jahr=<?php
|
||||
echo $year; ?>"
|
||||
class="font-bold text-sf_blau-600 focus:outline-none flex items-center group<?php
|
||||
if ($filter_jahr === $year && ! $filter_monat) {
|
||||
echo ' underline';
|
||||
} ?><?php
|
||||
if ($filter_jahr === $year && ! $filter_monat) {
|
||||
echo ' selected';
|
||||
} ?>" onclick="event.stopPropagation(); openYear('<?php
|
||||
echo $year; ?>')">
|
||||
<span><?php
|
||||
echo $year; ?></span>
|
||||
</a>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
<button type="button" class="ml-1 focus:outline-none" onclick="toggleYear('<?php
|
||||
echo $year; ?>')">
|
||||
<svg class="w-4 h-4 transition-transform" id="arrow-<?php
|
||||
echo $year; ?>" fill="none" stroke="currentColor" stroke-width="2"
|
||||
viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<ul class="ml-4 mt-1 hidden" id="months-<?php
|
||||
echo $year; ?>">
|
||||
<?php
|
||||
foreach ($months as $month => $evts): ?>
|
||||
<li>
|
||||
<a href="?jahr=<?php
|
||||
echo $year; ?>&monat=<?php
|
||||
echo $month; ?>" class="text-sf_blau-500 hover:underline<?php
|
||||
if ($filter_jahr === $year && $filter_monat === $month) {
|
||||
echo ' font-bold underline selected';
|
||||
} ?>">
|
||||
<?php
|
||||
echo $de_months[$month]; ?> (<?php
|
||||
echo count($evts); ?>)
|
||||
</a>
|
||||
</li>
|
||||
<?php
|
||||
endforeach; ?>
|
||||
</ul>
|
||||
</li>
|
||||
<?php
|
||||
endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
<script>
|
||||
@@ -150,6 +204,7 @@
|
||||
arrow.style.transform = '';
|
||||
}
|
||||
}
|
||||
|
||||
function openYear(year) {
|
||||
var ul = document.getElementById('months-' + year);
|
||||
var arrow = document.getElementById('arrow-' + year);
|
||||
@@ -162,9 +217,11 @@
|
||||
</aside>
|
||||
<!-- Hauptinhalt Termine -->
|
||||
<div class="md:w-3/4 w-full">
|
||||
<?php if (empty($filtered_events)): ?>
|
||||
<?php
|
||||
if (empty($filtered_events)): ?>
|
||||
<div class="text-gray-500">Keine Termine gefunden.</div>
|
||||
<?php else: ?>
|
||||
<?php
|
||||
else: ?>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="min-w-full border border-gray-200 bg-white rounded-lg shadow">
|
||||
<thead>
|
||||
@@ -175,27 +232,33 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($filtered_events as $event): ?>
|
||||
<?php
|
||||
foreach ($filtered_events as $event): ?>
|
||||
<?php
|
||||
$start = $event['DTSTART'] ?? '';
|
||||
$end = $event['DTEND'] ?? '';
|
||||
$summary = $event['SUMMARY'] ?? '';
|
||||
$start = $event['DTSTART'] ?? '';
|
||||
$end = $event['DTEND'] ?? '';
|
||||
$summary = $event['SUMMARY'] ?? '';
|
||||
$location = $event['LOCATION'] ?? '';
|
||||
$desc = $event['DESCRIPTION'] ?? '';
|
||||
$date = format_ics_date($start);
|
||||
$time = (str_contains($start, 'T')) ? substr($date, 11) : 'ganztägig';
|
||||
$date = substr($date, 0, 10);
|
||||
$desc = $event['DESCRIPTION'] ?? '';
|
||||
$date = format_ics_date($start);
|
||||
$time = (str_contains($start, 'T')) ? substr($date, 11) : 'ganztägig';
|
||||
$date = substr($date, 0, 10);
|
||||
?>
|
||||
<tr class="hover:bg-gray-50">
|
||||
<td class="py-2 px-4 border-b whitespace-nowrap"><?php echo htmlspecialchars($date); ?></td>
|
||||
<td class="py-2 px-4 border-b whitespace-nowrap"><?php echo htmlspecialchars($time); ?></td>
|
||||
<td class="py-2 px-4 border-b"><?php echo htmlspecialchars($summary); ?></td>
|
||||
<td class="py-2 px-4 border-b whitespace-nowrap"><?php
|
||||
echo htmlspecialchars($date); ?></td>
|
||||
<td class="py-2 px-4 border-b whitespace-nowrap"><?php
|
||||
echo htmlspecialchars($time); ?></td>
|
||||
<td class="py-2 px-4 border-b"><?php
|
||||
echo htmlspecialchars($summary); ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php
|
||||
endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php
|
||||
endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<style>
|
||||
|
||||
@@ -7,15 +7,19 @@
|
||||
<div class="w-full max-w-lg">
|
||||
<p class="lg:pt-0 pt-6 text-xl"><?= $page->heroText() ?></p>
|
||||
|
||||
<?php if ($page->heroButton()->isNotEmpty()): ?>
|
||||
<?php
|
||||
if ($page->heroButton()->isNotEmpty()): ?>
|
||||
<div class="mt-6 flex flex-wrap gap-4 md:mt-8">
|
||||
<a href="<?= $page->buttonLink() ?>" class="hover:cursor-pointer hover:text-sf_gelb-500" target="_blank">
|
||||
<button class="rounded-button inline-flex gap-3 items-center justify-center whitespace-nowrap transition-all duration-200 ease-in-out disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none border border-border-primary text-text-primary bg-background-primary px-6 py-3" title="Kontakt" type="button">
|
||||
<a href="<?= $page->buttonLink() ?>" class="hover:cursor-pointer hover:text-sf_gelb-500"
|
||||
target="_blank">
|
||||
<button class="rounded-button inline-flex gap-3 items-center justify-center whitespace-nowrap transition-all duration-200 ease-in-out disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none border border-border-primary text-text-primary bg-background-primary px-6 py-3"
|
||||
title="Kontakt" type="button">
|
||||
<?= $page->heroButton() ?>
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
<?php
|
||||
endif ?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+19
-16
@@ -1,30 +1,33 @@
|
||||
<?php
|
||||
/*
|
||||
Templates render the content of your pages.
|
||||
/*
|
||||
Templates render the content of your pages.
|
||||
|
||||
They contain the markup together with some control structures
|
||||
like loops or if-statements. The `$page` variable always
|
||||
refers to the currently active page.
|
||||
They contain the markup together with some control structures
|
||||
like loops or if-statements. The `$page` variable always
|
||||
refers to the currently active page.
|
||||
|
||||
To fetch the content from each field we call the field name as a
|
||||
method on the `$page` object, e.g. `$page->title()`.
|
||||
To fetch the content from each field we call the field name as a
|
||||
method on the `$page` object, e.g. `$page->title()`.
|
||||
|
||||
This default template must not be removed. It is used whenever Kirby
|
||||
cannot find a template with the name of the content file.
|
||||
This default template must not be removed. It is used whenever Kirby
|
||||
cannot find a template with the name of the content file.
|
||||
|
||||
Snippets like the header and footer contain markup used in
|
||||
multiple templates. They also help to keep templates clean.
|
||||
Snippets like the header and footer contain markup used in
|
||||
multiple templates. They also help to keep templates clean.
|
||||
|
||||
More about templates: https://getkirby.com/docs/guide/templates/basics
|
||||
*/
|
||||
More about templates: https://getkirby.com/docs/guide/templates/basics
|
||||
*/
|
||||
|
||||
?>
|
||||
<?php snippet('header') ?>
|
||||
<?php
|
||||
snippet('header') ?>
|
||||
|
||||
<body class="font-sans antialiased bg-sf_grau-400 text-gray-900">
|
||||
<?php snippet('navbar') ?>
|
||||
<?php
|
||||
snippet('navbar') ?>
|
||||
|
||||
<?= js('assets/js/navbar.js') ?>
|
||||
</body>
|
||||
|
||||
<?php snippet('footer') ?>
|
||||
<?php
|
||||
snippet('footer') ?>
|
||||
|
||||
+24
-19
@@ -1,34 +1,39 @@
|
||||
<?php
|
||||
/*
|
||||
Templates render the content of your pages.
|
||||
/*
|
||||
Templates render the content of your pages.
|
||||
|
||||
They contain the markup together with some control structures
|
||||
like loops or if-statements. The `$page` variable always
|
||||
refers to the currently active page.
|
||||
They contain the markup together with some control structures
|
||||
like loops or if-statements. The `$page` variable always
|
||||
refers to the currently active page.
|
||||
|
||||
To fetch the content from each field we call the field name as a
|
||||
method on the `$page` object, e.g. `$page->title()`.
|
||||
To fetch the content from each field we call the field name as a
|
||||
method on the `$page` object, e.g. `$page->title()`.
|
||||
|
||||
This default template must not be removed. It is used whenever Kirby
|
||||
cannot find a template with the name of the content file.
|
||||
This default template must not be removed. It is used whenever Kirby
|
||||
cannot find a template with the name of the content file.
|
||||
|
||||
Snippets like the header and footer contain markup used in
|
||||
multiple templates. They also help to keep templates clean.
|
||||
Snippets like the header and footer contain markup used in
|
||||
multiple templates. They also help to keep templates clean.
|
||||
|
||||
More about templates: https://getkirby.com/docs/guide/templates/basics
|
||||
*/
|
||||
More about templates: https://getkirby.com/docs/guide/templates/basics
|
||||
*/
|
||||
|
||||
?>
|
||||
<?php snippet('header') ?>
|
||||
<?php
|
||||
snippet('header') ?>
|
||||
|
||||
<body>
|
||||
<?php snippet('navbar') ?>
|
||||
<?php
|
||||
snippet('navbar') ?>
|
||||
|
||||
<?php snippet('titel') ?>
|
||||
<?php
|
||||
snippet('titel') ?>
|
||||
|
||||
<?php snippet('dwz') ?>
|
||||
<?php
|
||||
snippet('dwz') ?>
|
||||
|
||||
<?= js('assets/js/navbar.js') ?>
|
||||
<?= js('assets/js/navbar.js') ?>
|
||||
</body>
|
||||
|
||||
<?php snippet('footer') ?>
|
||||
<?php
|
||||
snippet('footer') ?>
|
||||
|
||||
+21
-17
@@ -1,32 +1,36 @@
|
||||
<?php
|
||||
/*
|
||||
Templates render the content of your pages.
|
||||
/*
|
||||
Templates render the content of your pages.
|
||||
|
||||
They contain the markup together with some control structures
|
||||
like loops or if-statements. The `$page` variable always
|
||||
refers to the currently active page.
|
||||
They contain the markup together with some control structures
|
||||
like loops or if-statements. The `$page` variable always
|
||||
refers to the currently active page.
|
||||
|
||||
To fetch the content from each field we call the field name as a
|
||||
method on the `$page` object, e.g. `$page->title()`.
|
||||
To fetch the content from each field we call the field name as a
|
||||
method on the `$page` object, e.g. `$page->title()`.
|
||||
|
||||
This default template must not be removed. It is used whenever Kirby
|
||||
cannot find a template with the name of the content file.
|
||||
This default template must not be removed. It is used whenever Kirby
|
||||
cannot find a template with the name of the content file.
|
||||
|
||||
Snippets like the header and footer contain markup used in
|
||||
multiple templates. They also help to keep templates clean.
|
||||
Snippets like the header and footer contain markup used in
|
||||
multiple templates. They also help to keep templates clean.
|
||||
|
||||
More about templates: https://getkirby.com/docs/guide/templates/basics
|
||||
*/
|
||||
More about templates: https://getkirby.com/docs/guide/templates/basics
|
||||
*/
|
||||
|
||||
?>
|
||||
<?php snippet('header') ?>
|
||||
<?php
|
||||
snippet('header') ?>
|
||||
|
||||
<body class="font-sans antialiased bg-sf_grau-400 text-gray-900">
|
||||
<?php snippet('navbar') ?>
|
||||
<?php
|
||||
snippet('navbar') ?>
|
||||
|
||||
<?php snippet('hero') ?>
|
||||
<?php
|
||||
snippet('hero') ?>
|
||||
|
||||
<?= js('assets/js/navbar.js') ?>
|
||||
</body>
|
||||
|
||||
<?php snippet('footer') ?>
|
||||
<?php
|
||||
snippet('footer') ?>
|
||||
|
||||
@@ -1,28 +1,30 @@
|
||||
<?php
|
||||
/*
|
||||
Templates render the content of your pages.
|
||||
/*
|
||||
Templates render the content of your pages.
|
||||
|
||||
They contain the markup together with some control structures
|
||||
like loops or if-statements. The `$page` variable always
|
||||
refers to the currently active page.
|
||||
They contain the markup together with some control structures
|
||||
like loops or if-statements. The `$page` variable always
|
||||
refers to the currently active page.
|
||||
|
||||
To fetch the content from each field we call the field name as a
|
||||
method on the `$page` object, e.g. `$page->title()`.
|
||||
To fetch the content from each field we call the field name as a
|
||||
method on the `$page` object, e.g. `$page->title()`.
|
||||
|
||||
This default template must not be removed. It is used whenever Kirby
|
||||
cannot find a template with the name of the content file.
|
||||
This default template must not be removed. It is used whenever Kirby
|
||||
cannot find a template with the name of the content file.
|
||||
|
||||
Snippets like the header and footer contain markup used in
|
||||
multiple templates. They also help to keep templates clean.
|
||||
Snippets like the header and footer contain markup used in
|
||||
multiple templates. They also help to keep templates clean.
|
||||
|
||||
More about templates: https://getkirby.com/docs/guide/templates/basics
|
||||
*/
|
||||
More about templates: https://getkirby.com/docs/guide/templates/basics
|
||||
*/
|
||||
|
||||
?>
|
||||
<?php snippet('header') ?>
|
||||
<?php
|
||||
snippet('header') ?>
|
||||
|
||||
<body class="font-sans antialiased bg-sf_grau-400 text-gray-900">
|
||||
<?php snippet('navbar') ?>
|
||||
<?php
|
||||
snippet('navbar') ?>
|
||||
|
||||
<section class="bg-sf_grau-50 py-24">
|
||||
<div class="lg:px-8 max-w-7xl mx-auto px-4 sm:px-6">
|
||||
@@ -35,14 +37,17 @@
|
||||
</div>
|
||||
<script>
|
||||
fetch(`https://app.cockpit.legal/api/cockpit/resources/legaldocumentshare/8e1165cd6153a76beff18eb8bcda34b0/document/render/html?language=de`)
|
||||
.then((result) => { return result.text(); })
|
||||
.then((result) => {
|
||||
return result.text();
|
||||
})
|
||||
.then((content) => {
|
||||
document.getElementById("lc-text").innerHTML = content
|
||||
});
|
||||
</script>
|
||||
<noscript>
|
||||
Sie können diesen Rechtstext nicht sehen, weil Sie JavaScript deaktiviert haben.
|
||||
Folgen Sie bitte diesem<a target="_blank" href="https://app.cockpit.legal/api/cockpit/resources/legaldocumentshare/8e1165cd6153a76beff18eb8bcda34b0/document/render/html?language=de">Link</a>,
|
||||
Folgen Sie bitte diesem<a target="_blank"
|
||||
href="https://app.cockpit.legal/api/cockpit/resources/legaldocumentshare/8e1165cd6153a76beff18eb8bcda34b0/document/render/html?language=de">Link</a>,
|
||||
um den Rechtstext anzuzeigen.
|
||||
</noscript>
|
||||
</div>
|
||||
@@ -51,4 +56,5 @@
|
||||
<?= js('assets/js/navbar.js') ?>
|
||||
</body>
|
||||
|
||||
<?php snippet('footer') ?>
|
||||
<?php
|
||||
snippet('footer') ?>
|
||||
|
||||
+98
-44
@@ -1,28 +1,30 @@
|
||||
<?php
|
||||
/*
|
||||
Templates render the content of your pages.
|
||||
/*
|
||||
Templates render the content of your pages.
|
||||
|
||||
They contain the markup together with some control structures
|
||||
like loops or if-statements. The `$page` variable always
|
||||
refers to the currently active page.
|
||||
They contain the markup together with some control structures
|
||||
like loops or if-statements. The `$page` variable always
|
||||
refers to the currently active page.
|
||||
|
||||
To fetch the content from each field we call the field name as a
|
||||
method on the `$page` object, e.g. `$page->title()`.
|
||||
To fetch the content from each field we call the field name as a
|
||||
method on the `$page` object, e.g. `$page->title()`.
|
||||
|
||||
This default template must not be removed. It is used whenever Kirby
|
||||
cannot find a template with the name of the content file.
|
||||
This default template must not be removed. It is used whenever Kirby
|
||||
cannot find a template with the name of the content file.
|
||||
|
||||
Snippets like the header and footer contain markup used in
|
||||
multiple templates. They also help to keep templates clean.
|
||||
Snippets like the header and footer contain markup used in
|
||||
multiple templates. They also help to keep templates clean.
|
||||
|
||||
More about templates: https://getkirby.com/docs/guide/templates/basics
|
||||
*/
|
||||
More about templates: https://getkirby.com/docs/guide/templates/basics
|
||||
*/
|
||||
|
||||
?>
|
||||
<?php snippet('header') ?>
|
||||
<?php
|
||||
snippet('header') ?>
|
||||
|
||||
<body class="font-sans antialiased bg-sf_grau-400 text-gray-900">
|
||||
<?php snippet('navbar') ?>
|
||||
<?php
|
||||
snippet('navbar') ?>
|
||||
|
||||
<section class="bg-sf_grau-50 py-24">
|
||||
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
||||
@@ -30,43 +32,66 @@
|
||||
<section class="mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">§ 1 Name, Sitz, Geschäftsjahr</h2>
|
||||
<p class="mb-2">(1) Der Verein führt den Namen „Schachfreunde Bad Steben“.</p>
|
||||
<p class="mb-2">(2) Der Verein hat seinen Sitz in Bad Steben und ist nicht im Vereinsregister des Amtsgerichtes Hof eingetragen.</p>
|
||||
<p class="mb-2">(2) Der Verein hat seinen Sitz in Bad Steben und ist nicht im Vereinsregister des
|
||||
Amtsgerichtes Hof eingetragen.</p>
|
||||
<p>(3) Das Geschäftsjahr ist das Kalenderjahr.</p>
|
||||
</section>
|
||||
<section class="mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">§ 2 Vereinszweck</h2>
|
||||
<p class="mb-2">(1) Vereinszweck ist die Pflege und die Förderung des Sports.</p>
|
||||
<p class="mb-4">(2) Der Verein verfolgt ausschließlich und unmittelbar gemeinnützige Zwecke im Sinne des Abschnitts „Steuerbegünstigte Zwecke“ der Abgabenordnung (AO 1977).</p>
|
||||
<p class="mb-4">(2) Der Verein verfolgt ausschließlich und unmittelbar gemeinnützige Zwecke im Sinne des
|
||||
Abschnitts „Steuerbegünstigte Zwecke“ der Abgabenordnung (AO 1977).</p>
|
||||
<ul class="list-disc list-inside space-y-2 pl-4">
|
||||
<li>Der Verein ist selbstlos tätig; er verfolgt nicht in erster Linie eigenwirtschaftliche Zwecke.</li>
|
||||
<li>Mittel des Vereins sowie etwaige Überschüsse werden nur für satzungsmäßige Zwecke verwendet.</li>
|
||||
<li>Die Mitglieder erhalten keine Anteile am Überschuss und – in ihrer Eigenschaft als Mitglieder – auch keine sonstigen Zuwendungen aus Mitteln des Vereins.</li>
|
||||
<li>Der Verein darf keine Person durch Ausgaben, die dem Zweck des Vereins fremd sind, oder durch unverhältnismäßig hohe Vergütungen begünstigen.</li>
|
||||
<li>Die Mitglieder erhalten keine Anteile am Überschuss und – in ihrer Eigenschaft als Mitglieder – auch
|
||||
keine sonstigen Zuwendungen aus Mitteln des Vereins.
|
||||
</li>
|
||||
<li>Der Verein darf keine Person durch Ausgaben, die dem Zweck des Vereins fremd sind, oder durch
|
||||
unverhältnismäßig hohe Vergütungen begünstigen.
|
||||
</li>
|
||||
<li>Ausgeschiedene oder ausgeschlossene Mitglieder haben keinen Anspruch auf das Vereinsvermögen.</li>
|
||||
</ul>
|
||||
<p class="mt-4">Eine Änderung im Status der Gemeinnützigkeit zeigt der Verein unverzüglich dem Bayerischen Landes-Sportverband e. V., den zuständigen Fachverbänden sowie dem Finanzamt für Körperschaften an.</p>
|
||||
<p class="mt-4">Eine Änderung im Status der Gemeinnützigkeit zeigt der Verein unverzüglich dem Bayerischen
|
||||
Landes-Sportverband e. V., den zuständigen Fachverbänden sowie dem Finanzamt für Körperschaften an.</p>
|
||||
</section>
|
||||
<section class="mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">§ 3 Vereinstätigkeit</h2>
|
||||
<p class="mb-2">(1) Die Verwirklichung des Vereinszwecks sieht der Verein insbesondere in der Abhaltung von geordneten Sport- und Spielübungen, Durchführung von Versammlungen, Vorträgen, Kursen, sportlichen und geselligen Veranstaltungen.</p>
|
||||
<p>(2) Der Verein ist Mitglied im Bayerischen Landes-Sportverband e. V. und erkennt dessen Satzung und Ordnungen an. Über diese Mitgliedschaft wird zugleich die Zugehörigkeit der einzelnen Vereinsmitglieder zum Bayerischen Landes-Sportverband e. V. vermittelt.</p>
|
||||
<p class="mb-2">(1) Die Verwirklichung des Vereinszwecks sieht der Verein insbesondere in der Abhaltung von
|
||||
geordneten Sport- und Spielübungen, Durchführung von Versammlungen, Vorträgen, Kursen, sportlichen und
|
||||
geselligen Veranstaltungen.</p>
|
||||
<p>(2) Der Verein ist Mitglied im Bayerischen Landes-Sportverband e. V. und erkennt dessen Satzung und
|
||||
Ordnungen an. Über diese Mitgliedschaft wird zugleich die Zugehörigkeit der einzelnen Vereinsmitglieder
|
||||
zum Bayerischen Landes-Sportverband e. V. vermittelt.</p>
|
||||
</section>
|
||||
<section class="mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">§ 4 Erwerb der Mitgliedschaft</h2>
|
||||
<p class="mb-2">(1) Mitglied des Vereins kann jede natürliche Person werden.</p>
|
||||
<p class="mb-2">(2) Über den schriftlichen Aufnahmeantrag entscheidet der Vorstand. Der Aufnahmeantrag Minderjähriger bedarf der Unterschrift der gesetzlichen Vertreter.</p>
|
||||
<p class="mb-2">(2) Über den schriftlichen Aufnahmeantrag entscheidet der Vorstand. Der Aufnahmeantrag
|
||||
Minderjähriger bedarf der Unterschrift der gesetzlichen Vertreter.</p>
|
||||
<p>(3) Eine Ablehnung des Aufnahmeantrags durch den Vorstand ist unanfechtbar.</p>
|
||||
</section>
|
||||
<section class="mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">§ 5 Beendigung der Mitgliedschaft</h2>
|
||||
<p class="mb-2">(1) Die Mitgliedschaft endet durch Austritt, Ausschluss oder Streichung der Mitgliedschaft.</p>
|
||||
<p class="mb-2">(2) Der Austritt ist dem Vorstand gegenüber schriftlich zu erklären. Der Austritt ist unter Einhaltung einer Frist von vier Wochen zum Schluss eines jeden Quartals zulässig. Geleistete Beiträge für Quartale ohne Mitgliedschaft werden auf Antrag erstattet.</p>
|
||||
<p class="mb-2">(3) Ein Mitglied kann aus dem Verein ausgeschlossen werden, wenn sein Verhalten in grober Weise gegen die Satzung oder gegen die Interessen des Vereins verstößt. Über den Ausschluss entscheidet der Vorstand. Vorher ist dem Betroffenen Gelegenheit zur Äußerung zu geben. Der Beschluss des Ausschlusses ist dem Betroffenen durch den Vorstand mittels eingeschriebenen Briefes bekannt zu geben.</p>
|
||||
<p>(4) Eine Streichung der Mitgliedschaft ist zulässig, wenn das Mitglied trotz zweimaliger schriftlicher Mahnung durch den Vorstand mit der Zahlung des Beitrages im Rückstand ist. Die Streichung kann durch den Vorstand erst beschlossen werden, wenn seit Absendung des zweiten Mahnschreibens, das den Hinweis auf die Streichung zu enthalten hat, drei Monate vergangen sind.</p>
|
||||
<p class="mb-2">(1) Die Mitgliedschaft endet durch Austritt, Ausschluss oder Streichung der
|
||||
Mitgliedschaft.</p>
|
||||
<p class="mb-2">(2) Der Austritt ist dem Vorstand gegenüber schriftlich zu erklären. Der Austritt ist unter
|
||||
Einhaltung einer Frist von vier Wochen zum Schluss eines jeden Quartals zulässig. Geleistete Beiträge
|
||||
für Quartale ohne Mitgliedschaft werden auf Antrag erstattet.</p>
|
||||
<p class="mb-2">(3) Ein Mitglied kann aus dem Verein ausgeschlossen werden, wenn sein Verhalten in grober
|
||||
Weise gegen die Satzung oder gegen die Interessen des Vereins verstößt. Über den Ausschluss entscheidet
|
||||
der Vorstand. Vorher ist dem Betroffenen Gelegenheit zur Äußerung zu geben. Der Beschluss des
|
||||
Ausschlusses ist dem Betroffenen durch den Vorstand mittels eingeschriebenen Briefes bekannt zu
|
||||
geben.</p>
|
||||
<p>(4) Eine Streichung der Mitgliedschaft ist zulässig, wenn das Mitglied trotz zweimaliger schriftlicher
|
||||
Mahnung durch den Vorstand mit der Zahlung des Beitrages im Rückstand ist. Die Streichung kann durch den
|
||||
Vorstand erst beschlossen werden, wenn seit Absendung des zweiten Mahnschreibens, das den Hinweis auf
|
||||
die Streichung zu enthalten hat, drei Monate vergangen sind.</p>
|
||||
</section>
|
||||
<section class="mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">§ 6 Beiträge</h2>
|
||||
<p>Von den Mitgliedern werden Beiträge erhoben. Die Höhe des Beitrages sowie dessen Fälligkeit werden von der Mitgliederversammlung bestimmt.</p>
|
||||
<p>Von den Mitgliedern werden Beiträge erhoben. Die Höhe des Beitrages sowie dessen Fälligkeit werden von
|
||||
der Mitgliederversammlung bestimmt.</p>
|
||||
</section>
|
||||
<section class="mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">§ 7 Organe des Vereins</h2>
|
||||
@@ -74,27 +99,55 @@
|
||||
</section>
|
||||
<section class="mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">§ 8 Vorstand</h2>
|
||||
<p class="mb-2">(1) Der Vorstand besteht aus dem 1. Vorsitzenden, dem 2. Vorsitzenden und Spielleiter, dem Kassier, dem Schriftführer sowie dem Jugendleiter.</p>
|
||||
<p class="mb-2">(2) Der Verein wird gerichtlich und außergerichtlich durch den 1. Vorsitzenden allein oder durch den 2. Vorsitzenden, den Kassier und den Schriftführer jeweils zu zweit vertreten (Vorstand im Sinne des § 26 BGB).</p>
|
||||
<p class="mb-2">(3) Die Vertretungsmacht des Vorstandes ist mit Wirkung gegen Dritte in der Weise beschränkt, dass für Rechtsgeschäfte mit einem Geschäftswert über 200 Euro (in Worten: zweihundert) die Zustimmung der Mitgliederversammlung erforderlich ist.</p>
|
||||
<p class="mb-2">(4) Der Vorstand wird von der Mitgliederversammlung für die Dauer von zwei Jahren gewählt.</p>
|
||||
<p>(5) Dem Vorstand obliegt neben der Vertretung des Vereins die Wahrnehmung der Vereinsgeschäfte nach Maßgabe der Satzung und der Beschlüsse der Mitgliederversammlung.</p>
|
||||
<p class="mb-2">(1) Der Vorstand besteht aus dem 1. Vorsitzenden, dem 2. Vorsitzenden und Spielleiter, dem
|
||||
Kassier, dem Schriftführer sowie dem Jugendleiter.</p>
|
||||
<p class="mb-2">(2) Der Verein wird gerichtlich und außergerichtlich durch den 1. Vorsitzenden allein oder
|
||||
durch den 2. Vorsitzenden, den Kassier und den Schriftführer jeweils zu zweit vertreten (Vorstand im
|
||||
Sinne des § 26 BGB).</p>
|
||||
<p class="mb-2">(3) Die Vertretungsmacht des Vorstandes ist mit Wirkung gegen Dritte in der Weise
|
||||
beschränkt, dass für Rechtsgeschäfte mit einem Geschäftswert über 200 Euro (in Worten: zweihundert) die
|
||||
Zustimmung der Mitgliederversammlung erforderlich ist.</p>
|
||||
<p class="mb-2">(4) Der Vorstand wird von der Mitgliederversammlung für die Dauer von zwei Jahren
|
||||
gewählt.</p>
|
||||
<p>(5) Dem Vorstand obliegt neben der Vertretung des Vereins die Wahrnehmung der Vereinsgeschäfte nach
|
||||
Maßgabe der Satzung und der Beschlüsse der Mitgliederversammlung.</p>
|
||||
</section>
|
||||
<section class="mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">§ 9 Mitgliederversammlung</h2>
|
||||
<p class="mb-2">(1) Die Mitgliederversammlung findet jährlich möglichst im ersten Jahresquartal statt. Sie ist ferner einzuberufen, wenn es das Vereinsinteresse gebietet oder ein Fünftel der Vereinsmitglieder dies schriftlich unter Angabe der Gründe und des Zwecks vom Vorstand verlangt.</p>
|
||||
<p class="mb-2">(2) Mitgliederversammlungen sind vom Vorstand mindestens zwei Wochen vor dem Versammlungstermin schriftlich einzuberufen. Die Einberufung darf auch per E-Mail erfolgen. Mit der Einberufung ist gleichzeitig die Tagesordnung mitzuteilen.</p>
|
||||
<p class="mb-2">(3) Soweit die Satzung nichts anderes bestimmt, ist jede ordnungsgemäß einberufene Mitgliederversammlung beschlussfähig. Stimmberechtigt sind alle Mitglieder, die am Tage der Versammlung das 16. Lebensjahr vollendet haben. Bei der Wahl des Jugendleiters sind alle Mitglieder stimmberechtigt.</p>
|
||||
<p class="mb-2">(4) Bei Beschlüssen und Wahlen entscheidet die Mehrheit der abgegebenen Stimmen. Zu einem Beschluss, der eine Änderung der Satzung enthält, ist eine Mehrheit von drei Vierteln der erschienenen Mitglieder erforderlich. Die Änderung des Vereinszwecks bedarf der Zustimmung von neun Zehnteln der Mitglieder.</p>
|
||||
<p class="mb-2">(5) Die Art der Abstimmung wird durch den Versammlungsleiter festgelegt. Eine schriftliche Abstimmung hat jedoch zu erfolgen, wenn ein Drittel der erschienenen Mitglieder dies beantragt. Persönlichkeitswahlen erfolgen grundsätzlich geheim.</p>
|
||||
<p>(6) Über die Beschlüsse der Mitgliederversammlung ist eine Niederschrift, die vom Versammlungsleiter zu unterzeichnen ist, aufzunehmen.</p>
|
||||
<p class="mb-2">(1) Die Mitgliederversammlung findet jährlich möglichst im ersten Jahresquartal statt. Sie
|
||||
ist ferner einzuberufen, wenn es das Vereinsinteresse gebietet oder ein Fünftel der Vereinsmitglieder
|
||||
dies schriftlich unter Angabe der Gründe und des Zwecks vom Vorstand verlangt.</p>
|
||||
<p class="mb-2">(2) Mitgliederversammlungen sind vom Vorstand mindestens zwei Wochen vor dem
|
||||
Versammlungstermin schriftlich einzuberufen. Die Einberufung darf auch per E-Mail erfolgen. Mit der
|
||||
Einberufung ist gleichzeitig die Tagesordnung mitzuteilen.</p>
|
||||
<p class="mb-2">(3) Soweit die Satzung nichts anderes bestimmt, ist jede ordnungsgemäß einberufene
|
||||
Mitgliederversammlung beschlussfähig. Stimmberechtigt sind alle Mitglieder, die am Tage der Versammlung
|
||||
das 16. Lebensjahr vollendet haben. Bei der Wahl des Jugendleiters sind alle Mitglieder
|
||||
stimmberechtigt.</p>
|
||||
<p class="mb-2">(4) Bei Beschlüssen und Wahlen entscheidet die Mehrheit der abgegebenen Stimmen. Zu einem
|
||||
Beschluss, der eine Änderung der Satzung enthält, ist eine Mehrheit von drei Vierteln der erschienenen
|
||||
Mitglieder erforderlich. Die Änderung des Vereinszwecks bedarf der Zustimmung von neun Zehnteln der
|
||||
Mitglieder.</p>
|
||||
<p class="mb-2">(5) Die Art der Abstimmung wird durch den Versammlungsleiter festgelegt. Eine schriftliche
|
||||
Abstimmung hat jedoch zu erfolgen, wenn ein Drittel der erschienenen Mitglieder dies beantragt.
|
||||
Persönlichkeitswahlen erfolgen grundsätzlich geheim.</p>
|
||||
<p>(6) Über die Beschlüsse der Mitgliederversammlung ist eine Niederschrift, die vom Versammlungsleiter zu
|
||||
unterzeichnen ist, aufzunehmen.</p>
|
||||
</section>
|
||||
<section class="mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">§ 10 Auflösung des Vereins</h2>
|
||||
<p class="mb-2">(1) Der Verein kann durch Beschluss der Mitgliederversammlung aufgelöst werden, soweit diese Mitgliederversammlung eigens zu diesem Zweck einberufen worden ist und mindestens zwei Drittel der Vereinsmitglieder anwesend sind. Ist die Mitgliederversammlung nicht beschlussfähig, ist innerhalb von vier Wochen erneut eine Mitgliederversammlung einzuberufen, die unabhängig von der Anzahl der anwesenden Mitglieder beschlussfähig ist. Darauf ist bei der Einladung hinzuweisen.</p>
|
||||
<p class="mb-2">(2) Zur Auflösung des Vereins ist die Mehrheit von neun Zehnteln der erschienenen Mitglieder erforderlich.</p>
|
||||
<p class="mb-2">(3) Die Liquidation erfolgt durch die zum Zeitpunkt der Auflösung amtierenden Vorstandsmitglieder.</p>
|
||||
<p>(4) Bei Auflösung des Vereins oder bei Wegfall steuerbegünstigter Zwecke fällt das Vermögen des Vereins an die Marktgemeinde Bad Steben, die das Vermögen unmittelbar und ausschließlich zur Förderung und Pflege des Sports zu verwenden hat.</p>
|
||||
<p class="mb-2">(1) Der Verein kann durch Beschluss der Mitgliederversammlung aufgelöst werden, soweit diese
|
||||
Mitgliederversammlung eigens zu diesem Zweck einberufen worden ist und mindestens zwei Drittel der
|
||||
Vereinsmitglieder anwesend sind. Ist die Mitgliederversammlung nicht beschlussfähig, ist innerhalb von
|
||||
vier Wochen erneut eine Mitgliederversammlung einzuberufen, die unabhängig von der Anzahl der anwesenden
|
||||
Mitglieder beschlussfähig ist. Darauf ist bei der Einladung hinzuweisen.</p>
|
||||
<p class="mb-2">(2) Zur Auflösung des Vereins ist die Mehrheit von neun Zehnteln der erschienenen Mitglieder
|
||||
erforderlich.</p>
|
||||
<p class="mb-2">(3) Die Liquidation erfolgt durch die zum Zeitpunkt der Auflösung amtierenden
|
||||
Vorstandsmitglieder.</p>
|
||||
<p>(4) Bei Auflösung des Vereins oder bei Wegfall steuerbegünstigter Zwecke fällt das Vermögen des Vereins
|
||||
an die Marktgemeinde Bad Steben, die das Vermögen unmittelbar und ausschließlich zur Förderung und
|
||||
Pflege des Sports zu verwenden hat.</p>
|
||||
</section>
|
||||
<footer class="border-t pt-4 mt-6 text-center text-sm text-gray-600">
|
||||
<p>Diese Satzung tritt an die Stelle der bisherigen Satzung vom 3. März 2018.</p>
|
||||
@@ -106,4 +159,5 @@
|
||||
<?= js('assets/js/navbar.js') ?>
|
||||
</body>
|
||||
|
||||
<?php snippet('footer') ?>
|
||||
<?php
|
||||
snippet('footer') ?>
|
||||
|
||||
+23
-18
@@ -1,34 +1,39 @@
|
||||
<?php
|
||||
/*
|
||||
Templates render the content of your pages.
|
||||
/*
|
||||
Templates render the content of your pages.
|
||||
|
||||
They contain the markup together with some control structures
|
||||
like loops or if-statements. The `$page` variable always
|
||||
refers to the currently active page.
|
||||
They contain the markup together with some control structures
|
||||
like loops or if-statements. The `$page` variable always
|
||||
refers to the currently active page.
|
||||
|
||||
To fetch the content from each field we call the field name as a
|
||||
method on the `$page` object, e.g. `$page->title()`.
|
||||
To fetch the content from each field we call the field name as a
|
||||
method on the `$page` object, e.g. `$page->title()`.
|
||||
|
||||
This default template must not be removed. It is used whenever Kirby
|
||||
cannot find a template with the name of the content file.
|
||||
This default template must not be removed. It is used whenever Kirby
|
||||
cannot find a template with the name of the content file.
|
||||
|
||||
Snippets like the header and footer contain markup used in
|
||||
multiple templates. They also help to keep templates clean.
|
||||
Snippets like the header and footer contain markup used in
|
||||
multiple templates. They also help to keep templates clean.
|
||||
|
||||
More about templates: https://getkirby.com/docs/guide/templates/basics
|
||||
*/
|
||||
More about templates: https://getkirby.com/docs/guide/templates/basics
|
||||
*/
|
||||
|
||||
?>
|
||||
<?php snippet('header') ?>
|
||||
<?php
|
||||
snippet('header') ?>
|
||||
|
||||
<body>
|
||||
<?php snippet('navbar') ?>
|
||||
<?php
|
||||
snippet('navbar') ?>
|
||||
|
||||
<?php snippet('titel') ?>
|
||||
<?php
|
||||
snippet('titel') ?>
|
||||
|
||||
<?php snippet('termine') ?>
|
||||
<?php
|
||||
snippet('termine') ?>
|
||||
|
||||
<?= js('assets/js/navbar.js') ?>
|
||||
</body>
|
||||
|
||||
<?php snippet('footer') ?>
|
||||
<?php
|
||||
snippet('footer') ?>
|
||||
|
||||
Reference in New Issue
Block a user