From: avl Date: Tue, 16 Sep 2008 11:44:48 +0000 (+0300) Subject: Inline forms in add page X-Git-Tag: 0.5~484 X-Git-Url: https://git.andy128k.dev/?a=commitdiff_plain;h=fc14f65f04ec7e587b8f42fbff3d5b745df0815d;p=ipf.git Inline forms in add page --- diff --git a/ipf/admin/model.php b/ipf/admin/model.php index b4b81c3..015a3cc 100644 --- a/ipf/admin/model.php +++ b/ipf/admin/model.php @@ -173,6 +173,7 @@ class IPF_Admin_Model{ $this->setInlines($this->model, &$data); if ($form->isValid()) { $item = $form->save(); + $this->saveInlines($item); AdminLog::logAction($request, $item, AdminLog::ADDITION); $url = IPF_HTTP_URL_urlForView('IPF_Admin_Views_ListItems', array($lapp, $lmodel)); return new IPF_HTTP_Response_Redirect($url); @@ -188,7 +189,9 @@ class IPF_Admin_Model{ 'page_title'=>'Add '.$this->modelName, 'classname'=>$this->modelName, 'form'=>$form, + 'inlineInstances'=>$this->inlineInstances, 'lapp'=>$lapp, + 'perms'=>$this->getPerms($request), 'lmodel'=>$lmodel, ); return IPF_Shortcuts::RenderToResponse($this->_getAddTemplate(), $context, $request); diff --git a/ipf/admin/modelinline.php b/ipf/admin/modelinline.php index a212a9a..f30101e 100644 --- a/ipf/admin/modelinline.php +++ b/ipf/admin/modelinline.php @@ -23,7 +23,6 @@ abstract class IPF_Admin_ModelInline{ function getLegend(){ return get_class($this->model); } - function isValid(){ foreach($this->formset as &$form){ @@ -110,7 +109,8 @@ abstract class IPF_Admin_ModelInline{ } } - function save(){ + function save($parent_obj){ + $fk_name = $this->getFkName(); if ($this->parentModel->exists()){ @@ -147,10 +147,10 @@ abstract class IPF_Admin_ModelInline{ } foreach($this->formset as $form){ - unset($form->cleaned_data[0]); if ($form->isValid()){ if ($form->isAdd){ - $form->cleaned_data[$fk_name] = $this->parentModel; + unset($form->cleaned_data[0]); + $form->cleaned_data[$fk_name] = $parent_obj; $form->save(); } } diff --git a/ipf/admin/templates/admin/add.html b/ipf/admin/templates/admin/add.html index 1092492..45611d9 100644 --- a/ipf/admin/templates/admin/add.html +++ b/ipf/admin/templates/admin/add.html @@ -13,6 +13,28 @@ {$form.render_table} + {foreach $inlineInstances as $inline} +
+ {$inline->getLegend()} + + {foreach $inline.formset as $formset} + {if $formset.isFirst} + + {foreach $formset.fields as $fieldname=>$field} + {$formset.field($fieldname).label} + {/foreach} + + {/if} + + {foreach $formset.fields as $fieldname=>$field} + + {/foreach} + + {/foreach} +
{$formset.field($fieldname).fieldErrors()}{$formset.field($fieldname)|safe}
+
+ {/foreach} +