name = esc_html__( 'Rating', 'forminator' ); $required = __( 'This field is required. Please select a rating.', 'forminator' ); self::$default_required_messages[ $this->type ] = $required; } /** * Field defaults * * @return array * @since 1.32.0 */ public function defaults(): array { return array( 'validation' => false, 'field_label' => esc_html__( 'Rating', 'forminator' ), 'max_rating' => 5, 'default_value' => '', 'suffix' => true, 'icon' => 'star', 'size' => 'md', ); } /** * Autofill Setting * * @param array $settings Settings. * * @return array * @since 1.32.0 */ public function autofill_settings( $settings = array() ): array { return array(); } /** * Field front-end markup * * @param array $field Field. * @param Forminator_Render_Form $views_obj Forminator_Render_Form object. * @param array|null $draft_value Draft value(s). * * @return string * @since 1.32 */ public function markup( $field, $views_obj, $draft_value = array() ): string { $this->field = $field; $name = self::get_property( 'element_id', $field ); $id = self::get_field_id( $name ); $required = self::get_property( 'required', $field, false ); $label = self::get_property( 'field_label', $field ); $description = self::get_property( 'description', $field ); $icon = self::get_property( 'icon', $field, 'star' ); $size = self::get_property( 'size', $field, 'md' ); $max_rating = self::get_property( 'max_rating', $field, 5 ); $suffix = self::get_property( 'suffix', $field, true ); $settings = $views_obj->model->settings; $descr_position = self::get_description_position( $field, $settings ); $maximum_rating = max( 0, min( (int) $max_rating, 50 ) ); $default_value = self::get_property( 'default_value', $field, '' ); $safe_default = 0; if ( '' !== $default_value && is_numeric( $default_value ) ) { $parsed_default = (int) $default_value; if ( $parsed_default >= 1 && $parsed_default <= $maximum_rating ) { $safe_default = $parsed_default; } } $value = (int) self::get_post_data( $name, $safe_default ); if ( isset( $draft_value['value'] ) ) { $rating_value = explode( '/', $draft_value['value'] )[0] ?? 0; $value = esc_html( $rating_value ); } $attributes = array( 'name' => $name, 'id' => $id, 'class' => 'forminator-rating', 'aria-errormessage' => $id . '-error', 'data-type' => $icon, 'data-size' => $size, 'data-suffix' => $suffix ? 'true' : 'false', ); if ( ! empty( $description ) ) { $attributes['aria-describedby'] = $id . '-description'; } $options = array( array( 'value' => 0, 'label' => 0, 'disabled' => true, ), ); for ( $rating = 1; $rating <= $maximum_rating; $rating++ ) { $options[] = array( 'value' => $rating, 'label' => $rating, 'disabled' => false, ); } $html = '