Current File : /home/mdkeenpw/shafqattraders.com/wp-content/plugins/sureforms/inc/fields/textarea-markup.php |
<?php
/**
* Sureforms Textarea Markup Class file.
*
* @package sureforms.
* @since 0.0.1
*/
namespace SRFM\Inc\Fields;
use SRFM\Inc\Helper;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
/**
* Sureforms Textarea Markup Class.
*
* @since 0.0.1
*/
class Textarea_Markup extends Base {
/**
* Maximum length of text allowed for the textarea.
*
* @var string
* @since 0.0.2
*/
protected $max_length;
/**
* HTML attribute string for the maximum length.
*
* @var string
* @since 0.0.2
*/
protected $max_length_attr;
/**
* HTML string for displaying the maximum length in the UI.
*
* @var string
* @since 0.0.2
*/
protected $max_length_html;
/**
* Number of rows for the textarea.
*
* @var string
* @since 0.0.2
*/
protected $rows;
/**
* HTML attribute string for the number of rows.
*
* @var string
* @since 0.0.2
*/
protected $rows_attr;
/**
* Indicates whether the textarea is a rich text editor.
*
* @var bool
* @since 1.7.1
*/
protected $is_richtext;
/**
* Read-only attribute for the textarea field.
*
* @var bool
* @since 1.7.2
*/
protected $read_only;
/**
* Append random ID to the textarea for uniqueness.
*
* @var int
* @since 1.7.3
*/
protected $random_id;
/**
* Initialize the properties based on block attributes.
*
* @param array<mixed> $attributes Block attributes.
* @since 0.0.2
*/
public function __construct( $attributes ) {
$this->set_properties( $attributes );
$this->set_input_label( __( 'Textarea', 'sureforms' ) );
$this->set_error_msg( $attributes, 'srfm_textarea_block_required_text' );
$this->slug = 'textarea';
$this->max_length = $attributes['maxLength'] ?? '';
$this->rows = $attributes['rows'] ?? '';
$this->read_only = ! empty( trim( $this->default ) ) && $attributes['readOnly'];
// html attributes.
$this->max_length_attr = $this->max_length ? ' maxLength="' . $this->max_length . '" ' : '';
$this->rows_attr = $this->rows ? ' rows="' . $this->rows . '" ' : '';
$this->max_length_html = '' !== $this->max_length ? '0/' . $this->max_length : '';
$this->random_id = wp_rand( 1000, 9999 );
$this->set_unique_slug();
$this->set_field_name( $this->unique_slug );
$this->set_markup_properties( $this->input_label . '-' . $this->random_id );
$this->set_aria_described_by();
$this->set_label_as_placeholder( $this->input_label );
$this->is_richtext = $attributes['isRichText'] ?? false;
}
/**
* Render the sureforms textarea classic styling
*
* @since 0.0.2
* @return string|bool
*/
public function markup() {
$classes = [
'srfm-block-single',
'srfm-block',
'srfm-' . $this->slug . '-block',
'srf-' . $this->slug . '-' . $this->block_id . '-block',
$this->block_width,
$this->class_name,
$this->conditional_class,
$this->is_richtext ? 'srfm-richtext' : '',
$this->read_only ? 'srfm-read-only' : '',
];
$classes = Helper::join_strings( $classes );
$random_id = $this->unique_slug . '-' . $this->random_id;
ob_start(); ?>
<div data-block-id="<?php echo esc_attr( $this->block_id ); ?>" class="<?php echo esc_attr( $classes ); ?>">
<?php echo wp_kses_post( $this->label_markup ); ?>
<?php echo wp_kses_post( $this->help_markup ); ?>
<div class="srfm-block-wrap">
<textarea
class="srfm-input-common srfm-input-<?php echo esc_attr( $this->slug ); ?>"
name="<?php echo esc_attr( $this->field_name ); ?>"
id="<?php echo esc_attr( $random_id ); ?>"
<?php echo ! empty( $this->aria_described_by ) ? "aria-describedby='" . esc_attr( trim( $this->aria_described_by ) ) . "'" : ''; ?>
data-required="<?php echo esc_attr( $this->data_require_attr ); ?>" aria-required="<?php echo esc_attr( $this->data_require_attr ); ?>" <?php echo wp_kses_post( $this->max_length_attr . '' . $this->rows_attr ); ?> <?php echo wp_kses_post( $this->placeholder_attr ); ?>
<?php echo $this->is_richtext ? 'data-is-richtext="true"' : ''; ?>
<?php echo $this->read_only ? 'readonly' : ''; ?>
><?php echo esc_html( $this->default ); ?></textarea>
<?php if ( $this->is_richtext ) { ?>
<div class="quill-editor-container">
<div id="quill-<?php echo esc_attr( $random_id ); ?>"></div>
</div>
<?php } ?>
</div>
<div class="srfm-error-wrap">
<?php echo wp_kses_post( $this->error_msg_markup ); ?>
</div>
</div>
<?php
return ob_get_clean();
}
}