]> git.andy128k.dev Git - ipf-legacy-orm.git/commitdiff
enable passing extra params to fields/widgets
authorAndrey Kutejko <andy128k@gmail.com>
Sat, 16 Mar 2019 17:12:22 +0000 (18:12 +0100)
committerAndrey Kutejko <andy128k@gmail.com>
Sat, 16 Mar 2019 17:12:22 +0000 (18:12 +0100)
src/adminmodel.php
src/adminmodelinline.php
src/modelform.php

index 32f4d710c06439cb22c297bcc57ff1f45b6be428..491f4cc6d4ceb91b931f55dcb4a3df9f7df8ab68 100644 (file)
@@ -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(),
index be440f31724a5599f5836098934932c01fa88d06..485fede08a07592e742029e00dd1a4fa2c07e27a 100644 (file)
@@ -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;
         }
index 2616199705b392630df6f32f8589956f5ba16f44..939d6ffb511a31a99a854b6558cf16a0fe00f500 100644 (file)
@@ -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':