Add download filter for states
This commit is contained in:
parent
acea883f71
commit
c5a030b755
1 changed files with 112 additions and 89 deletions
201
feiertage.php
201
feiertage.php
|
|
@ -29,7 +29,10 @@ abstract class Bundesland {
|
|||
}
|
||||
|
||||
public function GetName(int $land, bool $code = false) {
|
||||
return ($code) ? self::$Namen[$land][1] : self::$Namen[$land][0];
|
||||
if ($land >= 0 && $land < self::Count())
|
||||
return ($code) ? self::$Namen[$land][1] : self::$Namen[$land][0];
|
||||
else
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -214,10 +217,11 @@ class FeiertagKalender {
|
|||
return "END:VCALENDAR\r\n";
|
||||
}
|
||||
|
||||
public function GetVCalendar() {
|
||||
public function GetVCalendar(int $land = -1) {
|
||||
$s = $this->GetHeader();
|
||||
for ($i = 0; $i < count($this->feiertage); $i++)
|
||||
$s .= $this->feiertage[$i]->GetVEvent();
|
||||
if ($land == - 1 || !$this->feiertage[$i]->IsGesetzlich() || $this->feiertage[$i]->IsInBundesland($land))
|
||||
$s .= $this->feiertage[$i]->GetVEvent();
|
||||
$s .= $this->GetFooter();
|
||||
return $s;
|
||||
}
|
||||
|
|
@ -238,92 +242,114 @@ if (isset($_GET['jahr']) && is_numeric($_GET['jahr']))
|
|||
$tage = new FeiertagKalender($jahr);
|
||||
if (isset($_GET['jahr'])) {
|
||||
if (!isset($_GET['raw'])) {
|
||||
$land = -1;
|
||||
if (isset($_GET['land']) && is_numeric($_GET['land']))
|
||||
$land = max(0, min(Bundesland::Count(), intval($_GET['land']))) - 1;
|
||||
$name = Bundesland::GetName($land, true);
|
||||
header('Content-Type: text/calendar; charset=utf-8');
|
||||
header("Content-Disposition: inline; filename=\"Feiertage{$jahr}.ics\"");
|
||||
echo $tage->GetVCalendar();
|
||||
header("Content-Disposition: inline; filename=\"Feiertage{$name}{$jahr}.ics\"");
|
||||
echo $tage->GetVCalendar($land);
|
||||
}
|
||||
else {
|
||||
header('Content-Type: text/plain; charset=utf-8');
|
||||
echo $tage;
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
else {
|
||||
echo '<!doctype html>
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="title" content="Feiertage in Deutschland | Kalender">
|
||||
<meta name="author" content="Steffen Lange">
|
||||
<meta name="description" content="iCal-Kalenderdatei mit bundes- und landesweiten Feiertagen für ausgewähltes Jahr zum Import in alle gängigen Kalenderprogramme herunterladen.">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://www.feiertage-kalender.de/">
|
||||
<meta property="og:title" content="Feiertage in Deutschland | Kalender">
|
||||
<meta property="og:description" content="iCal-Kalenderdatei mit bundes- und landesweiten Feiertagen für ausgewähltes Jahr zum Import in alle gängigen Kalenderprogramme herunterladen.">
|
||||
<meta property="og:image" content="https://www.feiertage-kalender.de/img/screenshot.jpg">
|
||||
<meta property="twitter:card" content="summary">
|
||||
<meta property="twitter:url" content="https://www.feiertage-kalender.de/">
|
||||
<meta property="twitter:title" content="Feiertage in Deutschland | Kalender">
|
||||
<meta property="twitter:description" content="iCal-Kalenderdatei mit bundes- und landesweiten Feiertagen für ausgewähltes Jahr zum Import in alle gängigen Kalenderprogramme herunterladen.">
|
||||
<meta property="twitter:image" content="https://www.feiertage-kalender.de/img/screenshot.jpg">
|
||||
<link rel="stylesheet" type="text/css" href="assets/bootstrap.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="assets/jquery.dataTables.min.css">
|
||||
<script src="assets/jquery-3.5.1.min.js"></script>
|
||||
<script src="assets/jquery.dataTables.min.js"></script>
|
||||
<script src="assets/bootstrap.bundle.min.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$(\'[data-toggle="tooltip"]\').tooltip();
|
||||
$("#feiertage").DataTable( {
|
||||
language: { url: "assets/de_de.json" },
|
||||
ordering: false,
|
||||
searching: false,
|
||||
lengthChange: false
|
||||
} );
|
||||
});
|
||||
</script>
|
||||
<title>Feiertage | Kalender</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container p-3 text-center">
|
||||
<h2 class="mb-4">Kalender ' . $now . ' – Feiertage in Deutschland</h2>
|
||||
<p class="text-start">
|
||||
iCal-Kalenderdatei mit bundes- und landesweiten Feiertagen für ausgewähltes Jahr zum Import in alle gängigen Kalenderprogramme herunterladen.
|
||||
iCal bzw. iCalendar ist ein standardisiertes Datenformat zum Austausch von Kalenderinhalten. Das Format wird von der Mehrzahl der Kalenderprogramme unterstützt, die webbasierte Kalenderdaten einbinden können,
|
||||
u.a. <a href="https://support.google.com/calendar/answer/37100" target="_blank" rel="noopener">Google Kalender</a>, <a href="https://support.microsoft.com/de-de/office/importieren-oder-abonnieren-eines-kalenders-in-outlook-com-cff1429c-5af6-41ec-a5b4-74f2c278e98c" target="_blank" rel="noopener">Microsoft Outlook</a>, <a href="https://support.mozilla.org/de/kb/Ferienkalender-hinzufuegen" target="_blank" rel="noopener">Mozilla Thunderbird</a>, <a href="https://support.apple.com/de-de/guide/iphone/iph3d1110d4/ios#iph30203de42" target="_blank" rel="noopener">iPhone Kalender</a> und <a href="https://support.apple.com/de-de/HT202361" target="_blank" rel="noopener">macOS Kalender</a>.
|
||||
</p>
|
||||
<hr>
|
||||
<form class="border border-light">
|
||||
<div class="form-floating">
|
||||
<select class="form-select mb-2" id="jahr" name="jahr">
|
||||
';
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="title" content="Feiertage in Deutschland | Kalender">
|
||||
<meta name="author" content="Steffen Lange">
|
||||
<meta name="description" content="iCal-Kalenderdatei mit bundes- und landesweiten Feiertagen für ausgewähltes Jahr zum Import in alle gängigen Kalenderprogramme herunterladen.">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://www.feiertage-kalender.de/">
|
||||
<meta property="og:title" content="Feiertage in Deutschland | Kalender">
|
||||
<meta property="og:description" content="iCal-Kalenderdatei mit bundes- und landesweiten Feiertagen für ausgewähltes Jahr zum Import in alle gängigen Kalenderprogramme herunterladen.">
|
||||
<meta property="og:image" content="https://www.feiertage-kalender.de/img/screenshot.jpg">
|
||||
<meta property="twitter:card" content="summary">
|
||||
<meta property="twitter:url" content="https://www.feiertage-kalender.de/">
|
||||
<meta property="twitter:title" content="Feiertage in Deutschland | Kalender">
|
||||
<meta property="twitter:description" content="iCal-Kalenderdatei mit bundes- und landesweiten Feiertagen für ausgewähltes Jahr zum Import in alle gängigen Kalenderprogramme herunterladen.">
|
||||
<meta property="twitter:image" content="https://www.feiertage-kalender.de/img/screenshot.jpg">
|
||||
<link rel="stylesheet" type="text/css" href="assets/bootstrap.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="assets/jquery.dataTables.min.css">
|
||||
<script src="assets/jquery-3.5.1.min.js"></script>
|
||||
<script src="assets/jquery.dataTables.min.js"></script>
|
||||
<script src="assets/bootstrap.bundle.min.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
$("#feiertage").DataTable( {
|
||||
language: { url: "assets/de_de.json" },
|
||||
ordering: false,
|
||||
searching: false,
|
||||
lengthChange: false
|
||||
} );
|
||||
});
|
||||
</script>
|
||||
<title>Feiertage | Kalender</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container p-3 text-center">
|
||||
<h2 class="mb-4">Kalender <?php echo $now; ?> – Feiertage in Deutschland</h2>
|
||||
<p class="text-start">
|
||||
iCal-Kalenderdatei mit bundes- und landesweiten Feiertagen für ausgewähltes Jahr zum Import in alle gängigen Kalenderprogramme herunterladen.
|
||||
iCal bzw. iCalendar ist ein standardisiertes Datenformat zum Austausch von Kalenderinhalten. Das Format wird von der Mehrzahl der Kalenderprogramme unterstützt, die webbasierte Kalenderdaten einbinden können,
|
||||
u.a. <a href="https://support.google.com/calendar/answer/37100" target="_blank" rel="noopener">Google Kalender</a>, <a href="https://support.microsoft.com/de-de/office/importieren-oder-abonnieren-eines-kalenders-in-outlook-com-cff1429c-5af6-41ec-a5b4-74f2c278e98c" target="_blank" rel="noopener">Microsoft Outlook</a>, <a href="https://support.mozilla.org/de/kb/Ferienkalender-hinzufuegen" target="_blank" rel="noopener">Mozilla Thunderbird</a>, <a href="https://support.apple.com/de-de/guide/iphone/iph3d1110d4/ios#iph30203de42" target="_blank" rel="noopener">iPhone Kalender</a> und <a href="https://support.apple.com/de-de/HT202361" target="_blank" rel="noopener">macOS Kalender</a>.
|
||||
</p>
|
||||
<hr>
|
||||
<form>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="form-floating">
|
||||
<select class="form-select" id="jahr" name="jahr">
|
||||
<?php
|
||||
for ($i = 0; $i < 5; $i++)
|
||||
echo '<option>' . strval($now + $i) . '</option>';
|
||||
echo '
|
||||
</select>
|
||||
<label for="jahr">Kalenderjahr</label>
|
||||
</div>
|
||||
<div class="d-grid">
|
||||
<button type="submit" class="btn btn-primary mb-2">Download</button>
|
||||
</div>
|
||||
</form>
|
||||
<hr>
|
||||
<table id="feiertage" class="table table-striped table-sm">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th>' . $now . '</th>
|
||||
<th>Feiertag</th>
|
||||
';
|
||||
echo "\t\t\t\t\t\t\t<option>" . strval($now + $i) . '</option>' . PHP_EOL;
|
||||
?>
|
||||
</select>
|
||||
<label for="jahr">Kalenderjahr</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="form-floating">
|
||||
<select class="form-select" id="land" name="land">
|
||||
<option value="0">Deutschland</option>
|
||||
<?php
|
||||
for ($i = 0; $i < Bundesland::Count(); $i++)
|
||||
echo ' <th data-toggle="tooltip" title="' . htmlentities(Bundesland::GetName($i)) . '">' . Bundesland::GetName($i, true) . '</th>
|
||||
';
|
||||
echo ' </tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
';
|
||||
echo "\t\t\t\t\t\t\t" . '<option value="' . strval($i + 1) . '">' . htmlentities(Bundesland::GetName($i)) . '</option>' . PHP_EOL;
|
||||
?>
|
||||
</select>
|
||||
<label for="land">Bundesland</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-grid">
|
||||
<button type="submit" class="btn btn-primary">Download</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<hr>
|
||||
<table id="feiertage" class="table table-striped table-sm">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th><?php echo $now; ?></th>
|
||||
<th>Feiertag</th>
|
||||
<?php
|
||||
for ($i = 0; $i < Bundesland::Count(); $i++)
|
||||
echo "\t\t\t\t\t" . '<th data-toggle="tooltip" title="' . htmlentities(Bundesland::GetName($i)) . '">' . Bundesland::GetName($i, true) . '</th>' . PHP_EOL;
|
||||
?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
for ($i = 0; $i < $tage->Count(); $i++) {
|
||||
$tag = $tage->GetFeiertag($i);
|
||||
echo ' <tr><td data-toggle="tooltip" title="' . strftime('%A', $tag->GetDatum('U')) . '">' . $tag->GetDatum('d.m.') . '</td><td>' . htmlentities($tag->GetName()) . '</td>';
|
||||
echo "\t\t\t\t<tr>" . PHP_EOL;
|
||||
echo "\t\t\t\t\t" . '<td data-toggle="tooltip" title="' . strftime('%A', $tag->GetDatum('U')) . '">' . $tag->GetDatum('d.m.') . '</td><td>' . htmlentities($tag->GetName()) . '</td>' . PHP_EOL . "\t\t\t\t\t";
|
||||
for ($j = 0; $j < Bundesland::Count(); $j++) {
|
||||
echo '<td>';
|
||||
if ($tag->IsInBundesland($j))
|
||||
|
|
@ -332,17 +358,14 @@ else {
|
|||
echo '☆';
|
||||
echo '</td>';
|
||||
}
|
||||
echo '</tr>
|
||||
';
|
||||
echo PHP_EOL . "\t\t\t\t" . '</tr>' . PHP_EOL;
|
||||
}
|
||||
echo ' </tbody>
|
||||
</table>
|
||||
<hr>
|
||||
<p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=M4Z52Q9299MCQ&source=url" target="_blank" rel="noopener"><img alt="Mit PayPal spenden" src="assets/btn_donateCC_LG.gif" width="126" height="47"></a></p>
|
||||
<p class="text-end">© ' . $now . ' Steffen Lange | Alle Angaben ohne Gewähr. | <a href="https://www.dateihal.de/cms/imprint">Impressum</a> | <a href="https://www.dateihal.de/cms/privacy">Datenschutz</a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>';
|
||||
}
|
||||
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<hr>
|
||||
<p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=M4Z52Q9299MCQ&source=url" target="_blank" rel="noopener"><img alt="Mit PayPal spenden" src="assets/btn_donateCC_LG.gif" width="126" height="47"></a></p>
|
||||
<p class="text-end">© <?php echo $now; ?> Steffen Lange | Alle Angaben ohne Gewähr. | <a href="https://www.dateihal.de/cms/imprint">Impressum</a> | <a href="https://www.dateihal.de/cms/privacy">Datenschutz</a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue