Инструменты пользователя

Инструменты сайта


software:development:demo:cms:ucms:creating_sample_install_php_setting_comment

Комментарии Файл setting_install_windows.php

setting_install_windows.php
<?php
$cssFile = __DIR__ . '/css/install.css';         // Путь к рабочему файлу CSS
$defaultFile = __DIR__ . '/css/default_install.css'; // Путь к эталонному файлу для сброса
$message = '';                                   // Переменная для хранения текста уведомлений
 
// 1. ЛОГИКА СБРОСА: Если в POST-запросе есть ключ кнопки "По умолчанию"
if (isset($_POST['reset_default'])) {
    if (file_exists($defaultFile)) {             // Проверяем, существует ли файл-эталон
        $defaultContent = file_get_contents($defaultFile); // Считываем данные из эталона
        if (is_writable($cssFile)) {             // Проверяем, разрешена ли запись в рабочий файл
            file_put_contents($cssFile, $defaultContent); // Перезаписываем рабочий файл эталонным кодом
            $message = '<p class="msg ok">Стили восстановлены из файла по умолчанию!</p>'; // Успех
        } else {
            $message = '<p class="msg err">Ошибка: Нет прав на запись в install.css</p>'; // Ошибка доступа
        }
    } else {
        $message = '<p class="msg err">Ошибка: Файл по умолчанию не найден.</p>'; // Файл не найден
    }
}
 
// 2. ЛОГИКА СОХРАНЕНИЯ: Если пришли данные из текстового поля и это не команда сброса
if (isset($_POST['css_content']) && !isset($_POST['reset_default'])) {
    if (is_writable($cssFile)) {                 // Проверяем права на запись
        file_put_contents($cssFile, $_POST['css_content']); // Сохраняем текст из формы напрямую в файл
        $message = '<p class="msg ok">Файл успешно сохранен!</p>'; // Уведомляем об успехе
    } else {
        $message = '<p class="msg err">Ошибка: Файл недоступен для записи.</p>'; // Уведомляем о запрете
    }
}
 
// 3. ЧТЕНИЕ: Получаем актуальный код для отображения в редакторе
// htmlspecialchars преобразует спецсимволы (типа < >), чтобы они не конфликтовали с HTML-разметкой страницы
$content = file_exists($cssFile) ? htmlspecialchars(file_get_contents($cssFile)) : '';
?>
 
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8"> <!-- Установка кодировки UTF-8 -->
    <title>Редактор стилей</title> <!-- Заголовок вкладки браузера -->
    <style>
        /* Базовые стили страницы */
        body { font-family: sans-serif; background: #f4f4f4; margin: 0; padding: 20px; }
 
        /* Центрирование контейнера (700px) */
        .editor-container { 
            max-width: 700px;           /* Максимальная ширина 700 пикселей */
            margin: 0 auto;             /* Центрирование по горизонтали */
            background: #fff;           /* Белый фон окна */
            padding: 20px;              /* Внутренние отступы */
            border-radius: 8px;         /* Скругление углов */
            box-shadow: 0 4px 15px rgba(0,0,0,0.1); /* Тень для объема */
        }
 
        h3 { margin-top: 0; color: #333; font-size: 18px; } /* Стили заголовока */
 
        /* Поле ввода кода */
        textarea { 
            width: 100%;                /* Ширина на весь контейнер */
            height: 450px;              /* Высота 450 пикселей */
            font-family: monospace;     /* Шрифт как в редакторах кода */
            font-size: 13px;            /* Размер текста */
            padding: 10px;              /* Отступы внутри поля */
            border: 1px solid #ccc;     /* Серая рамка */
            box-sizing: border-box;     /* Чтобы padding не увеличивал ширину */
            resize: vertical;           /* Позволяет тянуть окно только вниз */
        }
 
        /* Блок управления кнопками */
        .controls { margin-top: 15px; display: flex; gap: 10px; align-items: center; }
 
        /* Общий стиль для кнопок */
        button { padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; color: white; font-weight: bold; }
        .btn-save { background: #2e7d32; }   /* Зеленая кнопка "Сохранить" */
        .btn-reset { background: #d32f2f; }  /* Красная кнопка "Сброс" */
        /* Ссылка отмены прижата вправо (margin-left: auto) */
        .btn-back { color: #666; text-decoration: none; font-size: 14px; margin-left: auto; }
 
        button:hover { opacity: 0.9; }       /* Эффект при наведении на кнопку */
        .msg { font-size: 14px; margin-bottom: 10px; } /* Базовый стиль сообщения */
        .ok { color: green; }                /* Цвет для успешного сообщения */
        .err { color: red; }                  /* Цвет для сообщения об ошибке */
    </style>
</head>
<body>
 
<div class="editor-container">
    <h3>Редактор: css/install.css</h3>
 
    <!-- Вывод переменной с сообщением (если она не пустая) -->
    <?= $message ?>
 
    <form method="post">
        <!-- Текстовое поле с содержимым CSS-файла -->
        <textarea name="css_content"><?= $content ?></textarea>
 
        <div class="controls">
            <!-- Кнопка отправки формы для сохранения -->
            <button type="submit" class="btn-save">Сохранить</button>
 
            <!-- Кнопка сброса. onclick запускает JS-подтверждение перед отправкой формы -->
            <button type="submit" name="reset_default" class="btn-reset" onclick="return confirm('Восстановить исходные стили?')">По умолчанию</button>
 
            <!-- Ссылка-кнопка для возврата назад без изменений -->
            <a href="install.php" class="btn-back">Отмена</a>
        </div>
    </form>
</div>
 
</body>
</html>
Только авторизованные участники могут оставлять комментарии.
software/development/demo/cms/ucms/creating_sample_install_php_setting_comment.txt · Последнее изменение: VladPolskiy

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki