<?php
/**
 * Landofcoder
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Landofcoder.com license that is
 * available through the world-wide-web at this URL:
 * https://landofcoder.com/terms
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade this extension to newer
 * version in the future.
 *
 * @category   Landofcoder
 * @package    Lof_Formbuilder
 * @copyright  Copyright (c) 2021 Landofcoder (https://www.landofcoder.com/)
 * @license    https://landofcoder.com/terms
 */

use Lof\Formbuilder\Helper\Fields;

$helper      = $this->helper(Fields::class);
$dataHelper       = $this->helper(Lof\Formbuilder\Helper\Data::class);
$form        = $block->getForm();
$formData   = $this->getData('form_data');
$field       = $this->getData('field_data');
$fieldType  = $field['field_type'];
$label       = $block->filterMessage($field['label']);
$placeholder = isset($field['placeholder']) ? $block->filterMessage($field['placeholder']) : '';
$options     = $field['field_options'];
$inlineCss   = $field['inline_css'] ?? '';
$cssClass   = isset($field['css_class']) ? ($block->escapeHtmlAttr($field['css_class']).' ') : '';
$required    = $field['required'];
$cid              = $dataHelper->getFieldId($field);
$frameWorkCss = '';
if (isset($field['frame_work_css'])) {
    $frameWorkCss      = $field['frame_work_css'];
}
$fieldName        = $helper->getFieldPrefix() . $cid . $form->getId();
$fieldId          = $fieldName.uniqid();
$availableFields  = $helper->getAvailableFields();
$fieldValidate    = $availableFields[$fieldType] ?? '';
$validates         = $fieldValidate;
$fieldHelp        = isset($options['description']) ? $block->filterMessage($options['description']) : '';
$validation        = $options['validation'] ?? '';

$colorLabel       = isset($options['color_label']) ? 'color:'.$options['color_label'].';' : '';
$colorText        = isset($options['color_text']) ? 'color:'.$options['color_text'].';' : '';
$colorDescription = isset($options['color_description']) ? 'color:'.$options['color_description'].';' : '';
$backgroundColor  = isset($options['background_color']) ? 'background-color:'.$options['background_color'].';' : '';

$borderWidth      = isset($options['border_width']) ? 'border-width:'.(int)$options['border_width'].'px;' : '';
$borderRadius     = isset($options['border_radius']) ? 'border-radius:'.(int)$options['border_radius'].'px;' : '';
$borderColor      = isset($options['border_color']) ? 'border-color:'.$options['border_color'].';' : '';
$borderStyle      = isset($options['border_style']) ? 'border-style:'.$options['border_style'].';' : '';

$fontSize         = isset($options['font_size']) ? 'font-size:'.(int)$options['font_size'].'px;' : '';
$fontStyle        = isset($options['font_style']) ? 'font-style:'.$options['font_style'].';' : '';
$fontWeight       = (isset($options['font_weight']) && $options['font_weight']) ? 'font-weight:'.$options['font_weight'].';' : '';
$defaultValue      = isset($field['default_value']) ? $block->filterMessage($field['default_value']) : '';
if ($formData && isset($formData[$fieldName]) && $formData[$fieldName] != '') {
    $defaultValue = $formData[$fieldName];
}

if ($fieldValidate && is_array($fieldValidate)) {
    $validates = implode(" ", $fieldValidate);
}
$validates .= " ".$cssClass;
$size = isset($options['size']) ? "rf-size-".$options['size'] : '';
$style = '';
if ($field['fieldheight']) {
    $style = 'height:'.$field['fieldheight'].';';
}
if ($frameWorkCss != 'foundation') {
    $medium = 'col-sm-';
} elseif ($frameWorkCss == 'foundation') {
    $medium = 'columns medium-';
}
$type  = 'text';
if (isset($field['is_hidden_field'])) {
    $style = 'display:none;';
}
$attr = '';
if (isset($field['is_readonly'])) {
    $attr = 'readonly';
}
if ($style != '') {
    $style = 'style="' . $style .$colorText.$backgroundColor.$borderWidth.$borderRadius.$borderColor.$borderStyle.'"';
}

$labelCol = 12;
if (isset($field['fieldcol']) && $field['fieldcol']) {
    if ((int)$field['fieldcol'] < 12) {
        $labelCol = 12 - (int)$field['fieldcol'];
    }
}

?>
<div class="subtemplate-wrapper" style="<?= $inlineCss ?>">
    <div class="row">
        <?php if ($label && $label != "") { ?>
            <div class="input-box-label <?= $medium.$labelCol; ?>">
                <label for="<?= $fieldId; ?>" class="<?= (1 == $required) ? 'required' : ''; ?>" style="<?= $fontSize.$fontStyle.$fontWeight; ?><?= $colorLabel; ?>"><?= __($label); ?><?= (1 == $required) ? '<em>*</em>' : '';?></label>
            </div>
        <?php } ?>
        <div class="input-box <?= isset($field['fieldcol']) ? $medium.$field['fieldcol'] : $medium.'12'; ?>">
            <textarea <?= $style ?> name="<?= $fieldName; ?>" <?php if ($placeholder) {
                echo "placeholder='".$placeholder."'";
            } ?> id="<?= $fieldId; ?>" title="<?= $label; ?>" class="input-text <?= $validation; ?> <?= (1 == $required) ? 'required-entry' : ''; ?> <?= $validates; ?> <?= $size ?>" <?= (isset($options['minlength']) ? 'data-minlength="'.$options['minlength'].'"' : '') ?> <?= (isset($options['maxlength']) ? 'data-maxlength="'.$options['maxlength'].'"' : '') ?> <?= isset($options['min_max_length_units']) ? ' data-units="'.$options["min_max_length_units"].'"' : '' ?> <?= $attr; ?>><?= $block->escapeHtmlAttr($this->helper('Lof\Formbuilder\Helper\Data')->getPostValue($fieldName) ?: $defaultValue) ?></textarea>
            <?php
            if ($fieldHelp) { ?>
                <span class="help-block" style="<?= $colorDescription; ?>"><?= $fieldHelp; ?></span>
                <?php } ?>
            </div>
    </div>
</div>
