/** * Render form controls necessary for responding to a particular question * * TODO - This needs to be extended to deal with multi-select questions * * @param ModelQuestionModel question response controls are being rendered for * @return string */ public function renderResponse(ModelQuestionModel $question) { // if we are dealing with a virtual question, don't output a control if ($question->virtualQuestion) { return ''; } $result = ''; switch (substr($question->format, 0, 1)) { case 'T': $result .= $this->renderText($question); break; case 'D': $result .= $this->renderDate($question); break; case 'S': $result .= $this->renderSingleSelect($question); break; case '_': if ($question->format == '_questionGroup') { return $result; } default: throw new Exception('Unknown question type'); } $result .= ' '; $name = "response[{$question->questionID}][requireAttachment]"; $result .= $this->view->formCheckbox($name, $question->hasAttachmentRequirement(), array('class' => 'requireAttachment')); $result .= $this->view->formLabel($name, 'Require Attachment'); $name = "response[{$question->questionID}][noinclude]"; $result .= $this->view->formCheckbox($name, $question->hasNoPreference(), array('class' => 'noinclude')); $result .= $this->view->formLabel($name, 'Do not include'); return $result; }