124        $this->testrequest = 
$DIC->test()->internal()->request();
 
  125        $this->
tabs = $DIC[
'ilTabs'];
 
  126        $this->
access = $DIC[
'ilAccess'];
 
  127        $this->
lng = $DIC[
'lng'];
 
  139                $this->
tabs->activateTab($tabId);
 
  162                $this->
tabs->activateSubTab($subTabId);
 
  235        $this->hiddenTabs = array();
 
  293            require_once 
'Services/Administration/classes/class.ilSettingsTemplate.php';
 
  318        return $this->
access->checkAccess(
'read', 
'', $this->
getTestOBJ()->getRefId());
 
  326        return $this->
access->checkAccess(
'write', 
'', $this->
getTestOBJ()->getRefId());
 
  334        return $this->
access->checkAccess(
'tst_statistics', 
'', $this->
getTestOBJ()->getRefId());
 
  342        return $this->
access->checkAccess(
'edit_permission', 
'', $this->
getTestOBJ()->getRefId());
 
  350        include_once 
'Services/Tracking/classes/class.ilLearningProgressAccess.php';
 
  359        if ($this->testAccess->checkManageParticipantsAccess()) {
 
  371        return $this->testAccess->checkScoreParticipantsAccess();
 
  379        return $this->testAccess->checkStatisticsAccess();
 
  395        if (preg_match(
'/^ass(.*?)gui$/i', 
$DIC->ctrl()->getNextClass($this))) {
 
  399        if (
$DIC->ctrl()->getNextClass($this) == 
'ilassquestionpagegui') {
 
  403        if (
$DIC->ctrl()->getCmdClass() == 
'iltestoutputgui') {
 
  407        if (
$DIC->ctrl()->getCmdClass() == 
'iltestevaluationgui') {
 
  408            return in_array(
$DIC->ctrl()->getCmd(), array(
 
  409                '', 
'outUserResultsPassOverview', 
'outUserListOfAnswerPasses', 
'outEvaluation', 
'eval_a', 
'singleResults', 
'detailedEvaluation' 
  424        switch (strtolower(
$DIC->ctrl()->getCmdClass())) {
 
  425            case 'ilmarkschemagui':
 
  426            case 'ilobjtestsettingsgeneralgui':
 
  427            case 'ilobjtestsettingsscoringresultsgui':
 
  436        switch ($DIC->ctrl()->getCmd()) {
 
  441            case "directfeedback":
 
  443            case "outCorrectSolution":
 
  445            case "showAnswersOfUser":
 
  446            case "backFromSummary":
 
  450            case "confirmFinish":
 
  451            case "outTestSummary":
 
  452            case "outQuestionSummary":
 
  454            case "selectImagemapRegion":
 
  455            case "confirmSubmitAnswers":
 
  456            case "finalSubmission":
 
  458            case "outUserPassDetails":
 
  459            case "checkPassword":
 
  460            case "exportCertificate":
 
  461            case "finishListOfAnswers":
 
  462            case "backConfirmFinish":
 
  463            case "showFinalStatement":
 
  466            case "browseForQuestions":
 
  469            case "resetTextFilter":
 
  470            case "insertQuestions":
 
  472                    'iltestdashboardgui',
 
  474                    "illearningprogressgui"  
  476                if (!in_array(
$DIC->ctrl()->getNextClass($this), $classes)) {
 
  483            case "certificateservice":
 
  484            case "certificateImport":
 
  485            case "certificateUpload":
 
  486            case "certificateEditor":
 
  487            case "certificateDelete":
 
  488            case "certificateSave":
 
  490            case "deleteDefaults":
 
  492            case "applyDefaults":
 
  493            case "inviteParticipants":
 
  494            case "searchParticipants":
 
  495                if ($this->
isWriteAccessGranted() && in_array(strtolower(
$DIC->ctrl()->getCmdClass()), array(
'ilobjtestgui', 
'ilcertificategui'))) {
 
  504            case "detailedEvaluation":
 
  505            case "outEvaluation":
 
  506            case "singleResults":
 
  507            case "exportEvaluation":
 
  508            case "evalUserDetail":
 
  509            case "outStatisticsResultsOverview":
 
  510            case "statisticsPassDetails":
 
  517            $force_active = ($this->testrequest->raw(
"up") != 
"" || $this->testrequest->raw(
"down") != 
"")
 
  520            if (!$force_active) {
 
  521                if ($this->testrequest->raw(
"browse") == 1) {
 
  522                    $force_active = 
true;
 
  527                $target = 
$DIC->ctrl()->getLinkTargetByClass(
 
  534                $target = 
$DIC->ctrl()->getLinkTargetByClass(
'ilTestRandomQuestionSetConfigGUI');
 
  538                $target = 
$DIC->ctrl()->getLinkTargetByClass(
'ilObjTestDynamicQuestionSetConfigGUI');
 
  541            $this->
tabs->addTarget(
 
  544                array(
"questions", 
"browseForQuestions", 
"questionBrowser", 
"createQuestion",
 
  545                    "randomselect", 
"filter", 
"resetFilter", 
"insertQuestions",
 
  546                    "back", 
"createRandomSelection", 
"cancelRandomSelect",
 
  547                    "insertRandomSelection", 
"removeQuestions", 
"moveQuestions",
 
  548                    "insertQuestionsBefore", 
"insertQuestionsAfter", 
"confirmRemoveQuestions",
 
  549                    "cancelRemoveQuestions", 
"executeCreateQuestion", 
"cancelCreateQuestion",
 
  550                    "addQuestionpool", 
"saveRandomQuestions", 
"saveQuestionSelectionMode", 
"print",
 
  551                    "addsource", 
"removesource", 
"randomQuestions"),
 
  560            $this->
tabs->addTarget(
 
  562                $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestGUI', 
'infoScreen'),
 
  563                array(
"infoScreen", 
"outIntroductionPage", 
"showSummary",
 
  564                    "setAnonymousId", 
"redirectToInfoScreen")
 
  571                $settingsCommands = array(
 
  572                    "marks", 
"showMarkSchema",
"addMarkStep", 
"deleteMarkSteps", 
"resetToSimpleMarkSchema", 
"saveMarks",
 
  573                    "certificate", 
"certificateEditor", 
"certificateRemoveBackground", 
"certificateSave",
 
  574                    "certificatePreview", 
"certificateDelete", 
"certificateUpload", 
"certificateImport",
 
  575                    "scoring", 
"defaults", 
"addDefaults", 
"deleteDefaults", 
"applyDefaults",
 
  576                    "inviteParticipants", 
"saveFixedParticipantsStatus", 
"searchParticipants", 
"addParticipants"  
  579                require_once 
'Modules/Test/classes/class.ilObjTestSettingsGeneralGUI.php';
 
  580                $reflection = 
new ReflectionClass(
'ilObjTestSettingsGeneralGUI');
 
  581                foreach ($reflection->getConstants() as 
$name => $value) {
 
  582                    if (substr(
$name, 0, 4) == 
'CMD_') {
 
  583                        $settingsCommands[] = $value;
 
  587                require_once 
'Modules/Test/classes/class.ilObjTestSettingsScoringResultsGUI.php';
 
  588                $reflection = 
new ReflectionClass(
'ilObjTestSettingsScoringResultsGUI');
 
  589                foreach ($reflection->getConstants() as 
$name => $value) {
 
  590                    if (substr(
$name, 0, 4) == 
'CMD_') {
 
  591                        $settingsCommands[] = $value;
 
  595                $settingsCommands[] = 
""; 
 
  597                $this->
tabs->addTarget(
 
  599                    $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestSettingsGeneralGUI'),
 
  601                    array(
"ilmarkschemagui", 
"ilobjtestsettingsgeneralgui", 
"ilobjtestsettingsscoringresultsgui", 
"ilobjtestgui", 
"ilcertificategui")
 
  606            if ($this->
getTestOBJ()->isSkillServiceToBeConsidered()) {
 
  607                require_once 
'Modules/TestQuestionPool/classes/class.ilAssQuestionSkillAssignmentsGUI.php';
 
  609                $link = 
$DIC->ctrl()->getLinkTargetByClass(
 
  610                    array(
'ilTestSkillAdministrationGUI', 
'ilAssQuestionSkillAssignmentsGUI'),
 
  614                $this->
tabs->addTarget(
'tst_tab_competences', $link, array(), array());
 
  620                self::TAB_ID_EXAM_DASHBOARD,
 
  621                $DIC->language()->txt(
'dashboard_tab'),
 
  622                $this->getDashboardTabTarget()
 
  628                self::TAB_ID_RESULTS,
 
  629                $DIC->language()->txt(
'results_tab'),
 
  630                $this->getResultsTabTarget()
 
  635            $this->
tabs->addTarget(
 
  636                self::TAB_ID_LEARNING_PROGRESS,
 
  637                $DIC->ctrl()->getLinkTargetByClass(array(
'illearningprogressgui'), 
''),
 
  639                array(
'illplistofobjectsgui',
'illplistofsettingsgui',
'illearningprogressgui',
'illplistofprogressgui')
 
  644            include_once 
"./Modules/Test/classes/class.ilObjAssessmentFolder.php";
 
  646            if (count($scoring)) {
 
  648                $this->
tabs->addTarget(
 
  649                    self::TAB_ID_MANUAL_SCORING,
 
  650                    $DIC->ctrl()->getLinkTargetByClass(
'ilTestScoringByQuestionsGUI', 
'showManScoringByQuestionParticipantsTable'),
 
  652                        'showManScoringParticipantsTable', 
'applyManScoringParticipantsFilter', 
'resetManScoringParticipantsFilter', 
'showManScoringParticipantScreen',
 
  653                        'showManScoringByQuestionParticipantsTable', 
'applyManScoringByQuestionFilter', 
'resetManScoringByQuestionFilter', 
'saveManScoringByQuestion' 
  663        $scoring_adjust_active = (bool) $setting->get(
'assessment_adjustments_enabled', 
'0');
 
  666                self::TAB_ID_CORRECTION,
 
  667                $DIC->language()->txt(self::TAB_ID_CORRECTION),
 
  668                $DIC->ctrl()->getLinkTargetByClass(
'ilTestCorrectionsGUI')
 
  674            $this->
tabs->addTarget(
 
  675                self::TAB_ID_STATISTICS,
 
  676                $DIC->ctrl()->getLinkTargetByClass([ilRepositoryGUI::class, ilObjTestGUI::class, ilTestEvaluationGUI::class], 
"outEvaluation"),
 
  678                    "statistics", 
"outEvaluation", 
"exportEvaluation", 
"detailedEvaluation", 
"eval_a", 
"evalUserDetail",
 
  679                    "passDetails", 
"outStatisticsResultsOverview", 
"statisticsPassDetails", 
"singleResults" 
  689                $this->
tabs->addTarget(
 
  690                    self::TAB_ID_HISTORY,
 
  691                    $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestGUI', 
'history'),
 
  699                include_once 
"Services/Object/classes/class.ilObjectMetaDataGUI.php";
 
  701                $mdtab = $mdgui->getTab();
 
  703                    $this->
tabs->addTarget(
 
  704                        self::TAB_ID_META_DATA,
 
  714                $this->
tabs->addTarget(
 
  716                    $DIC->ctrl()->getLinkTargetByClass(
'iltestexportgui', 
''),
 
  718                    array(
'iltestexportgui')
 
  724            $this->
tabs->addTarget(
 
  725                self::TAB_ID_PERMISSIONS,
 
  726                $DIC->ctrl()->getLinkTargetByClass(array(
'ilObjTestGUI',
'ilpermissiongui'), 
"perm"),
 
  727                array(
"perm",
"info",
"owner"),
 
  735            foreach ($hideTabs as $tabId) {
 
  736                $this->
tabs->removeTab($tabId);
 
  746            $DIC->ctrl()->saveParameterByClass(
$DIC->ctrl()->getCmdClass(), 
'q_id');
 
  748            $this->
tabs->setBackTarget($this->
lng->txt(
"backtocallingtest"), $DIC->ctrl()->getLinkTargetByClass(
$DIC->ctrl()->getCmdClass(), 
"questions"));
 
  749            $this->
tabs->addTarget(
 
  750                "tst_browse_for_questions",
 
  751                $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestGUI', 
"browseForQuestions"),
 
  752                array(
"browseForQuestions", 
"filter", 
"resetFilter", 
"resetTextFilter", 
"insertQuestions"),
 
  766            $this->
tabs->setBackTarget($this->
lng->txt(
"backtocallingtest"), $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestGUI', 
"questions"));
 
  767            $this->
tabs->addTarget(
 
  769                $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestGUI', 
"randomQuestions"),
 
  770                array(
"randomQuestions"),
 
  781        if ($this->testOBJ->isDynamicTest()) {
 
  785        $this->
tabs->activateTab(self::TAB_ID_QUESTIONS);
 
  801            $this->
tabs->addSubTab(
 
  802                self::SUBTAB_ID_QST_LIST_VIEW,
 
  803                $DIC->language()->txt(
'edit_test_questions'),
 
  804                $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestGUI', 
'questions')
 
  810            $this->
tabs->addSubTabTarget(
 
  812                $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestGUI', 
'print'),
 
  816                $DIC->ctrl()->getCmd() == 
'print' 
  818            $this->
tabs->addSubTabTarget(
 
  820                $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestGUI', 
'review'),
 
  824                $DIC->ctrl()->getCmd() == 
'review' 
  834        $this->
tabs->addSubTabTarget(
 
  836            $DIC->ctrl()->getLinkTargetByClass(
"iltestevaluationgui", 
"outEvaluation"),
 
  837            array(
"outEvaluation", 
"detailedEvaluation", 
"exportEvaluation", 
"evalUserDetail", 
"passDetails",
 
  838                "outStatisticsResultsOverview", 
"statisticsPassDetails"),
 
  843        $this->
tabs->addSubTabTarget(
 
  844            "tst_results_aggregated",
 
  845            $DIC->ctrl()->getLinkTargetByClass(
"iltestevaluationgui", 
"eval_a"),
 
  852        $this->
tabs->addSubTabTarget(
 
  853            "tst_single_results",
 
  854            $DIC->ctrl()->getLinkTargetByClass(
"iltestevaluationgui", 
"singleResults"),
 
  855            array(
"singleResults"),
 
  865        if ($this->testOBJ->isDynamicTest()) {
 
  870        $this->
tabs->addSubTabTarget(
 
  872            $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestSettingsGeneralGUI'),
 
  874            array(
'ilobjtestsettingsgeneralgui')                        
 
  878            $this->
tabs->addSubTabTarget(
 
  880                $DIC->ctrl()->getLinkTargetByClass(
'ilmarkschemagui', 
'showMarkSchema'),
 
  882                array(
'ilmarkschemagui')
 
  887        $this->
tabs->addSubTabTarget(
 
  889            $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestSettingsScoringResultsGUI'),
 
  891            array(
'ilobjtestsettingsscoringresultsgui')     
 
  896        if (!$this->
isHiddenTab(
'certificate') && 
true === $validator->validate()) {
 
  897            $this->
tabs->addSubTabTarget(
 
  899                $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestGUI', 
'certificate'),
 
  900                array(
"certificate", 
"certificateEditor", 
"certificateRemoveBackground", 
"certificateSave",
 
  901                    "certificatePreview", 
"certificateDelete", 
"certificateUpload", 
"certificateImport"),
 
  902                array(
"", 
"ilobjtestgui", 
"ilcertificategui")
 
  908            $this->
tabs->addSubTabTarget(
 
  909                "tst_default_settings",
 
  910                $DIC->ctrl()->getLinkTargetByClass(
'ilObjTestGUI', 
"defaults"),
 
  911                array(
"defaults", 
"deleteDefaults", 
"addDefaults", 
"applyDefaults"),
 
  912                array(
"", 
"ilobjtestgui", 
"ilcertificategui")
 
  917        if ($lti_settings->hasSettingsAccess()) {
 
  918            $this->
tabs->addSubTabTarget(
 
  920                $DIC->ctrl()->getLinkTargetByClass(ilLTIProviderObjectSettingGUI::class),
 
  922                [ilLTIProviderObjectSettingGUI::class]
 
  932        if ($this->
isHiddenTab(self::TAB_ID_EXAM_DASHBOARD)) {
 
  948        if (!($this->
getTestOBJ()->getProcessingTimeInSeconds() > 0)) {
 
  952        if ($this->
getTestOBJ()->getNrOfTries() != 1) {
 
  970        return $DIC->ctrl()->getLinkTargetByClass(array(
'ilTestDashboardGUI', 
'ilTestParticipantsGUI'));
 
  977        if (!$this->testAccess->checkManageParticipantsAccess()) {
 
  981        $this->
tabs->addSubTab(
 
  982            self::SUBTAB_ID_FIXED_PARTICIPANTS,
 
  984            $DIC->ctrl()->getLinkTargetByClass(
'ilTestParticipantsGUI')
 
  988            $this->
tabs->addSubTab(
 
  989                self::SUBTAB_ID_TIME_EXTENSION,
 
  990                $DIC->language()->txt(
'timing'),
 
  991                $DIC->ctrl()->getLinkTargetByClass(
'ilTestParticipantsTimeExtensionGUI')
 
 1000        if ($this->
getTestOBJ()->getFixedParticipants()) {
 
 1001            return $DIC->language()->txt(
'fixedparticipants_subtab');
 
 1004        return $DIC->language()->txt(
'autoparticipants_subtab');
 
 1023            return $DIC->ctrl()->getLinkTargetByClass(array(
'ilTestResultsGUI', 
'ilParticipantsTestResultsGUI'));
 
 1027            return $DIC->ctrl()->getLinkTargetByClass(array(
'ilTestResultsGUI', 
'ilTestEvalObjectiveOrientedGUI'));
 
 1031            return $DIC->ctrl()->getLinkTargetByClass(array(
'ilTestResultsGUI', 
'ilMyTestResultsGUI', 
'ilTestEvaluationGUI'));
 
 1035            return $DIC->ctrl()->getLinkTargetByClass(array(
'ilTestResultsGUI', 
'ilMyTestSolutionsGUI', 
'ilTestEvaluationGUI'));
 
 1038        return $DIC->ctrl()->getLinkTargetByClass(
'ilTestResultsGUI');
 
 1058        return $this->objectiveParent->isObjectiveOrientedPresentationRequired();
 
 1066        if ($this->testAccess->checkParticipantsResultsAccess()) {
 
 1082        return $this->
getTestOBJ()->getHighscoreEnabled();
 
 1094        return $this->
getTestOBJ()->isSkillServiceToBeConsidered();
 
 1107            $this->
tabs->addSubTab(
 
 1108                self::SUBTAB_ID_PARTICIPANTS_RESULTS,
 
 1109                $DIC->language()->txt(
'participants_results_subtab'),
 
 1110                $DIC->ctrl()->getLinkTargetByClass(array(
'ilTestResultsGUI', 
'ilParticipantsTestResultsGUI'))
 
 1115            $this->
tabs->addSubTab(
 
 1116                self::SUBTAB_ID_LO_RESULTS,
 
 1117                $DIC->language()->txt(
'tst_tab_results_objective_oriented'),
 
 1118                $DIC->ctrl()->getLinkTargetByClass(array(
'ilTestResultsGUI', 
'ilTestEvalObjectiveOrientedGUI'))
 
 1123            $myResultsLabel = 
$DIC->language()->txt(
'tst_show_results');
 
 1126                $myResultsLabel = 
$DIC->language()->txt(
'tst_tab_results_pass_oriented');
 
 1129            $this->
tabs->addSubTab(
 
 1130                self::SUBTAB_ID_MY_RESULTS,
 
 1132                $DIC->ctrl()->getLinkTargetByClass(array(
'ilTestResultsGUI', 
'ilMyTestResultsGUI', 
'ilTestEvaluationGUI'))
 
 1138            $this->
tabs->addSubTab(
 
 1139                self::SUBTAB_ID_SKILL_RESULTS,
 
 1140                $DIC->language()->txt(
'tst_show_comp_results'),
 
 1141                $DIC->ctrl()->getLinkTargetByClass(array(
'ilTestResultsGUI', 
'ilTestSkillEvaluationGUI'))
 
 1146            $this->
tabs->addSubTab(
 
 1147                self::SUBTAB_ID_HIGHSCORE,
 
 1148                $DIC->language()->txt(
'tst_show_toplist'),
 
 1149                $DIC->ctrl()->getLinkTargetByClass(array(
'ilTestResultsGUI', 
'ilTestToplistGUI'), 
'outResultsToplist')
 
 1154            $this->
tabs->addSubTab(
 
 1155                self::SUBTAB_ID_MY_SOLUTIONS,
 
 1156                $DIC->language()->txt(
'tst_list_of_answers_show'),
 
 1157                $DIC->ctrl()->getLinkTargetByClass(array(
'ilTestResultsGUI', 
'ilMyTestSolutionsGUI', 
'ilTestEvaluationGUI'))
 
const CMD_SHOW_SKILL_QUEST_ASSIGNS
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
static checkAccess(int $a_ref_id, bool $a_allow_only_read=true)
check access to learning progress
 
static getSettingsTemplateConfig()
 
static _getManualScoring()
Retrieve the manual scoring settings.
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
Settings template application class.
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
const SUBTAB_ID_QST_LIST_VIEW
 
const SUBTAB_ID_GENERAL_SETTINGS
 
const SUBTAB_ID_LO_RESULTS
 
getBrowseForQuestionsTab()
 
__construct(ilTestAccess $testAccess, ilTestObjectiveOrientedContainer $objectiveParent)
ilTestTabsManager constructor.
 
const SUBTAB_ID_MY_SOLUTIONS
 
setParentBackLabel($parentBackLabel)
 
setParentBackHref($parentBackHref)
 
checkDashboardTabAccess()
 
const TAB_ID_EXAM_DASHBOARD
 
needsTimeExtensionSubTab()
 
checkStatisticsTabAccess()
 
activateSubTab($subTabId)
 
const SUBTAB_ID_FIXED_PARTICIPANTS
 
isTabsConfigSetupRequired()
 
setHiddenTabs($hiddenTabs)
 
const SUBTAB_ID_MY_RESULTS
 
const SUBTAB_ID_HIGHSCORE
 
getDashbardParticipantsSubTabLabel()
 
const TAB_ID_MANUAL_SCORING
 
const SUBTAB_ID_TIME_EXTENSION
 
const SUBTAB_ID_SKILL_RESULTS
 
const SUBTAB_ID_QST_PAGE_VIEW
 
const TAB_ID_QUESTIONS
(Sub-)Tab ID constants
 
getTestQuestionSetConfig()
 
isPermissionsAccessGranted()
 
const SUBTAB_ID_PARTICIPANTS_RESULTS
 
ILIAS Test InternalRequestService $testrequest
 
const TAB_ID_LEARNING_PROGRESS
 
needsParticipantsResultsSubTab()
 
setTestQuestionSetConfig(ilTestQuestionSetConfig $testQuestionSetConfig)
 
setTestOBJ(ilObjTest $testOBJ)
 
isStatisticsAccessGranted()
 
checkScoreParticipantsTabAccess()
 
setTestSession($testSession)
 
needsSkillResultsSubTab()