4require_once 
'Modules/Test/classes/class.ilTestPlayerAbstractGUI.php';
 
   58                $ilTabs->clearTargets();
 
   60                $this->ctrl->saveParameter($this, 
"sequence");
 
   61                $this->ctrl->saveParameter($this, 
"active_id");
 
   63                require_once 
'Modules/Test/classes/class.ilObjTestDynamicQuestionSetConfig.php';
 
   65                $this->dynamicQuestionSetConfig->loadFromDb();
 
   75                $this->testSequence->loadFromDb();
 
   77                include_once 
'Services/jQuery/classes/class.iljQueryUtil.php';
 
   79                include_once 
"./Services/YUI/classes/class.ilYuiUtil.php";
 
   81                if( $this->object->getKioskMode() )
 
   83                        include_once 
'Services/UIComponent/Overlay/classes/class.ilOverlayGUI.php';
 
   89                $cmd = $this->ctrl->getCmd();
 
   90                $nextClass = $this->ctrl->getNextClass($this);
 
   94                        case 'ilassquestionpagegui':
 
   96                                $questionId = $this->testSequence->getQuestionForSequence( $this->
calculateSequence() );
 
   98                                require_once 
"./Modules/TestQuestionPool/classes/class.ilAssQuestionPageGUI.php";
 
  100                                $ret = $this->ctrl->forwardCommand($page_gui);
 
  103                        case 'ilassquestionhintrequestgui':
 
  105                                $questionGUI = $this->
