<?php
/**
* @file edittrips.php
* @brief Administrace pro úpravu a mazání tipů na výlet.
*
* Tento skript umožňuje administrátorovi:
* - Vybrat tip na výlet ze seznamu a načíst jeho data.
* - Upravit všechny údaje tipu na výlet (název, fotky, vzdálenost, místa, náhled, až 5 nadpisů a paragrafů, odkazy).
* - Nahrát nové fotky nebo označit stávající fotky ke smazání.
* - Odeslat změny k uložení (updatetrips.php).
* - Smazat celý tip na výlet (deletetrips.php).
* - Zobrazit úspěšné nebo chybové hlášky po akcích.
* Přístup je povolen pouze přihlášeným uživatelům.
*/
session_start();
/**
* Kontrola, zda je uživatel přihlášen.
* Pokud není, přesměruje na přihlašovací stránku.
*/
if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) {
header('Location: login.php');
exit();
}
?>
<!DOCTYPE html>
<html lang="cs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Upravit tip na výlet</title>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="../admin.css" />
<style>
.preview-box img {
width: 120px;
height: 120px;
}
.deleteTrips {
width: 120px;
}
</style>
</head>
<body>
<div class="container mt-5">
<a href="../admin.php" class="backbtn">Zpět na panel</a>
<h2 class="text-center mb-4 hedingForm">Upravit tip na výlet</h2>
<?php if (isset($_SESSION['success'])) {
echo '<div class="alert alert-success text-center">' . $_SESSION['success'] . '</div>';
unset($_SESSION['success']);
} ?>
<?php if (isset($_SESSION['error'])) {
echo '<div class="alert alert-danger text-center">' . $_SESSION['error'] . '</div>';
unset($_SESSION['error']);
} ?>
<div class="row justify-content-center">
<div class="col-md-8">
<form action="updatetrips.php" method="post" enctype="multipart/form-data">
<input type="hidden" id="tripsId" name="tripsId">
<div class="form-group">
<label for="name">Název</label>
<input type="text" class="form-control" id="name" name="name" required>
</div>
<div class="form-group">
<label for="photo1">Náhledová fotka</label>
<input type="file" class="form-control" id="photo1" name="photo1">
<div id="photo1Preview" class="preview-box"></div>
</div>
<div class="form-group">
<label for="photo2">Fotka1</label>
<input type="file" class="form-control" id="photo2" name="photo2">
<div id="photo2Preview" class="preview-box"></div>
</div>
<div class="form-group">
<label for="photo3">Fotka2</label>
<input type="file" class="form-control" id="photo3" name="photo3">
<div id="photo3Preview" class="preview-box"></div>
</div>
<div class="form-group">
<label for="photo4">Fotka3</label>
<input type="file" class="form-control" id="photo4" name="photo4">
<div id="photo4Preview" class="preview-box"></div>
</div>
<div class="form-group">
<label for="distance">Vzdálenost(Km)</label>
<input type="number" class="form-control" id="distance" name="distance">
</div>
<div class="form-group">
<label for="places">Místa</label>
<input type="text" class="form-control" id="places" name="places">
</div>
<div class="form-group">
<label for="preview">Náhled</label>
<input type="text" class="form-control" id="preview" name="preview">
</div>
<div class="form-group">
<label for="heading1">Nadpis 1</label>
<input type="text" class="form-control" id="heading1" name="heading1">
</div>
<div class="form-group">
<label for="paragraph1">Paragraf 1</label>
<input type="text" class="form-control" id="paragraph1" name="paragraph1">
</div>
<div class="form-group">
<label for="heading2">Nadpis 2</label>
<input type="text" class="form-control" id="heading2" name="heading2">
</div>
<div class="form-group">
<label for="paragraph2">Paragraf 2</label>
<input type="text" class="form-control" id="paragraph2" name="paragraph2">
</div>
<div class="form-group">
<label for="heading3">Nadpis 3</label>
<input type="text" class="form-control" id="heading3" name="heading3">
</div>
<div class="form-group">
<label for="paragraph3">Paragraf 3</label>
<input type="text" class="form-control" id="paragraph3" name="paragraph3">
</div>
<div class="form-group">
<label for="heading4">Nadpis 4</label>
<input type="text" class="form-control" id="heading4" name="heading4">
</div>
<div class="form-group">
<label for="paragraph4">Paragraf 4</label>
<input type="text" class="form-control" id="paragraph4" name="paragraph4">
</div>
<div class="form-group">
<label for="heading5">Nadpis 5</label>
<input type="text" class="form-control" id="heading5" name="heading5">
</div>
<div class="form-group">
<label for="paragraph5">Paragraf 5</label>
<input type="text" class="form-control" id="paragraph5" name="paragraph5">
</div>
<div class="form-group">
<label for="kudy">Kudy(odkaz Kudy z nudy)</label>
<input type="text" class="form-control" id="kudy" name="kudy">
</div>
<div class="form-group">
<label for="map">Mapa(odkaz na mapu)</label>
<input type="text" class="form-control" id="map" name="map">
</div>
<button type="submit" class="btn btn-primary btn-block">Upravit</button>
</form>
<form id="deleteTripsForm" action="deletetrips.php" method="post">
<input type="hidden" id="deleteTripsId" name="tripsId">
<button type="button" class="btn btn-danger btn-block mt-2 deleteTrips" onclick="confirmDelete()">Smazat</button>
</form>
</div>
<div class="col-md-2">
<select name="tripsSelect" id="tripsSelect" onchange="loadTripsData()">
<option value="">Vyberte tip na výlet</option>
<?php
// Načtení seznamu tipů na výlet z databáze
include '../db_connection.php'; ///< Připojení k databázi.
$conn->set_charset("utf8mb4");
$sql = "SELECT * FROM trips ORDER BY name ASC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo '<option value="' . $row["id"] . '">' . $row["name"] . '</option>';
}
}
?>
</select>
</div>
</div>
</div>
<script>
/**
* Načte data vybraného tipu na výlet přes AJAX a předvyplní formulář.
*/
function loadTripsData() {
var tripsId = document.getElementById('tripsSelect').value;
if (tripsId) {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'get_trips.php?id=' + tripsId, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var trips = JSON.parse(xhr.responseText);
console.log(trips); // Debugging line
document.getElementById('tripsId').value = trips.id;
document.getElementById('name').value = trips.name;
document.getElementById('distance').value = trips.distance;
document.getElementById('places').value = trips.places;
document.getElementById('preview').value = trips.preview;
document.getElementById('heading1').value = trips.heading1;
document.getElementById('paragraph1').value = trips.paragraph1;
document.getElementById('heading2').value = trips.heading2;
document.getElementById('paragraph2').value = trips.paragraph2;
document.getElementById('heading3').value = trips.heading3;
document.getElementById('paragraph3').value = trips.paragraph3;
document.getElementById('heading4').value = trips.heading4;
document.getElementById('paragraph4').value = trips.paragraph4;
document.getElementById('heading5').value = trips.heading5;
document.getElementById('paragraph5').value = trips.paragraph5;
document.getElementById('kudy').value = trips.kudy;
document.getElementById('map').value = trips.map;
// Aktualizace náhledů a checkboxů.
updatePreview('photo1', trips.photo1);
updatePreview('photo2', trips.photo2);
updatePreview('photo3', trips.photo3);
updatePreview('photo4', trips.photo4);
document.getElementById('deleteTripsId').value = trips.id;
}
};
xhr.send();
}
}
/**
* Zobrazí náhled obrázku a checkbox pro smazání, pokud je obrázek k dispozici.
*/
function updatePreview(field, value) {
var previewDiv = document.getElementById(field + 'Preview');
previewDiv.innerHTML = '';
if (value) {
previewDiv.innerHTML = '<img src="../' + value + '" alt="' + field + '"><label><input type="checkbox" name="delete' + capitalizeFirstLetter(field) + '" value="1"> Smazat ' + field + '</label>';
}
}
/**
* Pomocná funkce pro estetiku na admin panelu.
*/
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
/**
* Potvrzení smazání tipu na výlet.
*/
function confirmDelete() {
if (confirm('Opravdu chcete smazat tento tip na výlet?')) {
document.getElementById('deleteTripsForm').submit();
}
}
</script>
</body>
</html>