feat: complete photo gallery implementation with album management and lightbox viewer
- Added photo gallery carousel view (gallery.php) with all member albums - Implemented album detail view with responsive photo grid and lightbox - Created album creation/editing form with drag-and-drop photo uploads - Added backend processors for album CRUD operations and photo management - Implemented API endpoints for fetching and deleting photos - Added database migration for photo_albums and photos tables - Included comprehensive feature documentation with testing checklist - Updated .htaccess with URL rewrite rules for gallery routes - Added Gallery link to Members Area menu in header - Created upload directory structure (/assets/uploads/gallery/) - Implemented security: CSRF tokens, ownership verification, file validation - Added transaction safety with rollback on errors and cleanup - Features: Lightbox with keyboard navigation, drag-and-drop uploads, responsive design
This commit is contained in:
30
docs/migrations/003_create_photo_gallery_tables.sql
Normal file
30
docs/migrations/003_create_photo_gallery_tables.sql
Normal file
@@ -0,0 +1,30 @@
|
||||
-- Migration: Create photo gallery tables for member photo albums
|
||||
-- Date: 2025-12-05
|
||||
-- Purpose: Allow members to create albums and upload photos to share with the community
|
||||
|
||||
-- Create photo_albums table
|
||||
CREATE TABLE IF NOT EXISTS photo_albums (
|
||||
album_id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
user_id INT NOT NULL,
|
||||
title VARCHAR(255) NOT NULL,
|
||||
description TEXT,
|
||||
cover_image VARCHAR(255),
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE,
|
||||
INDEX idx_user_id (user_id),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
-- Create photos table
|
||||
CREATE TABLE IF NOT EXISTS photos (
|
||||
photo_id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
album_id INT NOT NULL,
|
||||
file_path VARCHAR(255) NOT NULL,
|
||||
caption VARCHAR(255),
|
||||
display_order INT DEFAULT 0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (album_id) REFERENCES photo_albums(album_id) ON DELETE CASCADE,
|
||||
INDEX idx_album_id (album_id),
|
||||
INDEX idx_display_order (display_order)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
Reference in New Issue
Block a user