Commit Graph

8 Commits

Author SHA1 Message Date
da8c6b0542 feat(02-03): create dashboard template with job listing table
- Created templates/provider-dashboard.php with:
  - User role check (ddhh_provider)
  - WP_Query for current user's job_offer posts
  - Table display with German column headings
  - Status badges (Veröffentlicht/Ausstehend/Entwurf)
  - Edit and View action links
  - Empty state message
  - Responsive CSS styling

- Created includes/class-dashboard.php with:
  - Template loader method
  - Shortcode registration [ddhh_provider_dashboard]
  - Output buffering for shortcode content

Dashboard queries only current user's posts with proper capability checking.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 19:20:42 +09:00
6e281b2e5a feat(02-01): integrate Formidable class with plugin
- Added class-formidable.php to autoload in main plugin file
- Hooked setup_registration_hooks() to init action
- Added missing class-roles.php and class-acf-fields.php to autoload
- Ensures Formidable integration runs after Formidable Forms loads

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 19:19:13 +09:00
39afa95114 feat(02-01): create Formidable registration form with auto-login
- Created DDHH_JM_Formidable class with registration form setup
- Programmatic form creation with 5 German-labeled fields
- Email uniqueness validation enforced
- Auto-login after successful registration
- ddhh_provider role assignment on user creation
- Organization name stored as user meta (ddhh_org_name)
- Duplicate submission prevention via email_exists() check
- Password validation (min 8 chars, confirmation match)
- Username generation from email prefix with uniqueness check

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 19:19:02 +09:00
c8fdf39f37 feat(01-03): register ACF field group for job_offer metadata
- Add DDHH_JM_ACF_Fields class with register_fields() method
- Field group 'Job Details' for post_type job_offer
- 6 fields: job_location (text, required), job_type (select, required),
  job_deadline (date_picker), job_contact_email (email, required),
  job_logo (image), job_deactivation_reason (textarea, conditional)
- German labels: Standort, Art, Bewerbungsfrist, Kontakt-E-Mail, Logo
- Logo returns ID for media library integration
- Deactivation reason field shows only when status != publish
- Hooked to 'acf/init' action
2026-01-14 19:01:25 +09:00
79b13895fc feat(01-03): register ddhh_provider role with restricted capabilities
- Add DDHH_JM_Roles class with add_roles() and remove_roles() methods
- Role 'ddhh_provider' (Anbieter) can edit/delete own job_offers only
- Jobs go to pending status (publish_job_offers: false)
- No access to regular posts/pages (edit_posts/edit_pages: false)
- Can upload files for logos
- Integrated with Activator and Deactivator hooks
2026-01-14 19:00:50 +09:00
693974b561 feat(01-02): register job_offer CPT with ownership-enforced capabilities
- Register job_offer custom post type with German labels
- Custom capability_type 'job_offer' prevents access to regular posts
- map_meta_cap filter enforces per-post ownership
- Elementor support via show_in_rest
- Menu icon: dashicons-businessperson at position 5
- Supports: title, editor, author, thumbnail
- Archive slug: jobangebote
- Custom capabilities prevent providers from editing others' posts

Tasks completed:
- Task 1: Register job_offer custom post type
- Task 2: Add capability mapping filter for ownership enforcement

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 18:57:29 +09:00
7722848ef9 chore(01-02): add prerequisite plugin structure
- Create main singleton class
- Create activator with version checks
- Create deactivator with rewrite flush
- Update main file to include core classes

This is a blocking fix (Rule 3) - Plan 01-01 was not completed but
these files are required for Plan 01-02 to execute.
2026-01-14 18:56:38 +09:00
2471c7f7e8 feat(01-01): create main plugin class with activation/deactivation
- Add main singleton class DDHH_JM_Job_Manager
- Implement activation handler with WP/PHP version checks
- Implement deactivation handler with rewrite flush
- Use transient-based rewrite flush to avoid multiple flushes
- Add comprehensive security checks and documentation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 18:56:02 +09:00