4require_once 
'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
 
    5require_once 
'Modules/TestQuestionPool/interfaces/interface.ilGuiQuestionScoringAdjustable.php';
 
    6require_once 
'Modules/TestQuestionPool/interfaces/interface.ilGuiAnswerScoringAdjustable.php';
 
   28        parent::__construct();
 
   30        require_once 
'Modules/TestQuestionPool/classes/class.assKprimChoice.php';
 
   34            $this->
object->loadFromDb($qId);
 
   43        return $this->
object->feedbackOBJ->isSpecificAnswerFeedbackAvailable($this->object->getId());
 
   48        return array(
'uploadImage', 
'removeImage');
 
   58        $this->tpl->addCss(
'Modules/Test/templates/default/ta.css');
 
   60        $this->tpl->setVariable(
"QUESTION_DATA", $this->ctrl->getHTML(
$form));
 
   68            $this->
object->saveToDb();
 
   75        $position = key(
$_POST[
'cmd'][
'removeImage']);
 
   76        $this->
object->removeAnswerImage($position);
 
   78        $this->
object->saveToDb();
 
   84        if (isset(
$_POST[
'cmd'][__FUNCTION__]) && count(
$_POST[
'cmd'][__FUNCTION__])) {
 
   85            $this->
object->moveAnswerDown(key(
$_POST[
'cmd'][__FUNCTION__]));
 
   86            $this->
object->saveToDb();
 
   94        if (isset(
$_POST[
'cmd'][__FUNCTION__]) && count(
$_POST[
'cmd'][__FUNCTION__])) {
 
   95            $this->
object->moveAnswerUp(key(
$_POST[
'cmd'][__FUNCTION__]));
 
   96            $this->
object->saveToDb();
 
  108        $form->setValuesByPost();
 
  111            $answersInput = 
$form->getItemByPostVar(
'kprim_answers');
 
  112            $answersInput->setIgnoreMissingUploadsEnabled(
true);
 
  114            if (!$answersInput->checkUploads(
$_POST[$answersInput->getPostVar()])) {
 
  120            $answersInput->collectValidFiles();
 
  121        } elseif (!
$form->checkInput()) {
 
  162        $shuffleAnswers = 
new ilCheckboxInputGUI($this->lng->txt(
"shuffle_answers"), 
"shuffle_answers_enabled");
 
  163        $shuffleAnswers->setChecked($this->object->isShuffleAnswersEnabled());
 
  164        $form->addItem($shuffleAnswers);
 
  166        if (!$this->object->getSelfAssessmentEditingMode()) {
 
  168            $answerType = 
new ilSelectInputGUI($this->lng->txt(
'answer_types'), 
'answer_type');
 
  169            $answerType->setOptions($this->object->getAnswerTypeSelectOptions($this->lng));
 
  170            $answerType->setValue($this->object->getAnswerType());
 
  171            $form->addItem($answerType);
 
  174        if (!$this->object->getSelfAssessmentEditingMode() && $this->object->isSingleLineAnswerType($this->object->getAnswerType())) {
 
  176            $thumbSize = 
new ilNumberInputGUI($this->lng->txt(
'thumb_size'), 
'thumb_size');
 
  177            $thumbSize->setSuffix($this->lng->txt(
"thumb_size_unit_pixel"));
 
  178            $thumbSize->setInfo($this->lng->txt(
'thumb_size_info'));
 
  179            $thumbSize->setDecimals(
false);
 
  180            $thumbSize->setMinValue(20);
 
  181            $thumbSize->setSize(6);
 
  182            if ($this->object->getThumbSize() > 0) {
 
  183                $thumbSize->setValue($this->object->getThumbSize());
 
  185            $form->addItem($thumbSize);
 
  190        $optionLabel->setInfo($this->lng->txt(
'option_label_info'));
 
  191        $optionLabel->setRequired(
true);
 
  192        $optionLabel->setValue($this->object->getOptionLabel());
 
  193        foreach ($this->object->getValidOptionLabelsTranslated($this->lng) as $labelValue => $labelText) {
 
  195            $optionLabel->addOption($option);
 
  197            if ($this->object->isCustomOptionLabel($labelValue)) {
 
  199                    $this->lng->txt(
'option_label_custom_true'),
 
  200                    'option_label_custom_true' 
  202                $customLabelTrue->setValue($this->object->getCustomTrueOptionLabel());
 
  203                $option->addSubItem($customLabelTrue);
 
  206                    $this->lng->txt(
'option_label_custom_false'),
 
  207                    'option_label_custom_false' 
  209                $customLabelFalse->setValue($this->object->getCustomFalseOptionLabel());
 
  210                $option->addSubItem($customLabelFalse);
 
  213        $form->addItem($optionLabel);
 
  217        $points->setRequired(
true);
 
  219        $points->allowDecimals(
true);
 
  220        $points->setMinValue(0);
 
  221        $points->setMinvalueShouldBeGreater(
true);
 
  222        $points->setValue($this->object->getPoints());
 
  223        $form->addItem($points);
 
  226        $scorePartialSolution = 
new ilCheckboxInputGUI($this->lng->txt(
'score_partsol_enabled'), 
'score_partsol_enabled');
 
  227        $scorePartialSolution->setInfo($this->lng->txt(
'score_partsol_enabled_info'));
 
  228        $scorePartialSolution->setChecked($this->object->isScorePartialSolutionEnabled());
 
  229        $form->addItem($scorePartialSolution);
 
  239        $oldAnswerType = $this->
object->getAnswerType();
 
  241        $this->
object->setShuffleAnswersEnabled($form->
getItemByPostVar(
'shuffle_answers_enabled')->getChecked());
 
  243        if (!$this->object->getSelfAssessmentEditingMode()) {
 
  244            $this->
object->setAnswerType($form->
getItemByPostVar(
'answer_type')->getValue());
 
  249        if (!$this->object->getSelfAssessmentEditingMode() && $this->object->isSingleLineAnswerType($oldAnswerType)) {
 
  250            $this->
object->setThumbSize($form->
getItemByPostVar(
'thumb_size')->getValue());
 
  253        $this->
object->setOptionLabel($form->
getItemByPostVar(
'option_label')->getValue());
 
  255        if ($this->object->isCustomOptionLabel($this->object->getOptionLabel())) {
 
  256            $this->
object->setCustomTrueOptionLabel(strip_tags(
 
  257                $form->getItemByPostVar(
'option_label_custom_true')->getValue()
 
  259            $this->
object->setCustomFalseOptionLabel(strip_tags(
 
  260                $form->getItemByPostVar(
'option_label_custom_false')->getValue()
 
  266        $this->
object->setScorePartialSolutionEnabled($form->
getItemByPostVar(
'score_partsol_enabled')->getChecked());
 
  275        require_once 
'Modules/TestQuestionPool/classes/class.ilKprimChoiceWizardInputGUI.php';
 
  277        $kprimAnswers->setInfo($this->lng->txt(
'kprim_answers_info'));
 
  278        $kprimAnswers->setSize(64);
 
  279        $kprimAnswers->setMaxLength(1000);
 
  280        $kprimAnswers->setRequired(
true);
 
  281        $kprimAnswers->setAllowMove(
true);
 
  282        $kprimAnswers->setQuestionObject($this->
object);
 
  283        if (!$this->object->getSelfAssessmentEditingMode()) {
 
  284            $kprimAnswers->setSingleline($this->object->isSingleLineAnswerType($this->object->getAnswerType()));
 
  286            $kprimAnswers->setSingleline(
false);
 
  288        $kprimAnswers->setValues($this->object->getAnswers());
 
  289        $form->addItem($kprimAnswers);
 
  299        $answers = 
$form->getItemByPostVar(
'kprim_answers')->getValues();
 
  301        $files = 
$form->getItemByPostVar(
'kprim_answers')->getFiles();
 
  303        $this->
object->handleFileUploads($answers, 
$files);
 
  304        $this->
object->setAnswers($answers);
 
  313        foreach ($answers as 
$key => $answer) {
 
  344        $is_postponed = 
false,
 
  345        $use_post_solutions = 
false,
 
  346        $showInlineFeedback = 
false 
  352        $user_solution = array();
 
  356            #include_once "./Modules/Test/classes/class.ilObjTest.php";
 
  357            #if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) 
  359            #   if (is_null($pass)) $pass = ilObjTest::_getPass($active_id); 
  361            $solutions = $this->
object->getTestOutputSolutions($active_id, 
$pass);
 
  363            foreach ($solutions as $idx => $solution_value) {
 
  364                $user_solution[$solution_value[
"value1"]] = $solution_value[
"value2"];
 
  369        include_once 
"./Services/UICore/classes/class.ilTemplate.php";
 
  370        $template = 
new ilTemplate(
"tpl.il_as_qpl_mc_kprim_output.html", 
true, 
true, 
"Modules/TestQuestionPool");
 
  372        foreach (
$keys as $answer_id) {
 
  373            $answer = $this->
object->getAnswer($answer_id);
 
  374            if (strlen($answer->getImageFile())) {
 
  375                if ($this->object->getThumbSize()) {
 
  377                    $template->setVariable(
"URL_PREVIEW", $answer->getImageWebPath());
 
  378                    $template->setVariable(
"TEXT_PREVIEW", $this->lng->txt(
'preview'));
 
  380                    $template->setVariable(
"ANSWER_IMAGE_URL", $answer->getThumbWebPath());
 
  381                    list($width, $height, 
$type, $attr) = getimagesize($answer->getImageFsPath());
 
  382                    $alt = $answer->getImageFile();
 
  383                    if (strlen($answer->getAnswertext())) {
 
  384                        $alt = $answer->getAnswertext();
 
  386                    $alt = preg_replace(
"/<[^>]*?>/", 
"", $alt);
 
  391                    $template->setCurrentBlock(
"answer_image");
 
  392                    $template->setVariable(
"ANSWER_IMAGE_URL", $answer->getImageWebPath());
 
  393                    list($width, $height, 
$type, $attr) = getimagesize($answer->getImageFsPath());
 
  394                    $alt = $answer->getImageFile();
 
  395                    if (strlen($answer->getAnswertext())) {
 
  396                        $alt = $answer->getAnswertext();
 
  398                    $alt = preg_replace(
"/<[^>]*?>/", 
"", $alt);
 
  406            if ($showInlineFeedback) {
 
  410            $template->setCurrentBlock(
"answer_row");
 
  411            $template->setVariable(
"ANSWER_ID", $answer_id);
 
  412            $template->setVariable(
"ANSWER_TEXT", $this->object->prepareTextareaOutput($answer->getAnswertext(), 
true));
 
  414            $template->setVariable(
'VALUE_FALSE', 0);
 
  416            if (isset($user_solution[$answer->getPosition()])) {
 
  417                $tplVar = $user_solution[$answer->getPosition()] ? 
'CHECKED_ANSWER_TRUE' : 
'CHECKED_ANSWER_FALSE';
 
  418                $template->setVariable($tplVar, 
" checked=\"checked\"");
 
  424        $questiontext = $this->
object->getQuestion();
 
  425        $template->setVariable(
"QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, 
true));
 
  427        $template->setVariable(
"INSTRUCTIONTEXT", $this->object->getInstructionTextTranslation(
 
  429            $this->object->getOptionLabel()
 
  432        $template->setVariable(
"OPTION_LABEL_TRUE", $this->object->getTrueOptionLabelTranslation(
 
  434            $this->object->getOptionLabel()
 
  437        $template->setVariable(
"OPTION_LABEL_FALSE", $this->object->getFalseOptionLabelTranslation(
 
  439            $this->object->getOptionLabel()
 
  443        $pageoutput = $this->
outQuestionPage(
"", $is_postponed, $active_id, $questionoutput, $showInlineFeedback);
 
  451    public function getPreview($show_question_only = 
false, $showInlineFeedback = 
false)
 
  458        include_once 
"./Services/UICore/classes/class.ilTemplate.php";
 
  459        $template = 
new ilTemplate(
"tpl.il_as_qpl_mc_kprim_output.html", 
true, 
true, 
"Modules/TestQuestionPool");
 
  461        foreach (
$keys as $answer_id) {
 
  462            $answer = $this->
object->getAnswer($answer_id);
 
  463            if (strlen($answer->getImageFile())) {
 
  464                if ($this->object->getThumbSize()) {
 
  466                    $template->setVariable(
"URL_PREVIEW", $answer->getImageWebPath());
 
  467                    $template->setVariable(
"TEXT_PREVIEW", $this->lng->txt(
'preview'));
 
  469                    $template->setVariable(
"ANSWER_IMAGE_URL", $answer->getThumbWebPath());
 
  470                    list($width, $height, 
$type, $attr) = getimagesize($answer->getImageFsPath());
 
  471                    $alt = $answer->getImageFile();
 
  472                    if (strlen($answer->getAnswertext())) {
 
  473                        $alt = $answer->getAnswertext();
 
  475                    $alt = preg_replace(
"/<[^>]*?>/", 
"", $alt);
 
  480                    $template->setCurrentBlock(
"answer_image");
 
  481                    $template->setVariable(
"ANSWER_IMAGE_URL", $answer->getImageWebPath());
 
  482                    list($width, $height, 
$type, $attr) = getimagesize($answer->getImageFsPath());
 
  483                    $alt = $answer->getImageFile();
 
  484                    if (strlen($answer->getAnswertext())) {
 
  485                        $alt = $answer->getAnswertext();
 
  487                    $alt = preg_replace(
"/<[^>]*?>/", 
"", $alt);
 
  495            if ($showInlineFeedback) {
 
  499            $template->setCurrentBlock(
"answer_row");
 
  500            $template->setVariable(
"ANSWER_ID", $answer_id);
 
  501            $template->setVariable(
"ANSWER_TEXT", $this->object->prepareTextareaOutput($answer->getAnswertext(), 
true));
 
  503            $template->setVariable(
'VALUE_FALSE', 0);
 
  505            if (isset($user_solution[$answer->getPosition()])) {
 
  506                $tplVar = $user_solution[$answer->getPosition()] ? 
'CHECKED_ANSWER_TRUE' : 
'CHECKED_ANSWER_FALSE';
 
  507                $template->setVariable($tplVar, 
" checked=\"checked\"");
 
  512        $questiontext = $this->
object->getQuestion();
 
  513        $template->setVariable(
"QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, 
true));
 
  515        $template->setVariable(
"INSTRUCTIONTEXT", $this->object->getInstructionTextTranslation(
 
  517            $this->object->getOptionLabel()
 
  520        $template->setVariable(
"OPTION_LABEL_TRUE", $this->object->getTrueOptionLabelTranslation(
 
  522            $this->object->getOptionLabel()
 
  525        $template->setVariable(
"OPTION_LABEL_FALSE", $this->object->getFalseOptionLabelTranslation(
 
  527            $this->object->getOptionLabel()
 
  531        if (!$show_question_only) {
 
  535        return $questionoutput;
 
  563        $graphicalOutput = 
false,
 
  564        $result_output = 
false,
 
  565        $show_question_only = 
true,
 
  566        $show_feedback = 
false,
 
  567        $show_correct_solution = 
false,
 
  568        $show_manual_scoring = 
false,
 
  569        $show_question_text = 
true 
  575        $user_solution = array();
 
  576        if (($active_id > 0) && (!$show_correct_solution)) {
 
  578            foreach ($solutions as $idx => $solution_value) {
 
  579                $user_solution[$solution_value[
'value1']] = $solution_value[
'value2'];
 
  583            foreach ($this->object->getAnswers() as $answer) {
 
  584                $user_solution[$answer->getPosition()] = $answer->getCorrectness();
 
  589        $template = 
new ilTemplate(
"tpl.il_as_qpl_mc_kprim_output_solution.html", 
true, 
true, 
"Modules/TestQuestionPool");
 
  591        foreach (
$keys as $answer_id) {
 
  592            $answer = $this->
object->getAnswer($answer_id);
 
  594            if (($active_id > 0) && (!$show_correct_solution)) {
 
  595                if ($graphicalOutput) {
 
  598                    if ($user_solution[$answer->getPosition()] == $answer->getCorrectness()) {
 
  601                        $template->setVariable(
"TEXT_OK", $this->lng->txt(
"answer_is_right"));
 
  606                        $template->setVariable(
"TEXT_NOT_OK", $this->lng->txt(
"answer_is_wrong"));
 
  611            if (strlen($answer->getImageFile())) {
 
  612                $template->setCurrentBlock(
"answer_image");
 
  613                if ($this->object->getThumbSize()) {
 
  614                    $template->setVariable(
"ANSWER_IMAGE_URL", $answer->getThumbWebPath());
 
  616                    $template->setVariable(
"ANSWER_IMAGE_URL", $answer->getImageWebPath());
 
  624            if ($show_feedback) {
 
  628            $template->setCurrentBlock(
"answer_row");
 
  629            $template->setVariable(
"ANSWER_TEXT", $this->object->prepareTextareaOutput($answer->getAnswertext(), 
true));
 
  632                if (isset($user_solution[$answer->getPosition()])) {
 
  633                    if ($user_solution[$answer->getPosition()]) {
 
  635                        $template->setVariable(
"SOLUTION_ALT_TRUE", $this->lng->txt(
"checked"));
 
  637                        $template->setVariable(
"SOLUTION_ALT_FALSE", $this->lng->txt(
"unchecked"));
 
  640                        $template->setVariable(
"SOLUTION_ALT_TRUE", $this->lng->txt(
"unchecked"));
 
  642                        $template->setVariable(
"SOLUTION_ALT_FALSE", $this->lng->txt(
"checked"));
 
  646                    $template->setVariable(
"SOLUTION_ALT_TRUE", $this->lng->txt(
"unchecked"));
 
  648                    $template->setVariable(
"SOLUTION_ALT_FALSE", $this->lng->txt(
"unchecked"));
 
  651                $template->setVariable(
'SOL_QID', $this->object->getId());
 
  652                $template->setVariable(
'SOL_SUFFIX', $show_correct_solution ? 
'bestsolution' : 
'usersolution');
 
  653                $template->setVariable(
'SOL_POSITION', $answer->getPosition());
 
  655                $template->setVariable(
'SOL_TRUE_VALUE', 1);
 
  656                $template->setVariable(
'SOL_FALSE_VALUE', 0);
 
  658                if (isset($user_solution[$answer->getPosition()])) {
 
  659                    if ($user_solution[$answer->getPosition()]) {
 
  660                        $template->setVariable(
'SOL_TRUE_CHECKED', 
'checked');
 
  662                        $template->setVariable(
'SOL_FALSE_CHECKED', 
'checked');
 
  670        if ($show_question_text == 
true) {
 
  671            $questiontext = $this->
object->getQuestion();
 
  672            $template->setVariable(
"QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, 
true));
 
  674            $template->setVariable(
"INSTRUCTIONTEXT", $this->object->getInstructionTextTranslation(
 
  676                $this->object->getOptionLabel()
 
  680        $template->setVariable(
"OPTION_LABEL_TRUE", $this->object->getTrueOptionLabelTranslation(
 
  682            $this->object->getOptionLabel()
 
  685        $template->setVariable(
"OPTION_LABEL_FALSE", $this->object->getFalseOptionLabelTranslation(
 
  687            $this->object->getOptionLabel()
 
  694        $solutiontemplate = 
new ilTemplate(
"tpl.il_as_tst_solution_output.html", 
true, 
true, 
"Modules/TestQuestionPool");
 
  696        if (strlen($feedback)) {
 
  702            $solutiontemplate->setVariable(
"ILC_FB_CSS_CLASS", $cssClass);
 
  703            $solutiontemplate->setVariable(
"FEEDBACK", $this->object->prepareTextareaOutput($feedback, 
true));
 
  706        $solutiontemplate->setVariable(
"SOLUTION_OUTPUT", $questionoutput);
 
  708        $solutionoutput = $solutiontemplate->get();
 
  714        if (!$show_question_only) {
 
  718        return $solutionoutput;
 
  723        $choiceKeys = array_keys($this->object->getAnswers());
 
  725        if ($this->object->isShuffleAnswersEnabled()) {
 
  726            $choiceKeys = $this->
object->getShuffler()->shuffle($choiceKeys);
 
  734        require_once 
'Modules/TestQuestionPool/classes/feedback/class.ilAssConfigurableMultiOptionQuestionFeedback.php';
 
  737            if ($user_solution[$answer_id]) {
 
  738                $fb = $this->
object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation($this->object->getId(), 0, $answer_id);
 
  741                    $template->setVariable(
"FEEDBACK", $this->object->prepareTextareaOutput($fb, 
true));
 
  748            $fb = $this->
object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation($this->object->getId(), 0, $answer_id);
 
  751                $template->setVariable(
"FEEDBACK", $this->object->prepareTextareaOutput($fb, 
true));
 
  757            $answer = $this->
object->getAnswer($answer_id);
 
  759            if ($answer->getCorrectness()) {
 
  760                $fb = $this->
object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation($this->object->getId(), 0, $answer_id);
 
  763                    $template->setVariable(
"FEEDBACK", $this->object->prepareTextareaOutput($fb, 
true));
 
  812        return '<pre>' . print_r($relevant_answers, 1) . 
'</pre>';
 
  817        $trueOptionLabel = $this->
object->getTrueOptionLabelTranslation($this->lng, $this->object->getOptionLabel());
 
  818        $falseOptionLabel = $this->
object->getFalseOptionLabelTranslation($this->lng, $this->object->getOptionLabel());
 
  820        $tpl = 
new ilTemplate(
'tpl.il_as_aggregated_kprim_answers_table.html', 
true, 
true, 
"Modules/TestQuestionPool");
 
  822        foreach ($aggregate as $lineData) {
 
  823            $tpl->setCurrentBlock(
'aggregaterow');
 
  824            $tpl->setVariable(
'OPTION', $lineData[
'answertext']);
 
  825            $tpl->setVariable(
'COUNT_TRUE', $lineData[
'count_true']);
 
  826            $tpl->setVariable(
'COUNT_FALSE', $lineData[
'count_false']);
 
  827            $tpl->parseCurrentBlock();
 
  830        $tpl->setVariable(
'OPTION_HEAD', $this->lng->txt(
'answers'));
 
  831        $tpl->setVariable(
'COUNT_TRUE_HEAD', $trueOptionLabel);
 
  832        $tpl->setVariable(
'COUNT_FALSE_HEAD', $falseOptionLabel);
 
  839        $aggregate = array();
 
  841        foreach ($answers as $answer) {
 
  843                'answertext' => $answer->getAnswerText(), 
'count_true' => 0, 
'count_false' => 0
 
  846            foreach ($rawSolutionData as $solutionRecord) {
 
  847                if ($solutionRecord[
'value1'] == $answer->getPosition()) {
 
  848                    if ($solutionRecord[
'value2']) {
 
  849                        $answerAgg[
'count_true']++;
 
  851                        $answerAgg[
'count_false']++;
 
  856            $aggregate[] = $answerAgg;
 
  864        $agg = $this->
aggregateAnswers($relevantAnswers, $this->object->getAnswers());
 
  868        foreach ($agg as $ans) {
 
  870                'answer' => $ans[
'answertext'],
 
  871                'frequency_true' => $ans[
'count_true'],
 
  872                'frequency_false' => $ans[
'count_false']
 
  888        require_once 
'Modules/TestQuestionPool/classes/tables/class.ilKprimChoiceAnswerFreqStatTableGUI.php';
 
  891        $table->setQuestionIndex($questionIndex);
 
  902        $points->setRequired(
true);
 
  904        $points->allowDecimals(
true);
 
  905        $points->setMinValue(0);
 
  906        $points->setMinvalueShouldBeGreater(
true);
 
  907        $points->setValue($this->object->getPoints());
 
  908        $form->addItem($points);
 
  911        $scorePartialSolution = 
new ilCheckboxInputGUI($this->lng->txt(
'score_partsol_enabled'), 
'score_partsol_enabled');
 
  912        $scorePartialSolution->setInfo($this->lng->txt(
'score_partsol_enabled_info'));
 
  913        $scorePartialSolution->setChecked($this->object->isScorePartialSolutionEnabled());
 
  914        $form->addItem($scorePartialSolution);
 
  917        require_once 
'Modules/TestQuestionPool/classes/forms/class.ilKprimChoiceCorrectionsInputGUI.php';
 
  919        $kprimAnswers->setInfo($this->lng->txt(
'kprim_answers_info'));
 
  920        $kprimAnswers->setSize(64);
 
  921        $kprimAnswers->setMaxLength(1000);
 
  922        $kprimAnswers->setRequired(
true);
 
  923        $kprimAnswers->setQuestionObject($this->
object);
 
  924        $kprimAnswers->setValues($this->object->getAnswers());
 
  925        $form->addItem($kprimAnswers);
 
  935        $this->
object->setPoints(
 
  939        $this->
object->setScorePartialSolutionEnabled(
 
  940            (
bool) $form->
getInput(
'score_partsol_enabled')
 
  943        $this->
object->setAnswers(
 
An exception for terminatinating execution or to throw for unit testing.
populateSpecificFeedbackInline($user_solution, $answer_id, $template)
getAnswerFrequencyTableGUI($parentGui, $parentCmd, $relevantAnswers, $questionIndex)
getSpecificFeedbackOutput($userSolution)
renderAggregateView($aggregate)
getAfterParticipationSuppressionQuestionPostVars()
Returns a list of postvars which will be suppressed in the form output when used in scoring adjustmen...
writeAnswerSpecificPostData(ilPropertyFormGUI $form)
getParticipantsAnswerKeySequence()
getAfterParticipationSuppressionAnswerPostVars()
Returns a list of postvars which will be suppressed in the form output when used in scoring adjustmen...
writePostData($upload=false)
{Evaluates a posted edit form and writes the form data in the question object.integer A positive valu...
populateCorrectionsFormProperties(ilPropertyFormGUI $form)
getAggregatedAnswersView($relevant_answers)
Returns an html string containing a question specific representation of the answers so far given in t...
getAnswersFrequency($relevantAnswers, $questionIndex)
writeQuestionSpecificPostData(ilPropertyFormGUI $form)
editQuestion(ilPropertyFormGUI $form=null)
aggregateAnswers($rawSolutionData, $answers)
handleAnswerTextsSubmit($answers)
getPreview($show_question_only=false, $showInlineFeedback=false)
getTestOutput( $active_id, $pass, $is_postponed=false, $use_post_solutions=false, $showInlineFeedback=false)
populateAnswerSpecificFormPart(ilPropertyFormGUI $form)
getAdditionalEditQuestionCommands()
populateQuestionSpecificFormPart(ilPropertyFormGUI $form)
getSolutionOutput( $active_id, $pass=null, $graphicalOutput=false, $result_output=false, $show_question_only=true, $show_feedback=false, $show_correct_solution=false, $show_manual_scoring=false, $show_question_text=true)
saveCorrectionsFormProperties(ilPropertyFormGUI $form)
supportsIntermediateSolutionOutput()
Question type specific support of intermediate solution output The function getSolutionOutput respect...
const ANSWER_TYPE_MULTI_LINE
Basic GUI class for assessment questions.
populateTaxonomyFormSection(ilPropertyFormGUI $form)
isRenderPurposePrintPdf()
writeQuestionGenericPostData()
addQuestionFormCommandButtons($form)
Add the command buttons of a question properties form.
getILIASPage($html="")
Returns the ILIAS Page around a question.
getQuestionTemplate()
get question template
outQuestionPage($a_temp_var, $a_postponed=false, $active_id="", $html="", $inlineFeedbackEnabled=false)
output question page
renderPurposeSupportsFormHtml()
getUseIntermediateSolution()
Get if intermediate solution should be used for solution output.
saveTaxonomyAssignments()
buildBasicEditFormObject()
isTestPresentationContext()
hasCorrectSolution($activeId, $passIndex)
addBasicQuestionFormProperties($form)
Add basic question form properties: assessment: title, author, description, question,...
getGenericFeedbackOutput($active_id, $pass)
Returns the answer specific feedback for the question.
const FEEDBACK_SETTING_CHECKED
const FEEDBACK_SETTING_ALL
const FEEDBACK_SETTING_CORRECT
const CSS_CLASS_FEEDBACK_WRONG
const CSS_CLASS_FEEDBACK_CORRECT
This class represents an option in a radio group.
special template class to simplify handling of ITX/PEAR
This class represents a text property in a property form.
static secureString($a_str, $a_strip_html=true, $a_allow="")
Remove unsecure tags.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static getHtmlPath($relative_path)
get url of path
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms @access public
Interface ilGuiAnswerScoringAdjustable.
Interface ilGuiQuestionScoringAdjustable.
if(empty($password)) $table
if(isset($_POST['submit'])) $form