/** * Adds columns from the model to the bridge that creates the browse table. * * Overrule this function to add different columns to the browse table, without * having to recode the core table building code. * * @param \MUtil_Model_Bridge_TableBridge $bridge * @param \MUtil_Model_ModelAbstract $model * @return void */ protected function addBrowseTableColumns(\MUtil_Model_Bridge_TableBridge $bridge, \MUtil_Model_ModelAbstract $model) { $model->set('gto_id_token', 'formatFunction', 'strtoupper'); $bridge->setDefaultRowClass(\MUtil_Html_TableElement::createAlternateRowClass('even', 'even', 'odd', 'odd')); $tr1 = $bridge->tr(); $tr1->appendAttrib('class', $bridge->row_class); $tr1->appendAttrib('title', $bridge->gto_comment); $bridge->addColumn($this->createShowTokenButton($bridge), ' ')->rowspan = 2; // Space needed because TableElement does not look at rowspans $bridge->addSortable('gto_valid_from'); $bridge->addSortable('gto_valid_until'); $bridge->addSortable('gto_id_token'); // $bridge->addSortable('gto_mail_sent_num', $this->_('Contact moments'))->rowspan = 2; $this->addRespondentCell($bridge, $model); $bridge->addMultiSort('ggp_name', array($this->createActionButtons($bridge))); $tr2 = $bridge->tr(); $tr2->appendAttrib('class', $bridge->row_class); $tr2->appendAttrib('title', $bridge->gto_comment); $bridge->addSortable('gto_mail_sent_date'); $bridge->addSortable('gto_completion_time'); $bridge->addSortable('gto_mail_sent_num', $this->_('Contact moments')); if ($this->multiTracks) { $model->set('gr2t_track_info', 'tableDisplay', 'smallData'); $model->set('gto_round_description', 'tableDisplay', 'smallData'); $bridge->addMultiSort('gtr_track_name', 'gr2t_track_info', array($bridge->gtr_track_name->if(\MUtil_Html::raw(' » ')), ' '), 'gsu_survey_name', 'gto_round_description'); } else { $bridge->addMultiSort('gto_round_description', \MUtil_Html::raw('; '), 'gsu_survey_name'); } $bridge->addSortable('assigned_by'); }
/** * Adds columns from the model to the bridge that creates the browse table. * * Overrule this function to add different columns to the browse table, without * having to recode the core table building code. * * @param \MUtil_Model_Bridge_TableBridge $bridge * @param \MUtil_Model_ModelAbstract $model * @return void */ public function addBrowseTableColumns(\MUtil_Model_Bridge_TableBridge $bridge, \MUtil_Model_ModelAbstract $model) { $model->set('gr2o_patient_nr', 'label', $this->_('Respondent')); $model->set('gto_round_description', 'label', $this->_('Round / Details')); $model->set('gto_valid_from', 'label', $this->_('Valid from')); $model->set('gto_valid_until', 'label', $this->_('Valid until')); $model->set('gto_mail_sent_date', 'label', $this->_('Contact date')); $model->set('respondent_name', 'label', $this->_('Name')); $HTML = \MUtil_Html::create(); $bridge->setDefaultRowClass(\MUtil_Html_TableElement::createAlternateRowClass('even', 'even', 'odd', 'odd')); $bridge->addColumn($this->getTokenLinks($bridge), ' ')->rowspan = 2; // Space needed because TableElement does not look at rowspans $bridge->addSortable('gto_valid_from'); $bridge->addSortable('gto_valid_until'); $bridge->addMultiSort('gr2o_patient_nr', $HTML->raw('; '), 'respondent_name'); $bridge->addMultiSort('ggp_name', array($this->getActionLinks($bridge))); $bridge->tr(); $bridge->addSortable('gto_mail_sent_date'); $bridge->addSortable('gto_completion_time'); if ($this->escort instanceof \Gems_Project_Tracks_SingleTrackInterface) { $bridge->addMultiSort('gto_round_description', $HTML->raw('; '), 'gsu_survey_name'); } else { $model->set('gr2t_track_info', 'tableDisplay', 'smallData'); $model->set('gto_round_description', 'tableDisplay', 'smallData'); $bridge->addMultiSort('gtr_track_name', 'gr2t_track_info', $bridge->gtr_track_name->if($HTML->raw(' » ')), 'gsu_survey_name', 'gto_round_description'); } $bridge->addSortable('assigned_by'); }
/** * Helper function to show a table * * @param string $caption * @param array $data * @param boolean $nested */ protected function _showTable($caption, $data, $nested = false) { $table = \MUtil_Html_TableElement::createArray($data, $caption, $nested); $table->class = 'browser table'; $div = \MUtil_Html::create()->div(array('class' => 'table-container')); $div[] = $table; $this->html[] = $div; }
/** * Adds columns from the model to the bridge that creates the browse table. * * Overrule this function to add different columns to the browse table, without * having to recode the core table building code. * * @param \MUtil_Model_Bridge_TableBridge $bridge * @param \MUtil_Model_ModelAbstract $model * @return void */ protected function addBrowseTableColumns(\MUtil_Model_Bridge_TableBridge $bridge, \MUtil_Model_ModelAbstract $model) { // Add link to patient to overview $menuItems = $this->findMenuItems('respondent', 'show'); if ($menuItems) { $menuItem = reset($menuItems); if ($menuItem instanceof \Gems_Menu_SubMenuItem) { $href = $menuItem->toHRefAttribute($bridge); if ($href) { $aElem = new \MUtil_Html_AElement($href); $aElem->setOnEmpty(''); // Make sure org is known $model->get('gr2o_id_organization'); $model->set('gr2o_patient_nr', 'itemDisplay', $aElem); $model->set('respondent_name', 'itemDisplay', $aElem); } } } $model->set('gto_id_token', 'formatFunction', 'strtoupper'); $bridge->setDefaultRowClass(\MUtil_Html_TableElement::createAlternateRowClass('even', 'even', 'odd', 'odd')); $tr1 = $bridge->tr(); $tr1->appendAttrib('class', $bridge->row_class); $tr1->appendAttrib('title', $bridge->gto_comment); $bridge->addColumn($this->createShowTokenButton($bridge), ' ')->rowspan = 2; // Space needed because TableElement does not look at rowspans $bridge->addSortable('gto_valid_from'); $bridge->addSortable('gto_valid_until'); $bridge->addSortable('gto_id_token'); // $bridge->addSortable('gto_mail_sent_num', $this->_('Contact moments'))->rowspan = 2; $this->addRespondentCell($bridge, $model); $bridge->addMultiSort('ggp_name', array($this->createActionButtons($bridge))); $tr2 = $bridge->tr(); $tr2->appendAttrib('class', $bridge->row_class); $tr2->appendAttrib('title', $bridge->gto_comment); $bridge->addSortable('gto_mail_sent_date'); $bridge->addSortable('gto_completion_time'); $bridge->addSortable('gto_mail_sent_num', $this->_('Contact moments')); if ($this->multiTracks) { $model->set('gr2t_track_info', 'tableDisplay', 'smallData'); $model->set('gto_round_description', 'tableDisplay', 'smallData'); $bridge->addMultiSort('gtr_track_name', 'gr2t_track_info', array($bridge->gtr_track_name->if(\MUtil_Html::raw(' » ')), ' '), 'gsu_survey_name', 'gto_round_description'); } else { $bridge->addMultiSort('gto_round_description', \MUtil_Html::raw('; '), 'gsu_survey_name'); } $bridge->addSortable('assigned_by'); }
/** * Create the snippets content * * This is a stub function either override getHtmlOutput() or override render() * * @param \Zend_View_Abstract $view Just in case it is needed here * @return \MUtil_Html_HtmlInterface Something that can be rendered */ public function getHtmlOutput(\Zend_View_Abstract $view) { $tUtil = $this->util->getTokenData(); $repeater = new \MUtil_Lazy_RepeatableByKeyValue($tUtil->getEveryStatus()); $table = new \MUtil_Html_TableElement(); $table->class = 'compliance timeTable rightFloat table table-condensed'; $table->setRepeater($repeater); $table->throw($this->_('Legend')); $table->td($repeater->key)->class = array('round', \MUtil_Lazy::method($tUtil, 'getStatusClass', $repeater->key)); $table->td($repeater->value); return $table; }
/** * Create the snippets content * * This is a stub function either override getHtmlOutput() or override render() * * @param \Zend_View_Abstract $view Just in case it is needed here * @return \MUtil_Html_HtmlInterface Something that can be rendered */ public function getHtmlOutput(\Zend_View_Abstract $view) { if ($this->request->isPost()) { $this->export->render($this->getRespondentIds(), $this->request->getParam('group'), $this->request->getParam('format')); } else { $seq = new \MUtil_Html_Sequence(); if ($this->formTitle) { $seq->h2($this->formTitle); } $form = $this->export->getForm($this->hideGroup); $div = $seq->div(array('id' => 'mainform'), $form); $table = new \MUtil_Html_TableElement(array('class' => 'formTable')); $table->setAsFormLayout($form); $form->populate($this->request->getParams()); return $seq; } }
/** * Perform some actions on the form, right before it is displayed but already populated * * Here we add the table display to the form. * * @return \Zend_Form */ public function beforeDisplay() { if ($this->_csrf) { $this->_csrf->initCsrfToken(); } $links = $this->getMenuList(); if (\MUtil_Bootstrap::enabled()) { if ($links) { $element = $this->_form->createElement('html', 'menuLinks'); $element->setValue($links); $element->setOrder(999); $this->_form->addElement($element); } } else { $table = new \MUtil_Html_TableElement(array('class' => $this->class)); $table->setAsFormLayout($this->_form, true, true); // There is only one row with formLayout, so all in output fields get class. $table['tbody'][0][0]->appendAttrib('class', $this->labelClass); if ($links) { $table->tf(); // Add empty cell, no label $table->tf($links); } } }
/** * Perform some actions on the form, right before it is displayed but already populated * * Here we add the table display to the form. * * @return \Zend_Form */ public function beforeDisplay() { if ($this->_form instanceof \Gems_TabForm) { if ($links = $this->getMenuList()) { $linkContainer = \MUtil_Html::create()->div(array('class' => 'element-container-labelless')); $linkContainer[] = $links; $element = $this->_form->createElement('html', 'formLinks'); $element->setValue($linkContainer)->setOrder(999)->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('DtDdWrapper'); $this->_form->resetContext(); $this->_form->addElement($element); if (is_null($this->_form->getDisplayGroup(\Gems_TabForm::GROUP_OTHER))) { $this->_form->addDisplayGroup(array($element), \Gems_TabForm::GROUP_OTHER); } else { $this->_form->getDisplayGroup(\Gems_TabForm::GROUP_OTHER)->addElement($element); } } } else { if (\MUtil_Bootstrap::enabled() !== true) { $table = new \MUtil_Html_TableElement(array('class' => $this->class)); $table->setAsFormLayout($this->_form, true, true); // There is only one row with formLayout, so all in output fields get class. $table['tbody'][0][0]->appendAttrib('class', $this->labelClass); if ($links = $this->getMenuList()) { $table->tf(); // Add empty cell, no label $table->tf($links); } } elseif ($links = $this->getMenuList()) { $element = $this->_form->createElement('html', 'menuLinks'); $element->setValue($links); $element->setOrder(999); $this->_form->addElement($element); } } }
/** * Add the columns ot the table * * This is a default implementation, overrule at will * * @param \MUtil_Html_TableElement $table */ protected function addColumns(\MUtil_Html_TableElement $table) { $table->addColumn(array(\MUtil_Html::raw($this->repeater->key), 'class' => $this->repeater->class), $this->_('Question code')); $table->addColumn(array(\MUtil_Html::raw($this->repeater->question), 'class' => $this->repeater->class), $this->_('Question')); $table->addColumn($this->repeater->answers->call($this, 'showAnswers', $this->repeater->answers), $this->_('Answer options')); // $table->addColumn($this->repeater->type, 'Type'); }
/** * Add the columns to the table * * @param \MUtil_Html_TableElement $table */ protected function addColumns(\MUtil_Html_TableElement $table) { foreach ($this->columns as $name => $label) { $table->addColumn($this->repeater->{$name}, $label); } }
/** * Displays the content * * @param string $value * @return string */ public function formatTable($value) { if (null === $value || is_scalar($value)) { return $value; } if (is_array($value)) { $i = 0; $output = new \MUtil_Html_Sequence(); $output->setGlue($this->_separator); foreach ($value as $val) { if ($i++ > $this->_maxTable) { $output->append($this->_more); break; } $output->append($val); } return $output; } return \MUtil_Html_TableElement::createArray($value); }
public function runSqlAction() { /************* * Make form * *************/ $form = $this->createForm(); $element = $form->createElement('textarea', 'script'); $element->setDescription($this->_('Separate multiple commands with semicolons (;).')); $element->setLabel('SQL:'); $element->setRequired(true); $form->addElement($element); //$element = new \Zend_Form_Element_Submit('submit'); $element = $form->createElement('submit', 'submit'); $element->setLabel($this->_('Run')); $form->addElement($element); /**************** * Process form * ****************/ if ($this->_request->isPost() && $form->isValid($_POST)) { $data = $_POST; $data['name'] = ''; $data['type'] = $this->_('raw'); $model = $this->getModel(); $results = $model->runScript($data, true); $resultSet = 1; $echos = \MUtil_Html::create()->array(); foreach ($results as $result) { if (is_string($result)) { $this->addMessage($result); } else { $echo = $echos->echo($result, sprintf($this->_('Result set %s.'), $resultSet++)); $echo->class = 'browser'; } } $this->accesslog->logChange($this->_request, null, $data['script']); } else { $form->populate($_POST); $resultSet = 0; } /**************** * Display form * ****************/ $table = new \MUtil_Html_TableElement(array('class' => 'formTable')); $table->setAsFormLayout($form, true, true); $table['tbody'][0][0]->class = 'label'; // Is only one row with formLayout, so all in output fields get class. $table['tbody'][0][0]->style = 'vertical-align: top;'; // Only single cell, this always looks better here. if ($links = $this->createMenuLinks()) { $table->tf(); // Add empty cell, no label $linksCell = $table->tf($links); } $this->html->h3($this->_('Execute raw SQL')); $this->html[] = $form; if ($resultSet > 1) { $this->html->h3($this->_('Result sets')); $this->html[] = $echos; } }
protected function beforeDisplay() { if (!\MUtil_Bootstrap::enabled()) { $table = new \MUtil_Html_TableElement(array('class' => $this->formClass)); $table->setAsFormLayout($this->form, true, true); // There is only one row with formLayout, so all in output fields get class. $table['tbody'][0][0]->appendAttrib('class', $this->labelClass); } }
/** * Overrule this function for any activities you want to take place * before the actual form is displayed. * * This means the form has been validated, step buttons where processed * and the current form will be the one displayed. * * @param int $step The current step */ protected function beforeDisplayFor($step) { switch ($step) { case 1: $fieldInfo = $this->getTranslatorTable(); break; case 2: case 3: case 4: case 5: if (isset($this->formData['trans']) && $this->formData['trans']) { $fieldInfo = $this->getTranslatorTable($this->formData['trans']); break; } default: $fieldInfo = null; } if ($fieldInfo) { // Slow //$table1 = \MUtil_Html_TableElement::createArray($fieldInfo, $this->_('Import field definitions'), true); //$table1->appendAttrib('class', $this->formatBoxClass); // Fast $table = \MUtil_Html_TableElement::table(); $table->caption($this->_('Import field definitions')); $table->appendAttrib('class', $this->formatBoxClass); $repeater = new \MUtil_Lazy_Repeatable($fieldInfo); $table->setRepeater($repeater); foreach (reset($fieldInfo) as $title => $element) { $table->addColumn($repeater->{$title}, $title); } $element = $this->_form->createElement('html', 'transtable'); $element->setValue($table); $this->_form->addElement($element); } }
public function displayMailFields($mailFields) { $mailFieldsRepeater = new \MUtil_Lazy_RepeatableByKeyValue($mailFields); $mailFieldsHtml = new \MUtil_Html_TableElement($mailFieldsRepeater, array('class' => 'table table-striped table-bordered table-condensed')); $mailFieldsHtml->addColumn($mailFieldsRepeater->key, $this->translate->_('Field')); $mailFieldsHtml->addColumn($mailFieldsRepeater->value, $this->translate->_('Value')); $container = \MUtil_Html::create()->div(array('class' => 'table-container')); $container[] = $mailFieldsHtml; return $container; }
/** * Creates from the model a \Zend_Form using createForm and adds elements * using addFormElements(). * * @param int $step The current step * @return \Zend_Form */ protected function getFormFor($step) { $model = $this->getModel(); $baseform = $this->createForm(); if (\MUtil_Bootstrap::enabled() !== true && $baseform instanceof \MUtil_Form) { $table = new \MUtil_Html_TableElement(); $table->setAsFormLayout($baseform, true, true); // There is only one row with formLayout, so all in output fields get class. $table['tbody'][0][0]->appendAttrib('class', $this->labelClass); } $baseform->setAttrib('class', $this->class); $bridge = $model->getBridgeFor('form', $baseform); $this->_items = null; $this->initItems(); $this->addFormElementsFor($bridge, $model, $step); return $baseform; }
/** * Add the paginator panel to the table. * * Only called when $this->browse is true. Overrule this function * to define your own method. * * $param \Zend_Paginator $paginator */ protected function addPaginator(\MUtil_Html_TableElement $table, \Zend_Paginator $paginator) { $table->tfrow()->pagePanel($paginator, $this->request, $this->translate); }
/** * Add the paginator panel to the table. * * Only called when $this->browse is true. Overrule this function * to define your own method. * * @param \MUtil_Html_TableElement $table * $param \Zend_Paginator $paginator */ protected function addPaginator(\MUtil_Html_TableElement $table, \Zend_Paginator $paginator) { $table->tfrow()->pagePanel($paginator, $this->request, array('baseUrl' => $this->baseUrl)); }
/** * Adjusted delete action */ public function deleteAction() { $model = $this->getModel(); $request = $this->getRequest(); $data = $model->applyRequest($request, true)->loadFirst(); if (!isset($data['grs_id_user'])) { $this->addMessage(sprintf($this->_('Unknown %s requested'), $this->getTopic())); $this->_reroute(array('action' => 'index')); } // Log $this->openedRespondent($data['gr2o_patient_nr'], $data['gr2o_id_organization'], $data['grs_id_user']); $options = array('' => '') + $this->util->getReceptionCodeLibrary()->getRespondentDeletionCodes(); $this->useTabbedForms = false; $bridge = $model->getBridgeFor('form', $this->createForm()); $bridge->addSelect('gr2o_reception_code', 'label', $this->_('Rejection code'), 'multiOptions', $options, 'required', true, 'size', max(7, min(3, count($options) + 1))); $form = $bridge->getForm(); $save = new \Zend_Form_Element_Submit('save_button', array('label' => $this->_('Delete respondent'), 'class' => 'button')); $form->addElement($save); if ($request->isPost()) { $oldCode = $data['gr2o_reception_code']; $data = $_POST + $data; if ($form->isValid($data)) { $code = $model->setReceptionCode($data['gr2o_patient_nr'], $data['gr2o_id_organization'], $data['gr2o_reception_code'], $data['gr2o_id_user'], $oldCode); // Is the respondent really removed if (!$code->isSuccess()) { // Perform actual save, but not simple stop codes. if ($code->isForRespondents()) { $this->addMessage($this->_('Respondent deleted.')); $this->_reroute(array('action' => 'index'), true); } else { // Just a stop code $this->addMessage($this->_('Respondent tracks stopped.')); $this->_reroute(array('action' => 'show')); } } else { $this->addMessage($this->_('Choose a reception code to delete.')); } } else { $this->addMessage($this->_('Input error! No changes saved!'), 'danger'); } } $form->populate($data); $table = new \MUtil_Html_TableElement(array('class' => 'formTable')); $table->setAsFormLayout($form, true, true); $table['tbody'][0][0]->class = 'label'; // Is only one row with formLayout, so all in output fields get class. if ($links = $this->createMenuLinks(10)) { $table->tf(); // Add empty cell, no label $linksCell = $table->tf($links); } $params['model'] = $model; $params['onclick'] = $this->findAllowedMenuItem('show'); if ($params['onclick']) { $params['onclick'] = $params['onclick']->toHRefAttribute($this->getRequest()); } $params['respondentData'] = $data; $this->addSnippet($this->deleteSnippets, $params); $this->html[] = $form; }
/** * Render the element * * @param string $content Content to decorate * @return string */ public function render($content) { $element = $this->getElement(); if (null === $element || null === ($view = $element->getView())) { return $content; } $cellDecorators = $this->getCellDecorators(); $table = new \MUtil_Html_TableElement(); $table->setOnEmpty(array(new \MUtil_Html_Raw('…'), 'style' => 'text-align: center;')); if ($element instanceof \MUtil_Form_Element_Table) { $subforms = $element->getSubForms(); $table->id = $element->getName(); $table->class = $element->getAttrib('class'); if ($subforms) { $firstform = reset($subforms); } else { $firstform = $element->getSubForm(); } } elseif ($element instanceof \Zend_Form) { $cellDecorators = null; $firstform = $element; $subforms = array($element); } if (isset($firstform)) { // $hasDescriptions = false; foreach ($firstform->getElements() as $headerelement) { if (!$headerelement instanceof \Zend_Form_Element_Hidden) { if (!$subforms) { $headerelement->setAttrib('id', $element->getName()); } $last_cell = $table->th(array('title' => $headerelement->getDescription()))->label($headerelement); // if ($headerelement->getDescription()) { // $hasDescriptions = true; // } } } // if ($hasDescriptions) { // foreach ($firstform->getElements() as $headerelement) { // if (! $headerelement instanceof \Zend_Form_Element_Hidden) { // if ($headerelement->getDescription()) { // $table->tf()->inputOnly($headerelement, 'Description'); // } else { // $table->tf(); // } // } // } // } $hidden = array(); if ($subforms) { foreach ($subforms as $subform) { $table->tr(); foreach ($subform->getElements() as $subelement) { if ($subelement instanceof \Zend_Form_Element_Hidden) { $this->_applyDecorators($subelement, array(array('ViewHelper'))); $hidden[] = $subelement; } else { $last_cell = $table->td($hidden, array('title' => $subelement->getDescription())); if ($cellDecorators) { $last_cell->inputOnlyArray($subelement, $cellDecorators); } else { $last_cell[] = $subelement; } $hidden = array(); } } } if ($hidden) { $last_cell[] = $hidden; } } } elseif ($element instanceof \Zend_Form_DisplayGroup) { throw new \Exception('Rendering of \\Zend_Form_DisplayGroup in ' . __CLASS__ . ' not yet implemented.'); } elseif ($element instanceof \Zend_Form_Element) { throw new \Exception('Rendering of \\Zend_Form_Element in ' . __CLASS__ . ' not yet implemented.'); // $table->addColumn($element->renderViewHelper(), $element->renderLabel()); } else { $table->td($element); } return $table->render($view); }
/** * Perform some actions on the form, right before it is displayed but already populated * * Here we add the table display to the form. * * @param \Zend_Form $form * @param bool $isNew * @return \Zend_Form */ public function beforeFormDisplay($form, $isNew) { if ($this->useTabbedForms || $form instanceof \Gems_Form_TableForm) { //If needed, add a row of link buttons to the bottom of the form if ($links = $this->createMenuLinks($isNew ? $this->menuCreateIncludeLevel : $this->menuEditIncludeLevel)) { $linkContainer = \MUtil_Html::create()->div(array('class' => 'element-container-labelless')); $linkContainer[] = $links; $element = $form->createElement('html', 'formLinks'); $element->setValue($linkContainer); $element->setOrder(999); if ($form instanceof \Gems_TabForm) { $form->resetContext(); } $form->addElement($element); $form->addDisplayGroup(array('formLinks'), 'form_buttons'); } } else { if (\MUtil_Bootstrap::enabled() !== true) { $table = new \MUtil_Html_TableElement(array('class' => 'formTable')); $table->setAsFormLayout($form, true, true); $table['tbody'][0][0]->class = 'label'; // Is only one row with formLayout, so all in output fields get class. if ($links = $this->createMenuLinks($isNew ? $this->menuCreateIncludeLevel : $this->menuEditIncludeLevel)) { $table->tf(); // Add empty cell, no label $linksCell = $table->tf($links); } } elseif ($links = $this->createMenuLinks($isNew ? $this->menuCreateIncludeLevel : $this->menuEditIncludeLevel)) { $element = $form->createElement('html', 'menuLinks'); $element->setValue($links); $element->setOrder(999); $form->addElement($element); } } return $form; }
/** * Create the snippets content * * This is a stub function either override getHtmlOutput() or override render() * * @param \Zend_View_Abstract $view Just in case it is needed here * @return \MUtil_Html_HtmlInterface Something that can be rendered */ public function getHtmlOutput(\Zend_View_Abstract $view) { $table = new \MUtil_Html_TableElement($this->repeater); if ($this->onEmpty) { $table->setOnEmpty($this->onEmpty); } $this->addColumns($table); // We wrap the table in a div, but the tables needs it's own class attributes if ($this->class) { $table->appendAttrib('class', $this->class); } $container = \MUtil_Html::create()->div(array('class' => 'table-container')); $container[] = $table; return $container; }