Integrate branding and theme settings with database

- Update BrandingPage to save settings to database instead of localStorage
- Add public settings endpoint for galleries to fetch branding/theme
- Update GalleryView to apply branding settings in footer
- Apply theme settings from database to gallery pages
- Support event-specific themes that override global settings
- Ensure watermark and all branding settings are stored in database
This commit is contained in:
2025-07-07 15:59:48 +02:00
parent 971397c338
commit 23ec674e05
4 changed files with 201 additions and 36 deletions
+43
View File
@@ -0,0 +1,43 @@
const express = require('express');
const { db } = require('../database/db');
const router = express.Router();
// Get public settings (branding and theme)
router.get('/', async (req, res) => {
try {
// Fetch branding and theme settings
const settings = await db('app_settings')
.whereIn('setting_type', ['branding', 'theme'])
.select('setting_key', 'setting_value');
// Convert to object format
const settingsObject = {};
settings.forEach(setting => {
try {
settingsObject[setting.setting_key] = setting.setting_value
? JSON.parse(setting.setting_value)
: null;
} catch (e) {
// If parsing fails, use the raw value
settingsObject[setting.setting_key] = setting.setting_value;
}
});
// Return only safe public settings
const publicSettings = {
branding_company_name: settingsObject.branding_company_name || '',
branding_company_tagline: settingsObject.branding_company_tagline || '',
branding_support_email: settingsObject.branding_support_email || '',
branding_footer_text: settingsObject.branding_footer_text || '',
branding_watermark_enabled: settingsObject.branding_watermark_enabled || false,
theme_config: settingsObject.theme_config || null
};
res.json(publicSettings);
} catch (error) {
console.error('Public settings fetch error:', error);
res.status(500).json({ error: 'Failed to fetch settings' });
}
});
module.exports = router;