public function getHtmlOutput(\Zend_View_Abstract $view) { $post = $this->request->getPost(); $currentTrack = null; if (isset($post['gto_id_track'])) { $currentTrack = $post['gto_id_track']; } $currentRound = null; if (isset($post['gto_round_description'])) { $currentRound = $post['gto_round_description']; } $export = $this->loader->getExport(); $exportTypes = $export->getExportClasses(); if (isset($post['type'])) { $currentType = $post['type']; } else { reset($exportTypes); $currentType = key($exportTypes); } $dbLookup = $this->util->getDbLookup(); $translated = $this->util->getTranslated(); $noRound = array(self::NoRound => $this->_('No round description')); $empty = $translated->getEmptyDropdownArray(); $tracks = $empty + $this->util->getTrackData()->getAllTracks(); $rounds = $empty + $noRound + $dbLookup->getRoundsForExport($currentTrack); $surveys = $dbLookup->getSurveysForExport($currentTrack, $currentRound, true); $organizations = $this->currentUser->getRespondentOrganizations(); if (\MUtil_Bootstrap::enabled()) { $this->form = new \Gems_Form(array('class' => 'form-horizontal')); } else { $this->form = new \Gems_Form_TableForm(); } $url = \MUtil_Html::attrib('href', array('action' => 'index', 'step' => 'batch')); $this->form->setAction($url); $elements = array(); $elements['gto_id_track'] = $this->form->createElement('select', 'gto_id_track', array('label' => $this->_('Track'), 'multiOptions' => $tracks, 'class' => 'autosubmit')); if (isset($post['gto_id_track']) && $post['gto_id_track']) { $element = $this->form->createElement('checkbox', 'add_track_fields'); $element->setLabel($this->_('Track fields')); $element->setDescription($this->_('Add track fields to export')); $elements['add_track_fields'] = $element; if (!array_key_exists('add_track_fields', $post)) { $post['add_track_fields'] = 1; } } $elements['gto_round_description'] = $this->form->createElement('select', 'gto_round_description', array('label' => $this->_('Round'), 'multiOptions' => $rounds, 'class' => 'autosubmit')); $elements['gto_id_survey'] = $this->form->createElement('multiCheckbox', 'gto_id_survey', array('label' => $this->_('Survey'), 'multiOptions' => $surveys)); $elements['gto_id_survey']->setRequired(true); $elements['gto_id_survey']->setSeparator(''); if (\MUtil_Bootstrap::enabled()) { $element = new \MUtil_Bootstrap_Form_Element_ToggleCheckboxes('toggleOrg', array('selector' => 'input[name^=gto_id_survey]')); } else { $element = new \Gems_JQuery_Form_Element_ToggleCheckboxes('toggleOrg', array('selector' => 'input[name^=gto_id_survey]')); } $element->setLabel($this->_('Toggle')); $elements[] = $element; if (count($organizations) > 1) { $elements['gto_id_organization'] = $this->form->createElement('multiCheckbox', 'gto_id_organization', array('label' => $this->_('Organizations'), 'multiOptions' => $organizations)); if (\MUtil_Bootstrap::enabled()) { $element = new \MUtil_Bootstrap_Form_Element_ToggleCheckboxes('toggleOrg', array('selector' => 'input[name^=gto_id_organization]')); } else { $element = new \Gems_JQuery_Form_Element_ToggleCheckboxes('toggleOrg', array('selector' => 'input[name^=gto_id_organization]')); } $element->setLabel($this->_('Toggle')); $elements[] = $element; } $dates = array('gto_start_date' => $this->_('Track start'), 'gto_end_date' => $this->_('Track end'), 'gto_valid_from' => $this->_('Valid from'), 'gto_valid_until' => $this->_('Valid until')); // $dates = 'gto_valid_from'; $periodElements = $this->getPeriodSelectors($dates, 'gto_valid_from'); $elements += $periodElements; $element = $this->form->createElement('textarea', 'ids'); $element->setLabel($this->_('Respondent id\'s'))->setAttrib('cols', 60)->setAttrib('rows', 4)->setDescription($this->_("Not respondent nr, but respondent id as exported here. Separate multiple id's with , or ;")); $elements[] = $element; $element = $this->form->createElement('checkbox', 'column_identifiers'); $element->setLabel($this->_('Column Identifiers')); $element->setDescription($this->_('Prefix the column labels with an identifier. (A) Answers, (TF) Trackfields, (D) Description')); $elements['column_identifiers'] = $element; $element = $this->form->createElement('checkbox', 'show_parent'); $element->setLabel($this->_('Show parent')); $element->setDescription($this->_('Show the parent column even if it doesn\'t have answers')); $elements['show_parent'] = $element; $element = $this->form->createElement('checkbox', 'prefix_child'); $element->setLabel($this->_('Prefix child')); $element->setDescription($this->_('Prefix the child column labels with parent question label')); $elements['prefix_child'] = $element; $elements['type'] = $this->form->createElement('select', 'type', array('label' => $this->_('Export to'), 'multiOptions' => $exportTypes, 'class' => 'autosubmit')); $this->form->addElements($elements); $exportClass = $export->getExport($currentType); $exportName = $exportClass->getName(); $exportFormElements = $exportClass->getFormElements($this->form, $data); if ($exportFormElements) { $exportFormElements['firstCheck'] = $this->form->createElement('hidden', $currentType); $exportFormElements['firstCheck']->setBelongsTo($exportName); $this->form->addElements($exportFormElements); } if (!isset($post[$currentType])) { $post[$exportName] = $exportClass->getDefaultFormValues(); } $element = $this->form->createElement('submit', 'export_submit', array('label' => $this->_('Export'))); $this->form->addElement($element); if ($post) { $this->form->populate($post); } $container = \MUtil_Html::div(array('id' => 'export-surveys-form')); $container->append($this->form); $this->form->setAttrib('id', 'autosubmit'); $this->form->setAutoSubmit(\MUtil_Html::attrib('href', array('action' => 'index', 'RouteReset' => true)), 'export-surveys-form', true); return $container; }
/** * Adds elements from the model to the bridge that creates the form. * * Overrule this function to add different elements to the browse table, without * having to recode the core table building code. * * @param \MUtil_Model_Bridge_FormBridgeInterface $bridge * @param \MUtil_Model_ModelAbstract $model */ protected function addFormElements(\MUtil_Model_Bridge_FormBridgeInterface $bridge, \MUtil_Model_ModelAbstract $model) { if (!$this->createData) { $bridge->addHidden('gtr_id_track'); } $bridge->addText('gtr_track_name'); // gtr_track_class if ($this->trackEngine) { $options = $model->get('gtr_track_class', 'multiOptions'); $alternatives = $this->trackEngine->getConversionTargets($options); if (count($alternatives) > 1) { $options = $alternatives; $bridge->addHidden($this->_oldClassName); if (!isset($this->formData[$this->_oldClassName])) { $this->formData[$this->_oldClassName] = $this->formData['gtr_track_class']; } $classEdit = true; } else { $classEdit = false; } } else { $tracker = $this->loader->getTracker(); $options = $tracker->getTrackEngineList(true, true); $classEdit = true; } $model->set('gtr_track_class', 'multiOptions', $options, 'escape', false); if ($classEdit) { $bridge->addRadio('gtr_track_class'); } else { $bridge->addExhibitor('gtr_track_class'); } $bridge->addDate('gtr_date_start'); $bridge->addDate('gtr_date_until'); if (!$this->createData) { $bridge->addCheckbox('gtr_active'); } if ($model->has('gtr_code')) { $bridge->addText('gtr_code'); } if ($model->has('gtr_calculation_event', 'label')) { $bridge->add('gtr_calculation_event'); } if ($model->has('gtr_completed_event', 'label')) { $bridge->add('gtr_completed_event'); } if ($model->has('gtr_beforefieldupdate_event', 'label')) { $bridge->add('gtr_beforefieldupdate_event'); } if ($model->has('gtr_fieldupdate_event', 'label')) { $bridge->add('gtr_fieldupdate_event'); } $bridge->add('gtr_organizations'); if (\MUtil_Bootstrap::enabled()) { $element = new \MUtil_Bootstrap_Form_Element_ToggleCheckboxes('toggleOrg', array('selector' => 'input[name^=gtr_organizations]')); } else { $element = new \Gems_JQuery_Form_Element_ToggleCheckboxes('toggleOrg', array('selector' => 'input[name^=gtr_organizations]')); } $element->setLabel($this->_('Toggle')); $bridge->addElement($element); }
/** * Get form elements for the specific Export * @param \Gems_Form $form existing form type * @param array data existing options set in the form * @return array of form elements */ public function getFormElements(\Gems_Form $form, &$data) { $form->activateJQuery(); $dbLookup = $this->util->getDbLookup(); $translated = $this->util->getTranslated(); $noRound = array(self::NoRound => $this->_('No round description')); $empty = $translated->getEmptyDropdownArray(); $dateOptions = array(); \MUtil_Model_Bridge_FormBridge::applyFixedOptions('date', $dateOptions); $organizations = $this->currentUser->getRespondentOrganizations(); $tracks = $empty + $this->util->getTrackData()->getAllTracks(); $rounds = $empty + $noRound + $dbLookup->getRoundsForExport(isset($data['tid']) ? $data['tid'] : null); $surveys = $dbLookup->getSurveysForExport(isset($data['tid']) ? $data['tid'] : null, isset($data['rounds']) ? $data['rounds'] : null); $yesNo = $translated->getYesNo(); $elements = array(); $element = $form->createElement('textarea', 'ids'); $element->setLabel($this->_('Respondent id\'s'))->setAttrib('cols', 60)->setAttrib('rows', 4)->setDescription($this->_('Not respondent nr, but respondent id as exported here.')); $elements[] = $element; $element = $form->createElement('select', 'tid'); $element->setLabel($this->_('Tracks'))->setMultiOptions($tracks); $elements[] = $element; if (isset($data['tid']) && $data['tid']) { $element = $form->createElement('radio', 'tid_fields'); $element->setLabel($this->_('Export fields'))->setMultiOptions($yesNo); $elements[] = $element; if (!array_key_exists('tid_fields', $data)) { $data['tid_fields'] = 1; } } $element = $form->createElement('select', 'rounds'); $element->setLabel($this->_('Round description'))->setMultiOptions($rounds); $elements[] = $element; $element = $form->createElement('multiselect', 'sid'); $element->setLabel($this->_('Survey'))->setMultiOptions($surveys)->setDescription($this->_('Use CTRL or Shift to select more')); $elements[] = $element; $element = $form->createElement('multiCheckbox', 'oid'); $element->setLabel($this->_('Organization'))->setMultiOptions($organizations); $elements[] = $element; if (\MUtil_Bootstrap::enabled()) { $element = new \MUtil_Bootstrap_Form_Element_ToggleCheckboxes('toggleOrg', array('selector' => 'input[name^=oid]')); } else { $element = new \Gems_JQuery_Form_Element_ToggleCheckboxes('toggleOrg', array('selector' => 'input[name^=oid]')); } $element->setLabel($this->_('Toggle')); $elements[] = $element; $element = $form->createElement('datePicker', 'valid_from', $dateOptions); $element->setLabel($this->_('Valid from')); $elements[] = $element; $element = $form->createElement('datePicker', 'valid_until', $dateOptions); $element->setLabel($this->_('Valid until')); $elements[] = $element; if (\MUtil_Bootstrap::enabled()) { $element = new \MUtil_Bootstrap_Form_Element_ToggleCheckboxes('toggleOrg', array('selector' => 'input[name^=oid]')); } else { $element = new \Gems_JQuery_Form_Element_ToggleCheckboxes('toggleOrg', array('selector' => 'input[name^=oid]')); } $element = $form->createElement('checkbox', 'column_identifiers'); $element->setLabel($this->_('Column Identifiers')); $element->setDescription($this->_('Prefix the column labels with an identifier. (A) Answers, (TF) Trackfields, (D) Description')); $elements[] = $element; //unset($data['records']); if (!empty($data['sid'])) { $filters = $this->getFilters($data); foreach ($filters as $key => $filter) { unset($data['records_' . $key]); $model = $this->getModel($filter, $data); $survey = $this->loader->getTracker()->getSurvey(intval($filter['gto_id_survey'])); $recordCount = $model->loadPaginator($filter)->getTotalItemCount(); $element = $form->createElement('exhibitor', 'records_' . $key); $element->setValue($survey->getName() . ': ' . sprintf($this->_('%s records found.'), $recordCount)); //$element->setValue($survey->getName()); $elements[] = $element; } } if ($this->project->hasResponseDatabase()) { $this->addResponseDatabaseForm($form, $data, $elements); } return $elements; }