oazaSrdceWeb / admin_edit / editaktuality.php
editaktuality.php
Raw
<?php

/**
 * @file editaktuality.php
 * @brief Administrace pro úpravu a mazání aktualit.
 *
 * Tento skript umožňuje administrátorovi:
 *  - Vybrat aktualitu ze seznamu a načíst její data.
 *  - Upravit všechny údaje aktuality (název, datum, fotka, náhled, až 10 nadpisů a paragrafů).
 *  - Nahrát novou fotku nebo označit stávající fotku ke smazání.
 *  - Odeslat změny k uložení (updateaktuality.php).
 *  - Smazat celou aktualitu (deleteaktualita.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 aktualitu</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;
        }

        .deleteAktualita {
            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 Aktualitu</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']);
        } ?>
        <?php if (isset($success)) {
            echo '<div class="alert alert-success text-center">' . $success . '</div>';
        } ?>
        <?php if (isset($error)) {
            echo '<div class="alert alert-danger text-center">' . $error . '</div>';
        } ?>
        <div class="row justify-content-center">
            <div class="col-md-8">
                <form action="updateaktuality.php" method="post" enctype="multipart/form-data">
                    <input type="hidden" name="aktualitaId" id="aktualitaId">
                    <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="photo">Fotka</label>
                        <input type="file" class="form-control" id="photo" name="photo">
                        <div id="photoPreview" class="preview-box"></div>
                    </div>
                    <div class="form-group">
                        <label for="date">Datum</label>
                        <input type="date" class="form-control" id="date" name="date" required>
                    </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="heading6">Nadpis 6</label>
                        <input type="text" class="form-control" id="heading6" name="heading6">
                    </div>
                    <div class="form-group">
                        <label for="paragraph6">Paragraf 6</label>
                        <input type="text" class="form-control" id="paragraph6" name="paragraph6">
                    </div>
                    <div class="form-group">
                        <label for="heading7">Nadpis 7</label>
                        <input type="text" class="form-control" id="heading7" name="heading7">
                    </div>
                    <div class="form-group">
                        <label for="paragraph7">Paragraf 7</label>
                        <input type="text" class="form-control" id="paragraph7" name="paragraph7">
                    </div>
                    <div class="form-group">
                        <label for="heading8">Nadpis 8</label>
                        <input type="text" class="form-control" id="heading8" name="heading8">
                    </div>
                    <div class="form-group">
                        <label for="paragraph8">Paragraf 8</label>
                        <input type="text" class="form-control" id="paragraph8" name="paragraph8">
                    </div>
                    <div class="form-group">
                        <label for="heading9">Nadpis 9</label>
                        <input type="text" class="form-control" id="heading9" name="heading9">
                    </div>
                    <div class="form-group">
                        <label for="paragraph9">Paragraf 9</label>
                        <input type="text" class="form-control" id="paragraph9" name="paragraph9">
                    </div>
                    <div class="form-group">
                        <label for="heading10">Nadpis 10</label>
                        <input type="text" class="form-control" id="heading10" name="heading10">
                    </div>
                    <div class="form-group">
                        <label for="paragraph10">Paragraf 10</label>
                        <input type="text" class="form-control" id="paragraph10" name="paragraph10">
                    </div>
                    <button type="submit" class="btn btn-primary btn-block">Upravit</button>
                </form>
                <form id="deleteAktualitaForm" action="deleteaktualita.php" method="post">
                    <input type="hidden" id="deleteAktualitaId" name="aktualitaId">
                    <button type="button" class="btn btn-danger btn-block mt-2 deleteAktualita" onclick="confirmDelete()">Smazat</button>
                </form>
            </div>
            <div class="col-md-2">
                <select name="aktualitaSelect" id="aktualitaSelect" onchange="loadAktualitaData()">
                    <option value="">Vyberte aktualitu</option>
                    <?php
                    // Načtení seznamu aktualit z databáze
                    include '../db_connection.php'; ///< Připojení k databázi.
                    $conn->set_charset("utf8mb4");
                    $sql = "SELECT id, name FROM aktuality 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é aktuality přes AJAX a předvyplní formulář.
         */
        function loadAktualitaData() {
            var aktualitaId = document.getElementById('aktualitaSelect').value;
            if (aktualitaId) {
                var xhr = new XMLHttpRequest();
                xhr.open('GET', 'get_aktualita.php?id=' + aktualitaId, true);
                xhr.onreadystatechange = function() {
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        var aktualita = JSON.parse(xhr.responseText);
                        document.getElementById('aktualitaId').value = aktualita.id;
                        document.getElementById('name').value = aktualita.name;
                        document.getElementById('date').value = aktualita.date;
                        document.getElementById('preview').value = aktualita.preview;
                        document.getElementById('heading1').value = aktualita.heading1;
                        document.getElementById('paragraph1').value = aktualita.paragraph1;
                        document.getElementById('heading2').value = aktualita.heading2;
                        document.getElementById('paragraph2').value = aktualita.paragraph2;
                        document.getElementById('heading3').value = aktualita.heading3;
                        document.getElementById('paragraph3').value = aktualita.paragraph3;
                        document.getElementById('heading4').value = aktualita.heading4;
                        document.getElementById('paragraph4').value = aktualita.paragraph4;
                        document.getElementById('heading5').value = aktualita.heading5;
                        document.getElementById('paragraph5').value = aktualita.paragraph5;
                        document.getElementById('heading6').value = aktualita.heading6;
                        document.getElementById('paragraph6').value = aktualita.paragraph6;
                        document.getElementById('heading7').value = aktualita.heading7;
                        document.getElementById('paragraph7').value = aktualita.paragraph7;
                        document.getElementById('heading8').value = aktualita.heading8;
                        document.getElementById('paragraph8').value = aktualita.paragraph8;
                        document.getElementById('heading9').value = aktualita.heading9;
                        document.getElementById('paragraph9').value = aktualita.paragraph9;
                        document.getElementById('heading10').value = aktualita.heading10;
                        document.getElementById('paragraph10').value = aktualita.paragraph10;

                        // Aktualizace náhledu fotky a údaj checkboxu pro případné smazání
                        updatePreview('photo', aktualita.photo);
                        document.getElementById('deleteAktualitaId').value = aktualita.id;
                    }
                };
                xhr.send();
            }
        }
        /**
         * Zobrazí náhled fotky 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í aktuality.
         */
        function confirmDelete() {
            if (confirm('Opravdu chcete smazat tuto aktualitu?')) {
                document.getElementById('deleteAktualitaForm').submit();
            }
        }
    </script>
</body>

</html>