object->createQuestionGUI(
 
  106                                        "", $this->testSequenceFactory->getSequence()->getQuestionForSequence( $this->calculateSequence() )
 
  109                                require_once 
'Modules/TestQuestionPool/classes/class.ilAssQuestionHintRequestGUI.php';
 
  112                                $this->ctrl->forwardCommand($gui);
 
  116                        case 'ildynamicquestionsetstatistictablegui':
 
  122                        case 'iltestpasswordprotectiongui':
 
  123                                require_once 
'Modules/Test/classes/class.ilTestPasswordProtectionGUI.php';
 
  125                                $ret = $this->ctrl->forwardCommand($gui);
 
  143                return $this->testSession->getCurrentQuestionId();
 
  151                if ($this->object->checkMaximumAllowedUsers() == FALSE)
 
  158                if( $this->dynamicQuestionSetConfig->isAnyQuestionFilterEnabled() )
 
  160                        $this->ctrl->redirect($this, self::CMD_SHOW_QUESTION_SELECTION);
 
  163                $this->ctrl->redirect($this, self::CMD_SHOW_QUESTION);
 
  170                $this->testSession->setCurrentQuestionId(
null); 
 
  172                $this->testSession->saveToDb();
 
  174                $this->ctrl->setParameter($this, 
'active_id', $this->testSession->getActiveId());
 
  176                assQuestion::_updateTestPassResults($this->testSession->getActiveId(), $this->testSession->getPass(), 
false, 
null, $this->object->id);
 
  178                $_SESSION[
'active_time_id'] = $this->
object->startWorkingTime(
 
  179                                $this->testSession->getActiveId(), $this->testSession->getPass()
 
  182                $this->ctrl->saveParameter($this, 
'tst_javascript');
 
  184                if( $this->dynamicQuestionSetConfig->isAnyQuestionFilterEnabled() )
 
  186                        $this->ctrl->redirect($this, self::CMD_SHOW_QUESTION_SELECTION);
 
  189                $this->ctrl->redirect($this, self::CMD_SHOW_QUESTION);
 
  196                $questionId = $this->testSession->getCurrentQuestionId();
 
  204                        $this->testSequence->unsetQuestionPostponed($questionId);
 
  207                $this->testSequence->loadQuestions(
 
  208                                $this->dynamicQuestionSetConfig, $this->testSession->getQuestionSetFilterSelection()
 
  211                $this->testSequence->cleanupQuestions($this->testSession);
 
  213                $this->testSequence->saveToDb();
 
  215                require_once 
'Services/UIComponent/Toolbar/classes/class.ilToolbarGUI.php';
 
  218                $toolbarGUI->addButton(
 
  220                        '', 
'', 
'', 
'', 
'submit emphsubmit' 
  223                if( $this->object->isPassDeletionAllowed() )
 
  225                        require_once 
'Modules/Test/classes/confirmations/class.ilTestPassDeletionConfirmationGUI.php';
 
  227                        $toolbarGUI->addButton(
 
  228                                $this->lng->txt(
'tst_dyn_test_pass_deletion_button'),
 
  234                        $this->testSequence->getFilteredQuestionsData(), $this->getMarkedQuestions()
 
  235                )); #
vd($filteredData);
 
  237                $filteredTableGUI->setData($filteredData);
 
  240                        $this->testSequence->getCompleteQuestionsData(), $this->getMarkedQuestions()
 
  241                )); #
vd($completeData);
 
  243                $completeTableGUI->setData($completeData);
 
  245                $content = $this->ctrl->getHTML($toolbarGUI);
 
  246                $content .= $this->ctrl->getHTML($filteredTableGUI);
 
  247                $content .= $this->ctrl->getHTML($completeTableGUI);
 
  249                $this->tpl->setVariable(
'TABLE_LIST_OF_QUESTIONS', $content);   
 
  251                if( $this->object->getEnableProcessingTime() )
 
  260                $tableGUI->writeFilterToSession();
 
  262                $taxFilterSelection = array();
 
  265                foreach( $tableGUI->getFilterItems() as $item )
 
  267                        if( strpos($item->getPostVar(), 
'tax_') !== 
false )
 
  269                                $taxId = substr( $item->getPostVar(), strlen(
'tax_') );
 
  270                                $taxFilterSelection[$taxId] = $item->getValue();
 
  272                        elseif( $item->getPostVar() == 
'question_answer_status' )
 
  274                                $answerStatusFilterSelection = $item->getValue();
 
  278                $this->testSession->getQuestionSetFilterSelection()->setTaxonomySelection($taxFilterSelection);
 
  279                $this->testSession->getQuestionSetFilterSelection()->setAnswerStatusSelection($answerStatusFilterSelection);
 
  280                $this->testSession->saveToDb();
 
  282                $this->testSequence->resetTrackedQuestionList();
 
  283                $this->testSequence->saveToDb();
 
  285                $this->ctrl->redirect($this, 
'showQuestionSelection');
 
  291                $tableGUI->resetFilter();
 
  293                $this->testSession->getQuestionSetFilterSelection()->setTaxonomySelection( array() );
 
  294                $this->testSession->getQuestionSetFilterSelection()->setAnswerStatusSelection( 
null );
 
  295                $this->testSession->saveToDb();
 
  297                $this->testSequence->resetTrackedQuestionList();
 
  298                $this->testSequence->saveToDb();
 
  300                $this->ctrl->redirect($this, 
'showQuestionSelection');
 
  305                if( !$this->dynamicQuestionSetConfig->isPreviousQuestionsListEnabled() )
 
  307                        $this->ctrl->redirect($this, self::CMD_SHOW_QUESTION);
 
  312                $questionId = $this->testSession->getCurrentQuestionId();
 
  320                        $this->testSequence->unsetQuestionPostponed($questionId);
 
  323                $this->testSequence->loadQuestions(
 
  324                                $this->dynamicQuestionSetConfig, $this->testSession->getQuestionSetFilterSelection()
 
  327                $this->testSequence->cleanupQuestions($this->testSession);
 
  329                $this->testSequence->saveToDb();
 
  332                        $this->testSequence->getTrackedQuestionList( $this->testSession->getCurrentQuestionId() ),
 
  333                        $this->getMarkedQuestions()
 
  336                include_once 
"./Modules/Test/classes/tables/class.ilTrackedQuestionsTableGUI.php";
 
  338                                $this, 
'showTrackedQuestionList', $this->object->getSequenceSettings(), $this->object->getShowMarker()
 
  341                $table_gui->setData(
$data);
 
  343                $this->tpl->setVariable(
'TABLE_LIST_OF_QUESTIONS', $table_gui->getHTML());      
 
  345                if( $this->object->getEnableProcessingTime() )
 
  359                $this->ctrl->redirect($this, 
'showQuestion');
 
  364                $questionId = $this->testSession->getCurrentQuestionId();
 
  372                        $this->testSequence->unsetQuestionPostponed($questionId);
 
  373                        $this->testSequence->saveToDb();
 
  378                $this->ctrl->redirect($this, 
'showQuestion');
 
  383                $questionId = $this->testSession->getCurrentQuestionId();
 
  391                        $this->testSequence->setQuestionPostponed($questionId);
 
  394                $this->testSession->setCurrentQuestionId(
null);
 
  396                $this->testSequence->saveToDb();
 
  397                $this->testSession->saveToDb();
 
  399                $this->ctrl->redirect($this, 
'showQuestion');
 
  404                $questionId = $this->testSession->getCurrentQuestionId();
 
  412                        $this->testSequence->unsetQuestionPostponed($questionId);
 
  413                        $this->testSequence->saveToDb();
 
  417                $this->
object->setQuestionSetSolved(1, $this->testSession->getCurrentQuestionId(), 
$ilUser->getId());
 
  419                $this->ctrl->redirect($this, 
'showQuestion');
 
  424                $questionId = $this->testSession->getCurrentQuestionId();
 
  432                        $this->testSequence->unsetQuestionPostponed($questionId);
 
  433                        $this->testSequence->saveToDb();
 
  437                $this->
object->setQuestionSetSolved(0, $this->testSession->getCurrentQuestionId(), 
$ilUser->getId());
 
  439                $this->ctrl->redirect($this, 
'showQuestion');
 
  444                $this->testSequence->loadQuestions(
 
  445                                $this->dynamicQuestionSetConfig, $this->testSession->getQuestionSetFilterSelection()
 
  448                $this->testSequence->cleanupQuestions($this->testSession);
 
  450                if( isset(
$_GET[
'sequence']) && (
int)
$_GET[
'sequence'] )
 
  452                        $this->testSession->setCurrentQuestionId( (
int)
$_GET[
'sequence'] );
 
  453                        $this->testSession->saveToDb();
 
  455                        $this->ctrl->setParameter(
 
  456                                        $this, 
'sequence', $this->testSession->getCurrentQuestionId()
 
  460                $this->ctrl->redirect($this, 
'showQuestion');
 
  467                $this->testSequence->loadQuestions(
 
  468                                $this->dynamicQuestionSetConfig, $this->testSession->getQuestionSetFilterSelection()
 
  471                $this->testSequence->cleanupQuestions($this->testSession);
 
  473                if( !$this->testSession->getCurrentQuestionId() )
 
  475                        $upComingQuestionId = $this->testSequence->getUpcomingQuestionId();
 
  477                        $this->testSession->setCurrentQuestionId($upComingQuestionId);
 
  479                        if( $this->testSequence->isQuestionChecked($upComingQuestionId) )
 
  481                                $this->testSequence->setQuestionUnchecked($upComingQuestionId);
 
  485                if( $this->testSession->getCurrentQuestionId() )
 
  487                        $this->ctrl->setParameter(
 
  488                                        $this, 
'sequence', $this->testSession->getCurrentQuestionId()
 
  498                $this->testSequence->saveToDb();
 
  499                $this->testSession->saveToDb();
 
  504                $questionId = $this->testSession->getCurrentQuestionId();
 
  512                        $this->testSequence->unsetQuestionPostponed($questionId);
 
  513                        $this->testSequence->setQuestionChecked($questionId);
 
  518                $filterSelection = $this->testSession->getQuestionSetFilterSelection();
 
  520                $filterSelection->setForcedQuestionIds(array($this->testSession->getCurrentQuestionId()));
 
  522                $this->testSequence->loadQuestions($this->dynamicQuestionSetConfig, $filterSelection);
 
  524                $this->testSequence->cleanupQuestions($this->testSession);
 
  526                $this->ctrl->setParameter(
 
  527                                $this, 
'sequence', $this->testSession->getCurrentQuestionId()
 
  532                $this->testSequence->saveToDb();
 
  533                $this->testSession->saveToDb();
 
  538                $questionId = $this->testSession->getCurrentQuestionId();
 
  546                        $this->testSequence->unsetQuestionPostponed($questionId);
 
  547                        $this->testSequence->saveToDb();
 
  550                $this->ctrl->setParameter(
 
  551                                $this, 
'sequence', $this->testSession->getCurrentQuestionId()
 
  554                $this->ctrl->redirect($this, 
'showQuestion');
 
  564                $_SESSION[
"active_time_id"] = $this->
object->startWorkingTime(
 
  565                                $this->testSession->getActiveId(), $this->testSession->getPass()
 
  571                $question_gui = $this->
object->createQuestionGUI(
 
  572                                "", $this->testSession->getCurrentQuestionId()
 
  575                if( !is_object($question_gui) )
 
  580                                "INV SEQ: active={$this->testSession->getActiveId()} qId={$this->testSession->getCurrentQuestionId()} " 
  581                                .serialize($this->testSequence)
 
  584                        $ilLog->logStack(
'INV SEQ');
 
  587                        $this->ctrl->redirect($this, 
'showQuestion');
 
  590                $question_gui->setTargetGui($this);
 
  592                $question_gui->setQuestionCount(
 
  593                                $this->testSequence->getLastPositionIndex()
 
  595                $question_gui->setSequenceNumber( $this->testSequence->getCurrentPositionIndex(
 
  596                                $this->testSession->getCurrentQuestionId()
 
  599                $this->ctrl->setParameter($this, 
'sequence', $this->testSession->getCurrentQuestionId());               
 
  601                if ($this->object->getJavaScriptOutput())
 
  606                $is_postponed = $this->testSequence->isPostponedQuestion($question_gui->object->getId());
 
  607                $formaction = $this->ctrl->getFormAction($this);
 
  610                $user_post_solution = FALSE;
 
  613                        $user_post_solution = 
$_SESSION[
'previouspost'];
 
  617                global $ilNavigationHistory;
 
  618                $ilNavigationHistory->addItem(
$_GET[
"ref_id"], $this->ctrl->getLinkTarget($this, 
"resumePlayer"), 
"tst");
 
  623                $answer_feedback = FALSE;
 
  624                if (($directfeedback) && ($this->object->getSpecificAnswerFeedback()))
 
  626                        $answer_feedback = TRUE;
 
  631                        $solutionoutput = $question_gui->getSolutionOutput(
 
  632                                $this->testSession->getActiveId(),      #active_id
 
  634                                FALSE,                                                                                          #graphical_output
 
  635                                false,                          #result_output
 
  636                                true,                                                                                           #show_question_only
 
  637                                $answer_feedback,                                                                       #show_feedback
 
  638                                false,                                                                                          #show_correct_solution
 
  639                                FALSE,                                                                                          #show_manual_scoring
 
  640                                true                                                                                            #show_question_text
 
  643                        $pageoutput = $question_gui->outQuestionPage(
 
  644                                "", $this->testSequence->isPostponedQuestion($this->testSession->getCurrentQuestionId()),
 
  645                                $this->testSession->getActiveId(),
 
  649                        $this->tpl->setVariable(
"QUESTION_OUTPUT", $pageoutput);
 
  650                        $this->tpl->setVariable(
"FORMACTION", $formaction);
 
  652                        $directfeedback = 
true;
 
  658                        $question_gui->outQuestionForTest(
 
  659                                        $formaction,                                                                            #form_action
 
  660                                        $this->testSession->getActiveId(),      #active_id
 
  662                                        $is_postponed,                                                                          #is_postponed
 
  663                                        $user_post_solution,                                                            #user_post_solution
 
  664                                        $answer_feedback                                                                        #answer_feedback == inline_specific_feedback
 
  678                        if ($this->object->getInstantFeedbackSolution())
 
  683                                $solutionoutput = $question_gui->getSolutionOutput(
 
  684                                        $this->testSession->getActiveId(),      #active_id
 
  686                                        TRUE,                                                                                           #graphical_output
 
  687                                        $show_question_inline_score,                                            #result_output
 
  688                                        FALSE,                                                                                          #show_question_only
 
  689                                        FALSE,                                                                                          #show_feedback
 
  690                                        TRUE,                                                                                           #show_correct_solution
 
  691                                        FALSE,                                                                                          #show_manual_scoring
 
  692                                        FALSE                                                                                           #show_question_text
 
  699                        if ($this->object->getAnswerFeedbackPoints())
 
  701                                $reachedPoints = $question_gui->object->getAdjustedReachedPoints($this->testSession->getActiveId(), NULL);
 
  702                                $maxPoints = $question_gui->object->getMaximumPoints();
 
  709                        if ($this->object->getGenericAnswerFeedback())
 
  716                        if ($this->object->getSpecificAnswerFeedback())
 
  724                if( $postpone_allowed )
 
  729                if ($this->object->getShowCancel()) 
 
  736                        if ($this->object->getListOfQuestionsEnd()) 
 
  750                if( $this->dynamicQuestionSetConfig->isAnyQuestionFilterEnabled() )
 
  755                if ($this->object->getShowMarker())
 
  757                        include_once 
"./Modules/Test/classes/class.ilObjTest.php";
 
  761                        if (count ($solved_array) > 0) 
 
  763                                $solved = array_pop($solved_array);
 
  764                                $solved = $solved[
"solved"];
 
  779                if ($this->object->getJavaScriptOutput())
 
  781                        $this->tpl->setVariable(
"JAVASCRIPT_TITLE", $this->lng->txt(
"disable_javascript"));
 
  782                        $this->ctrl->setParameter($this, 
"tst_javascript", 
"0");
 
  783                        $this->tpl->setVariable(
"JAVASCRIPT_URL", $this->ctrl->getLinkTarget($this, 
"gotoQuestion"));
 
  787                        $this->tpl->setVariable(
"JAVASCRIPT_TITLE", $this->lng->txt(
"enable_javascript"));
 
  788                        $this->ctrl->setParameter($this, 
"tst_javascript", 
"1");
 
  789                        $this->tpl->setVariable(
"JAVASCRIPT_URL", $this->ctrl->getLinkTarget($this, 
"gotoQuestion"));
 
  792                if ($question_gui->object->supportsJavascriptOutput())
 
  794                        $this->tpl->touchBlock(
"jsswitch");
 
  799                $this->tpl->setVariable(
"AUTOSAVE_URL", $this->ctrl->getFormAction($this, 
"autosave", 
"", 
true));
 
  801                if ($question_gui->isAutosaveable()&& $this->object->getAutosave())
 
  803                        $this->tpl->touchBlock(
'autosave');
 
  807                        $this->tpl->setVariable(
"AUTOSAVEFORMACTION", str_replace(
"&", 
"&", $this->ctrl->getLinkTarget($this, 
"autosave")));
 
  808                        $this->tpl->setVariable(
"AUTOSAVEINTERVAL", $this->object->getAutosaveIval());
 
  813                    $this->tpl->touchBlock(
'question_obligatory');
 
  814                    $this->tpl->setVariable(
'QUESTION_OBLIGATORY', $this->lng->txt(
'required_field'));
 
  824                if ($this->object->getKioskMode())
 
  829                if ($this->object->getEnableProcessingTime())
 
  834                $this->tpl->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
 
  835                $this->tpl->setVariable(
"FORM_TIMESTAMP", time());
 
  837                $this->tpl->setVariable(
"PAGETITLE", 
"- " . $this->object->getTitle());
 
  839                if ($this->object->isShowExamIdInTestPassEnabled() && !$this->object->getKioskMode())
 
  841                        $this->tpl->setCurrentBlock(
'exam_id');
 
  843                                $this->testSession->getActiveId(), $this->testSession->getPass(), $this->object->getId()
 
  845                        $this->tpl->setVariable(
'EXAM_ID_TXT', $this->lng->txt(
'exam_id'));
 
  846                        $this->tpl->parseCurrentBlock();
 
  849                if ($this->object->getShowCancel()) 
 
  854                if( $this->dynamicQuestionSetConfig->isAnyQuestionFilterEnabled() )
 
  859                if( $this->testSequence->openQuestionExists() )
 
  861                        $message = $this->lng->txt(
'tst_dyn_test_msg_currently_finished_selection');
 
  865                        $message = $this->lng->txt(
'tst_dyn_test_msg_currently_finished_completely');
 
  866                        $message .= 
"<br /><br />{$this->buildFinishPagePassDeletionLink()}";
 
  869                $msgHtml = $this->tpl->getMessageHTML($message);
 
  871                $this->tpl->addBlockFile(
 
  872                                'QUESTION_OUTPUT', 
'test_currently_finished_msg_block',
 
  873                                'tpl.test_currently_finished_msg.html', 
'Modules/Test' 
  876                $this->tpl->setCurrentBlock(
'test_currently_finished_msg_block');
 
  877                $this->tpl->setVariable(
'TEST_CURRENTLY_FINISHED_MSG', $msgHtml);
 
  878                $this->tpl->parseCurrentBlock();
 
  884                return !$this->testSequence->trackedQuestionExists();
 
  896                if( isset(
$_GET[
'tst_javascript']) )
 
  898                        $ilUser->writePref(
'tst_javascript', 
$_GET[
'tst_javascript']);
 
  909                 return !$this->
object->endingTimeReached();
 
  920                        $formtimestamp = 
$_POST[
"formtimestamp"];
 
  921                        if (strlen($formtimestamp) == 0) $formtimestamp = 
$_GET[
"formtimestamp"];
 
  922                        if ($formtimestamp != 
$_SESSION[
"formtimestamp"])
 
  924                                $_SESSION[
"formtimestamp"] = $formtimestamp;
 
  934                $qId = $this->testSession->getCurrentQuestionId();
 
  936                if( !$qId || $qId != 
$_GET[
"sequence"])
 
  943                $this->saveResult = FALSE;
 
  949                                $questionGUI = $this->
object->createQuestionGUI(
"", $qId);
 
  951                                if( $this->object->getJavaScriptOutput() )
 
  956                                $activeId = $this->testSession->getActiveId();
 
  958                                $this->saveResult = $questionGUI->object->persistWorkingState(
 
  959                                                $activeId, 
$pass = 
null, $this->object->areObligationsEnabled()
 
  963                if ($this->saveResult == FALSE)
 
  965                        $this->ctrl->setParameter($this, 
"save_error", 
"1");
 
  974                $questionGUI = $this->
object->createQuestionGUI(
"", $questionId);
 
  977                $maxPoints = $questionGUI->object->getMaximumPoints();
 
  979                if($reachedPoints < $maxPoints)
 
  990                if( !$this->dynamicQuestionSetConfig->isPreviousQuestionsListEnabled() )
 
 1001                                'showTrackedQuestionList', 
"<< " . $this->lng->txt( 
"save_previous" )
 
 1004                                'showTrackedQuestionList', 
"<< " . $this->lng->txt( 
"save_previous" )
 
 1012                foreach($questions as $key => $value )
 
 1014                        $this->ctrl->setParameter($this, 
'sequence', $value[
'question_id']);
 
 1015                        $href = $this->ctrl->getLinkTarget($this, 
'gotoQuestion');
 
 1016                        $this->ctrl->setParameter($this, 
'sequence', 
'');
 
 1019                        if( $this->object->getListOfQuestionsDescription() )
 
 1021                                $description = $value[
"description"];
 
 1025                        if( count($marked_questions) )
 
 1027                                if( isset($marked_questions[$value[
"question_id"]]) )
 
 1029                                        if( $marked_questions[$value[
"question_id"]][
"solved"] == 1 )
 
 1036                        array_push(
$data, array(
 
 1038                                'title' => $this->object->getQuestionTitle($value[
"title"]),
 
 1039                                'description' => $description,
 
 1040                                'worked_through' => $this->testSequence->isAnsweredQuestion($value[
"question_id"]),
 
 1041                                'postponed' => $this->testSequence->isPostponedQuestion($value[
"question_id"]),
 
 1051                $questionAnswerStats = array(
 
 1052                        'total_all' => count($questions),
 
 1054                        'non_answered' => 0,
 
 1055                        'wrong_answered' => 0,
 
 1056                        'correct_answered' => 0,
 
 1061                foreach($questions as $key => $value )
 
 1063                        switch( $value[
'question_answer_status'] )
 
 1066                                        $questionAnswerStats[
'non_answered']++;
 
 1067                                        $questionAnswerStats[
'total_open']++;
 
 1070                                        $questionAnswerStats[
'wrong_answered']++;
 
 1071                                        $questionAnswerStats[
'total_open']++;
 
 1074                                        $questionAnswerStats[
'correct_answered']++;
 
 1078                        if( $this->testSequence->isPostponedQuestion($value[
"question_id"]) )
 
 1080                                $questionAnswerStats[
'postponed']++;
 
 1083                        if( isset($marked_questions[$value[
"question_id"]]) )
 
 1085                                if( $marked_questions[$value[
"question_id"]][
"solved"] == 1 )
 
 1087                                        $questionAnswerStats[
'marked']++;
 
 1092                return $questionAnswerStats;
 
 1097                require_once 
'Modules/Test/classes/tables/class.ilTestDynamicQuestionSetStatisticTableGUI.php';
 
 1102                $gui->initTitle(
'tst_dynamic_question_set_complete');
 
 1103                $gui->initColumns(
'tst_num_all_questions');
 
 1110                require_once 
'Modules/Test/classes/tables/class.ilTestDynamicQuestionSetStatisticTableGUI.php';
 
 1115                $gui->initTitle(
'tst_dynamic_question_set_selection');
 
 1116                $gui->initColumns(
'tst_num_selected_questions');
 
 1118                require_once 
'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
 
 1120                        $this->dynamicQuestionSetConfig->getSourceQuestionPoolId()
 
 1123                $gui->setTaxonomyFilterEnabled($this->dynamicQuestionSetConfig->isTaxonomyFilterEnabled());
 
 1124                $gui->setAnswerStatusFilterEnabled($this->dynamicQuestionSetConfig->isAnswerStatusFilterEnabled());
 
 1126                $gui->setFilterSelection($this->testSession->getQuestionSetFilterSelection());
 
 1128                $gui->setFilterCommand(
'filterQuestionSelection');
 
 1129                $gui->setResetCommand(
'resetQuestionSelection');
 
 1136                require_once 
'Modules/Test/classes/tables/class.ilTestDynamicQuestionSetStatisticTableGUI.php';
 
 1138                                $this->ctrl, $this->lng, $this, 
'showQuestionSelection', $tableId
 
 1141                $gui->setShowNumMarkedQuestionsEnabled($this->object->getShowMarker());
 
 1142                $gui->setShowNumPostponedQuestionsEnabled($this->object->getSequenceSettings());
 
 1149                if( $this->testSequence->trackedQuestionExists() )
 
 1151                        return $this->lng->txt(
'tst_resume_dyn_test_with_cur_quest_sel');
 
 1154                return $this->lng->txt(
'tst_start_dyn_test_with_cur_quest_sel');
 
 1159                $questionId = $this->testSession->getCurrentQuestionId();
 
 1160                $activeId = $this->testSession->getActiveId();
 
 1161                $pass = $this->testSession->getPass();
 
 1165                        $this->testSequence->setQuestionAnsweredCorrect($questionId);
 
 1169                        $this->testSequence->setQuestionAnsweredWrong($questionId);
 
 1175                $this->testSession->setCurrentQuestionId(
null);
 
 1177                $this->testSequence->saveToDb();
 
 1178                $this->testSession->saveToDb();
 
 1180                $this->ctrl->setParameter($this, 
'sequence', $this->testSession->getCurrentQuestionId());
 
 1190                $label = $this->lng->txt(
'tst_dyn_test_msg_pass_deletion_link');
 
 1192                return "<a href=\"{$href}\">{$label}</a>";
 
 1200                require_once 
'Modules/Test/classes/confirmations/class.ilTestPassDeletionConfirmationGUI.php';
 
 1203                $this->ctrl->setParameterByClass(
'ilTestEvaluationGUI', 
'active_id', $this->testSession->getActiveId());
 
 1204                $this->ctrl->setParameterByClass(
'ilTestEvaluationGUI', 
'pass', $this->testSession->getPass());
 
 1206                return $this->ctrl->getLinkTargetByClass(
'ilTestEvaluationGUI', 
'confirmDeletePass');
 
Basic GUI class for assessment questions.
_getReachedPoints($active_id, $question_id, $pass=NULL)
Returns the points, a learner has reached answering the question.
const ANSWER_STATUS_FILTER_ALL_NON_CORRECT
answer status filter value domain
const QUESTION_ANSWER_STATUS_WRONG_ANSWERED
const QUESTION_ANSWER_STATUS_CORRECT_ANSWERED
const QUESTION_ANSWER_STATUS_NON_ANSWERED
answer status domain for single questions
static getUsageOfObject($a_obj_id, $a_include_titles=false)
Get usage of object.
_getSolvedQuestions($active_id, $question_fi=null)
get solved questions
lookupExamId($active_id, $pass)
static isQuestionObligatory($question_id)
checks wether the question with given id is marked as obligatory or not
static initJavascript()
Init javascript.
const CONTEXT_DYN_TEST_PLAYER
Output class for assessment test execution.
populateContentStyleBlock()
fillQuestionRelatedNavigation(assQuestionGUI $questionGUI)
renders the elements for the question related navigation
populateNextButtonsLeadingToEndOfTest()
populateSolutionBlock($solutionoutput)
initProcessLocker($activeId)
populateQuestionMarkingBlockAsUnmarked()
handlePasswordProtectionRedirect()
populateSpecificFeedbackBlock($question_gui)
populateSyntaxStyleBlock()
showMaximumAllowedUsersReachedMessage()
calculateSequence()
Calculates the sequence to determine the next question.
populateQuestionMarkingBlockAsMarked()
ensureExistingTestSession(ilTestSession $testSession)
determineInlineScoreDisplay()
populateScoreBlock($reachedPoints, $maxPoints)
updateWorkingTime()
updates working time and stores state saveresult to see if question has to be stored or not
handleUserSettings()
Handles some form parameters on starting and resuming a test.
populateNextButtonsLeadingToQuestion()
populateCancelButtonBlock()
populatePostponeButtons()
populateLowerPreviousButtonBlock($cmd, $label)
populateNextButtonsLeadingToSummary()
isParticipantsAnswerFixed($questionId)
populateQuestionSelectionButtons()
outProcessingTime($active_id)
populateUpperPreviousButtonBlock($cmd, $label)
populateGenericFeedbackBlock($question_gui)
outTestPage($directfeedback)
Outputs the question of the active sequence.
markQuestionCmd()
Set a question solved.
isQuestionAnsweredCorrect($questionId, $activeId, $pass)
outWorkingForm($sequence="", $test_id, $postpone_allowed, $directfeedback=false)
Creates the learners output of a question.
canSaveResult()
Returns TRUE if the answers of the current user could be saved.
getEnterTestButtonLangVar()
resetQuestionSelectionCmd()
const CMD_SHOW_QUESTION_SELECTION
resumePlayerCmd()
Resume a test at the last position.
unmarkQuestionCmd()
Set a question unsolved.
gotoQuestionCmd()
Go to the question with the active sequence.
buildQuestionSetAnswerStatisticRowArray($questions, $marked_questions)
buildFinishPagePassDeletionLink()
handleJavascriptActivationStatus()
handleQuestionActionCmd()
filterQuestionSelectionCmd()
showTrackedQuestionListCmd()
saveQuestionSolution($force=FALSE)
saves the user input of a question
isLastQuestionInSequence(assQuestionGUI $questionGUI)
outCurrentlyFinishedPage()
buildQuestionSetCompleteStatisticTableGUI()
$dynamicQuestionSetConfig
showQuestionSelectionCmd()
isFirstPageInSequence($sequence)
buildQuestionSetStatisticTableGUI($tableId)
buildQuestionSetFilteredStatisticTableGUI()
const CMD_FROM_PASS_DELETION
persistQuestionAnswerStatus()
populatePreviousButtons($sequence)
executeCommand()
execute command
buildQuestionsTableDataArray($questions, $marked_questions)
static getJSLocation($a_js_name, $a_js_location="", $add_version=FALSE)
get full javascript file name (path inclusive) of current user
static initConnectionWithAnimation()
Init YUI Connection module.
static initjQuery($a_tpl=null)
Init jQuery.
vd()
shortcut for var_dump with enhanced debug information