🎨 Добавлен полный редактор стилей и поле image_url для туров

 Новые функции:
- Поле image_url в модели туров для изменения изображений через админ-панель
- Расширенная модель настроек сайта с категориями: colors, typography, images, effects, layout
- Динамический CSS генератор на основе настроек (/dynamic-styles.css)
- API для управления настройками сайта (/api/site-settings)

🎯 Редактор стилей:
- Управление цветами (основные, акцентные, текст, фон)
- Настройка типографики (шрифты, размеры, межстрочный интервал)
- Управление изображениями (фоны, логотипы, фавикон)
- Эффекты (прозрачность, тени, размытие, скругления)
- Макет (высота секций, размеры контейнеров)
- Пользовательский CSS код

🛠️ Техническая реализация:
- SiteSettingsHelper с кешированием для производительности
- CSS переменные для динамического изменения стилей
- Автоматическая миграция базы данных
- Интеграция с AdminJS для удобного управления
- Загрузка настроек в шаблоны для доступности

📊 База данных:
- Расширена таблица site_settings (добавлено поле category)
- Новые типы настроек: color, file
- 27 предустановленных настроек для полного контроля над дизайном
- Автоматическое применение миграций при старте приложения
This commit is contained in:
2025-11-29 22:03:00 +09:00
parent a461fea9d9
commit ed871fc4d1
8 changed files with 528 additions and 28 deletions

View File

@@ -55,6 +55,30 @@ export async function initDatabase() {
}
}
// Check if style editor migration is applied
try {
const result = await db.query("SELECT 1 FROM site_settings WHERE setting_key = 'primary_color' LIMIT 1");
if (result.rows.length === 0) {
console.log('🎨 Installing style editor features...');
const styleMigrationPath = path.join(__dirname, 'style-editor-migration.sql');
if (fs.existsSync(styleMigrationPath)) {
const styleMigration = fs.readFileSync(styleMigrationPath, 'utf8');
await db.query(styleMigration);
console.log('✅ Style editor installed successfully');
}
} else {
console.log(' Style editor already installed');
}
} catch (error) {
console.log('🎨 Installing style editor features...');
const styleMigrationPath = path.join(__dirname, 'style-editor-migration.sql');
if (fs.existsSync(styleMigrationPath)) {
const styleMigration = fs.readFileSync(styleMigrationPath, 'utf8');
await db.query(styleMigration);
console.log('✅ Style editor installed successfully');
}
}
console.log('✨ Database initialization completed successfully!');
} catch (error) {