feat: Add comprehensive system enhancements

- Add version display above storage consumption in admin sidebar
- Fix storage consumption to stick to bottom of window using flexbox
- Add user upload settings to events (allow uploads, category selection)
- Enhance disk space tab to comprehensive system status view
- Add localized date formatting for German/English language support
- Remove quick actions from dashboard for cleaner interface
- Create user photo upload functionality for galleries
- Add database migration for user upload settings
- Update all TypeScript types and interfaces

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-07-08 22:47:04 +02:00
parent 69b56ed582
commit 12ba91952e
24 changed files with 1210 additions and 128 deletions
+12 -4
View File
@@ -19,7 +19,9 @@ router.post('/', adminAuth, [
body('password').isLength({ min: 6 }),
body('expiration_days').isInt({ min: 1, max: 365 }).optional(),
body('welcome_message').optional().trim(),
body('color_theme').optional().trim()
body('color_theme').optional().trim(),
body('allow_user_uploads').optional().isBoolean(),
body('upload_category_id').optional().isInt()
], async (req, res) => {
try {
const errors = validationResult(req);
@@ -36,7 +38,9 @@ router.post('/', adminAuth, [
password,
welcome_message = '',
color_theme = null,
expiration_days = 30
expiration_days = 30,
allow_user_uploads = false,
upload_category_id = null
} = req.body;
// Generate unique slug
@@ -79,7 +83,9 @@ router.post('/', adminAuth, [
color_theme,
share_link: shareLink,
expires_at: expires_at.toISOString(),
created_at: new Date().toISOString()
created_at: new Date().toISOString(),
allow_user_uploads,
upload_category_id
});
// Log activity
@@ -256,7 +262,9 @@ router.put('/:id', adminAuth, [
body('is_active').optional().isBoolean(),
body('expires_at').optional().isISO8601(),
body('welcome_message').optional().trim(),
body('color_theme').optional().trim()
body('color_theme').optional().trim(),
body('allow_user_uploads').optional().isBoolean(),
body('upload_category_id').optional().isInt()
], async (req, res) => {
try {
const errors = validationResult(req);