public function getInputHtml($field, $value = [])
{
$theField = $field->getField();
$fieldType = $theField->getFieldType();
$template = craft()->formBuilder2_field->getFieldTemplate($field->fieldId);
$originaPath = craft()->templates->getTemplatesPath();
$theField->required = $field->required;
$attributes = $theField->attributes;
$fieldSettings = '';
if ($fieldType) {
$fieldSettings = $fieldType->getSettings();
}
if (isset($attributes['settings']['placeholder'])) {
$varPlaceholder = $attributes['settings']['placeholder'];
} else {
$varPlaceholder = null;
}
if (isset($attributes['settings']['options'])) {
$varOptions = $attributes['settings']['options'];
} else {
$varOptions = null;
}
if (isset($attributes['settings']['values'])) {
$varValues = $attributes['settings']['values'];
} else {
$varValues = null;
}
if (isset($attributes['settings']['default'])) {
$varOn = $attributes['settings']['default'];
} else {
$varOn = null;
}
if (isset($attributes['settings']['checked'])) {
$varChecked = $attributes['settings']['checked'];
} else {
$varChecked = null;
}
if (isset($attributes['settings']['minuteIncrement'])) {
$varMinuteIncrement = $attributes['settings']['minuteIncrement'];
} else {
$varMinuteIncrement = null;
}
if (isset($attributes['settings']['showTime'])) {
$varShowTime = $attributes['settings']['showTime'];
} else {
$varShowTime = null;
}
if (isset($attributes['settings']['showDate'])) {
$varShowDate = $attributes['settings']['showDate'];
} else {
$varShowDate = null;
}
if (isset($attributes['settings']['min'])) {
$varMin = $attributes['settings']['min'];
} else {
$varMin = null;
}
if (isset($attributes['settings']['max'])) {
$varMax = $attributes['settings']['max'];
} else {
$varMax = null;
}
if (isset($attributes['settings']['limit'])) {
$varLimit = $attributes['settings']['limit'];
} else {
$varLimit = null;
}
if (isset($attributes['settings']['selectionLabel'])) {
$varSelectionLabel = $attributes['settings']['selectionLabel'];
} else {
$varSelectionLabel = null;
}
// Unless "All" sections has been chosen loop through the array and
// remove the 'section:' string from all source ID's and. Then convert all
// the strings to intigers so we are left with an array of section ids
if (isset($attributes['settings']['sources'])) {
$varSources = $attributes['settings']['sources'];
if ($varSources != '*') {
$varSources = array_map(function ($var) {
return is_numeric($var) ? (int) $var : $var;
}, str_replace("section:", "", $varSources));
}
} else {
$varSources = null;
}
// Check if there was a value
$value = array_key_exists($theField->handle, $value) ? $value[$theField->handle] : null;
$variables = ['field' => $attributes, 'type' => $attributes['type'], 'name' => $attributes['handle'], 'label' => $attributes['name'], 'handle' => $attributes['handle'], 'instructions' => $attributes['instructions'], 'placeholder' => $varPlaceholder, 'options' => $varOptions, 'value' => $value, 'values' => $varValues, 'on' => $varOn, 'checked' => $varChecked, 'minuteIncrement' => $varMinuteIncrement, 'showTime' => $varShowTime, 'showDate' => $varShowDate, 'min' => $varMin, 'max' => $varMax, 'requiredJs' => null, 'required' => $theField->required, 'settings' => $fieldSettings, 'sources' => $varSources];
$html = '';
// Check for Sprout Fields Plugin
$sproutFieldsPlugin = craft()->plugins->getPlugin('sproutfields', false);
$sproutFields = false;
if ($sproutFieldsPlugin && $sproutFieldsPlugin->isInstalled && $sproutFieldsPlugin->isEnabled) {
$sproutFields = true;
}
switch ($theField->type) {
// Sprout Fields
case "SproutFields_Email":
if ($sproutFields) {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/email', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "SproutFields_Phone":
if ($sproutFields) {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/phone', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "SproutFields_Link":
if ($sproutFields) {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/link', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "SproutFields_Hidden":
if ($sproutFields) {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('sproutfields/templates/_integrations/sproutforms/fields/hidden/input', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "PlainText":
if ($attributes['settings']['multiline']) {
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/textarea', $variables);
$this->_setTemplate($originaPath, 'site');
}
} else {
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/text', $variables);
$this->_setTemplate($originaPath, 'site');
}
}
break;
case "Checkboxes":
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/checkbox', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "RadioButtons":
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/radio', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "Entries":
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/entries', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "Dropdown":
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/select', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "MultiSelect":
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/multiselect', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "RichText":
$variables['requiredJs'] = 'redactor';
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/richtext', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "Lightswitch":
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/lightswitch', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "Color":
$variables['value'] = '#000000';
$variables['requiredJs'] = 'colorpicker';
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/color', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "Date":
$variables['requiredJs'] = 'dateandtime';
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/datetime', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "Number":
$variables['value'] = craft()->numberFormatter->formatDecimal($attributes['settings']['decimals'], false);
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/number', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
case "Assets":
if ($template) {
$html = craft()->templates->render($template->template, $variables);
} else {
$this->_setTemplate(null, 'plugin');
$html = craft()->templates->render('formbuilder2/templates/inputs/file', $variables);
$this->_setTemplate($originaPath, 'site');
}
break;
}
return $html;
}