Fix brand theme application and add comprehensive translations

- Fixed theme not being reflected on gallery and admin login pages
- Created GlobalThemeProvider to apply themes globally
- Updated gallery and admin login pages to use dynamic CSS variables
- Added complete translations for all admin sections in English and German:
  - Notifications management
  - Event view and creation
  - Photo upload functionality
  - Category management
  - Archive page view
  - Analytics dashboard
  - Branding and theme settings
  - System settings
  - CMS page management
  - Email configuration
- Fixed admin photo management display issues
- Fixed photo upload category assignment
- Added password reset functionality for galleries
- Improved error handling and user feedback

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-07-08 17:07:40 +02:00
parent 2012b0bab9
commit d594d00227
79 changed files with 4570 additions and 329 deletions
@@ -0,0 +1,15 @@
exports.up = async function(knex) {
// Add read_at column to activity_logs table
const hasReadAt = await knex.schema.hasColumn('activity_logs', 'read_at');
if (!hasReadAt) {
await knex.schema.table('activity_logs', (table) => {
table.datetime('read_at').nullable();
});
}
};
exports.down = async function(knex) {
await knex.schema.table('activity_logs', (table) => {
table.dropColumn('read_at');
});
};
+7 -8
View File
@@ -28,7 +28,7 @@ async function runMigration(filename) {
if (migration.up) {
console.log(`Running migration: ${filename}`);
await migration.up();
await migration.up(db);
await db('migrations').insert({ filename });
console.log(`Migration ${filename} completed`);
}
@@ -39,13 +39,12 @@ async function runMigrations() {
try {
console.log('Starting database migrations...');
// First run the init.js if it exists
const initPath = path.join(__dirname, 'init.js');
if (require.resolve(initPath)) {
console.log('Running initial setup...');
require(initPath);
// Wait a bit for init to complete
await new Promise(resolve => setTimeout(resolve, 2000));
// First run the init.js if it exists but only if migrations table doesn't exist
const tableExists = await db.schema.hasTable('migrations');
if (!tableExists) {
const { initializeDatabase } = require('../src/database/db');
console.log('Running initial database setup...');
await initializeDatabase();
}
// Create migrations table