/**
  * 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');
 }
Exemplo n.º 10
0
 /**
  * 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);
     }
 }
Exemplo n.º 11
0
 /**
  * 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);
     }
 }
Exemplo n.º 14
0
 /**
  * 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;
 }
Exemplo n.º 16
0
 /**
  * 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);
 }
Exemplo n.º 18
0
 /**
  * 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;
 }
Exemplo n.º 20
0
 /**
  * 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;
 }
Exemplo n.º 22
0
 /**
  * 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;
 }