return get_class($this->model);
}
+ public function listColumns()
+ {
+ if (!$this->formset || !count($this->formset))
+ return array();
+
+ $header = array();
+ foreach ($this->formset[0]->fields as $fieldname => $field) {
+ $header[] = array(
+ 'fieldname' => $fieldname,
+ 'label' => $field->label,
+ 'is_hidden' => $field->widget->is_hidden,
+ 'is_del' => $field->label == 'Del',
+ 'has_display_method' => method_exists($this, 'column_'.$fieldname),
+ );
+ }
+ return $header;
+ }
+
+ public function displayField($fieldname, $obj)
+ {
+ $method = 'column_'.$fieldname;
+ if (!method_exists($this, $method))
+ throw new IPF_Exception('No method '.$method.' defined.');
+ return $this->$method($obj);
+ }
+
function isValid()
{
foreach ($this->formset as &$form) {
if ($o)
$form_extra['exclude'][] = $o;
- $first = true;
-
if ($this->parentModel->exists()) {
$query = IPF_ORM_Query::create()
->from(get_class($this->model))
), $form->fields);
$form->isAdd = false;
- if ($first) {
- $form->isFirst = true;
- $first = false;
- } else {
- $form->isFirst = false;
- }
$this->formset[] = $form;
}
}
$form->prefix = 'add_'.get_class($this->model).'_'.$i.'_';
$form->data = $data;
$form->isAdd = true;
- if ($first) {
- $form->isFirst = true;
- $first = false;
- } else {
- $form->isFirst = false;
- }
$this->formset[] = $form;
}
}
<fieldset class="module">
<h2>{$inline->getLegend()}</h2>
<table{if $inline->_orderable()} class="orderable-inlne" data-url="{url 'IPF_Admin_Views_ListItems', array($inline->getApplication()->getSlug(), strtolower($inline->getModelName()))}"{/if}>
- {foreach $inline.formset as $formset}
- {if $formset.isFirst}
<thead>
<tr class="nodrop">
- {foreach $formset.fields as $fieldname=>$field}
- <th{if $formset.field($fieldname).label=='Del'} style="width:20px;"{elseif $field.widget.is_hidden} style="display:none;"{/if}>{if !$field.widget.is_hidden}{$formset.field($fieldname).label}{/if}</th>
+ {foreach $inline->listColumns() as $column}
+ <th{if $column['is_del']} style="width:20px;"{elseif $column['is_hidden']} style="display:none;"{/if}>{$column['label']}</th>
{/foreach}
</tr>
</thead>
<tbody>
- {/if}
- <tr{if !$formset.isAdd} data-id="{$formset.model.pk()}"{else} class="nodrag nodrop"{/if}>
- {foreach $formset.fields as $fieldname=>$field}
- <td{if $field.widget.is_hidden} style="display:none;"{/if}>{$formset.field($fieldname).fieldErrors()}{$formset.field($fieldname)|safe}</td>
+ {foreach $inline.formset as $form}
+ <tr{if !$form.isAdd} data-id="{$form.model.pk()}"{else} class="nodrag nodrop"{/if}>
+ {foreach $inline->listColumns() as $column}
+ <td{if $column['is_hidden']} style="display:none;"{/if}>
+ {assign $field = $form.field($column['fieldname'])}
+ {if $column['has_display_method']}
+ {$inline->displayField($column['fieldname'], $form->model) |safe}
+ {else}
+ {$field.fieldErrors()}
+ {$field |safe}
+ {/if}
+ </td>
{/foreach}
</tr>
{/foreach}