/** * Creates an output of the edit form for the question * * @access public */ public function editQuestion($checkonly = FALSE) { $save = $this->isSaveCommand(); $this->getQuestionTemplate(); include_once "./Services/Form/classes/class.ilPropertyFormGUI.php"; $form = new ilPropertyFormGUI(); $form->setFormAction($this->ctrl->getFormAction($this)); $form->setTitle($this->outQuestionType()); $isSingleline = $this->object->lastChange == 0 && !array_key_exists('types', $_POST) ? $this->object->getMultilineAnswerSetting() ? false : true : $this->object->isSingleline; if ($checkonly) { $isSingleline = $_POST['types'] == 0 ? true : false; } if ($isSingleline) { $form->setMultipart(TRUE); } else { $form->setMultipart(FALSE); } $form->setTableWidth("100%"); $form->setId("asssinglechoice"); // title, author, description, question, working time (assessment mode) $this->addBasicQuestionFormProperties($form); // shuffle $shuffle = new ilCheckboxInputGUI($this->lng->txt("shuffle_answers"), "shuffle"); $shuffle->setValue(1); $shuffle->setChecked($this->object->getShuffle()); $shuffle->setRequired(FALSE); $form->addItem($shuffle); if ($this->object->getId()) { $hidden = new ilHiddenInputGUI("", "ID"); $hidden->setValue($this->object->getId()); $form->addItem($hidden); } if (!$this->getSelfAssessmentEditingMode()) { // Answer types $types = new ilSelectInputGUI($this->lng->txt("answer_types"), "types"); $types->setRequired(false); $types->setValue($isSingleline ? 0 : 1); $types->setOptions(array(0 => $this->lng->txt('answers_singleline'), 1 => $this->lng->txt('answers_multiline'))); $form->addItem($types); } if ($isSingleline) { // thumb size $thumb_size = new ilNumberInputGUI($this->lng->txt("thumb_size"), "thumb_size"); $thumb_size->setMinValue(20); $thumb_size->setDecimals(0); $thumb_size->setSize(6); $thumb_size->setInfo($this->lng->txt('thumb_size_info')); $thumb_size->setValue($this->object->getThumbSize()); $thumb_size->setRequired(false); $form->addItem($thumb_size); } // Choices include_once "./Modules/TestQuestionPool/classes/class.ilSingleChoiceWizardInputGUI.php"; $choices = new ilSingleChoiceWizardInputGUI($this->lng->txt("answers"), "choice"); $choices->setRequired(true); $choices->setQuestionObject($this->object); $choices->setSingleline($isSingleline); $choices->setAllowMove(false); if ($this->getSelfAssessmentEditingMode()) { $choices->setSize(40); $choices->setMaxLength(800); } if ($this->object->getAnswerCount() == 0) { $this->object->addAnswer("", 0, 0); } $choices->setValues($this->object->getAnswers()); $form->addItem($choices); $this->addQuestionFormCommandButtons($form); $errors = false; if ($save) { $form->setValuesByPost(); $errors = !$form->checkInput(); $form->setValuesByPost(); // again, because checkInput now performs the whole stripSlashes handling and we need this if we don't want to have duplication of backslashes if ($errors) { $checkonly = false; } } if (!$checkonly) { $this->tpl->setVariable("QUESTION_DATA", $form->getHTML()); } return $errors; }
public function populateAnswerSpecificFormPart(\ilPropertyFormGUI $form) { $isSingleline = $this->object->lastChange == 0 && !array_key_exists('types', $_POST) ? $this->object->getMultilineAnswerSetting() ? false : true : $this->object->isSingleline; // Choices include_once "./Modules/TestQuestionPool/classes/class.ilSingleChoiceWizardInputGUI.php"; $choices = new ilSingleChoiceWizardInputGUI($this->lng->txt("answers"), "choice"); $choices->setRequired(true); $choices->setQuestionObject($this->object); $choices->setSingleline($isSingleline); $choices->setAllowMove(false); if ($this->object->getSelfAssessmentEditingMode()) { $choices->setSize(40); $choices->setMaxLength(800); } if ($this->object->getAnswerCount() == 0) { $this->object->addAnswer("", 0, 0); } $choices->setValues($this->object->getAnswers()); $form->addItem($choices); }