mirror of
https://github.com/ManfredAabye/oswebinterface.git
synced 2026-08-14 09:02:02 +00:00
209 lines
7.9 KiB
PHP
209 lines
7.9 KiB
PHP
<?php
|
|
// Passwortschutz
|
|
session_start();
|
|
|
|
$title = "Event Editor Service";
|
|
include_once 'include/header.php';
|
|
|
|
//$registration_passwords_events = ["1by55dr60kJlSg2z", "BCBFVSHjIoCcPCSV", "MUA0gl4joDRR5CAE", "0pbmLUzXtvzld8vO", "bFMS1LbJIIr08zxv"];
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
|
$input_password = $_POST['password'] ?? '';
|
|
|
|
// Überprüfen des Passworts
|
|
if (in_array($input_password, $registration_passwords_events)) {
|
|
$_SESSION['authenticated'] = true;
|
|
} else {
|
|
$error_message = "Falsches Passwort. Bitte versuchen Sie es erneut.";
|
|
}
|
|
}
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['logout'])) {
|
|
session_destroy();
|
|
header("Location: eventedit.php"); // Wo ist dieser Editor.
|
|
exit;
|
|
}
|
|
|
|
if (!isset($_SESSION['authenticated'])) {
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Events Calendar Editor</title>
|
|
<style>
|
|
body { font-family: Arial, sans-serif; padding: 20px; max-width: 800px; margin: auto; }
|
|
h2 { text-align: center; }
|
|
.input-group { margin-bottom: 15px; }
|
|
input[type="password"] { width: 100%; padding: 8px; box-sizing: border-box; }
|
|
button { padding: 10px 20px; background: #007bff; color: #fff; border: none; border-radius: 5px; cursor: pointer; }
|
|
button:hover { background: #0056b3; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h2>Events Calendar Editor</h2>
|
|
<form method="POST">
|
|
<div class="input-group">
|
|
<input type="password" name="password" placeholder="Passwort eingeben" required />
|
|
</div>
|
|
<button type="submit">Login</button>
|
|
</form>
|
|
</body>
|
|
</html>
|
|
<?php
|
|
exit;
|
|
}
|
|
|
|
// Funktion zum Speichern der Events in einer JSON-Datei
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['events'])) {
|
|
$events = json_decode($_POST['events'], true);
|
|
$backupFilename = 'events_' . date('Y-m-d_H-i-s') . '.bak.json';
|
|
copy('calendar/events.json', $backupFilename);
|
|
file_put_contents('calendar/events.json', json_encode($events, JSON_PRETTY_PRINT));
|
|
echo "<script>alert('Events erfolgreich gespeichert!');</script>";
|
|
}
|
|
?>
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Events Editor</title>
|
|
<style>
|
|
body { font-family: Arial, sans-serif; padding: 20px; max-width: 800px; margin: auto; }
|
|
h1 { text-align: center; }
|
|
.input-group { margin-bottom: 15px; }
|
|
label { display: block; margin-bottom: 5px; }
|
|
input[type="text"], input[type="date"], input[type="color"], textarea { width: 100%; padding: 8px; box-sizing: border-box; }
|
|
button { padding: 10px 20px; background: #007bff; color: #fff; border: none; border-radius: 5px; cursor: pointer; }
|
|
button:hover { background: #0056b3; }
|
|
.event-list { margin-top: 20px; }
|
|
.event-item { border: 1px solid #ccc; padding: 10px; border-radius: 5px; margin-bottom: 10px; }
|
|
.event-item h3 { margin: 0 0 10px; }
|
|
form.logout { display: flex; justify-content: center; margin-top: 20px; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>Events Editor</h1>
|
|
|
|
<div id="editor">
|
|
<div class="input-group">
|
|
<label for="event-date">Datum:</label>
|
|
<input type="date" id="event-date" />
|
|
</div>
|
|
<div class="input-group">
|
|
<label for="event-image">Bild URL:</label>
|
|
<input type="text" id="event-image" />
|
|
</div>
|
|
<div class="input-group">
|
|
<label for="event-texts">Texte (kommagetrennt):</label>
|
|
<textarea id="event-texts"></textarea>
|
|
</div>
|
|
<div class="input-group">
|
|
<label for="event-link">Link:</label>
|
|
<input type="text" id="event-link" />
|
|
</div>
|
|
<div class="input-group">
|
|
<label for="event-color">Hintergrundfarbe:</label>
|
|
<input type="color" id="event-color" />
|
|
</div>
|
|
<div class="input-group">
|
|
<label for="event-txtcolor">Schriftfarbe:</label>
|
|
<input type="color" id="event-txtcolor" />
|
|
</div>
|
|
<button onclick="addEvent()">Event hinzufügen</button>
|
|
<button onclick="downloadEvents()">Download</button>
|
|
|
|
<div class="event-list" id="event-list"></div>
|
|
|
|
<form method="POST" class="logout">
|
|
<button type="submit" name="logout">Session beenden</button>
|
|
</form>
|
|
</div>
|
|
|
|
<script>
|
|
let events = [];
|
|
|
|
async function fetchEvents() {
|
|
const response = await fetch('calendar/events.json');
|
|
events = await response.json();
|
|
displayEvents();
|
|
}
|
|
|
|
function displayEvents() {
|
|
const eventList = document.getElementById('event-list');
|
|
eventList.innerHTML = '';
|
|
events.forEach((event, index) => {
|
|
const eventItem = document.createElement('div');
|
|
eventItem.classList.add('event-item');
|
|
eventItem.innerHTML = `
|
|
<h3>${event.date}</h3>
|
|
<p><strong>Bild URL:</strong> ${event.image}</p>
|
|
<p><strong>Texte:</strong> ${event.texts.join(', ')}</p>
|
|
<p><strong>Link:</strong> <a href="${event.link}" target="_blank">${event.link}</a></p>
|
|
<p><strong>Hintergrundfarbe:</strong> <span style="background-color:${event.color}; padding: 2px 5px;">${event.color}</span></p>
|
|
<p><strong>Schriftfarbe:</strong> <span style="background-color:${event.txtcolor}; padding: 2px 5px;">${event.txtcolor}</span></p>
|
|
<button onclick="deleteEvent(${index})">Löschen</button>
|
|
`;
|
|
eventList.appendChild(eventItem);
|
|
});
|
|
}
|
|
|
|
function addEvent() {
|
|
const date = document.getElementById('event-date').value;
|
|
const image = document.getElementById('event-image').value;
|
|
const texts = document.getElementById('event-texts').value.split(',');
|
|
const link = document.getElementById('event-link').value;
|
|
const color = document.getElementById('event-color').value;
|
|
const txtcolor = document.getElementById('event-txtcolor').value;
|
|
|
|
if (date && texts.length > 0 && link) {
|
|
events.push({ date, image, texts, link, color, txtcolor });
|
|
displayEvents();
|
|
} else {
|
|
alert('Bitte alle Felder ausfüllen.');
|
|
}
|
|
}
|
|
|
|
function deleteEvent(index) {
|
|
events.splice(index, 1);
|
|
displayEvents();
|
|
}
|
|
|
|
function formatJSON(json) {
|
|
return JSON.stringify(json, null, 2);
|
|
}
|
|
|
|
function downloadEvents() {
|
|
const formattedEvents = formatJSON(events);
|
|
const blob = new Blob([formattedEvents], { type: 'application/json' });
|
|
const link = document.createElement('a');
|
|
link.href = URL.createObjectURL(blob);
|
|
link.download = 'calendar/events.json';
|
|
link.click();
|
|
}
|
|
|
|
async function saveEvents() {
|
|
const formattedEvents = formatJSON(events);
|
|
const formData = new FormData();
|
|
formData.append('events', formattedEvents);
|
|
|
|
const response = await fetch('editor.php', {
|
|
method: 'POST',
|
|
body: formData
|
|
});
|
|
|
|
if (response.ok) {
|
|
alert('Events erfolgreich gespeichert!');
|
|
} else {
|
|
alert('Fehler beim Speichern.');
|
|
}
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', fetchEvents);
|
|
</script>
|
|
</body>
|
|
</html>
|