JR ATS – Professional Identity Gallery Feature
Objective
Add a new feature inside the Employee Professional Identity system that allows employees to upload professional images/gallery items at the end of their public Professional Identity page.
The feature must be subscription-based and integrated with the current JR ATS subscription system.
Feature Name
Frontend Public Section
Professional Gallery
Employee Dashboard / Form Section
Manage Professional Gallery
Placement
Public Page
Display the Professional Gallery section at the bottom of the Professional Identity page.
Suggested order:
- Professional Identity Information
- Public CV (if enabled)
- Professional Gallery
Subscription Rules
Free Plan
- Gallery disabled
- Show upgrade message:
“Upgrade to Basic to unlock Professional Gallery.”
Optional:
- Allow only 1 image if needed later through settings
Basic Plan
Allow:
- Maximum 5 images
Purpose:
- Small professional showcase
Pro Plan
Allow:
- Maximum 20 images
Purpose:
- Full professional visual portfolio
Employee Dashboard Features
Inside
Add a new section:
Manage Professional Gallery
Features:
- Upload images
- Delete images
- Reorder images (drag & drop)
- Preview uploaded images
- Display usage counter
Examples:
- 3 / 5 Images Used
- 12 / 20 Images Used
Allowed File Types
- JPG
- JPEG
- PNG
- WEBP
Recommended Image Rules
- Max file size: 3MB per image
- Auto-generate thumbnails
- Use WordPress media handling functions
- Sanitize uploads properly
Public Gallery Design
Layout
- Responsive grid layout
- Modern professional style
- Rounded corners
- Light hover animation
- Consistent with JR ATS UI style
Suggested Behavior
- Click image → open lightbox/modal preview
- Lazy loading enabled
Database / Storage
Recommended:
- Store image attachment IDs in user meta
- Example:
jrats_professional_gallery
Use array structure:
[
attachment_id_1,
attachment_id_2,
attachment_id_3
]
Access Control
Gallery upload limits must be enforced using current JR ATS subscription system.
Suggested integration:
- SubscriptionGuards.php
- SubscriptionService.php
Create helper methods such as:
- canUploadProfessionalGallery()
- getProfessionalGalleryLimit()
Public Visibility Rules
Gallery only appears if:
- Employee enabled Professional Identity
- Employee has uploaded at least 1 image
- Current subscription allows gallery access
UX Enhancements
Free Users
Show upgrade CTA:
“Upgrade your Professional Identity with a visual portfolio.”
Basic Users
Show:
“Upgrade to Pro to unlock expanded gallery capacity.”
Future Expansion (prepare architecture)
Future-ready structure for:
- Cover image
- Video introduction
- Certifications gallery
- Project showcase
- Before/after layouts
- QR sharing
- Featured gallery image
Do NOT hardcode the system in a way that blocks future expansion.
Technical Requirements
- Follow JR ATS modular architecture
- No inline JS/CSS inside render methods
- Use standalone JS file if needed
- Use DI/container patterns
- No direct SQL inside shortcode render methods
- Follow existing Employee module architecture
- Use PRG-safe handling if forms are involved
- Use nonce validation and capability checks
- Follow current JR ATS coding conventions
Suggested File Structure
Possible implementation locations:
Employee Module:
- src/Modules/Employee/
- assets/js/
- assets/jrats.css
Potential additions:
- ProfessionalGalleryService.php
- ProfessionalGalleryHandler.php
- ProfessionalGalleryShortcode.php
Important
This feature is part of the Professional Identity system and must feel premium, modern, and LinkedIn-style — not like a basic WordPress gallery.