Exportaktionen der Monatsvorhersage zusammenfassen und tzdata-Setup dokumentieren

This commit is contained in:
Eskimue
2026-09-12 14:27:59 +02:00
parent 5bb05e69df
commit 32d9c22c1b
2 changed files with 95 additions and 68 deletions
+10
View File
@@ -2,6 +2,16 @@
Diese Anleitung enthält die lokalen Startbefehle für mehrere Rechner.
## Python-Zeitzonendaten unter Windows
Die astronomischen Berechnungen benötigen das Python-Paket `tzdata`, damit Zeitzonen wie `Europe/Berlin` verfügbar sind. Einmalig mit dem Python aus dem PATH installieren, das auch die PHP-Aufrufe verwenden:
```powershell
python -m pip install tzdata
```
Fehlt das Paket, erscheint bei der Berechnung die Meldung „Zeitzone ist ungueltig oder auf dem Server nicht verfuegbar.“ Nach der Installation die Seite neu laden und die Berechnung erneut starten.
## ARBEITSPLATZTM
### PHP-Pfad
+85 -68
View File
@@ -2947,20 +2947,81 @@ $observationTipCalendarFilenameJson = json_encode(sprintf('astrotools-monatserei
</form>
<?php if ($shouldRunForecast): ?>
<div class="monatszip-export">
<button type="button" class="monatskarte-export-button" id="downloadMonatsueberblickZip">
Monatspaket als ZIP herunterladen
</button>
<button type="button" class="monatskarte-export-button" id="copyMonatsueberblickHtml">
HTML in Zwischenablage kopieren
</button>
<?php if (currentUserIsAdminLike()): ?>
<button type="button" class="monatskarte-export-button" id="saveMonatsueberblickToJoomla">
In Joomla speichern
</button>
<?php endif; ?>
<p id="monatsueberblickZipStatus" role="status" aria-live="polite"></p>
</div>
<section class="monatskarte-card monatsaktionen" aria-labelledby="monatsaktionen-heading">
<div class="monatskarte-header">
<h3 id="monatsaktionen-heading">Export und Eintragen</h3>
</div>
<div class="monatsaktionen-gruppen">
<div class="monatsaktionen-gruppe">
<h4>Monatspaket</h4>
<div class="monatskarte-export">
<button type="button" class="monatskarte-export-button" id="downloadMonatsueberblickZip">
Monatspaket als ZIP herunterladen
</button>
<button type="button" class="monatskarte-export-button" id="copyMonatsueberblickHtml">
HTML in Zwischenablage kopieren
</button>
<?php if (currentUserIsAdminLike()): ?>
<button type="button" class="monatskarte-export-button" id="saveMonatsueberblickToJoomla">
In Joomla speichern
</button>
<?php endif; ?>
<p id="monatsueberblickZipStatus" role="status" aria-live="polite"></p>
</div>
</div>
<div class="monatsaktionen-gruppe">
<h4>Grafiken</h4>
<div class="monatskarte-export">
<button type="button" class="monatskarte-export-button" id="downloadMonatskartePng">
Zenitprojektion als PNG
</button>
<button type="button" class="monatskarte-export-button" id="downloadMonatskarteSouthPng">
Südhimmel als PNG
</button>
<button type="button" class="monatskarte-export-button" id="downloadMonatsphasenPng">
Mondphasen als PNG
</button>
</div>
</div>
<div class="monatsaktionen-gruppe">
<h4>Ereignisse</h4>
<div class="monatskarte-export">
<?php if ($monthEventList): ?>
<form method="post" action="<?= htmlspecialchars($observationTipInsertEndpoint, ENT_QUOTES, 'UTF-8') ?>" class="monatskarte-inline-form" id="observationTipInsertForm">
<input type="hidden" name="insert_observation_tips" value="1">
<input type="hidden" name="observation_tip_insert_token" value="<?= htmlspecialchars($observationTipInsertToken, ENT_QUOTES, 'UTF-8') ?>">
<input type="hidden" name="observation_tip_payload" value="<?= htmlspecialchars($observationTipInsertPayloadJson, ENT_QUOTES, 'UTF-8') ?>">
<button type="submit" class="monatskarte-export-button" id="observationTipInsertButton">
Direkt in Datenbank eintragen
</button>
</form>
<?php endif; ?>
<?php if ($observationTipInsertSql !== ''): ?>
<button type="button" class="monatskarte-export-button" id="toggleObservationTipSql">
SQL-Insert anzeigen
</button>
<?php endif; ?>
<?php if ($observationTipCalendarIcs !== ''): ?>
<button type="button" class="monatskarte-export-button" id="downloadObservationTipIcal">
iCal herunterladen
</button>
<?php endif; ?>
</div>
</div>
</div>
<div class="monatskarte-footer">
<p class="monatskarte-insert-status" id="observationTipInsertStatus" role="status" aria-live="polite" hidden></p>
<?php if ($observationTipInsertSql !== ''): ?>
<div class="monatskarte-sql-export" id="observationTipSqlPanel" hidden>
<label class="monatskarte-sql-label" for="observationTipSqlOutput">SQL für `astro_sonobs_observationtips`</label>
<textarea id="observationTipSqlOutput" readonly><?= htmlspecialchars($observationTipInsertSql, ENT_QUOTES, 'UTF-8') ?></textarea>
<div class="monatskarte-sql-actions">
<button type="button" class="monatskarte-export-button" id="copyObservationTipSql">SQL kopieren</button>
</div>
</div>
<?php endif; ?>
</div>
</section>
<section class="monatsnarrativ-card" id="monatsueberblick">
<div class="monatskarte-header">
@@ -2983,11 +3044,6 @@ $observationTipCalendarFilenameJson = json_encode(sprintf('astrotools-monatserei
<?= htmlspecialchars($chartLocationName, ENT_QUOTES, 'UTF-8') ?>
</p>
</div>
<div class="monatskarte-export">
<button type="button" class="monatskarte-export-button" id="downloadMonatskartePng">
PNG herunterladen
</button>
</div>
</div>
<div class="monatskarte-stage">
@@ -3008,11 +3064,6 @@ $observationTipCalendarFilenameJson = json_encode(sprintf('astrotools-monatserei
<?= htmlspecialchars($chartLocationName, ENT_QUOTES, 'UTF-8') ?>
</p>
</div>
<div class="monatskarte-export">
<button type="button" class="monatskarte-export-button" id="downloadMonatskarteSouthPng">
PNG herunterladen
</button>
</div>
</div>
<div class="monatskarte-stage monatskarte-stage-south">
@@ -3030,11 +3081,6 @@ $observationTipCalendarFilenameJson = json_encode(sprintf('astrotools-monatserei
<h3>Mondphasen</h3>
<p><?= htmlspecialchars($months[$selectedMonth] . ' ' . (string) $selectedYear, ENT_QUOTES, 'UTF-8') ?></p>
</div>
<div class="monatskarte-export">
<button type="button" class="monatskarte-export-button" id="downloadMonatsphasenPng">
PNG herunterladen
</button>
</div>
</div>
<div class="monatskarte-stage monatsphase-stage">
@@ -3054,41 +3100,9 @@ $observationTipCalendarFilenameJson = json_encode(sprintf('astrotools-monatserei
<h3>Ereignisse <?= htmlspecialchars($months[$selectedMonth] . ' ' . (string) $selectedYear, ENT_QUOTES, 'UTF-8') ?></h3>
<p>Chronologische Monatsliste für <?= htmlspecialchars($chartTimezone, ENT_QUOTES, 'UTF-8') ?></p>
</div>
<div class="monatskarte-export">
<?php if ($monthEventList): ?>
<form method="post" action="<?= htmlspecialchars($observationTipInsertEndpoint, ENT_QUOTES, 'UTF-8') ?>" class="monatskarte-inline-form" id="observationTipInsertForm">
<input type="hidden" name="insert_observation_tips" value="1">
<input type="hidden" name="observation_tip_insert_token" value="<?= htmlspecialchars($observationTipInsertToken, ENT_QUOTES, 'UTF-8') ?>">
<input type="hidden" name="observation_tip_payload" value="<?= htmlspecialchars($observationTipInsertPayloadJson, ENT_QUOTES, 'UTF-8') ?>">
<button type="submit" class="monatskarte-export-button" id="observationTipInsertButton">
Direkt in Datenbank eintragen
</button>
</form>
<?php endif; ?>
<?php if ($observationTipInsertSql !== ''): ?>
<button type="button" class="monatskarte-export-button" id="toggleObservationTipSql">
SQL-Insert anzeigen
</button>
<?php endif; ?>
<?php if ($observationTipCalendarIcs !== ''): ?>
<button type="button" class="monatskarte-export-button" id="downloadObservationTipIcal">
iCal herunterladen
</button>
<?php endif; ?>
</div>
</div>
<div class="monatskarte-footer">
<p class="monatskarte-insert-status" id="observationTipInsertStatus" role="status" aria-live="polite" hidden></p>
<?php if ($observationTipInsertSql !== ''): ?>
<div class="monatskarte-sql-export" id="observationTipSqlPanel" hidden>
<label class="monatskarte-sql-label" for="observationTipSqlOutput">SQL für `astro_sonobs_observationtips`</label>
<textarea id="observationTipSqlOutput" readonly><?= htmlspecialchars($observationTipInsertSql, ENT_QUOTES, 'UTF-8') ?></textarea>
<div class="monatskarte-sql-actions">
<button type="button" class="monatskarte-export-button" id="copyObservationTipSql">SQL kopieren</button>
</div>
</div>
<?php endif; ?>
<?php if ($monthEventList): ?>
<div class="riseset-grid" style="grid-template-columns: 1.5fr 1fr 1fr; row-gap: 10px;">
<span class="riseset-label riseset-dim">Ereignis</span>
@@ -3135,15 +3149,18 @@ $observationTipCalendarFilenameJson = json_encode(sprintf('astrotools-monatserei
margin: 0;
}
.monatszip-export {
display: flex;
align-items: center;
gap: 14px;
flex-wrap: wrap;
padding: 0 20px;
.monatsaktionen-gruppen {
display: grid;
gap: 18px;
margin-top: 16px;
}
.monatszip-export p {
.monatsaktionen-gruppe h4 {
margin: 0 0 10px;
}
#monatsueberblickZipStatus {
flex-basis: 100%;
margin: 0;
color: rgba(222, 232, 255, 0.86);
}