diff --git a/library/ZendAfi/View/Helper/TagModelTable.php b/library/ZendAfi/View/Helper/TagModelTable.php index b94a06856b89772c6bf93c5d40a9fdf6af536d49..b843b22ed1802b3a395c3605e1c216c094dcda35 100644 --- a/library/ZendAfi/View/Helper/TagModelTable.php +++ b/library/ZendAfi/View/Helper/TagModelTable.php @@ -24,13 +24,13 @@ class ZendAfi_View_Helper_TagModelTable extends Zend_View_Helper_HtmlElement { /** @var int */ protected $_cols_count = 0; - public function tagModelTable($models, $cols, $attribs, $actions, $id, $group_by = null) { + public function tagModelTable($models, $cols, $attribs, $actions, $id, $group_by = null, $callbacks = []) { $this->_hasActions = 0 < count($actions); $this->_cols_count = count($attribs) + ($this->_hasActions ? 1 : 0); return '<table id="'.$id.'" class="models">' .$this->head($cols) - .$this->tbody($models, $attribs, $actions, $group_by) + .$this->tbody($models, $attribs, $actions, $group_by, $callbacks) .'</table>'; } @@ -48,7 +48,7 @@ class ZendAfi_View_Helper_TagModelTable extends Zend_View_Helper_HtmlElement { } - public function tbody($models, $attribs, $actions, $group_by) { + public function tbody($models, $attribs, $actions, $group_by, $callbacks) { $rows = ''; $groups = array(); @@ -64,38 +64,42 @@ class ZendAfi_View_Helper_TagModelTable extends Zend_View_Helper_HtmlElement { } - $rows = $this->renderGroupsAsTableRows($groups, $attribs, $actions); + $rows = $this->renderGroupsAsTableRows($groups, $attribs, $actions, $callbacks); return '<tbody>'.$rows.'</tbody>'; } - public function renderGroupsAsTableRows($groups, $attribs, $actions) { + public function renderGroupsAsTableRows($groups, $attribs, $actions, $callbacks) { $rows = ''; foreach ($groups as $name => $groupModels) { if ('no_group' != $name && '' != $name) $rows .= '<tr><td style="background-color:#888;color:white;font-size:120%;padding:2px 10px;font-weight:bold;" colspan="' . $this->_cols_count . '">' . $this->view->escape($name) . '</td></tr>'; - $rows .= $this->renderModelsAsTableRows($groupModels, $attribs, $actions); + $rows .= $this->renderModelsAsTableRows($groupModels, $attribs, $actions, $callbacks); } return $rows; } - public function renderModelsAsTableRows($groupModels, $attribs, $actions) { + public function renderModelsAsTableRows($groupModels, $attribs, $actions, $callbacks) { $rows = ''; foreach ($groupModels as $model) - $rows .= $this->renderModelAsTableRow($model, $attribs, $actions); + $rows .= $this->renderModelAsTableRow($model, $attribs, $actions, $callbacks); return $rows; } - public function renderModelAsTableRow($model, $attribs, $actions) { + public function renderModelAsTableRow($model, $attribs, $actions, $callbacks) { $cols = ''; - foreach ($attribs as $attrib) - $cols .= '<td>'.$this->view->escape($model->callGetterByAttributeName($attrib)).'</td>'; + $default_callback = function ($value) {return $this->view->escape($value);}; + + foreach ($attribs as $attrib) { + $callback = (array_key_exists($attrib, $callbacks)) ? $callbacks[$attrib] : $default_callback; + $cols .= '<td>' . $callback($model->callGetterByAttributeName($attrib)) . '</td>'; + } $row = '<tr>'.$cols.'<td>'; if ($this->_hasActions)