File "class-evf-field-textarea.php"
Full Path: /home/rattkxnv/byattorney.com/wp-content/plugins/everest-forms/includes/fields/class-evf-field-textarea.php
File size: 7.64 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Textarea field.
*
* @package EverestForms\Fields
* @since 1.0.0
*/
defined('ABSPATH') || exit;
/**
* EVF_Field_Textarea class.
*/
class EVF_Field_Textarea extends EVF_Form_Fields
{
/**
* Constructor.
*/
public function __construct()
{
$this->name = esc_html__('Paragraph Text', 'everest-forms');
$this->type = 'textarea';
$this->icon = 'evf-icon evf-icon-paragraph';
$this->order = 40;
$this->group = 'general';
$this->settings = array(
'basic-options' => array(
'field_options' => array(
'label',
'meta',
'description',
'required',
'required_field_message_setting',
'required_field_message',
'readonly',
),
),
'advanced-options' => array(
'field_options' => array(
'size',
'placeholder',
'label_hide',
'limit_length',
'min_length',
'default_value',
'css',
),
),
);
parent::__construct();
}
/**
* Hook in tabs.
*/
public function init_hooks()
{
add_action('everest_forms_shortcode_scripts', array($this, 'load_assets'));
}
/**
* Limit length field option.
*
* @param array $field Field settings.
*/
public function limit_length($field)
{
// Limit length.
$args = array(
'slug' => 'limit_enabled',
'content' => $this->field_element(
'toggle',
$field,
array(
'slug' => 'limit_enabled',
'value' => isset($field['limit_enabled']),
'desc' => esc_html__('Limit Length', 'everest-forms'),
'tooltip' => esc_html__('Check this option to specify maximum text length by characters or word count.', 'everest-forms'),
),
false
),
);
$this->field_element('row', $field, $args);
// Limit controls.
$count = $this->field_element(
'text',
$field,
array(
'type' => 'number',
'class' => 'small-text',
'slug' => 'limit_count',
'attrs' => array(
'min' => 1,
'step' => 1,
'pattern' => '[0-9]',
),
'value' => !empty($field['limit_count']) ? absint($field['limit_count']) : 1,
),
false
);
$mode = $this->field_element(
'select',
$field,
array(
'slug' => 'limit_mode',
'class' => 'limit-select',
'value' => !empty($field['limit_mode']) ? esc_attr($field['limit_mode']) : 'characters',
'options' => array(
'characters' => esc_html__('Characters', 'everest-forms'),
'words' => esc_html__('Words Count', 'everest-forms'),
),
),
false
);
$args = array(
'slug' => 'limit_controls',
'class' => !isset($field['limit_enabled']) ? 'everest-forms-hidden' : '',
'content' => $count . $mode,
);
$this->field_element('row', $field, $args);
}
/**
* Minimum Length length field option.
*
* @param array $field Field settings.
*/
public function min_length($field)
{
// Minimum length.
$args = array(
'slug' => 'min_length_enabled',
'content' => $this->field_element(
'toggle',
$field,
array(
'slug' => 'min_length_enabled',
'value' => isset($field['min_length_enabled']),
'desc' => esc_html__('Minimum Length', 'everest-forms'),
'tooltip' => esc_html__('Check this option to specify minimum text length by characters or word count.', 'everest-forms'),
),
false
),
);
$this->field_element('row', $field, $args);
// Minimum length controls.
$count = $this->field_element(
'text',
$field,
array(
'type' => 'number',
'class' => 'small-text',
'slug' => 'min_length_count',
'attrs' => array(
'min' => 1,
'step' => 1,
'pattern' => '[0-9]',
),
'value' => !empty($field['min_length_count']) ? absint($field['min_length_count']) : 1,
),
false
);
$mode = $this->field_element(
'select',
$field,
array(
'slug' => 'min_length_mode',
'class' => 'min-length-select',
'value' => !empty($field['min_length_mode']) ? esc_attr($field['min_length_mode']) : 'characters',
'options' => array(
'characters' => esc_html__('Characters', 'everest-forms'),
'words' => esc_html__('Words Count', 'everest-forms'),
),
),
false
);
$args = array(
'slug' => 'min_length_controls',
'class' => !isset($field['min_length_enabled']) ? 'everest-forms-hidden' : '',
'content' => $count . $mode,
);
$this->field_element('row', $field, $args);
}
/**
* Enqueue shortcode scripts.
*
* @param array $atts Shortcode Attributes.
*/
public function load_assets($atts)
{
$form_id = isset($atts['id']) ? wp_unslash($atts['id']) : ''; // WPCS: CSRF ok, input var ok, sanitization ok.
$form_obj = evf()->form->get($form_id);
$form_data = !empty($form_obj->post_content) ? evf_decode($form_obj->post_content) : '';
// Leave only fields with limit.
if (!empty($form_data['form_fields'])) {
$form_fields = array_filter($form_data['form_fields'], array($this, 'field_is_limit'));
if (count($form_fields)) {
wp_enqueue_script('everest-forms-text-limit');
}
}
}
/**
* Field preview inside the builder.
*
* @since 1.0.0
*
* @param array $field Field data and settings.
*/
public function field_preview($field)
{
$placeholder = !empty($field['placeholder']) ? esc_attr($field['placeholder']) : '';
// Label.
$this->field_preview_option('label', $field);
// Primary input.
echo '<textarea placeholder="' . esc_attr($placeholder) . '" class="widefat" disabled></textarea>';
// Description.
$this->field_preview_option('description', $field);
}
/**
* Field display on the form front-end.
*
* @since 1.0.0
*
* @param array $field Field Data.
* @param array $field_atts Field attributes.
* @param array $form_data All Form Data.
*/
public function field_display($field, $field_atts, $form_data)
{
// Define data.
$value = '';
$primary = $field['properties']['inputs']['primary'];
if (isset($primary['attr']['value'])) {
$value = evf_sanitize_textarea_field($primary['attr']['value']);
unset($primary['attr']['value']);
}
// Limit length.
if (isset($field['limit_enabled'])) {
$limit_count = isset($field['limit_count']) ? absint($field['limit_count']) : 0;
$limit_mode = isset($field['limit_mode']) ? sanitize_key($field['limit_mode']) : 'characters';
$primary['data']['form-id'] = $form_data['id'];
$primary['data']['field-id'] = $field['id'];
if ('characters' === $limit_mode) {
$primary['class'][] = 'everest-forms-limit-characters-enabled';
$primary['attr']['maxlength'] = $limit_count;
$primary['data']['text-limit'] = $limit_count;
} else {
$primary['class'][] = 'everest-forms-limit-words-enabled';
$primary['data']['text-limit'] = $limit_count;
}
}
// Minimum length.
if (isset($field['min_length_enabled'])) {
$min_length_count = isset($field['min_length_count']) ? absint($field['min_length_count']) : 0;
$min_length_mode = isset($field['min_length_mode']) ? sanitize_key($field['min_length_mode']) : 'characters';
$primary['data']['form-id'] = $form_data['id'];
$primary['data']['field-id'] = $field['id'];
if ('characters' === $min_length_mode) {
$primary['class'][] = 'everest-forms-min-characters-length-enabled';
$primary['attr']['minlength'] = $min_length_count;
$primary['data']['text-min-length'] = $min_length_count;
} else {
$primary['class'][] = 'everest-forms-min-words-length-enabled';
$primary['data']['text-min-length'] = $min_length_count;
}
}
// Primary field.
printf(
'<textarea %s %s >%s</textarea>',
evf_html_attributes($primary['id'], $primary['class'], $primary['data'], $primary['attr']),
esc_attr($primary['required']),
esc_html($value)
);
}
}