getAdvancedOption('min'); $max = $this->getAdvancedOption('max'); $cols = $this->getAdvancedOption('cols') ? ceil($this->getAdvancedOption('cols')) : 50; $rows = $this->getAdvancedOption('rows') ? ceil($this->getAdvancedOption('rows')) : 8; $value = $this->getDefaultValue(); $cssClass = 'regular-text acpt-textarea acpt-admin-meta-field-input'; if ($this->isLeadingField()) { $cssClass .= ' acpt-leading-field'; } if ($this->isChild()) { $field = ''; $field .= ''; $textarea = 'required().' id="'.Strings::esc_attr($this->getIdName()).'[value]" name="'. Strings::esc_attr($this->getIdName()).'[value]" class="'.$cssClass.'" rows="'.$rows.'" cols="'.$cols.'"'; } else { $field = ''; $textarea = 'required().' id="'.Strings::esc_attr($this->getIdName()).'" name="'. Strings::esc_attr($this->getIdName()).'" class="'.$cssClass.'" rows="'.$rows.'" cols="'.$cols.'"'; } $textarea .= $this->appendPatternMaxlengthAndMinlength($max, $min); $textarea .= $this->appendDataValidateAndLogicAttributes(); $textarea .= '>'; $textarea .= Strings::esc_attr($value).''; $textarea .= $this->characterCounter($value, $max, $min); $field .= (new AfterAndBeforeFieldGenerator())->generate($this->metaField, $textarea); return $this->renderField($field); } /** * @param mixed $value * @param mixed $max * @param mixed $min * @return string|null */ private function characterCounter($value = null, $max = null, $min = null) { if (empty($max) && empty($min)) { return null; } $css = ''; $strLen = (!empty($value)) ? strlen($value) : 0; if ((!empty($max) && $strLen >= $max) || $strLen < $min) { $css = 'danger'; } elseif (!empty($max) && $strLen >= $max-5) { $css = 'warning'; } return ''.(!empty($value && is_string($value)) ? strlen($value) : 0).'/'.($max ? $max : "∞").''; } }