- New Umzugsliste_Test_Email class with test data generator covering all
fields: addresses, 7 rooms with items, all additional work sections, sonstiges
- Admin page under Moving List > Test Email with inline preview iframe
and Send Test Email button (manage_options capability)
- Replace Step 1 dev fill button with Fill All that populates every field
across all 9 steps (furniture, additional work, sonstiges)
- Fix getFieldVal crash when select has no selection (selectedIndex=-1)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Track highestStep so navigating backward preserves completed dots and
allows clicking forward to any previously visited step. Add [umzugsliste
lang="de|en"] shortcode attribute that switches locale via
switch_to_locale() for per-page language control.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename day/month/year form fields to umzug_day/umzug_month/umzug_year
to avoid conflict with WordPress reserved public query variables that
caused a 404 on form POST
- Move form handler instantiation to init_hooks() so handle_submission
registers on the init action before it fires
- Add standalone template fallback: detect [umzugsliste] shortcode in
page content when form_page_id option is not set
- Add submission details meta box to CPT entries showing addresses,
furniture, additional work, and status
- Add German translations for all new admin meta box strings
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add standalone form page template that bypasses the theme, with admin
setting and auto-creation on plugin activation. Fix reCAPTCHA v3 double
submission, remove jQuery dependency, extend localized JS strings, and
overhaul form CSS/JS. Update milestone audit to PASSED (9/9, 10/10, 5/5).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Update text domain from 'umzugsliste' to 'siegel-umzugsliste' in plugin header
- Add siegel_umzugsliste_load_textdomain() function hooked on init priority 1
- Add change_locale hook to reload text domain (workaround for WP core bug #39210)
- Text domain loading enables translation file support in languages/ directory
- Settings class with singleton pattern
- Registered 5 settings: receiver_email, captcha_provider, captcha_site_key, captcha_secret_key, thankyou_url
- Proper sanitization callbacks for each setting type
- Helper method get_option() for clean API access
- Integrated with admin menu structure
- CPT init hook was being added from within parent init hook
- Changed to call register_post_type() directly from main init
- Removed redundant hook from CPT constructor
- Fixes CPT not registering on plugin activation
- WordPress plugin header with proper metadata
- Plugin version constants and paths
- Main Umzugsliste class with singleton pattern
- Activation/deactivation hooks with flush_rewrite_rules
- Autoloader for includes/ directory
- Init hook to initialize plugin components