Replace mailto link with modal popup containing Formidable job application form. Modal stays open after submission to show success message.
Changes:
- Add modal popup with contact form on job detail pages
- Implement AJAX form submission to prevent page reload
- Auto-populate job_id field when modal opens
- Add field key compatibility for both job_id and job_id2
- Fix form ID comparison to use loose equality
- Keep modal open after submission to display success message
- Add modal styling and close functionality
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Improved JavaScript to use case-insensitive matching for select fields, so 'vollzeit' matches 'Vollzeit'. Also normalized all job_type values to lowercase when saving to ensure consistency.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Adds comprehensive job submission, editing, and deactivation functionality with proper form handling and permissions. Includes administrator capabilities for job_offer management and fixed dashboard navigation.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Added ddhhRedirectTriggered flag to ensure only one redirect
- Clear interval immediately when success message detected
- Removed MutationObserver which was causing duplicate events
- Simplified JavaScript to single interval-based check
- Changed from event listener to MutationObserver
- Watches for success message text to appear in form
- Monitors form DOM for changes and redirects when success appears
- More reliable than waiting for custom events
- Added set_registration_redirect() filter on frm_json_response
- Modifies Formidable's JSON response to include redirect_url
- Formidable JavaScript will then redirect to /anbieter-dashboard/
- Fixes registration redirect issue
- Registration form now redirects to /anbieter-dashboard/ after successful submission
- Configured via form options redirect_url setting
- Fixes missing redirect after registration
- Changed !== to != to allow type coercion
- Fixes registration not working due to string vs int comparison
- Added type debugging to help diagnose similar issues
- Changed FrmFormAction::create() to FrmFormActionsController::create_action()
- Updated class_exists checks to use FrmFormActionsController
- Fixes fatal error on plugin activation with modern Formidable Forms
- Discovered during provider flow testing (Plan 07-01)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add create_job_application_form() method with 4 fields:
- applicant_name (text, required)
- applicant_email (email, required, pre-filled for logged-in users)
- applicant_message (textarea, required)
- job_id (hidden)
Form title: "Jetzt bewerben"
Submit button: "Bewerbung absenden"
Success message: "Ihre Bewerbung wurde versendet. Der Anbieter wird sich bei Ihnen melden."
Added get_job_application_form_id() helper method
Registered form creation in setup_registration_hooks()
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add create_job_deactivation_form() method following established pattern from create_job_edit_form(). Form includes deactivation_reason textarea (required, German label) and hidden job_id field. Configure Update Post action to set post_status='draft' removing job from public view. Map deactivation_reason to ACF meta field 'job_deactivation_reason'. Add ownership validation hook validate_job_deactivation_ownership() following same pattern as validate_job_ownership() to prevent URL tampering. Submit button: "Stellenangebot deaktivieren". Success message: "Ihr Stellenangebot wurde deaktiviert." Redirect to /anbieter-dashboard/. Add get_job_deactivation_form_id() helper following established pattern.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add create_job_edit_form() method to programmatically create edit form
- Form uses 'job_edit' key and matches submission form fields exactly
- Configure Update Post action to update existing job_offer posts
- Add validate_job_ownership() method with frm_validate_entry hook
- Security: Validates job_id parameter, post_type, and post_author match
- Prevents URL parameter tampering by malicious providers
- Add get_job_edit_form_id() helper method
- Form pre-populates from post ID via URL parameter
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add create_job_submission_form() method to DDHH_JM_Formidable class
- Create Formidable form with key 'job_submission'
- Add 7 fields with German labels: title, description, location, type, deadline, email, logo
- Configure Create Post action: post_type='job_offer', status='pending'
- Map form fields to ACF fields: job_location, job_type, job_deadline, job_contact_email, job_logo
- Add get_job_submission_form_id() helper method
- Hook form creation into init action
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 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>