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:
2025-06-29 10:59:56 +02:00
parent f36f69082d
commit 2bf81134c7
12 changed files with 523 additions and 348 deletions
+47 -17
View File
@@ -1,22 +1,29 @@
<?php <?php
// Daten abrufen und deserialisieren // Daten abrufen und deserialisieren
$url = 'https://www.schachbund.de/php/dewis/verein.php?zps=25318&format=array'; $url = 'https://www.schachbund.de/php/dewis/verein.php?zps=25318&format=array';
$data = @file_get_contents($url); $data = @file_get_contents($url);
$players = $data ? @unserialize($data) : []; $players = $data ? @unserialize($data) : [];
function safe($val) { function safe($val)
return $val === null || $val === false || $val === '' || $val === 'N' ? '-' : htmlspecialchars($val); {
return $val === null || $val === false || $val === '' || $val === 'N'
? '-' : htmlspecialchars($val);
} }
// Nach DWZ absteigend sortieren // Nach DWZ absteigend sortieren
if ($players && is_array($players)) { if ($players && is_array($players)) {
usort($players, function ($a, $b) { usort($players, function ($a, $b) {
$dwzA = isset($a['dwz']) && is_numeric($a['dwz']) ? (int)$a['dwz'] : 0; $dwzA = isset($a['dwz']) && is_numeric($a['dwz']) ? (int)$a['dwz']
$dwzB = isset($b['dwz']) && is_numeric($b['dwz']) ? (int)$b['dwz'] : 0; : 0;
$dwzB = isset($b['dwz']) && is_numeric($b['dwz']) ? (int)$b['dwz']
: 0;
return $dwzB <=> $dwzA; return $dwzB <=> $dwzA;
}); });
} }
?> ?>
<section class="py-24 bg-sf_grau-50"> <section class="py-24 bg-sf_grau-50">
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"> <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"> <table class="min-w-full border border-sf_blau-200 rounded-xl overflow-hidden">
@@ -31,23 +38,46 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<?php if ($players && is_array($players)): ?> <?php
<?php $platz = 1; foreach ($players as $p): ?> if ($players && is_array($players)): ?>
<?php
$platz = 1;
foreach ($players as $p): ?>
<tr class="even:bg-sf_grau-100 odd:bg-white"> <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
<td class="px-3 py-2 text-center"><?php echo safe($p['mglnr']); ?></td> echo $platz++; ?></td>
<td class="px-3 py-2 text-center"><?php echo safe($p['titel']); ?></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"> <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"> <a href="http://www.schachbund.de/spieler.html?pkz=<?php
<?php echo safe($p['nachname'] . ', ' . $p['vorname']); ?></td> echo safe($p['id']); ?>"
target="_blank">
<?php
echo safe(
$p['nachname'].', '
.$p['vorname'],
); ?></td>
</a> </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
<td class="px-3 py-2 text-right text-xl"><?php echo safe($p['fideelo']); ?></td> 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> </tr>
<?php endforeach; ?> <?php
<?php else: ?> endforeach; ?>
<tr><td colspan="6" class="px-3 py-4 text-center text-red-500">Keine Daten verfügbar.</td></tr> <?php
<?php endif; ?> else: ?>
<tr>
<td colspan="6" class="px-3 py-4 text-center text-red-500">
Keine Daten verfügbar.
</td>
</tr>
<?php
endif; ?>
</tbody> </tbody>
</table> </table>
</div> </div>
+2 -1
View File
@@ -132,7 +132,8 @@
<!--Grid--> <!--Grid-->
<div class="py-7 border-t border-gray-700"> <div class="py-7 border-t border-gray-700">
<div class="flex items-center justify-center"> <div class="flex items-center justify-center">
<span class="text-base text-sf_gray-700">&copy; 2025 - <a href="https://www.schachfreunde-badsteben.de/">Schachfreunde Bad Steben </a></span> <span class="text-base text-sf_gray-700">&copy; 2025 - <a
href="https://www.schachfreunde-badsteben.de/">Schachfreunde Bad Steben </a></span>
</div> </div>
</div> </div>
</div> </div>
+89 -26
View File
@@ -1,16 +1,22 @@
<?php <?php
// URL der öffentlichen ICS-Datei // URL der öffentlichen ICS-Datei
define('CAL_URL', 'https://calendar.google.com/calendar/ical/jv1bq94un3ivoa8ka0rk9ngq4k%40group.calendar.google.com/public/basic.ics'); define(
'CAL_URL',
'https://calendar.google.com/calendar/ical/jv1bq94un3ivoa8ka0rk9ngq4k%40group.calendar.google.com/public/basic.ics',
);
// ICS-Datei laden // ICS-Datei laden
$ics = @file_get_contents(CAL_URL); $ics = @file_get_contents(CAL_URL);
if ( ! $ics) { if ( ! $ics) {
echo '<div class="text-red-600">Kalender konnte nicht geladen werden.</div>'; echo '<div class="text-red-600">Kalender konnte nicht geladen werden.</div>';
return; return;
} }
// Termine parsen // Termine parsen
function parse_ics($ics) { function parse_ics($ics)
{
$lines = explode("\n", $ics); $lines = explode("\n", $ics);
$events = []; $events = [];
$event = []; $event = [];
@@ -35,16 +41,20 @@
} }
} }
} }
return $events; return $events;
} }
function format_ics_date($date) { function format_ics_date($date)
{
// Unterstützt sowohl ganztägige als auch Zeitangaben // Unterstützt sowohl ganztägige als auch Zeitangaben
if (strpos($date, 'T') !== false) { if (strpos($date, 'T') !== false) {
$dt = DateTime::createFromFormat('Ymd\THis', substr($date, 0, 15)); $dt = DateTime::createFromFormat('Ymd\THis', substr($date, 0, 15));
return $dt ? $dt->format('d.m.Y H:i') : $date; return $dt ? $dt->format('d.m.Y H:i') : $date;
} else { } else {
$dt = DateTime::createFromFormat('Ymd', $date); $dt = DateTime::createFromFormat('Ymd', $date);
return $dt ? $dt->format('d.m.Y') : $date; return $dt ? $dt->format('d.m.Y') : $date;
} }
} }
@@ -69,15 +79,28 @@
// --- Deutsche Monatsnamen --- // --- Deutsche Monatsnamen ---
$de_months = [ $de_months = [
'01' => 'Januar', '02' => 'Februar', '03' => 'März', '04' => 'April', '05' => 'Mai', '06' => 'Juni', '01' => 'Januar',
'07' => 'Juli', '08' => 'August', '09' => 'September', '10' => 'Oktober', '11' => 'November', '12' => 'Dezember' '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 --- // --- Gruppierung aller Termine nach Jahr und Monat für die Sidebar ---
function group_events_by_year_month($events) { function group_events_by_year_month($events)
{
$grouped = []; $grouped = [];
foreach ($events as $event) { foreach ($events as $event) {
if (!isset($event['DTSTART'])) continue; if ( ! isset($event['DTSTART'])) {
continue;
}
$date = $event['DTSTART']; $date = $event['DTSTART'];
$year = substr($date, 0, 4); $year = substr($date, 0, 4);
$month = substr($date, 4, 2); $month = substr($date, 4, 2);
@@ -87,8 +110,10 @@
foreach ($grouped as &$months) { foreach ($grouped as &$months) {
krsort($months); // Monate absteigend krsort($months); // Monate absteigend
} }
return $grouped; return $grouped;
} }
$all_events_grouped = group_events_by_year_month($events); $all_events_grouped = group_events_by_year_month($events);
// --- Filter aus URL --- // --- Filter aus URL ---
@@ -97,11 +122,13 @@
if ($filter_jahr && $filter_monat) { if ($filter_jahr && $filter_monat) {
$filtered_events = array_filter($events, function ($event) use ($filter_jahr, $filter_monat) { $filtered_events = array_filter($events, function ($event) use ($filter_jahr, $filter_monat) {
$date = $event['DTSTART'] ?? ''; $date = $event['DTSTART'] ?? '';
return substr($date, 0, 4) === $filter_jahr && substr($date, 4, 2) === $filter_monat; return substr($date, 0, 4) === $filter_jahr && substr($date, 4, 2) === $filter_monat;
}); });
} elseif ($filter_jahr) { } elseif ($filter_jahr) {
$filtered_events = array_filter($events, function ($event) use ($filter_jahr) { $filtered_events = array_filter($events, function ($event) use ($filter_jahr) {
$date = $event['DTSTART'] ?? ''; $date = $event['DTSTART'] ?? '';
return substr($date, 0, 4) === $filter_jahr; return substr($date, 0, 4) === $filter_jahr;
}); });
} else { } else {
@@ -115,27 +142,54 @@
<div class="bg-white rounded-lg shadow p-4"> <div class="bg-white rounded-lg shadow p-4">
<h2 class="text-lg font-semibold mb-3">Termine nach Jahr/Monat</h2> <h2 class="text-lg font-semibold mb-3">Termine nach Jahr/Monat</h2>
<ul class="space-y-1"> <ul class="space-y-1">
<?php foreach ($all_events_grouped as $year => $months): ?> <?php
foreach ($all_events_grouped as $year => $months): ?>
<li class="mb-2"> <li class="mb-2">
<div class="flex items-center"> <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; ?>')"> <a href="?jahr=<?php
<span><?php echo $year; ?></span> 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> </a>
<button type="button" class="ml-1 focus:outline-none" onclick="toggleYear('<?php echo $year; ?>')"> <button type="button" class="ml-1 focus:outline-none" onclick="toggleYear('<?php
<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> 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> </button>
</div> </div>
<ul class="ml-4 mt-1 hidden" id="months-<?php echo $year; ?>"> <ul class="ml-4 mt-1 hidden" id="months-<?php
<?php foreach ($months as $month => $evts): ?> echo $year; ?>">
<?php
foreach ($months as $month => $evts): ?>
<li> <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'; ?>"> <a href="?jahr=<?php
<?php echo $de_months[$month]; ?> (<?php echo count($evts); ?>) 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> </a>
</li> </li>
<?php endforeach; ?> <?php
endforeach; ?>
</ul> </ul>
</li> </li>
<?php endforeach; ?> <?php
endforeach; ?>
</ul> </ul>
</div> </div>
<script> <script>
@@ -150,6 +204,7 @@
arrow.style.transform = ''; arrow.style.transform = '';
} }
} }
function openYear(year) { function openYear(year) {
var ul = document.getElementById('months-' + year); var ul = document.getElementById('months-' + year);
var arrow = document.getElementById('arrow-' + year); var arrow = document.getElementById('arrow-' + year);
@@ -162,9 +217,11 @@
</aside> </aside>
<!-- Hauptinhalt Termine --> <!-- Hauptinhalt Termine -->
<div class="md:w-3/4 w-full"> <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> <div class="text-gray-500">Keine Termine gefunden.</div>
<?php else: ?> <?php
else: ?>
<div class="overflow-x-auto"> <div class="overflow-x-auto">
<table class="min-w-full border border-gray-200 bg-white rounded-lg shadow"> <table class="min-w-full border border-gray-200 bg-white rounded-lg shadow">
<thead> <thead>
@@ -175,7 +232,8 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<?php foreach ($filtered_events as $event): ?> <?php
foreach ($filtered_events as $event): ?>
<?php <?php
$start = $event['DTSTART'] ?? ''; $start = $event['DTSTART'] ?? '';
$end = $event['DTEND'] ?? ''; $end = $event['DTEND'] ?? '';
@@ -187,15 +245,20 @@
$date = substr($date, 0, 10); $date = substr($date, 0, 10);
?> ?>
<tr class="hover:bg-gray-50"> <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
<td class="py-2 px-4 border-b whitespace-nowrap"><?php echo htmlspecialchars($time); ?></td> echo htmlspecialchars($date); ?></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($time); ?></td>
<td class="py-2 px-4 border-b"><?php
echo htmlspecialchars($summary); ?></td>
</tr> </tr>
<?php endforeach; ?> <?php
endforeach; ?>
</tbody> </tbody>
</table> </table>
</div> </div>
<?php endif; ?> <?php
endif; ?>
</div> </div>
</div> </div>
<style> <style>
+8 -4
View File
@@ -7,15 +7,19 @@
<div class="w-full max-w-lg"> <div class="w-full max-w-lg">
<p class="lg:pt-0 pt-6 text-xl"><?= $page->heroText() ?></p> <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"> <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"> <a href="<?= $page->buttonLink() ?>" class="hover:cursor-pointer hover:text-sf_gelb-500"
<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"> 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() ?> <?= $page->heroButton() ?>
</button> </button>
</a> </a>
</div> </div>
<?php endif ?> <?php
endif ?>
</div> </div>
</div> </div>
+6 -3
View File
@@ -19,12 +19,15 @@
*/ */
?> ?>
<?php snippet('header') ?> <?php
snippet('header') ?>
<body class="font-sans antialiased bg-sf_grau-400 text-gray-900"> <body class="font-sans antialiased bg-sf_grau-400 text-gray-900">
<?php snippet('navbar') ?> <?php
snippet('navbar') ?>
<?= js('assets/js/navbar.js') ?> <?= js('assets/js/navbar.js') ?>
</body> </body>
<?php snippet('footer') ?> <?php
snippet('footer') ?>
+10 -5
View File
@@ -19,16 +19,21 @@
*/ */
?> ?>
<?php snippet('header') ?> <?php
snippet('header') ?>
<body> <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> </body>
<?php snippet('footer') ?> <?php
snippet('footer') ?>
+8 -4
View File
@@ -19,14 +19,18 @@
*/ */
?> ?>
<?php snippet('header') ?> <?php
snippet('header') ?>
<body class="font-sans antialiased bg-sf_grau-400 text-gray-900"> <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') ?> <?= js('assets/js/navbar.js') ?>
</body> </body>
<?php snippet('footer') ?> <?php
snippet('footer') ?>
+11 -5
View File
@@ -19,10 +19,12 @@
*/ */
?> ?>
<?php snippet('header') ?> <?php
snippet('header') ?>
<body class="font-sans antialiased bg-sf_grau-400 text-gray-900"> <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"> <section class="bg-sf_grau-50 py-24">
<div class="lg:px-8 max-w-7xl mx-auto px-4 sm:px-6"> <div class="lg:px-8 max-w-7xl mx-auto px-4 sm:px-6">
@@ -35,14 +37,17 @@
</div> </div>
<script> <script>
fetch(`https://app.cockpit.legal/api/cockpit/resources/legaldocumentshare/8e1165cd6153a76beff18eb8bcda34b0/document/render/html?language=de`) 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) => { .then((content) => {
document.getElementById("lc-text").innerHTML = content document.getElementById("lc-text").innerHTML = content
}); });
</script> </script>
<noscript> <noscript>
Sie können diesen Rechtstext nicht sehen, weil Sie JavaScript deaktiviert haben. 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. um den Rechtstext anzuzeigen.
</noscript> </noscript>
</div> </div>
@@ -51,4 +56,5 @@
<?= js('assets/js/navbar.js') ?> <?= js('assets/js/navbar.js') ?>
</body> </body>
<?php snippet('footer') ?> <?php
snippet('footer') ?>
+85 -31
View File
@@ -19,10 +19,12 @@
*/ */
?> ?>
<?php snippet('header') ?> <?php
snippet('header') ?>
<body class="font-sans antialiased bg-sf_grau-400 text-gray-900"> <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"> <section class="bg-sf_grau-50 py-24">
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"> <div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
@@ -30,43 +32,66 @@
<section class="mb-6"> <section class="mb-6">
<h2 class="text-2xl font-semibold mb-4">§ 1 Name, Sitz, Geschäftsjahr</h2> <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">(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> <p>(3) Das Geschäftsjahr ist das Kalenderjahr.</p>
</section> </section>
<section class="mb-6"> <section class="mb-6">
<h2 class="text-2xl font-semibold mb-4">§ 2 Vereinszweck</h2> <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-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"> <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>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>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>Die Mitglieder erhalten keine Anteile am Überschuss und in ihrer Eigenschaft als Mitglieder auch
<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> 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> <li>Ausgeschiedene oder ausgeschlossene Mitglieder haben keinen Anspruch auf das Vereinsvermögen.</li>
</ul> </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>
<section class="mb-6"> <section class="mb-6">
<h2 class="text-2xl font-semibold mb-4">§ 3 Vereinstätigkeit</h2> <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 class="mb-2">(1) Die Verwirklichung des Vereinszwecks sieht der Verein insbesondere in der Abhaltung von
<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> 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>
<section class="mb-6"> <section class="mb-6">
<h2 class="text-2xl font-semibold mb-4">§ 4 Erwerb der Mitgliedschaft</h2> <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">(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> <p>(3) Eine Ablehnung des Aufnahmeantrags durch den Vorstand ist unanfechtbar.</p>
</section> </section>
<section class="mb-6"> <section class="mb-6">
<h2 class="text-2xl font-semibold mb-4">§ 5 Beendigung der Mitgliedschaft</h2> <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">(1) Die Mitgliedschaft endet durch Austritt, Ausschluss oder Streichung der
<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> Mitgliedschaft.</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 class="mb-2">(2) Der Austritt ist dem Vorstand gegenüber schriftlich zu erklären. Der Austritt ist unter
<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> 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>
<section class="mb-6"> <section class="mb-6">
<h2 class="text-2xl font-semibold mb-4">§ 6 Beiträge</h2> <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>
<section class="mb-6"> <section class="mb-6">
<h2 class="text-2xl font-semibold mb-4">§ 7 Organe des Vereins</h2> <h2 class="text-2xl font-semibold mb-4">§ 7 Organe des Vereins</h2>
@@ -74,27 +99,55 @@
</section> </section>
<section class="mb-6"> <section class="mb-6">
<h2 class="text-2xl font-semibold mb-4">§ 8 Vorstand</h2> <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">(1) Der Vorstand besteht aus dem 1. Vorsitzenden, dem 2. Vorsitzenden und Spielleiter, dem
<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> Kassier, dem Schriftführer sowie dem Jugendleiter.</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">(2) Der Verein wird gerichtlich und außergerichtlich durch den 1. Vorsitzenden allein oder
<p class="mb-2">(4) Der Vorstand wird von der Mitgliederversammlung für die Dauer von zwei Jahren gewählt.</p> durch den 2. Vorsitzenden, den Kassier und den Schriftführer jeweils zu zweit vertreten (Vorstand im
<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> 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>
<section class="mb-6"> <section class="mb-6">
<h2 class="text-2xl font-semibold mb-4">§ 9 Mitgliederversammlung</h2> <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">(1) Die Mitgliederversammlung findet jährlich möglichst im ersten Jahresquartal statt. Sie
<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> ist ferner einzuberufen, wenn es das Vereinsinteresse gebietet oder ein Fünftel der Vereinsmitglieder
<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> dies schriftlich unter Angabe der Gründe und des Zwecks vom Vorstand verlangt.</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">(2) Mitgliederversammlungen sind vom Vorstand mindestens zwei Wochen vor dem
<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> Versammlungstermin schriftlich einzuberufen. Die Einberufung darf auch per E-Mail erfolgen. Mit der
<p>(6) Über die Beschlüsse der Mitgliederversammlung ist eine Niederschrift, die vom Versammlungsleiter zu unterzeichnen ist, aufzunehmen.</p> 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>
<section class="mb-6"> <section class="mb-6">
<h2 class="text-2xl font-semibold mb-4">§ 10 Auflösung des Vereins</h2> <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">(1) Der Verein kann durch Beschluss der Mitgliederversammlung aufgelöst werden, soweit diese
<p class="mb-2">(2) Zur Auflösung des Vereins ist die Mehrheit von neun Zehnteln der erschienenen Mitglieder erforderlich.</p> Mitgliederversammlung eigens zu diesem Zweck einberufen worden ist und mindestens zwei Drittel der
<p class="mb-2">(3) Die Liquidation erfolgt durch die zum Zeitpunkt der Auflösung amtierenden Vorstandsmitglieder.</p> Vereinsmitglieder anwesend sind. Ist die Mitgliederversammlung nicht beschlussfähig, ist innerhalb von
<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> 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> </section>
<footer class="border-t pt-4 mt-6 text-center text-sm text-gray-600"> <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> <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') ?> <?= js('assets/js/navbar.js') ?>
</body> </body>
<?php snippet('footer') ?> <?php
snippet('footer') ?>
+10 -5
View File
@@ -19,16 +19,21 @@
*/ */
?> ?>
<?php snippet('header') ?> <?php
snippet('header') ?>
<body> <body>
<?php snippet('navbar') ?> <?php
snippet('navbar') ?>
<?php snippet('titel') ?> <?php
snippet('titel') ?>
<?php snippet('termine') ?> <?php
snippet('termine') ?>
<?= js('assets/js/navbar.js') ?> <?= js('assets/js/navbar.js') ?>
</body> </body>
<?php snippet('footer') ?> <?php
snippet('footer') ?>