start_controls_section( 'content_section', [ 'label' => __( 'Upcoming Events Settings', 'agenticdaisy-calendar' ), 'tab' => Controls_Manager::TAB_CONTENT, ] ); $this->add_control( 'number_of_events', [ 'label' => __( 'Number of Events', 'agenticdaisy-calendar' ), 'type' => Controls_Manager::NUMBER, 'min' => 1, 'max' => 50, 'default' => 5, ] ); $this->add_control( 'category', [ 'label' => __( 'Category ID', 'agenticdaisy-calendar' ), 'type' => Controls_Manager::TEXT, 'default' => '', 'description' => __( 'Filter to a specific category ID. Leave empty for all.', 'agenticdaisy-calendar' ), ] ); $this->add_control( 'date_range', [ 'label' => __( 'Date Range (days)', 'agenticdaisy-calendar' ), 'type' => Controls_Manager::SELECT, 'default' => '30', 'options' => [ '7' => __( '7 days', 'agenticdaisy-calendar' ), '30' => __( '30 days', 'agenticdaisy-calendar' ), '90' => __( '90 days', 'agenticdaisy-calendar' ), '365' => __( '365 days', 'agenticdaisy-calendar' ), ], ] ); $this->add_control( 'show_date', [ 'label' => __( 'Show Date', 'agenticdaisy-calendar' ), 'type' => Controls_Manager::SWITCHER, 'label_on' => __( 'Yes', 'agenticdaisy-calendar' ), 'label_off' => __( 'No', 'agenticdaisy-calendar' ), 'return_value' => 'yes', 'default' => 'yes', ] ); $this->add_control( 'show_time', [ 'label' => __( 'Show Time', 'agenticdaisy-calendar' ), 'type' => Controls_Manager::SWITCHER, 'label_on' => __( 'Yes', 'agenticdaisy-calendar' ), 'label_off' => __( 'No', 'agenticdaisy-calendar' ), 'return_value' => 'yes', 'default' => 'yes', ] ); $this->add_control( 'show_location', [ 'label' => __( 'Show Location', 'agenticdaisy-calendar' ), 'type' => Controls_Manager::SWITCHER, 'label_on' => __( 'Yes', 'agenticdaisy-calendar' ), 'label_off' => __( 'No', 'agenticdaisy-calendar' ), 'return_value' => 'yes', 'default' => '', ] ); $this->add_control( 'show_description', [ 'label' => __( 'Show Description', 'agenticdaisy-calendar' ), 'type' => Controls_Manager::SWITCHER, 'label_on' => __( 'Yes', 'agenticdaisy-calendar' ), 'label_off' => __( 'No', 'agenticdaisy-calendar' ), 'return_value' => 'yes', 'default' => '', ] ); $this->add_control( 'layout', [ 'label' => __( 'Layout', 'agenticdaisy-calendar' ), 'type' => Controls_Manager::SELECT, 'default' => 'list', 'options' => [ 'list' => __( 'List', 'agenticdaisy-calendar' ), 'compact' => __( 'Compact', 'agenticdaisy-calendar' ), ], ] ); $this->add_control( 'users', [ 'label' => __( 'Users', 'agenticdaisy-calendar' ), 'type' => Controls_Manager::TEXT, 'default' => '', 'description' => __( 'Comma-separated user logins to filter. Leave empty for all.', 'agenticdaisy-calendar' ), ] ); $this->end_controls_section(); } protected function render(): void { $settings = $this->get_settings_for_display(); $raw_num = $settings['number_of_events'] ?? 0; $raw_category = $settings['category'] ?? ''; $raw_range = $settings['date_range'] ?? ''; $raw_layout = $settings['layout'] ?? ''; $raw_users = $settings['users'] ?? ''; $num_events = is_numeric( $raw_num ) && (int) $raw_num > 0 ? absint( (int) $raw_num ) : 5; $category = is_string( $raw_category ) && $raw_category !== '' ? sanitize_text_field( $raw_category ) : ''; $date_range = is_string( $raw_range ) && $raw_range !== '' ? sanitize_text_field( $raw_range ) : '30'; $show_date = ( $settings['show_date'] ?? 'yes' ) === 'yes' ? 'true' : 'false'; $show_time = ( $settings['show_time'] ?? 'yes' ) === 'yes' ? 'true' : 'false'; $show_location = ( $settings['show_location'] ?? '' ) === 'yes' ? 'true' : 'false'; $show_description = ( $settings['show_description'] ?? '' ) === 'yes' ? 'true' : 'false'; $layout = is_string( $raw_layout ) && $raw_layout !== '' ? sanitize_text_field( $raw_layout ) : 'list'; $users = is_string( $raw_users ) && $raw_users !== '' ? sanitize_text_field( $raw_users ) : ''; printf( '
', absint( $num_events ), esc_attr( $category ), esc_attr( $date_range ), esc_attr( $show_date ), esc_attr( $show_time ), esc_attr( $show_location ), esc_attr( $show_description ), esc_attr( $layout ), esc_attr( $users ) ); } }