From: Andrey Kutejko Date: Sat, 16 Mar 2019 17:12:22 +0000 (+0100) Subject: enable passing extra params to fields/widgets X-Git-Url: https://git.andy128k.dev/?a=commitdiff_plain;h=a0bdbac2736c9b95e7c7b715adb5da0864f77126;p=ipf-legacy-orm.git enable passing extra params to fields/widgets --- diff --git a/src/adminmodel.php b/src/adminmodel.php index 32f4d71..491f4cc 100644 --- a/src/adminmodel.php +++ b/src/adminmodel.php @@ -264,7 +264,7 @@ class IPF_Admin_ModelForm extends IPF_Form_Model foreach ($this->inlines as $inline) { $name = $inline->getModelName(); - $this->fields[$name] = $inline->createField(); + $this->fields[$name] = $inline->createField($extra); $this->field_groups[] = array( 'label' => $inline->getLegend(), diff --git a/src/adminmodelinline.php b/src/adminmodelinline.php index be440f3..485fede 100644 --- a/src/adminmodelinline.php +++ b/src/adminmodelinline.php @@ -85,7 +85,7 @@ abstract class IPF_Admin_ModelInline return IPF_ORM::getTable($this->getModelName()); } - public function createField() + public function createField($extra) { $args = array( 'fields' => array(), @@ -105,7 +105,7 @@ abstract class IPF_Admin_ModelInline $fieldClass = 'IPF_Form_Field_Set'; } - foreach (IPF_Form_Model::suggestFields($this->getTable(), null, $exclude, null) as $field) { + foreach (IPF_Form_Model::suggestFields($this->getTable(), null, $exclude, null, $extra) as $field) { list($n, $f) = $field; $args['fields'][$n] = $f; } diff --git a/src/modelform.php b/src/modelform.php index 2616199..939d6ff 100644 --- a/src/modelform.php +++ b/src/modelform.php @@ -16,14 +16,14 @@ class IPF_Form_Model extends IPF_Form $this->user_fields = $extra['user_fields']; $exclude = \PFF\Arr::get($extra, 'exclude', array()); - $fields = self::suggestFields($this->model->getTable(), $this->fields(), $exclude, $this); + $fields = self::suggestFields($this->model->getTable(), $this->fields(), $exclude, $this, $extra); foreach ($fields as $field) { list($n, $f) = $field; $this->fields[$n] = $f; } } - public static function suggestFields($table, $fields=null, $exclude=array(), $form=null) + public static function suggestFields($table, $fields=null, $exclude=array(), $form=null, $extra) { $result = array(); @@ -74,7 +74,7 @@ class IPF_Form_Model extends IPF_Form if ($f) $field = array($uname, $f); } elseif (array_key_exists($uname, $db_columns)) { - $field = self::createDBField($uname, $table, $db_columns[$uname]); + $field = self::createDBField($uname, $table, $db_columns[$uname], $extra); } elseif (array_key_exists($uname, $db_relations)) { $field = self::createDBRelation($uname, $db_relations[$uname], $db_columns); } else { @@ -87,7 +87,7 @@ class IPF_Form_Model extends IPF_Form return $result; } - public static function createDBField($name, $table, $col) + public static function createDBField($name, $table, $col, $extra) { if ($name == $table->getIdentifier()) return null; @@ -109,11 +109,20 @@ class IPF_Form_Model extends IPF_Form if (isset($col['uploadTo'])) $params['uploadTo'] = $col['uploadTo']; - if (isset($col['email']) && $col['email']) { $form_field = new IPF_Form_Field_Email($params); } - elseif (isset($col['file']) && $col['file']) { $form_field = new IPF_Form_Field_File($params); } - elseif (isset($col['image']) && $col['image']) { $form_field = new IPF_Form_Field_Image($params); } - elseif (isset($col['html']) && $col['html']) { $form_field = new IPF_Admin_Form_Field_Html($params); } - else { $form_field = new IPF_Form_Field_Varchar($params); } + if (isset($col['email']) && $col['email']) { + $form_field = new IPF_Form_Field_Email($params); + } elseif (isset($col['file']) && $col['file']) { + $form_field = new IPF_Form_Field_File($params); + } elseif (isset($col['image']) && $col['image']) { + $form_field = new IPF_Form_Field_Image($params); + } elseif (isset($col['html']) && $col['html']) { + $params['widget_attrs'] = array( + 'filebrowser_url' => @$extra['filebrowser_url'], + ); + $form_field = new IPF_Admin_Form_Field_Html($params); + } else { + $form_field = new IPF_Form_Field_Varchar($params); + } break; case 'boolean':