public function importField($field, $field_name = null)
{
$field = $this->model->hasElement($field);
if (!$field) {
return;
}
/** @type Field $field */
if (!$field->editable()) {
return;
}
if ($field_name === null) {
$field_name = $this->_unique($this->owner->elements, $field->short_name);
}
$field_type = $this->getFieldType($field);
$field_caption = $field->caption();
$this->field_associations[$field_name] = $field;
if ($field->listData() || $field instanceof Field_Reference) {
if ($field_type == 'Line') {
$field_type = 'DropDown';
}
}
$form_field = $this->owner->addField($field_type, $field_name, $field_caption);
$form_field->set($field->get());
$field_placeholder = $field->placeholder() ?: $field->emptyText() ?: null;
if ($field_placeholder) {
$form_field->setAttr('placeholder', $field_placeholder);
}
if ($field->hint()) {
$form_field->setFieldHint($field->hint());
}
if ($field->listData()) {
/** @type Form_Field_ValueList $form_field */
$a = $field->listData();
$form_field->setValueList($a);
}
if ($msg = $field->mandatory()) {
$form_field->validateNotNULL($msg);
}
if ($field instanceof Field_Reference || $field_type == 'reference') {
$form_field->setModel($field->getModel());
}
if ($field->theModel) {
$form_field->setModel($field->theModel);
}
if ($form_field instanceof Form_Field_ValueList && !$field->mandatory()) {
/** @type string $text */
$text = $field->emptyText();
$form_field->setEmptyText($text);
}
if ($field->onField()) {
call_user_func($field->onField(), $form_field);
}
return $form_field;
}