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

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


software:development:demo:cms:ucms:creating_sample_install_php_setting

Это старая версия документа!


Редактора стилей шаблона install.php

Введение

Текстовый редактор стилей предназначен для создания и редактирования CSS (Cascading Style Sheets) — набора правил, которые определяют, как именно выглядит ваш веб-сайт или документ.
Приведенный ниже код представляет собой простой веб-инструмент для редактирования дизайна сайта прямо через браузер. Он позволяет изменять внешний вид страницы установки (инсталлятора), не открывая файлы через FTP или файловый менеджер хостинга.
Этот файл (обычно называемый editor.php или аналогично) служит админ-панелью для управления стилями.
Код предназначен для:

  • Редактирования: Он считывает содержимое файла install.css и выводит его в большое текстовое поле (textarea), где вы можете вручную менять CSS-код (цвета, шрифты, отступы).
  • Сохранения: При нажатии кнопки «Сохранить» PHP-скрипт записывает ваш новый текст обратно в файл install.css.
  • Сброса настроек (Reset): Если вы «сломали» дизайн или хотите вернуться к начальному виду, кнопка «По умолчанию» берет «чистый» образец из файла default_install.css и перезаписывает им рабочий файл.
  • Проверки прав: Скрипт проверяет, разрешено ли серверу изменять файлы (права доступа). Если файл защищен от записи, вы увидите ошибку.
:&9: Важное замечание по безопасности: Если этот файл оставить на работающем сайте в открытом доступе, любой человек сможет изменить дизайн вашей страницы или вставить вредоносный код.

Файл README.txt

Ниже приведен файл README.txt объясняющий логику работы редактора

README.txt
/**
 * ЛОГИКА РАБОТЫ ТЕКСТОВОГО РЕДАКТОРА CSS (edit_css.php)
 * 
 * Файл предназначен для прямого редактирования кода install.css через браузер.
 * 
 * 1. ИНИЦИАЛИЗАЦИЯ И ПУТИ:
 *    - Скрипт работает с двумя файлами: рабочим (install.css) и эталонным (default_install.css).
 *    - Переменная $message служит для накопления статусов операций (успех/ошибка).
 * 
 * 2. ОБРАБОТКА КОМАНД (POST-запросы):
 *    - ПРИОРЕТЕТ СБРОСА (reset_default): Если нажата кнопка «По умолчанию», скрипт 
 *      игнорирует содержимое текстового поля и полностью перезаписывает рабочий CSS 
 *      данными из эталонного файла. Это «аварийный» метод восстановления верстки.
 *    - СОХРАНЕНИЕ (css_content): Если сброс не инициирован, скрипт берет текст из 
 *      textarea и записывает его в рабочий файл. Перед записью выполняется проверка 
 *      is_writable(), чтобы избежать фатальных ошибок PHP при отсутствии прав доступа (CHMOD).
 * 
 * 3. ПОДГОТОВКА ДАННЫХ (ЧТЕНИЕ):
 *    - После выполнения команд (или при первом открытии) файл читается заново.
 *    - Содержимое пропускается через htmlspecialchars(). Это критически важно, так как 
 *      CSS может содержать спецсимволы, которые браузер может принять за HTML-теги, 
 *      что «сломает» форму или создаст уязвимость.
 * 
 * 4. ИНТЕРФЕЙС И ГЕОМЕТРИЯ:
 *    - Использован фиксированный контейнер (max-width: 700px) с центрированием через 
 *      margin: auto для обеспечения визуального порядка.
 *    - Управление реализовано через стандартные HTML-формы: кнопка «По умолчанию» 
 *      имеет атрибут 'name', что позволяет PHP отличить её нажатие от простого сохранения.
 *    - Кнопка «Отмена» является обычной ссылкой, прерывающей работу редактора без POST-запроса.
 */

Файл setting_install_windows.php

Для работы редактора необходимо в директории стилей /css, где лежит файл install.css создать копированием дубликат файла с именем default_install.css, откуда скрипт будет брать стили «по умолчанию».
Создадим файл setting_install_windows.php в директории /ucms/library/install и запишем в него нижеприведенный код:

setting_install_windows.php
<?php
$cssFile = __DIR__ . '/css/install.css';
$defaultFile = __DIR__ . '/css/default_install.css';
$message = '';
 
// 1. ЛОГИКА СБРОСА: Если нажата кнопка "Восстановить по умолчанию"
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. ЧТЕНИЯ: Получаем актуальное содержимое
$content = file_exists($cssFile) ? htmlspecialchars(file_get_contents($cssFile)) : '';
?>
 
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Редактор стилей</title>
    <style>
        body { font-family: sans-serif; background: #f4f4f4; margin: 0; padding: 20px; }
 
        /* Центрирование контейнера (700px) */
        .editor-container { 
            max-width: 700px; 
            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; font-family: monospace; font-size: 13px; padding: 10px; border: 1px solid #ccc; box-sizing: border-box; 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; }
        .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">
        <textarea name="css_content"><?= $content ?></textarea>
 
        <div class="controls">
            <!-- Кнопка сохранения -->
            <button type="submit" class="btn-save">Сохранить</button>
 
            <!-- Кнопка сброса (без 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>

Проверим в браузере работу скрипта, перейдя по ссылке http://localhost/ucms/library/install/setting_install_windows.php

Заключение

Этот файл не является обязательным и служит для возможности редактирования стилей шаблона инстолятора при написании модуля установщика.
Пример редактирования шаблона в Google Chrome:

Дополнения и Файлы

Только авторизованные участники могут оставлять комментарии.
software/development/demo/cms/ucms/creating_sample_install_php_setting.1777976752.txt.gz · Последнее изменение: VladPolskiy

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