]> git.andy128k.dev Git - ipf.git/commitdiff
Inline forms in add page
authoravl <alex.litovchenko@gmail.com>
Tue, 16 Sep 2008 11:44:48 +0000 (14:44 +0300)
committeravl <alex.litovchenko@gmail.com>
Tue, 16 Sep 2008 11:44:48 +0000 (14:44 +0300)
ipf/admin/model.php
ipf/admin/modelinline.php
ipf/admin/templates/admin/add.html

index b4b81c3e6f1764bc20a9088d7722e6a42a67412b..015a3cce1bc4f8c6b7200487110094d9386c1056 100644 (file)
@@ -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);
index a212a9a6dfec7d40ef4463c3e438e7ef03790812..f30101e9bce6c45a5269f47e5b21adcca5539a52 100644 (file)
@@ -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();
                 }
             } 
index 1092492bf73e01481f3ab31ac11970dc40c91ff9..45611d9f1a55ed30fe1304382886f190878a92d9 100644 (file)
     {$form.render_table}
     </table>
     </fieldset>
+    {foreach $inlineInstances as $inline}
+    <fieldset class="inlineTabular" style="border:none; width:auto; float:left; padding:0; margin:10px 10px 10px 0;">
+    <legend>{$inline->getLegend()}</legend>
+    <table>
+    {foreach $inline.formset as $formset}
+    {if $formset.isFirst}
+    <tr>
+    {foreach $formset.fields as $fieldname=>$field}
+    <th{if $formset.field($fieldname).label=='Del'} style="width:20px;"{/if}>{$formset.field($fieldname).label}</th>
+    {/foreach}
+    </tr>
+    {/if}
+    <tr>
+    {foreach $formset.fields as $fieldname=>$field}
+    <td>{$formset.field($fieldname).fieldErrors()}{$formset.field($fieldname)|safe}</td>
+    {/foreach}
+    </tr>
+    {/foreach}
+    </table>
+    </fieldset>
+    {/foreach}
+    <div style="clear:both;"></div>
 
     <div class="submit-row">
         <input type="submit" value="Save" class="default" />