[Back] <?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class Latepoint_Bricks_Widget_Book_Form extends \Bricks\Element {
public $category = 'latepoint';
public $name = 'latepoint_book_form';
public $icon = 'ti-layout-media-right-alt';
public $scripts = ['init_booking_form'];
public function get_label(): string {
return esc_html__( 'Booking Form', 'latepoint' );
}
public function enqueue_scripts() {
if ( bricks_is_builder() ) {
wp_enqueue_script(
'bricks_widget_book_form_script',
LATEPOINT_PLUGIN_URL . 'blocks/assets/javascripts/bricks-widget-book-form.js',
[ 'jquery' ],
LATEPOINT_VERSION
);
}
}
public function set_control_groups() {
$this->control_groups['general'] = array(
'title' => esc_html__( 'Booking Form Settings', 'latepoint' ),
'tab' => 'content',
);
$this->control_groups['step_settings'] = array(
'title' => esc_html__( 'Step Settings', 'latepoint' ),
'tab' => 'content',
);
$this->control_groups['other_settings'] = array(
'title' => esc_html__( 'Other Settings', 'latepoint' ),
'tab' => 'content',
);
}
// Set builder controls
public function set_controls() {
$this->controls['_width']['default'] = '100%';
$this->controls['hide_summary'] = array(
'tab' => 'content',
'group' => 'general',
'label' => esc_html__( 'Hide Summary Panel', 'latepoint' ),
'type' => 'checkbox',
'inline' => true,
);
$this->controls['hide_side_panel'] = array(
'tab' => 'content',
'group' => 'general',
'label' => esc_html__( 'Hide Side Panel', 'latepoint' ),
'type' => 'checkbox',
'inline' => true,
);
#step settings group
$this->controls['selected_agent'] = [
'tab' => 'content',
'group' => 'step_settings',
'label' => esc_html__( 'Preselected Agent', 'latepoint' ),
'type' => 'select',
'options' => OsBricksHelper::get_data('selected_agents'),
'placeholder' => esc_html__( 'Preselected Agent', 'latepoint' ),
'searchable' => true,
'clearable' => true,
];
$this->controls['selected_service'] = [
'tab' => 'content',
'group' => 'step_settings',
'label' => esc_html__( 'Preselected Service', 'latepoint' ),
'type' => 'select',
'options' => OsBricksHelper::get_data('selected_services'),
'placeholder' => esc_html__( 'Preselected Service', 'latepoint' ),
'searchable' => true,
'clearable' => true,
];
$this->controls['selected_service_category'] = [
'tab' => 'content',
'group' => 'step_settings',
'label' => esc_html__( 'Preselected Service Category', 'latepoint' ),
'type' => 'select',
'options' => OsBricksHelper::get_data('selected_service_categories'),
'placeholder' => esc_html__( 'Preselected Service Category', 'latepoint' ),
'searchable' => true,
'clearable' => true,
];
$this->controls['selected_location'] = [
'tab' => 'content',
'group' => 'step_settings',
'label' => esc_html__( 'Preselected Location', 'latepoint' ),
'type' => 'select',
'options' => OsBricksHelper::get_data('selected_locations'),
'placeholder' => esc_html__( 'Preselected Location', 'latepoint' ),
'searchable' => true,
'clearable' => true,
];
$this->controls['selected_start_date'] = [
'tab' => 'content',
'group' => 'step_settings',
'label' => esc_html__( 'Preselected Booking Start Date', 'latepoint' ),
'type' => 'datepicker',
'inline' => true,
'options' => [
'enableTime' => false,
'time_24hr' => true
]
];
$this->controls['selected_start_time'] = [
'tab' => 'content',
'group' => 'step_settings',
'label' => esc_html__( 'Preselected Booking Start Time', 'latepoint' ),
'type' => 'datepicker',
'inline' => true,
'options' => [
'enableTime' => true,
'time_24hr' => true,
'noCalendar' => true
]
];
$this->controls['selected_duration'] = [
'tab' => 'content',
'group' => 'step_settings',
'label' => esc_html__( 'Preselected Duration', 'latepoint' ),
'type' => 'number',
'min' => 0,
'inline' => true,
];
$this->controls['selected_total_attendees'] = [
'tab' => 'content',
'group' => 'step_settings',
'label' => esc_html__( 'Preselected Total Attendees', 'latepoint' ),
'type' => 'number',
'min' => 0,
'inline' => true,
];
#other settings
$this->controls['source_id'] = [
'tab' => 'content',
'group' => 'other_settings',
'label' => esc_html__( 'Source ID', 'latepoint' ),
'type' => 'number',
'min' => 0,
'inline' => true,
];
$this->controls['calendar_start_date'] = [
'tab' => 'content',
'group' => 'other_settings',
'label' => esc_html__( 'Calendar Start Date', 'latepoint' ),
'type' => 'datepicker',
'inline' => true,
'options' => [
'enableTime' => false,
'time_24hr' => true
]
];
$this->controls['show_services'] = [
'tab' => 'content',
'group' => 'other_settings',
'label' => esc_html__( 'Show Services', 'latepoint' ),
'type' => 'select',
'options' => OsBricksHelper::get_data('services'),
'placeholder' => esc_html__( 'Show Services', 'latepoint' ),
'multiple' => true,
'searchable' => true,
'clearable' => true,
];
$this->controls['show_service_categories'] = [
'tab' => 'content',
'group' => 'other_settings',
'label' => esc_html__( 'Show Service Categories', 'latepoint' ),
'type' => 'select',
'options' => OsBricksHelper::get_data('service_categories'),
'placeholder' => esc_html__( 'Show Service Categories', 'latepoint' ),
'multiple' => true,
'searchable' => true,
'clearable' => true,
];
$this->controls['show_agents'] = [
'tab' => 'content',
'group' => 'other_settings',
'label' => esc_html__( 'Show Agents', 'latepoint' ),
'type' => 'select',
'options' => OsBricksHelper::get_data('agents'),
'placeholder' => esc_html__( 'Show Agents', 'latepoint' ),
'multiple' => true,
'searchable' => true,
'clearable' => true,
];
$this->controls['show_locations'] = [
'tab' => 'content',
'group' => 'other_settings',
'label' => esc_html__( 'Show Locations', 'latepoint' ),
'type' => 'select',
'options' => OsBricksHelper::get_data('locations'),
'placeholder' => esc_html__( 'Show Locations', 'latepoint' ),
'multiple' => true,
'searchable' => true,
'clearable' => true,
];
}
// Render element HTML
public function render() {
$allowed_params = [
'hide_summary',
'hide_side_panel',
'selected_agent',
'selected_service',
'selected_service_category',
'selected_location',
'selected_start_date',
'selected_start_time',
'selected_duration',
'selected_total_attendees',
'source_id',
'calendar_start_date',
'show_services',
'show_service_categories',
'show_agents',
'show_locations',
];
$params = OsBlockHelper::attributes_to_data_params($this->settings, $allowed_params);
$output = "<div {$this->render_attributes( '_root' )}>";
$output .= do_shortcode('[latepoint_book_form ' . $params . ']');
$output .= '</div>';
echo $output;
}
}