'booking', 'name' => esc_html__('Booking', 'daytidy'), ]; } public function on(): void { // Booking Post Type (new Booking())->init(); // Offering Booking (new OfferingBooking())->on(); // Validation add_filter('DayTidy/F__DayTidy/Menu/Menus/Settings/AjaxHandlerModuleOptions__validate/results', [$this, 'validateForm'], 10, 2); // Backend Menu add_filter('DayTidy/F__DayTidy/Menus__all/menus', function ($menus) { $menus[] = new Bookings(); $menus[] = new Reports(); return $menus; }); // Payment (new Payment())->init(); // Manual Booking new ManualBookingPreviewAjaxHandler(); new ManualBookingCreateAjaxHandler(); new SchedulePickerAjaxHandler(); new ReschedulePreviewAjaxHandler(); new RescheduleSaveAjaxHandler(); // Booking Records (new Records())->init(); // Booking Fees (new Fees())->init(); // Customer Portal (new CustomerPortal())->init(); // Calendar Feeds (new CalendarModule())->init(); } /** * Validates configuration submitted by option form * * @param mixed[] $data */ public function validateForm(AjaxValidationResult $results, array $data): AjaxValidationResult { // Not this Module if (Arr::isset($data, 'module') && $data['module'] !== $this->key) return $results; // Validate New Config return (new Settings($data))->validate($results); } public function optionForm(?FormGenerator $generator = null): string { // Config $values = Config::module('booking'); // Initialize Form $form = new Settings($values); // Set Generator if ($generator) $form->generator($generator); // Display Form return $form->fields($form->inputs())->display(); } }