Public Member Functions

ilObjTestGUI Class Reference

Class ilObjTestGUI. More...

Inheritance diagram for ilObjTestGUI:
Collaboration diagram for ilObjTestGUI:

Public Member Functions

 ilObjTestGUI ()
 Constructor public.
executeCommand ()
 execute command
 runObject ()
 outEvaluationObject ()
 importFileObject ()
 form for new test object import
 saveObject ()
 save object public
 backToRepositoryObject ()
 backToCourseObject ()
 exportObject ()
 createExportFileObject ()
 create export file
 downloadExportFileObject ()
 download export file
 confirmDeleteExportFileObject ()
 confirmation screen for export file deletion
 cancelObject ($in_rep=false)
 cancel action and go back to previous page public
 cancelDeleteExportFileObject ()
 cancel deletion of export files
 deleteExportFileObject ()
 delete export files
 importObject ()
 display dialogue for importing tests
 uploadTstObject ()
 imports test and question(s)
 importVerifiedFileObject ()
 imports question(s) into the questionpool (after verification)
 cancelImportObject ()
 uploadObject ($redirect=true)
 display status information or report errors messages in case of error
 confirmChangeProperties ($direction=0)
 Displays a save confirmation dialog for test properties.
 savePropertiesObject ()
 Save the form input of the properties form.
 saveScoringObject ()
 Save the form input of the scoring form.
 scoringObject ()
 Display and fill the scoring settings form of the test.
 propertiesObject ()
 Display and fill the properties form of the test.
 downloadFileObject ()
 download file
 fullscreenObject ()
 show fullscreen view
 download_paragraphObject ()
 download source code paragraph
 filterObject ()
 Sets the filter for the question browser.
 resetFilterObject ()
 Resets the filter for the question browser.
 backObject ()
 Called when the back button in the question browser was pressed.
 insertQuestionsObject ()
 Insert questions from the questionbrowser into the test.
 questionBrowser ()
 Creates a form to select questions from questionpools to insert the questions into the test.
 createQuestionPool ($name="dummy")
 Creates a new questionpool and returns the reference id.
 randomselectObject ()
 Creates a form for random selection of questions.
 cancelRandomSelectObject ()
 Cancels the form for random selection of questions.
 createRandomSelectionObject ()
 Offers a random selection for insertion in the test.
 insertRandomSelectionObject ()
 Inserts a random selection into the test.
 saveRandomQuestionsObject ()
 addQuestionpoolObject ()
 randomQuestionsObject ()
 saveQuestionSelectionModeObject ()
 browseForQuestionsObject ()
 executeCreateQuestionObject ()
 Called when a new question should be created from a test after confirmation.
 cancelCreateQuestionObject ()
 Called when the creation of a new question is cancelled.
 createQuestionObject ()
 Called when a new question should be created from a test.
 confirmRemoveQuestionsObject ()
 Remove questions from the test after confirmation.
 cancelRemoveQuestionsObject ()
 Cancels the removal of questions from the test.
 removeQuestionsForm ($checked_questions)
 Displays a form to confirm the removal of questions from the test.
 removeQuestionsObject ()
 Called when a selection of questions should be removed from the test.
 moveQuestionsObject ()
 Marks selected questions for moving.
 insertQuestionsBeforeObject ()
 Insert checked questions before the actual selection.
 insertQuestionsAfterObject ()
 Insert checked questions after the actual selection.
 questionsObject ()
 takenObject ()
 addMarkStepObject ()
 Add a new mark step to the tests marks.
 saveMarkSchemaFormData ()
 Save the mark schema POST data when the form was submitted.
 addSimpleMarkSchemaObject ()
 Add a simple mark schema to the tests marks.
 deleteMarkStepsObject ()
 Delete selected mark steps.
 cancelMarksObject ()
 Cancel the mark schema form and return to the properties form.
 saveMarksObject ()
 Save the mark schema.
 marksObject ()
 confirmDeleteAllUserResultsObject ()
 Deletes all user data for the test object.
 confirmDeleteSelectedUserDataObject ()
 Deletes the selected user data for the test object.
 cancelDeleteSelectedUserDataObject ()
 Cancels the deletion of all user data for the test object.
 deleteAllUserDataObject ()
 Asks for a confirmation to delete all user data of the test object.
 deleteAllUserResultsObject ()
 Asks for a confirmation to delete all user data of the test object.
 deleteSingleUserResultsObject ()
 Asks for a confirmation to delete selected user data of the test object.
 historyObject ()
 Creates the change history for a test.
 createObject ()
 form for new content object creation
 cancelFixedParticipantsStatusChangeObject ()
 Cancels the change of the fixed participants status when fixed participants already exist.
 confirmFixedParticipantsStatusChangeObject ()
 Confirms the change of the fixed participants status when fixed participants already exist.
 confirmFixedParticipantsStatusChange ()
 Shows a confirmation dialog to remove fixed participants from the text.
 saveFixedParticipantsStatusObject ()
 Saves the status change of the fixed participants status.
 inviteParticipantsObject ()
 Creates the output for user/group invitation to a test.
 participantsActionObject ()
 Evaluates the actions on the participants page.
 participantsObject ()
 Creates the output of the test participants.
 showDetailedResultsObject ()
 Shows the pass overview and the answers of one ore more users for the scored pass.
 showUserAnswersObject ()
 Shows the answers of one ore more users for the scored pass.
 showPassOverviewObject ()
 Shows the pass overview of the scored pass for one ore more users.
 showUserResults ($show_pass_details, $show_answers, $show_reached_points=FALSE)
 Shows the pass overview of the scored pass for one ore more users.
 removeParticipantObject ()
 saveClientIPObject ()
 printobject ()
 Print tab to create a print of all questions with points and solutions.
 outUserGroupTable ($a_type, $data_array, $block_result, $block_row, $title_text, $title_label, $buttons)
 Output of the table structures for selected users and selected groups.
 addParticipantsObject ()
 searchParticipantsObject ()
 defaultsObject ()
 Displays the settings page for test defaults.
 deleteDefaultsObject ()
 Deletes selected test defaults.
 applyDefaultsObject ()
 Applies the selected test defaults.
 addDefaultsObject ()
 Adds the defaults of this test to the defaults.
 infoScreenObject ()
 this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually, if everything works through ilCtrl in the future this may be changed
 redirectToInfoScreenObject ()
 infoScreen ($session_lock="")
 show information screen
 addLocatorItems ()
 should be overwritten to add object specific items (repository items are preloaded)
 getBrowseForQuestionsTab (&$tabs_gui)
 getRandomQuestionsTab (&$tabs_gui)
 statisticsObject ()
 certificateObject ()
 Shows the certificate editor.
 getQuestionsSubTabs ()
 getStatisticsSubTabs ()
 getParticipantsSubTabs ()
 getSettingsSubTabs ()
 getTabs (&$tabs_gui)
 adds tabs to tab gui object
 _goto ($a_target)
 Redirect script to call a test with the test reference id.

Detailed Description

Class ilObjTestGUI.

Author:
Helmut Schottmüller <helmut.schottmueller@mac.com>
Version:
Id:
class.ilObjTestGUI.php 17804 2008-11-03 10:16:27Z hschottm

ilObjTestGUI: ilObjCourseGUI, ilMDEditorGUI, ilTestOutputGUI ilObjTestGUI: ilTestEvaluationGUI, ilPermissionGUI ilObjTestGUI: ilInfoScreenGUI, ilLearningProgressGUI ilObjTestGUI: ilTestCertificateGUI ilObjTestGUI: ilTestScoringGUI

Definition at line 44 of file class.ilObjTestGUI.php.


Member Function Documentation

ilObjTestGUI::_goto ( a_target  ) 

Redirect script to call a test with the test reference id.

Redirect script to call a test with the test reference id

Parameters:
integer $a_target The reference id of the test public

Definition at line 5681 of file class.ilObjTestGUI.php.

References $_GET, $ilErr, ilObjectGUI::$lng, ilObject::_lookupObjId(), ilObject::_lookupTitle(), exit, and ilUtil::sendInfo().

        {
                global $ilAccess, $ilErr, $lng;

                if ($ilAccess->checkAccess("visible", "", $a_target))
                {
                        //include_once "./Services/Utilities/classes/class.ilUtil.php";
                        $_GET["baseClass"] = "ilObjTestGUI";
                        $_GET["cmd"] = "infoScreen";
                        $_GET["ref_id"] = $a_target;
                        include_once("ilias.php");
                        exit;
                        //ilUtil::redirect("ilias.php?baseClass=ilObjTestGUI&cmd=infoScreen&ref_id=$a_target");
                }
                else if ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID))
                {
                        $_GET["cmd"] = "frameset";
                        $_GET["target"] = "";
                        $_GET["ref_id"] = ROOT_FOLDER_ID;
                        ilUtil::sendInfo(sprintf($lng->txt("msg_no_perm_read_item"),
                                ilObject::_lookupTitle(ilObject::_lookupObjId($a_target))), true);
                        include("repository.php");
                        exit;
                }

                $ilErr->raiseError($lng->txt("msg_no_perm_read_lm"), $ilErr->FATAL);
        }       

Here is the call graph for this function:

ilObjTestGUI::addDefaultsObject (  ) 

Adds the defaults of this test to the defaults.

Definition at line 4953 of file class.ilObjTestGUI.php.

References defaultsObject(), and ilUtil::sendInfo().

        {
                if (strlen($_POST["name"]) > 0)
                {
                        $this->object->addDefaults($_POST['name']);
                }
                else
                {
                        ilUtil::sendInfo($this->lng->txt("tst_defaults_enter_name"));
                }
                $this->defaultsObject();
        }

Here is the call graph for this function:

ilObjTestGUI::addLocatorItems (  ) 

should be overwritten to add object specific items (repository items are preloaded)

Reimplemented from ilObjectGUI.

Definition at line 5219 of file class.ilObjTestGUI.php.

References $_GET.

        {
                global $ilLocator;
                switch ($this->ctrl->getCmd())
                {
                        case "run":
                        case "infoScreen":
                        case "redirectToInfoScreen":
                        case "start":
                        case "resume":
                        case "previous":
                        case "next":
                        case "summary":
                        case "finishTest":
                        case "outCorrectSolution":
                        case "passDetails":
                        case "showAnswersOfUser":
                        case "outUserResultsOverview":
                        case "backFromSummary":
                        case "show_answers":
                        case "setsolved":
                        case "resetsolved":
                        case "outTestSummary":
                        case "outQuestionSummary":
                        case "gotoQuestion":
                        case "selectImagemapRegion":
                        case "confirmSubmitAnswers":
                        case "finalSubmission":
                        case "postpone":
                        case "redirectQuestion":
                        case "outUserPassDetails":
                        case "checkPassword":
                                $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "infoScreen"), "", $_GET["ref_id"]);
                                break;
                        case "eval_stat":
                        case "evalAllUsers":
                        case "evalUserDetail":
                                $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "eval_stat"), "", $_GET["ref_id"]);
                                break;
                        case "create":
                        case "save":
                        case "cancel":
                        case "importFile":
                        case "cloneAll":
                        case "importVerifiedFile":
                        case "cancelImport":
                                break;
                default:
                                $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, ""), "", $_GET["ref_id"]);
                                break;
                }
        }

ilObjTestGUI::addMarkStepObject (  ) 

Add a new mark step to the tests marks.

Add a new mark step to the tests marks

public

Definition at line 3244 of file class.ilObjTestGUI.php.

References marksObject(), and saveMarkSchemaFormData().

        {
                $this->saveMarkSchemaFormData();
                $this->object->mark_schema->addMarkStep();
                $this->marksObject();
        }

Here is the call graph for this function:

ilObjTestGUI::addParticipantsObject (  ) 

Definition at line 4766 of file class.ilObjTestGUI.php.

References ilUtil::sendInfo().

        {
                $countusers = 0;
                $countgroups = 0;
                $countroles = 0;
                // add users 
                if (is_array($_POST["user_select"]))
                {
                        $i = 0;
                        foreach ($_POST["user_select"] as $user_id)
                        {
                                $client_ip = $_POST["client_ip"][$i];
                                $this->object->inviteUser($user_id, $client_ip);
                                $countusers++;
                                $i++;
                        }
                }
                // add groups members
                if (is_array($_POST["group_select"]))
                {
                        foreach ($_POST["group_select"] as $group_id)
                        {
                                $this->object->inviteGroup($group_id);
                                $countgroups++;
                        }
                }
                // add role members
                if (is_array($_POST["role_select"]))
                {
                        foreach ($_POST["role_select"] as $role_id)
                        {                                       
                                $this->object->inviteRole($role_id);
                                $countroles++;
                        }
                }
                $message = "";
                if ($countusers)
                {
                        $message = $this->lng->txt("tst_invited_selected_users");
                }
                if ($countgroups)
                {
                        if (strlen($message)) $message .= "<br />";
                        $message = $this->lng->txt("tst_invited_selected_groups");
                }
                if ($countroles)
                {
                        if (strlen($message)) $message .= "<br />";
                        $message = $this->lng->txt("tst_invited_selected_roles");
                }
                if (strlen($message))
                {
                        ilUtil::sendInfo($message, TRUE);
                }
                else
                {
                        ilUtil::sendInfo($this->lng->txt("tst_invited_nobody"), TRUE);
                }
                
                $this->ctrl->redirect($this, "inviteParticipants");
        }

Here is the call graph for this function:

ilObjTestGUI::addQuestionpoolObject (  ) 

Definition at line 2512 of file class.ilObjTestGUI.php.

References randomQuestionsObject().

        {
                $this->randomQuestionsObject();
        }

Here is the call graph for this function:

ilObjTestGUI::addSimpleMarkSchemaObject (  ) 

Add a simple mark schema to the tests marks.

Add a simple mark schema to the tests marks

public

Definition at line 3290 of file class.ilObjTestGUI.php.

References marksObject().

        {
                $this->object->mark_schema->createSimpleSchema($this->lng->txt("failed_short"), $this->lng->txt("failed_official"), 0, 0, $this->lng->txt("passed_short"), $this->lng->txt("passed_official"), 50, 1);
                $this->marksObject();
        }

Here is the call graph for this function:

ilObjTestGUI::applyDefaultsObject (  ) 

Applies the selected test defaults.

Definition at line 4926 of file class.ilObjTestGUI.php.

References defaultsObject(), and ilUtil::sendInfo().

        {
                if (count($_POST["chb_defaults"]) == 1)
                {
                        foreach ($_POST["chb_defaults"] as $test_default_id)
                        {
                                $result = $this->object->applyDefaults($test_default_id);
                                if (!$result)
                                {
                                        ilUtil::sendInfo($this->lng->txt("tst_defaults_apply_not_possible"));
                                }
                                else
                                {
                                        ilUtil::sendInfo($this->lng->txt("tst_defaults_applied"));
                                }
                        }
                }
                else
                {
                        ilUtil::sendInfo($this->lng->txt("tst_defaults_apply_select_one"));
                }
                $this->defaultsObject();
        }

Here is the call graph for this function:

ilObjTestGUI::backObject (  ) 

Called when the back button in the question browser was pressed.

Called when the back button in the question browser was pressed

public

Definition at line 1809 of file class.ilObjTestGUI.php.

        {
                $this->ctrl->redirect($this, "questions");
        }

ilObjTestGUI::backToCourseObject (  ) 

Definition at line 231 of file class.ilObjTestGUI.php.

References $_GET, ilObjectGUI::getReturnLocation(), and ilUtil::redirect().

        {
                include_once "./Services/Utilities/classes/class.ilUtil.php";
                ilUtil::redirect($this->getReturnLocation("cancel","./repository.php?ref_id=".(int) $_GET['crs_show_result']));
        }

Here is the call graph for this function:

ilObjTestGUI::backToRepositoryObject (  ) 

Definition at line 224 of file class.ilObjTestGUI.php.

References ilObjectGUI::getReturnLocation(), and ilUtil::redirect().

Referenced by inviteParticipantsObject(), and participantsObject().

        {
                include_once "./Services/Utilities/classes/class.ilUtil.php";
                $path = $this->tree->getPathFull($this->object->getRefID());
                ilUtil::redirect($this->getReturnLocation("cancel","./repository.php?cmd=frameset&ref_id=" . $path[count($path) - 2]["child"]));
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::browseForQuestionsObject (  ) 

Definition at line 2734 of file class.ilObjTestGUI.php.

References questionBrowser().

        {
                $this->questionBrowser();
        }

Here is the call graph for this function:

ilObjTestGUI::cancelCreateQuestionObject (  ) 

Called when the creation of a new question is cancelled.

Called when the creation of a new question is cancelled

public

Definition at line 2776 of file class.ilObjTestGUI.php.

        {
                $this->ctrl->redirect($this, "questions");
        }

ilObjTestGUI::cancelDeleteExportFileObject (  ) 

cancel deletion of export files

Definition at line 472 of file class.ilObjTestGUI.php.

        {
                session_unregister("ilExportFiles");
                $this->ctrl->redirect($this, "export");
        }

ilObjTestGUI::cancelDeleteSelectedUserDataObject (  ) 

Cancels the deletion of all user data for the test object.

Cancels the deletion of all user data for the test object

public

Definition at line 3545 of file class.ilObjTestGUI.php.

        {
                $this->ctrl->redirect($this, "participants");
        }

ilObjTestGUI::cancelFixedParticipantsStatusChangeObject (  ) 

Cancels the change of the fixed participants status when fixed participants already exist.

Cancels the change of the fixed participants status when fixed participants already exist

public

Definition at line 3842 of file class.ilObjTestGUI.php.

        {
                $this->ctrl->redirect($this, "inviteParticipants");
        }

ilObjTestGUI::cancelImportObject (  ) 

Definition at line 735 of file class.ilObjTestGUI.php.

        {
                $this->ctrl->redirect($this, "cancel");
//              $this->backToRepositoryObject();
        }

ilObjTestGUI::cancelMarksObject (  ) 

Cancel the mark schema form and return to the properties form.

Cancel the mark schema form and return to the properties form

public

Definition at line 3327 of file class.ilObjTestGUI.php.

References ilUtil::sendInfo().

        {
                ilUtil::sendInfo($this->lng->txt("msg_cancel"), true);
                $this->ctrl->redirect($this, "marks");
        }

Here is the call graph for this function:

ilObjTestGUI::cancelObject ( in_rep = false  ) 

cancel action and go back to previous page public

Reimplemented from ilObjectGUI.

Definition at line 463 of file class.ilObjTestGUI.php.

References $_GET, ilUtil::redirect(), and ilUtil::sendInfo().

        {
                ilUtil::sendInfo($this->lng->txt("msg_cancel"),true);
                ilUtil::redirect("repository.php?cmd=frameset&ref_id=".$_GET["ref_id"]);
        }

Here is the call graph for this function:

ilObjTestGUI::cancelRandomSelectObject (  ) 

Cancels the form for random selection of questions.

Cancels the form for random selection of questions

public

Definition at line 2408 of file class.ilObjTestGUI.php.

        {
                $this->ctrl->redirect($this, "questions");
        }

ilObjTestGUI::cancelRemoveQuestionsObject (  ) 

Cancels the removal of questions from the test.

Cancels the removal of questions from the test

public

Definition at line 2860 of file class.ilObjTestGUI.php.

        {
                $this->ctrl->redirect($this, "questions");
        }

ilObjTestGUI::certificateObject (  ) 

Shows the certificate editor.

Definition at line 5309 of file class.ilObjTestGUI.php.

        {
                include_once "./Modules/Test/classes/class.ilTestCertificateGUI.php";
                $output_gui = new ilTestCertificateGUI($this->object);
                $output_gui->certificateEditor();
        }

ilObjTestGUI::confirmChangeProperties ( direction = 0  ) 

Displays a save confirmation dialog for test properties.

Displays a save confirmation dialog for test properties when already defined questions or question pools get lost after saving

Parameters:
int $direction Direction of the change (0 = from random test to standard, anything else = from standard to random test) private

Definition at line 762 of file class.ilObjTestGUI.php.

Referenced by savePropertiesObject().

        {
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_properties_save_confirmation.html", "Modules/Test");
                $information = "";
                switch ($direction)
                {
                        case 0:
                                $information = $this->lng->txt("change_properties_from_random_to_standard");
                                break;
                        default:
                                $information = $this->lng->txt("change_properties_from_standard_to_random");
                                break;
                }
                foreach ($_POST as $key => $value)
                {
                        if (strcmp($key, "cmd") != 0)
                        {
                                if (is_array($value))
                                {
                                        foreach ($value as $k => $v)
                                        {
                                                $this->tpl->setCurrentBlock("hidden_variable");
                                                $this->tpl->setVariable("HIDDEN_KEY", $key . "[" . $k . "]");
                                                $this->tpl->setVariable("HIDDEN_VALUE", $v);
                                                $this->tpl->parseCurrentBlock();
                                        }
                                }
                                else
                                {
                                        $this->tpl->setCurrentBlock("hidden_variable");
                                        $this->tpl->setVariable("HIDDEN_KEY", $key);
                                        $this->tpl->setVariable("HIDDEN_VALUE", $value);
                                        $this->tpl->parseCurrentBlock();
                                }
                        }
                }
                $this->tpl->setCurrentBlock("hidden_variable");
                $this->tpl->setVariable("HIDDEN_KEY", "tst_properties_confirmation");
                $this->tpl->setVariable("HIDDEN_VALUE", "1");
                $this->tpl->parseCurrentBlock();
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("TXT_CONFIRMATION", $this->lng->txt("confirmation"));
                $this->tpl->setVariable("TXT_INFORMATION", $information);
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("BTN_CONFIRM", $this->lng->txt("confirm"));
                $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
                $this->tpl->parseCurrentBlock();
        }

Here is the caller graph for this function:

ilObjTestGUI::confirmDeleteAllUserResultsObject (  ) 

Deletes all user data for the test object.

Deletes all user data for the test object

public

Definition at line 3505 of file class.ilObjTestGUI.php.

References ilUtil::sendInfo().

        {
                $this->object->removeAllTestEditings();
                ilUtil::sendInfo($this->lng->txt("tst_all_user_data_deleted"), true);
                $this->ctrl->redirect($this, "participants");
        }

Here is the call graph for this function:

ilObjTestGUI::confirmDeleteExportFileObject (  ) 

confirmation screen for export file deletion

Definition at line 413 of file class.ilObjTestGUI.php.

References $_SESSION, $file, ilUtil::getImagePath(), ilUtil::sendInfo(), and ilUtil::switchColor().

        {
                if(!isset($_POST["file"]))
                {
                        ilUtil::sendInfo($this->lng->txt("no_checkbox"), true);
                        $this->ctrl->redirect($this, "export");
                }

                // SAVE POST VALUES
                $_SESSION["ilExportFiles"] = $_POST["file"];

                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.confirm_deletion.html", "Modules/Test");

                ilUtil::sendInfo($this->lng->txt("info_delete_sure"));

                $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));

                // BEGIN TABLE HEADER
                $this->tpl->setCurrentBlock("table_header");
                $this->tpl->setVariable("TEXT",$this->lng->txt("objects"));
                $this->tpl->parseCurrentBlock();

                // BEGIN TABLE DATA
                $counter = 0;
                foreach($_POST["file"] as $file)
                {
                                $this->tpl->setCurrentBlock("table_row");
                                $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
                                $this->tpl->setVariable("TEXT_CONTENT", $file);
                                $this->tpl->parseCurrentBlock();
                }

                // cancel/confirm button
                $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
                $buttons = array( "cancelDeleteExportFile"  => $this->lng->txt("cancel"),
                        "deleteExportFile"  => $this->lng->txt("confirm"));
                foreach ($buttons as $name => $value)
                {
                        $this->tpl->setCurrentBlock("operation_btn");
                        $this->tpl->setVariable("BTN_NAME",$name);
                        $this->tpl->setVariable("BTN_VALUE",$value);
                        $this->tpl->parseCurrentBlock();
                }
        }

Here is the call graph for this function:

ilObjTestGUI::confirmDeleteSelectedUserDataObject (  ) 

Deletes the selected user data for the test object.

Deletes the selected user data for the test object

public

Definition at line 3519 of file class.ilObjTestGUI.php.

References ilUtil::sendInfo().

        {
                $active_ids = array();
                foreach ($_POST["chbUser"] as $active_id)
                {
                        if ($this->object->getFixedParticipants())
                        {
                                array_push($active_ids, $this->object->getActiveIdOfUser($active_id));
                        }
                        else
                        {
                                array_push($active_ids, $active_id);
                        }
                }
                $this->object->removeSelectedTestResults($active_ids);
                ilUtil::sendInfo($this->lng->txt("tst_selected_user_data_deleted"), true);
                $this->ctrl->redirect($this, "participants");
        }

Here is the call graph for this function:

ilObjTestGUI::confirmFixedParticipantsStatusChange (  ) 

Shows a confirmation dialog to remove fixed participants from the text.

Shows a confirmation dialog to remove fixed participants from the text

public

Definition at line 3874 of file class.ilObjTestGUI.php.

Referenced by saveFixedParticipantsStatusObject().

        {
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.confirm_deletion.html", "Modules/Test");

                $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));

                $this->tpl->setCurrentBlock("table_header");
                $this->tpl->setVariable("TEXT", $this->lng->txt("tst_fixed_participants_disable"));
                $this->tpl->parseCurrentBlock();

                $this->tpl->setCurrentBlock("table_row");
                $this->tpl->setVariable("CSS_ROW", "tblrow1");
                $this->tpl->setVariable("TEXT_CONTENT", $this->lng->txt("tst_fixed_participants_disable_description"));
                $this->tpl->parseCurrentBlock();

                // cancel/confirm button
                $buttons = array( "confirmFixedParticipantsStatusChange"  => $this->lng->txt("proceed"),
                        "cancelFixedParticipantsStatusChange"  => $this->lng->txt("cancel"));
                foreach ($buttons as $name => $value)
                {
                        $this->tpl->setCurrentBlock("operation_btn");
                        $this->tpl->setVariable("BTN_NAME",$name);
                        $this->tpl->setVariable("BTN_VALUE",$value);
                        $this->tpl->parseCurrentBlock();
                }
        }

Here is the caller graph for this function:

ilObjTestGUI::confirmFixedParticipantsStatusChangeObject (  ) 

Confirms the change of the fixed participants status when fixed participants already exist.

Confirms the change of the fixed participants status when fixed participants already exist

public

Definition at line 3854 of file class.ilObjTestGUI.php.

        {
                $fixed_participants = 0;
                $invited_users = $this->object->getInvitedUsers();
                foreach ($invited_users as $user_object)
                {
                        $this->object->disinviteUser($user_object->usr_id);
                }
                $this->object->setFixedParticipants($fixed_participants);
                $this->object->saveToDb();
                $this->ctrl->redirect($this, "inviteParticipants");
        }

ilObjTestGUI::confirmRemoveQuestionsObject (  ) 

Remove questions from the test after confirmation.

Remove questions from the test after confirmation

public

Definition at line 2837 of file class.ilObjTestGUI.php.

References ilUtil::sendInfo().

        {
                ilUtil::sendInfo($this->lng->txt("tst_questions_removed"));
                $checked_questions = array();
                foreach ($_POST as $key => $value) {
                        if (preg_match("/id_(\d+)/", $key, $matches)) {
                                array_push($checked_questions, $matches[1]);
                        }
                }
                foreach ($checked_questions as $key => $value) {
                        $this->object->removeQuestion($value);
                }
                $this->object->saveCompleteStatus();
                $this->ctrl->redirect($this, "questions");
        }

Here is the call graph for this function:

ilObjTestGUI::createExportFileObject (  ) 

create export file

Definition at line 369 of file class.ilObjTestGUI.php.

References $_GET, and ilUtil::sendInfo().

        {
                global $ilAccess;
                
                if ($ilAccess->checkAccess("write", "", $this->ref_id))
                {
                        include_once("./Modules/Test/classes/class.ilTestExport.php");
                        $test_exp = new ilTestExport($this->object, $_GET["mode"]);
                        $test_exp->buildExportFile();
                }
                else
                {
                        ilUtil::sendInfo("cannot_export_test", TRUE);
                }
                $this->ctrl->redirect($this, "export");
        }

Here is the call graph for this function:

ilObjTestGUI::createObject (  ) 

form for new content object creation

Reimplemented from ilObjectGUI.

Definition at line 3743 of file class.ilObjTestGUI.php.

References $_GET, $_SESSION, ilObjectGUI::$data, ilFrameTargetInfo::_getFrame(), ilObjectGUI::fillCloneTemplate(), ilUtil::getImagePath(), ilObjectGUI::getTemplateFile(), ilUtil::prepareFormOutput(), and ilUtil::stripSlashes().

Referenced by importFileObject().

        {
                global $rbacsystem;
                $new_type = $_POST["new_type"] ? $_POST["new_type"] : $_GET["new_type"];
                if (!$rbacsystem->checkAccess("create", $_GET["ref_id"], $new_type))
                {
                        $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
                }
                else
                {
                        $this->getTemplateFile("create", $new_type);

                        include_once("./Modules/Test/classes/class.ilObjTest.php");
                        $tst = new ilObjTest();
                        $questionpools =& $tst->getAvailableQuestionpools(TRUE, FALSE, TRUE, TRUE);
                        if (count($questionpools) == 0)
                        {
                        }
                        else
                        {
                                foreach ($questionpools as $key => $value)
                                {
                                        $this->tpl->setCurrentBlock("option_qpl");
                                        $this->tpl->setVariable("OPTION_VALUE", $key);
                                        $this->tpl->setVariable("TXT_OPTION", $value["title"]);
                                        if ($_POST["qpl"] == $key)
                                        {
                                                $this->tpl->setVariable("OPTION_SELECTED", " selected=\"selected\"");                           
                                        }
                                        $this->tpl->parseCurrentBlock();
                                }
                        }

                        $defaults =& $tst->getAvailableDefaults();
                        if (count($defaults))
                        {
                                foreach ($defaults as $row)
                                {
                                        $this->tpl->setCurrentBlock("defaults_row");
                                        $this->tpl->setVariable("DEFAULTS_VALUE", $row["test_defaults_id"]);
                                        $this->tpl->setVariable("DEFAULTS_NAME", ilUtil::prepareFormOutput($row["name"]));
                                        $this->tpl->parseCurrentBlock();
                                }
                                $this->tpl->setCurrentBlock("defaults");
                                $this->tpl->setVariable("TXT_DEFAULTS", $this->lng->txt("defaults"));
                                $this->tpl->setVariable("TEXT_NO_DEFAULTS", $this->lng->txt("tst_defaults_dont_use"));
                                $this->tpl->parseCurrentBlock();
                        }
                        
                        $this->fillCloneTemplate('DUPLICATE','tst');
                        $this->tpl->setCurrentBlock("adm_content");
                        
                        // fill in saved values in case of error
                        $data = array();
                        $data["fields"] = array();
                        $data["fields"]["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
                        $data["fields"]["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
                        foreach ($data["fields"] as $key => $val)
                        {
                                $this->tpl->setVariable("TXT_".strtoupper($key), $this->lng->txt($key));
                                $this->tpl->setVariable(strtoupper($key), $val);

                                if ($this->prepare_output)
                                {
                                        $this->tpl->parseCurrentBlock();
                                }
                        }
                        $this->ctrl->setParameter($this, "new_type", $this->type);
                        $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
                        $this->tpl->setVariable("TXT_HEADER", $this->lng->txt($new_type."_new"));
                        $this->tpl->setVariable("TXT_SELECT_QUESTIONPOOL", $this->lng->txt("select_questionpool"));
                        $this->tpl->setVariable("OPTION_SELECT_QUESTIONPOOL", $this->lng->txt("select_questionpool_option"));
                        $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
                        $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt($new_type."_add"));
                        $this->tpl->setVariable("CMD_SUBMIT", "save");
                        $this->tpl->setVariable("TARGET", ' target="'. ilFrameTargetInfo::_getFrame("MainContent").'" ');
                        $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));

                        $this->tpl->setVariable("TXT_IMPORT_TST", $this->lng->txt("import_tst"));
                        $this->tpl->setVariable("TXT_TST_FILE", $this->lng->txt("tst_upload_file"));
                        $this->tpl->setVariable("TXT_IMPORT", $this->lng->txt("import"));

                        $this->tpl->setVariable("TYPE_IMG", ilUtil::getImagePath('icon_tst.gif'));
                        $this->tpl->setVariable("ALT_IMG",$this->lng->txt("obj_tst"));
                        $this->tpl->setVariable("TYPE_IMG2", ilUtil::getImagePath('icon_tst.gif'));
                        $this->tpl->setVariable("ALT_IMG2",$this->lng->txt("obj_tst"));
                        $this->tpl->setVariable("NEW_TYPE", $this->type);
                        $this->tpl->parseCurrentBlock();

                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::createQuestionObject (  ) 

Called when a new question should be created from a test.

Called when a new question should be created from a test

public

Definition at line 2788 of file class.ilObjTestGUI.php.

References getQuestionsSubTabs().

Referenced by executeCreateQuestionObject().

        {
                global $ilUser;
                $this->getQuestionsSubTabs();
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_qpl_select.html", "Modules/Test");
                $questionpools =& $this->object->getAvailableQuestionpools(FALSE, FALSE, FALSE, TRUE, FALSE, "write");
                if (count($questionpools) == 0)
                {
                        $this->tpl->setCurrentBlock("option");
                        $this->tpl->setVariable("VALUE_QPL", "");
                        $this->tpl->parseCurrentBlock();
                }
                else
                {
                        foreach ($questionpools as $key => $value)
                        {
                                $this->tpl->setCurrentBlock("option");
                                $this->tpl->setVariable("VALUE_OPTION", $key);
                                $this->tpl->setVariable("TEXT_OPTION", $value["title"]);
                                $this->tpl->parseCurrentBlock();
                        }
                }
                $this->tpl->setCurrentBlock("hidden");
                $this->tpl->setVariable("HIDDEN_NAME", "sel_question_types");
                $this->tpl->setVariable("HIDDEN_VALUE", $_POST["sel_question_types"]);
                $this->tpl->parseCurrentBlock();
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));

                if (count($questionpools) == 0)
                {
                        $this->tpl->setVariable("TXT_QPL_SELECT", $this->lng->txt("tst_enter_questionpool"));
                }
                else
                {
                        $this->tpl->setVariable("TXT_QPL_SELECT", $this->lng->txt("tst_select_questionpool"));
                }
                $this->tpl->setVariable("BTN_SUBMIT", $this->lng->txt("submit"));
                $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::createQuestionPool ( name = "dummy"  ) 

Creates a new questionpool and returns the reference id.

Creates a new questionpool and returns the reference id

Returns:
integer Reference id of the newly created questionpool public

Definition at line 2346 of file class.ilObjTestGUI.php.

References ilObjectGUI::$tree.

Referenced by executeCreateQuestionObject().

        {
                global $tree;
                $parent_ref = $tree->getParentId($this->object->getRefId());
                include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php";
                $qpl = new ilObjQuestionPool();
                $qpl->setType("qpl");
                $qpl->setTitle($name);
                $qpl->setDescription("");
                $qpl->create();
                $qpl->createReference();
                $qpl->putInTree($parent_ref);
                $qpl->setPermissions($parent_ref);
                $qpl->setOnline(1); // must be online to be available
                $qpl->saveToDb();
                return $qpl->getRefId();
        }

Here is the caller graph for this function:

ilObjTestGUI::createRandomSelectionObject (  ) 

Offers a random selection for insertion in the test.

Offers a random selection for insertion in the test

public

Definition at line 2420 of file class.ilObjTestGUI.php.

References getQuestionsSubTabs().

        {
                $this->getQuestionsSubTabs();
                $question_array = $this->object->randomSelectQuestions($_POST["nr_of_questions"], $_POST["sel_qpl"]);
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_random_question_offer.html", "Modules/Test");
                $color_class = array("tblrow1", "tblrow2");
                $counter = 0;
                $questionpools =& $this->object->getAvailableQuestionpools(true);
                foreach ($question_array as $question_id)
                {
                        $dataset = $this->object->getQuestionDataset($question_id);
                        $this->tpl->setCurrentBlock("QTab");
                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                        $this->tpl->setVariable("QUESTION_TITLE", $dataset->title);
                        $this->tpl->setVariable("QUESTION_COMMENT", $dataset->comment);
                        $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt($dataset->type_tag));
                        $this->tpl->setVariable("QUESTION_AUTHOR", $dataset->author);
                        $this->tpl->setVariable("QUESTION_POOL", $questionpools[$dataset->obj_fi]["title"]);
                        $this->tpl->parseCurrentBlock();
                        $counter++;
                }
                if (count($question_array) == 0)
                {
                        $this->tpl->setCurrentBlock("Emptytable");
                        $this->tpl->setVariable("TEXT_NO_QUESTIONS_AVAILABLE", $this->lng->txt("no_questions_available"));
                        $this->tpl->parseCurrentBlock();
                }
                        else
                {
                        $this->tpl->setCurrentBlock("Selectionbuttons");
                        $this->tpl->setVariable("BTN_YES", $this->lng->txt("random_accept_sample"));
                        $this->tpl->setVariable("BTN_NO", $this->lng->txt("random_another_sample"));
                        $this->tpl->parseCurrentBlock();
                }
                $chosen_questions = join($question_array, ",");
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("QUESTION_TITLE", $this->lng->txt("tst_question_title"));
                $this->tpl->setVariable("QUESTION_COMMENT", $this->lng->txt("description"));
                $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("tst_question_type"));
                $this->tpl->setVariable("QUESTION_AUTHOR", $this->lng->txt("author"));
                $this->tpl->setVariable("QUESTION_POOL", $this->lng->txt("qpl"));
                $this->tpl->setVariable("VALUE_CHOSEN_QUESTIONS", $chosen_questions);
                $this->tpl->setVariable("VALUE_QUESTIONPOOL_SELECTION", $_POST["sel_qpl"]);
                $this->tpl->setVariable("VALUE_NR_OF_QUESTIONS", $_POST["nr_of_questions"]);
                $this->tpl->setVariable("TEXT_QUESTION_OFFER", $this->lng->txt("tst_question_offer"));
                $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

ilObjTestGUI::defaultsObject (  ) 

Displays the settings page for test defaults.

Displays the settings page for test defaults

public

Definition at line 4840 of file class.ilObjTestGUI.php.

References $_GET, and $tbl.

Referenced by addDefaultsObject(), applyDefaultsObject(), and deleteDefaultsObject().

        {
                global $ilUser;

                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_defaults.html", "Modules/Test");
                
                $maxentries = $ilUser->getPref("hits_per_page");
                if ($maxentries < 1)
                {
                        $maxentries = 9999;
                }

                $offset = $_GET["offset"] ? $_GET["offset"] : 0;
                $sortby = $_GET["sort_by"] ? $_GET["sort_by"] : "name";
                $sortorder = $_GET["sort_order"] ? $_GET["sort_order"] : "asc";
                
                $defaults =& $this->object->getAvailableDefaults($sortby, $sortorder);
                if (count($defaults) > 0)
                {
                        $tablerows = array();
                        foreach ($defaults as $row)
                        {
                                array_push($tablerows, array("checkbox" => "<input type=\"checkbox\" name=\"chb_defaults[]\" value=\"" . $row["test_defaults_id"] . "\"/>", "name" => $row["name"]));
                        }
                        $headervars = array("", "name");

                        include_once "./Services/Table/classes/class.ilTableGUI.php";
                        $tbl = new ilTableGUI(0, FALSE);
                        $tbl->setTitle($this->lng->txt("tst_defaults_available"));
                        $header_names = array(
                                "",
                                $this->lng->txt("title")
                        );
                        $tbl->setHeaderNames($header_names);

                        $tbl->disable("sort");
                        $tbl->disable("auto_sort");
                        $tbl->enable("title");
                        $tbl->enable("action");
                        $tbl->enable("select_all");
                        $tbl->setLimit($maxentries);
                        $tbl->setOffset($offset);
                        $tbl->setData($tablerows);
                        $tbl->setMaxCount(count($tablerows));
                        $tbl->setOrderDirection($sortorder);
                        $tbl->setSelectAllCheckbox("chb_defaults");
                        $tbl->setFormName("formDefaults");
                        $tbl->addActionButton("deleteDefaults", $this->lng->txt("delete"));
                        $tbl->addActionButton("applyDefaults", $this->lng->txt("apply"));

                        $header_params = $this->ctrl->getParameterArray($this, "defaults");
                        $tbl->setHeaderVars($headervars, $header_params);

                        // footer
                        $tbl->setFooter("tblfooter", $this->lng->txt("previous"), $this->lng->txt("next"));
                        // render table
                        $tableoutput = $tbl->render();
                        $this->tpl->setVariable("TEST_DEFAULTS_TABLE", $tableoutput);
                }
                else
                {
                        $this->tpl->setVariable("TEST_DEFAULTS_TABLE", $this->lng->txt("tst_defaults_not_defined"));
                }
                $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this, "addDefaults"));
                $this->tpl->setVariable("BUTTON_ADD", $this->lng->txt("add"));
                $this->tpl->setVariable("TEXT_DEFAULTS_OF_TEST", $this->lng->txt("tst_defaults_defaults_of_test"));
        }

Here is the caller graph for this function:

ilObjTestGUI::deleteAllUserDataObject (  ) 

Asks for a confirmation to delete all user data of the test object.

Asks for a confirmation to delete all user data of the test object

public

Definition at line 3557 of file class.ilObjTestGUI.php.

References ilUtil::sendInfo().

        {
                ilUtil::sendInfo($this->lng->txt("confirm_delete_all_user_data"));
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_maintenance.html", "Modules/Test");

                $this->tpl->setCurrentBlock("confirm_delete");
                $this->tpl->setVariable("BTN_CONFIRM_DELETE_ALL", $this->lng->txt("confirm"));
                $this->tpl->setVariable("BTN_CANCEL_DELETE_ALL", $this->lng->txt("cancel"));
                $this->tpl->parseCurrentBlock();

                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

ilObjTestGUI::deleteAllUserResultsObject (  ) 

Asks for a confirmation to delete all user data of the test object.

Asks for a confirmation to delete all user data of the test object

public

Definition at line 3579 of file class.ilObjTestGUI.php.

        {
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.confirm_deletion.html", "Modules/Test");
                $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this, "participants"));
                $this->tpl->setCurrentBlock("table_header");
                $this->tpl->setVariable("TEXT", $this->lng->txt("delete_all_user_data"));
                $this->tpl->parseCurrentBlock();

                $this->tpl->setCurrentBlock("table_row");
                $this->tpl->setVariable("CSS_ROW", "tblrow1");
                $this->tpl->setVariable("TEXT_CONTENT", $this->lng->txt("delete_all_user_data_confirmation"));
                $this->tpl->parseCurrentBlock();

                // cancel/confirm button
                $buttons = array( "confirmDeleteAllUserResults"  => $this->lng->txt("proceed"),
                        "participants"  => $this->lng->txt("cancel"));
                foreach ($buttons as $name => $value)
                {
                        $this->tpl->setCurrentBlock("operation_btn");
                        $this->tpl->setVariable("BTN_NAME",$name);
                        $this->tpl->setVariable("BTN_VALUE",$value);
                        $this->tpl->parseCurrentBlock();
                }
        }

ilObjTestGUI::deleteDefaultsObject (  ) 

Deletes selected test defaults.

Definition at line 4911 of file class.ilObjTestGUI.php.

References defaultsObject().

        {
                if (count($_POST["chb_defaults"]))
                {
                        foreach ($_POST["chb_defaults"] as $test_default_id)
                        {
                                $this->object->deleteDefaults($test_default_id);
                        }
                }
                $this->defaultsObject();
        }

Here is the call graph for this function:

ilObjTestGUI::deleteExportFileObject (  ) 

delete export files

Definition at line 482 of file class.ilObjTestGUI.php.

References $_SESSION, $file, and ilUtil::delDir().

        {
                $export_dir = $this->object->getExportDirectory();
                foreach($_SESSION["ilExportFiles"] as $file)
                {
                        $exp_file = $export_dir."/".$file;
                        $exp_dir = $export_dir."/".substr($file, 0, strlen($file) - 4);
                        if (@is_file($exp_file))
                        {
                                unlink($exp_file);
                        }
                        if (@is_dir($exp_dir))
                        {
                                ilUtil::delDir($exp_dir);
                        }
                }
                $this->ctrl->redirect($this, "export");
        }

Here is the call graph for this function:

ilObjTestGUI::deleteMarkStepsObject (  ) 

Delete selected mark steps.

Delete selected mark steps

public

Definition at line 3303 of file class.ilObjTestGUI.php.

References marksObject(), saveMarkSchemaFormData(), and ilUtil::sendInfo().

        {
                $this->saveMarkSchemaFormData();
                $delete_mark_steps = array();
                foreach ($_POST as $key => $value) {
                        if (preg_match("/cb_(\d+)/", $key, $matches)) {
                                array_push($delete_mark_steps, $matches[1]);
                        }
                }
                if (count($delete_mark_steps)) {
                        $this->object->mark_schema->deleteMarkSteps($delete_mark_steps);
                } else {
                        ilUtil::sendInfo($this->lng->txt("tst_delete_missing_mark"));
                }
                $this->marksObject();
        }

Here is the call graph for this function:

ilObjTestGUI::deleteSingleUserResultsObject (  ) 

Asks for a confirmation to delete selected user data of the test object.

Asks for a confirmation to delete selected user data of the test object

public

Definition at line 3611 of file class.ilObjTestGUI.php.

References $user, ilObjUser::_lookupLogin(), ilObjUser::_lookupName(), ilUtil::getImagePath(), and ilUtil::sendInfo().

        {
                if (count($_POST["chbUser"]) == 0)
                {
                        ilUtil::sendInfo($this->lng->txt("select_one_user"), TRUE);
                        $this->ctrl->redirect($this, "participants");
                }
                ilUtil::sendInfo($this->lng->txt("confirm_delete_single_user_data"));
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_maintenance.html", "Modules/Test");

                foreach ($_POST["chbUser"] as $key => $value)
                {
                        $this->tpl->setCurrentBlock("hidden");
                        $this->tpl->setVariable("USER_ID", $value);
                        $this->tpl->parseCurrentBlock();
                }
                
                include_once './Services/User/classes/class.ilObjUser.php';
                $color_class = array("tblrow1", "tblrow2");
                $counter = 0;
                foreach ($_POST["chbUser"] as $key => $active_id)
                {
                        if ($this->object->getFixedParticipants())
                        {
                                $user_id = $active_id;
                        }
                        else
                        {
                                $user_id = $this->object->_getUserIdFromActiveId($active_id);
                        }
                        $user = ilObjUser::_lookupName($user_id);
                        $this->tpl->setCurrentBlock("row");
                        $this->tpl->setVariable("USER_ICON", ilUtil::getImagePath("icon_usr.gif"));
                        $this->tpl->setVariable("USER_ALT", $this->lng->txt("usr"));
                        $this->tpl->setVariable("USER_TITLE", $this->lng->txt("usr"));
                        if ($this->object->getAnonymity())
                        {
                                $this->tpl->setVariable("TXT_FIRSTNAME", "");
                                $this->tpl->setVariable("TXT_LASTNAME", $this->lng->txt("unknown"));
                                $this->tpl->setVariable("TXT_LOGIN", "");
                        }
                        else
                        {
                                $this->tpl->setVariable("TXT_FIRSTNAME", $user["firstname"]);
                                if (strlen($user["lastname"]))
                                {
                                        $this->tpl->setVariable("TXT_LASTNAME", $user["lastname"]);
                                }
                                else
                                {
                                        $this->tpl->setVariable("TXT_LASTNAME", $this->lng->txt("deleted_user"));
                                }
                                $this->tpl->setVariable("TXT_LOGIN", ilObjUser::_lookupLogin($user_id));
                        }
                        $this->tpl->setVariable("ROW_CLASS", $color_class[$counter % 2]);
                        $this->tpl->parseCurrentBlock();
                        $counter++;
                }
                $this->tpl->setCurrentBlock("selectedusers");
                $this->tpl->setVariable("HEADER_TXT_FIRSTNAME", $this->lng->txt("firstname"));
                $this->tpl->setVariable("HEADER_TXT_LASTNAME", $this->lng->txt("lastname"));
                $this->tpl->setVariable("HEADER_TXT_LOGIN", $this->lng->txt("login"));
                $this->tpl->setVariable("BTN_CONFIRM_DELETE_SELECTED", $this->lng->txt("confirm"));
                $this->tpl->setVariable("BTN_CANCEL_DELETE_SELECTED", $this->lng->txt("cancel"));
                $this->tpl->parseCurrentBlock();

                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

ilObjTestGUI::download_paragraphObject (  ) 

download source code paragraph

Definition at line 1770 of file class.ilObjTestGUI.php.

References $_GET, and exit.

        {
                include_once("./Services/COPage/classes/class.ilPageObject.php");
                $pg_obj =& new ilPageObject("qpl", $_GET["pg_id"]);
                $pg_obj->send_paragraph ($_GET["par_id"], $_GET["downloadtitle"]);
                exit;
        }

ilObjTestGUI::downloadExportFileObject (  ) 

download export file

Definition at line 390 of file class.ilObjTestGUI.php.

References ilUtil::deliverFile(), and ilUtil::sendInfo().

        {
                if(!isset($_POST["file"]))
                {
                        ilUtil::sendInfo($this->lng->txt("no_checkbox"), true);
                        $this->ctrl->redirect($this, "export");
                }

                if (count($_POST["file"]) > 1)
                {
                        ilUtil::sendInfo($this->lng->txt("select_max_one_item"), true);
                        $this->ctrl->redirect($this, "export");
                }


                $export_dir = $this->object->getExportDirectory();
                ilUtil::deliverFile($export_dir."/".$_POST["file"][0],
                        $_POST["file"][0]);
        }

Here is the call graph for this function:

ilObjTestGUI::downloadFileObject (  ) 

download file

Definition at line 1746 of file class.ilObjTestGUI.php.

References $_GET, $file, and exit.

        {
                $file = explode("_", $_GET["file_id"]);
                include_once("./Modules/File/classes/class.ilObjFile.php");
                $fileObj =& new ilObjFile($file[count($file) - 1], false);
                $fileObj->sendFile();
                exit;
        }

& ilObjTestGUI::executeCommand (  ) 

execute command

Reimplemented from ilObjectGUI.

Definition at line 68 of file class.ilObjTestGUI.php.

References $_GET, $cmd, ilObjectGUI::$ilias, $ret, ilObjectGUI::getCreationMode(), ilUtil::getStyleSheetLocation(), infoScreen(), ilObjectGUI::prepareOutput(), questionBrowser(), and questionsObject().

        {
                global $ilAccess, $ilNavigationHistory;

                if ((!$ilAccess->checkAccess("read", "", $_GET["ref_id"])) && (!$ilAccess->checkAccess("visible", "", $_GET["ref_id"])))
                {
                        global $ilias;
                        $ilias->raiseError($this->lng->txt("permission_denied"), $ilias->error_obj->MESSAGE);
                }
                $this->prepareOutput();
                $cmd = $this->ctrl->getCmd("properties");
                $next_class = $this->ctrl->getNextClass($this);
                $this->ctrl->setReturn($this, "properties");
                $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "ta.css", "Modules/Test"), "screen");
                
                // add entry to navigation history
                if (!$this->getCreationMode() &&
                        $ilAccess->checkAccess("read", "", $_GET["ref_id"]))
                {
                        $ilNavigationHistory->addItem($_GET["ref_id"],
                                "ilias.php?baseClass=ilObjTestGUI&cmd=infoScreen&ref_id=".$_GET["ref_id"], "tst");
                }
                switch($next_class)
                {
                        case "ilinfoscreengui":
                                $this->infoScreen();    // forwards command
                                break;
                        case 'ilmdeditorgui':
                                include_once 'Services/MetaData/classes/class.ilMDEditorGUI.php';

                                $md_gui =& new ilMDEditorGUI($this->object->getId(), 0, $this->object->getType());
                                $md_gui->addObserver($this->object,'MDUpdateListener','General');

                                $this->ctrl->forwardCommand($md_gui);
                                break;
                        case "iltestoutputgui":
                                include_once "./Modules/Test/classes/class.ilTestOutputGUI.php";

                                $output_gui =& new ilTestOutputGUI($this->object);
                                $this->ctrl->forwardCommand($output_gui);
                                break;
                        case "iltestevaluationgui":
                                include_once "./Modules/Test/classes/class.ilTestEvaluationGUI.php";
                                $evaluation_gui =& new ilTestEvaluationGUI($this->object);
                                $this->ctrl->forwardCommand($evaluation_gui);
                                break;
                                
                        case "iltestservicegui":
                                include_once "./Modules/Test/classes/class.ilTestServiceGUI.php";
                                $serviceGUI =& new ilTestServiceGUI($this->object);
                                $this->ctrl->forwardCommand($serviceGUI);
                                break;

                        case 'ilpermissiongui':
                                include_once("./classes/class.ilPermissionGUI.php");
                                $perm_gui =& new ilPermissionGUI($this);
                                $ret =& $this->ctrl->forwardCommand($perm_gui);
                                break;

                        case "illearningprogressgui":
                                include_once './Services/Tracking/classes/class.ilLearningProgressGUI.php';

                                $new_gui =& new ilLearningProgressGUI(LP_MODE_REPOSITORY,$this->object->getRefId());
                                $this->ctrl->forwardCommand($new_gui);

                                break;

                        case "iltestcertificategui":
                                include_once "./Modules/Test/classes/class.ilTestCertificateGUI.php";
                                $output_gui = new ilTestCertificateGUI($this->object);
                                $this->ctrl->forwardCommand($output_gui);
                                break;

                        case "iltestscoringgui":
                                include_once "./Modules/Test/classes/class.ilTestScoringGUI.php";
                                $output_gui = new ilTestScoringGUI($this->object);
                                $this->ctrl->forwardCommand($output_gui);
                                break;

                        default:
                                if (preg_match("/deleteqpl_\d+/", $cmd))
                                {
                                        $cmd = "randomQuestions";
                                }
                                if ((strcmp($cmd, "properties") == 0) && ($_GET["browse"]))
                                {
                                        $this->questionBrowser();
                                        return;
                                }
                                if ((strcmp($cmd, "properties") == 0) && ($_GET["up"] || $_GET["down"]))
                                {
                                        $this->questionsObject();
                                        return;
                                }
                                $cmd.= "Object";
                                $ret =& $this->$cmd();
                                break;
                }
                if (strtolower($_GET["baseClass"]) != "iladministrationgui" &&
                        $this->getCreationMode() != true)
                {
                        $this->tpl->show();
                }
        }

Here is the call graph for this function:

ilObjTestGUI::executeCreateQuestionObject (  ) 

Called when a new question should be created from a test after confirmation.

Called when a new question should be created from a test after confirmation

public

Definition at line 2746 of file class.ilObjTestGUI.php.

References $_GET, $_SESSION, createQuestionObject(), createQuestionPool(), exit, ilUtil::redirect(), and ilUtil::sendInfo().

        {
                $qpl_ref_id = $_POST["sel_qpl"];
                if ((strcmp($_POST["txt_qpl"], "") == 0) && (strcmp($qpl_ref_id, "") == 0))
                {
                        ilUtil::sendInfo($this->lng->txt("questionpool_not_entered"));
                        $this->createQuestionObject();
                        return;
                }
                else
                {
                        $_SESSION["test_id"] = $this->object->getRefId();
                        if (strcmp($_POST["txt_qpl"], "") != 0)
                        {
                                // create a new question pool and return the reference id
                                $qpl_ref_id = $this->createQuestionPool($_POST["txt_qpl"]);
                        }
                        include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPoolGUI.php";
                        ilUtil::redirect("ilias.php?baseClass=ilObjQuestionPoolGUI&ref_id=" . $qpl_ref_id . "&cmd=createQuestionForTest&test_ref_id=".$_GET["ref_id"]."&sel_question_types=" . $_POST["sel_question_types"]);
                        exit();
                }
        }

Here is the call graph for this function:

ilObjTestGUI::exportObject (  ) 

Definition at line 240 of file class.ilObjTestGUI.php.

References $_GET, $tbl, ilObjectGUI::$tree, ilUtil::getImagePath(), ilUtil::sendInfo(), and ilUtil::switchColor().

        {
                global $tree;
                global $ilAccess;
                if (!$ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        // allow only write access
                        ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
                        $this->ctrl->redirect($this, "infoScreen");
                }

                //add template for view button
                $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");

                if ($this->object->isRandomTest())
                {
                        ilUtil::sendInfo($this->lng->txt("tst_no_export_randomtest"));
                }
                else
                {
                        // create export file button
                        $this->tpl->setCurrentBlock("btn_cell");
                        $this->tpl->setVariable("BTN_LINK", $this->ctrl->getLinkTarget($this, "createExportFile")."&mode=xml");
                        $this->tpl->setVariable("BTN_TXT", $this->lng->txt("ass_create_export_file"));
                        $this->tpl->parseCurrentBlock();
                }
                
                // create export test results button
                $this->tpl->setCurrentBlock("btn_cell");
                $this->tpl->setVariable("BTN_LINK", $this->ctrl->getLinkTarget($this, "createExportfile")."&mode=results");
                $this->tpl->setVariable("BTN_TXT", $this->lng->txt("ass_create_export_test_results"));
                $this->tpl->parseCurrentBlock();
                
                $export_dir = $this->object->getExportDirectory();

                $export_files = $this->object->getExportFiles($export_dir);

                // create table
                include_once("./Services/Table/classes/class.ilTableGUI.php");
                $tbl = new ilTableGUI();

                // load files templates
                $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.table.html");

                // load template for table content data
                $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.export_file_row.html", "Modules/Test");

                $num = 0;

                $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));

                $tbl->setTitle($this->lng->txt("ass_export_files"));

                $tbl->setHeaderNames(array("", $this->lng->txt("ass_file"),
                        $this->lng->txt("ass_size"), $this->lng->txt("date") ));

                $tbl->enabled["sort"] = false;
                $tbl->setColumnWidth(array("1%", "49%", "25%", "25%"));

                // control
                $tbl->setOrderColumn($_GET["sort_by"]);
                $tbl->setOrderDirection($_GET["sort_order"]);
                $tbl->setLimit($_GET["limit"]);
                $tbl->setOffset($_GET["offset"]);
                $tbl->setMaxCount($this->maxcount);             // ???
                $header_params = $this->ctrl->getParameterArray($this, "export");
                $tbl->setHeaderVars(array("", "file", "size", "date"), $header_params);


                // footer
                $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
                //$tbl->disable("footer");

                $tbl->setMaxCount(count($export_files));
                $export_files = array_slice($export_files, $_GET["offset"], $_GET["limit"]);

                $tbl->render();
                if(count($export_files) > 0)
                {
                        $this->tpl->setVariable("COLUMN_COUNTS", 4);

                        $i=0;
                        foreach($export_files as $exp_file)
                        {
                                $this->tpl->setCurrentBlock("tbl_content");
                                $this->tpl->setVariable("TXT_FILENAME", $exp_file);

                                $css_row = ilUtil::switchColor($i++, "tblrow1", "tblrow2");
                                $this->tpl->setVariable("CSS_ROW", $css_row);

                                $this->tpl->setVariable("TXT_SIZE", filesize($export_dir."/".$exp_file));
                                $this->tpl->setVariable("CHECKBOX_ID", $exp_file);

                                $file_arr = explode("__", $exp_file);
                                $this->tpl->setVariable("TXT_DATE", date("Y-m-d H:i:s",$file_arr[0]));

                                $this->tpl->parseCurrentBlock();
                        }
                        $this->tpl->setCurrentBlock("selectall");
                        $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
                        $this->tpl->setVariable("CSS_ROW", $css_row);
                        $this->tpl->parseCurrentBlock();
                        // delete button
                        $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
                        $this->tpl->setCurrentBlock("tbl_action_btn");
                        $this->tpl->setVariable("BTN_NAME", "confirmDeleteExportFile");
                        $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("delete"));
                        $this->tpl->parseCurrentBlock();
        
                        $this->tpl->setCurrentBlock("tbl_action_btn");
                        $this->tpl->setVariable("BTN_NAME", "downloadExportFile");
                        $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("download"));
                        $this->tpl->parseCurrentBlock();        
                } //if is_array
                else
                {
                        $this->tpl->setCurrentBlock("notfound");
                        $this->tpl->setVariable("TXT_OBJECT_NOT_FOUND", $this->lng->txt("obj_not_found"));
                        $this->tpl->setVariable("NUM_COLS", 3);
                        $this->tpl->parseCurrentBlock();
                }

                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

ilObjTestGUI::filterObject (  ) 

Sets the filter for the question browser.

Sets the filter for the question browser

public

Definition at line 1785 of file class.ilObjTestGUI.php.

References questionBrowser().

        {
                $this->questionBrowser();
        }

Here is the call graph for this function:

ilObjTestGUI::fullscreenObject (  ) 

show fullscreen view

Definition at line 1758 of file class.ilObjTestGUI.php.

References $_GET.

        {
                include_once("./Services/COPage/classes/class.ilPageObjectGUI.php");
                $page =& new ilPageObject("qpl", $_GET["pg_id"]);
                $page_gui =& new ilPageObjectGUI($page);
                $page_gui->showMediaFullscreen();
                
        }

ilObjTestGUI::getBrowseForQuestionsTab ( &$  tabs_gui  ) 

Definition at line 5272 of file class.ilObjTestGUI.php.

Referenced by getTabs().

        {
                global $ilAccess;
                if ($ilAccess->checkAccess("write", "", $this->ref_id))
                {
                        // edit page
                        $tabs_gui->setBackTarget($this->lng->txt("backtocallingtest"), $this->ctrl->getLinkTarget($this, "questions"));
                        $tabs_gui->addTarget("tst_browse_for_questions",
                                $this->ctrl->getLinkTarget($this, "browseForQuestions"),
                                array("browseForQuestions", "filter", "resetFilter", "resetTextFilter", "insertQuestions"),
                                "", "", TRUE
                        );
                }
        }

Here is the caller graph for this function:

ilObjTestGUI::getParticipantsSubTabs (  ) 

Definition at line 5361 of file class.ilObjTestGUI.php.

Referenced by getTabs().

        {
                global $ilTabs;
                
                // user results subtab
                $ilTabs->addSubTabTarget("participants_data",
                        $this->ctrl->getLinkTarget($this,'participants'),
                        array("participants", "saveFixedParticipantsStatus",
                                "showParticipantAnswersForAuthor", "showResults",
                                "confirmDeleteAllUserData",
                                "deleteAllUserResults",
                                "cancelDeleteAllUserData", "deleteSingleUserResults",
                                "outParticipantsResultsOverview", "outParticipantsPassDetails",
                                "showPassOverview", "showUserAnswers", "participantsAction"
                        ),
                        "", "");
        
                // aggregated results subtab
                $ilTabs->addSubTabTarget("participants_invitation",
                        $this->ctrl->getLinkTarget($this, "inviteParticipants"),
                        array("inviteParticipants", "searchParticipants"),
                        "", "");
        
        }

Here is the caller graph for this function:

ilObjTestGUI::getQuestionsSubTabs (  ) 

Definition at line 5316 of file class.ilObjTestGUI.php.

Referenced by createQuestionObject(), createRandomSelectionObject(), printobject(), questionsObject(), randomselectObject(), and removeQuestionsObject().

        {
                global $ilTabs;
                
                // questions subtab
                $ilTabs->addSubTabTarget("edit_test_questions",
                         $this->ctrl->getLinkTarget($this,'questions'),
                         array("questions", "browseForQuestions", "questionBrowser", "createQuestion", 
                         "randomselect", "filter", "resetFilter", "insertQuestions",
                         "back", "createRandomSelection", "cancelRandomSelect",
                         "insertRandomSelection", "removeQuestions", "moveQuestions",
                         "insertQuestionsBefore", "insertQuestionsAfter", "confirmRemoveQuestions",
                         "cancelRemoveQuestions", "executeCreateQuestion", "cancelCreateQuestion",
                         "addQuestionpool", "saveRandomQuestions", "saveQuestionSelectionMode"), 
                         "");
                         
                // print view subtab
                if (!$this->object->isRandomTest())
                {
                        $ilTabs->addSubTabTarget("print_view",
                                 $this->ctrl->getLinkTarget($this,'print'),
                                 "print", "");
                }
                        
        }

Here is the caller graph for this function:

ilObjTestGUI::getRandomQuestionsTab ( &$  tabs_gui  ) 

Definition at line 5287 of file class.ilObjTestGUI.php.

        {
                global $ilAccess;
                if ($ilAccess->checkAccess("write", "", $this->ref_id))
                {
                        // edit page
                        $tabs_gui->setBackTarget($this->lng->txt("backtocallingtest"), $this->ctrl->getLinkTarget($this, "questions"));
                        $tabs_gui->addTarget("random_selection",
                                $this->ctrl->getLinkTarget($this, "randomQuestions"),
                                array("randomQuestions"),
                                "", ""
                        );
                }
        }

ilObjTestGUI::getSettingsSubTabs (  ) 

Definition at line 5386 of file class.ilObjTestGUI.php.

References ilObjectGUI::$ilias.

Referenced by getTabs().

        {
                global $ilTabs, $ilias;
                
                // general subtab
                $force_active = ($this->ctrl->getCmd() == "")
                        ? true
                        : false;
                $ilTabs->addSubTabTarget("general",
                         $this->ctrl->getLinkTarget($this,'properties'),
                         array("properties", "saveProperties", "cancelProperties"),
                         array("", "ilobjtestgui", "iltestcertificategui"),
                         "", $force_active);
        
                // scoring subtab
                $ilTabs->addSubTabTarget(
                        "scoring",
                        $this->ctrl->getLinkTarget($this,'scoring'),
                        array("scoring"),
                        array("", "ilobjtestgui", "iltestcertificategui")
                );
        
                // mark schema subtab
                $ilTabs->addSubTabTarget(
                        "mark_schema",
                        $this->ctrl->getLinkTarget($this,'marks'),
                        array("marks", "addMarkStep", "deleteMarkSteps", "addSimpleMarkSchema",
                                "saveMarks", "cancelMarks"),
                        array("", "ilobjtestgui", "iltestcertificategui")
                );
        
                if ((strlen($ilias->getSetting("rpc_server_host"))) && (strlen($ilias->getSetting("rpc_server_port"))))
                {
                        // certificate subtab
                        $ilTabs->addSubTabTarget(
                                "certificate",
                                $this->ctrl->getLinkTarget($this,'certificate'),
                                array("certificate", "certificateEditor", "certificateRemoveBackground", "certificateSave",
                                        "certificatePreview", "certificateDelete", "certificateUpload", "certificateImport"),
                                array("", "ilobjtestgui", "iltestcertificategui")
                        );
                }

                // defaults subtab
                $ilTabs->addSubTabTarget(
                        "defaults",
                        $this->ctrl->getLinkTarget($this, "defaults"),
                        array("defaults", "deleteDefaults", "addDefaults", "applyDefaults"),
                        array("", "ilobjtestgui", "iltestcertificategui")
                );
        }

Here is the caller graph for this function:

ilObjTestGUI::getStatisticsSubTabs (  ) 

Definition at line 5342 of file class.ilObjTestGUI.php.

Referenced by getTabs().

        {
                global $ilTabs;
                
                // user results subtab
                $ilTabs->addSubTabTarget("eval_all_users",
                         $this->ctrl->getLinkTargetByClass("iltestevaluationgui", "outEvaluation"),
                         array("outEvaluation", "detailedEvaluation", "exportEvaluation", "evalUserDetail", "passDetails",
                                "outStatisticsResultsOverview", "statisticsPassDetails")
                         , "");
        
                // aggregated results subtab
                $ilTabs->addSubTabTarget("tst_results_aggregated",
                        $this->ctrl->getLinkTargetByClass("iltestevaluationgui", "eval_a"),
                        array("eval_a"),
                        "", "");
        
        }

Here is the caller graph for this function:

ilObjTestGUI::getTabs ( &$  tabs_gui  ) 

adds tabs to tab gui object

Parameters:
object $tabs_gui ilTabsGUI object

Reimplemented from ilObjectGUI.

Definition at line 5443 of file class.ilObjTestGUI.php.

References $_GET, ilObjUserTracking::_enabledLearningProgress(), ilObjAssessmentFolder::_getManualScoring(), getBrowseForQuestionsTab(), getParticipantsSubTabs(), getSettingsSubTabs(), and getStatisticsSubTabs().

        {
                global $ilAccess,$ilUser;

                switch ($this->ctrl->getCmd())
                {
                        case "start":
                        case "resume":
                        case "previous":
                        case "next":
                        case "summary":
                        case "directfeedback":
                        case "finishTest":
                        case "outCorrectSolution":
                        case "passDetails":
                        case "showAnswersOfUser":
                        case "outUserResultsOverview":
                        case "backFromSummary":
                        case "show_answers":
                        case "setsolved":
                        case "resetsolved":
                        case "confirmFinish":
                        case "outTestSummary":
                        case "outQuestionSummary":
                        case "gotoQuestion":
                        case "selectImagemapRegion":
                        case "confirmSubmitAnswers":
                        case "finalSubmission":
                        case "postpone":
                        case "redirectQuestion":
                        case "outUserPassDetails":
                        case "checkPassword":
                        case "exportCertificate":
                        case "finishListOfAnswers":
                        case "backConfirmFinish":
                                return;
                                break;
                        case "browseForQuestions":
                        case "filter":
                        case "resetFilter":
                        case "resetTextFilter":
                        case "insertQuestions":
                                return $this->getBrowseForQuestionsTab($tabs_gui);
                                break;
                        case "showParticipantAnswersForAuthor":
                        case "inviteParticipants":
                        case "participants":
                        case "outParticipantsPassDetails":
                        case "outParticipantsResultsOverview":
                        case "deleteAllUserResults":
                        case "confirmDeleteAllUserData":
                        case "cancelDeleteAllUserData":
                        case "deleteSingleUserResults":
                        case "searchParticipants":
                        case "showPassOverview":
                        case "showUserAnswers":
                                         $this->getParticipantsSubTabs();
                                break;
                        case "scoring":
                        case "properties":
                        case "marks":
                        case "saveMarks":
                        case "cancelMarks":
                        case "addMarkStep":
                        case "deleteMarkSteps":
                        case "addSimpleMarkSchema":
                        case "certificate":
                        case "certificateImport":
                        case "certificateUpload":
                        case "certificateEditor":
                        case "certificateSave":
                        case "defaults":
                        case "deleteDefaults":
                        case "addDefaults":
                        case "applyDefaults":
                        case "":
                                if (($ilAccess->checkAccess("write", "", $this->ref_id)) && ((strcmp($this->ctrl->getCmdClass(), "ilobjtestgui") == 0) || (strcmp($this->ctrl->getCmdClass(), "iltestcertificategui") == 0) || (strlen($this->ctrl->getCmdClass()) == 0)))
                                {
                                        $this->getSettingsSubTabs();
                                }
                                break;
                        case "export":
                        case "print":
                                break;
                        case "statistics":
                        case "eval_a":
                        case "detailedEvaluation":
                        case "outEvaluation":
                        case "exportEvaluation":
                        case "evalUserDetail":
                        case "passDetails":
                        case "outStatisticsResultsOverview":
                        case "statisticsPassDetails":
                                $this->getStatisticsSubTabs();
                                break;
                }
                
                if (strcmp(strtolower(get_class($this->object)), "ilobjtest") == 0)
                {
                        // questions tab
                        if ($ilAccess->checkAccess("write", "", $this->ref_id))
                        {
                                $force_active = ($_GET["up"] != "" || $_GET["down"] != "")
                                        ? true
                                        : false;
                                if (!$force_active)
                                {
                                        if ($_GET["browse"] == 1) $force_active = true;
                                        if (preg_match("/deleteqpl_\d+/", $this->ctrl->getCmd()))
                                        {
                                                $force_active = true;
                                        }
                                }
                                $tabs_gui->addTarget("assQuestions",
                                         $this->ctrl->getLinkTarget($this,'questions'),
                                         array("questions", "browseForQuestions", "questionBrowser", "createQuestion", 
                                         "randomselect", "filter", "resetFilter", "insertQuestions",
                                         "back", "createRandomSelection", "cancelRandomSelect",
                                         "insertRandomSelection", "removeQuestions", "moveQuestions",
                                         "insertQuestionsBefore", "insertQuestionsAfter", "confirmRemoveQuestions",
                                         "cancelRemoveQuestions", "executeCreateQuestion", "cancelCreateQuestion",
                                         "addQuestionpool", "saveRandomQuestions", "saveQuestionSelectionMode", "print"), 
                                         "", "", $force_active);
                        }

                        // info tab
                        if ($ilAccess->checkAccess("visible", "", $this->ref_id))
                        {
                                $tabs_gui->addTarget("info",
                                         $this->ctrl->getLinkTarget($this,'infoScreen'),
                                         array("infoScreen", "outIntroductionPage", "showSummary", 
                                         "setAnonymousId", "outUserListOfAnswerPasses", "redirectToInfoScreen"));
                        }
                        
                        // settings tab
                        if ($ilAccess->checkAccess("write", "", $this->ref_id))
                        {
                                $tabs_gui->addTarget("settings",
                                        $this->ctrl->getLinkTarget($this,'properties'),
                                                array("properties", "saveProperties", "cancelProperties",
                                                        "marks", "addMarkStep", "deleteMarkSteps", "addSimpleMarkSchema",
                                                        "saveMarks", "cancelMarks", 
                                                        "certificate", "certificateEditor", "certificateRemoveBackground",
                                                        "certificateSave", "certificatePreview", "certificateDelete", "certificateUpload",
                                                        "certificateImport", "scoring", "defaults", "addDefaults", "deleteDefaults", "applyDefaults",
                                                        ""
                                        ),
                                         array("", "ilobjtestgui", "iltestcertificategui")
                                );
                        }

                        if ($ilAccess->checkAccess("write", "", $this->ref_id))
                        {
                                // meta data
                                $tabs_gui->addTarget("meta_data",
                                         $this->ctrl->getLinkTargetByClass('ilmdeditorgui','listSection'),
                                         "", "ilmdeditorgui");
                        }
                
                        if ($ilAccess->checkAccess("write", "", $this->ref_id))
                        {
                                // participants
                                $tabs_gui->addTarget("participants",
                                         $this->ctrl->getLinkTarget($this,'participants'),
                                         array("participants", "searchParticipants", "addParticipants", "saveClientIP",
                                         "removeParticipant", "inviteParticipants",
                                         "saveFixedParticipantsStatus", "showParticipantAnswersForAuthor",
                                         "deleteAllUserResults",
                                         "cancelDeleteAllUserData", "deleteSingleUserResults",
                                         "outParticipantsResultsOverview", "outParticipantsPassDetails",
                                         "showPassOverview", "showUserAnswers", "participantsAction"), 
                                         "");

                                // export tab
                                $tabs_gui->addTarget("export",
                                         $this->ctrl->getLinkTarget($this,'export'),
                                         array("export", "createExportFile", "confirmDeleteExportFile",
                                         "downloadExportFile", "deleteExportFile", "cancelDeleteExportFile"),
                                         "");

                                include_once "./classes/class.ilObjAssessmentFolder.php";
                                $scoring = ilObjAssessmentFolder::_getManualScoring();
                                if (count($scoring))
                                {
                                        // scoring tab
                                        $tabs_gui->addTarget("manscoring",
                                                 $this->ctrl->getLinkTargetByClass("iltestscoringgui", "manscoring"),
                                                 array("manscoring", "selectParticipant", "setPointsManual", "setFeedbackManual"),
                                                 "");
                                }
                        }

                        if (($ilAccess->checkAccess("tst_statistics", "", $this->ref_id)) || ($ilAccess->checkAccess("write", "", $this->ref_id)))
                        {
                                // statistics tab
                                $tabs_gui->addTarget("statistics",
                                         $this->ctrl->getLinkTargetByClass("iltestevaluationgui", "outEvaluation"),
                                         array("statistics", "outEvaluation", "exportEvaluation", "detailedEvaluation", "eval_a", "evalUserDetail",
                                                "passDetails", "outStatisticsResultsOverview", "statisticsPassDetails")
                                         , "");
                        }
                        
                        if ($ilAccess->checkAccess("write", "", $this->ref_id))
                        {
                                // learning progress
                                include_once("Services/Tracking/classes/class.ilObjUserTracking.php");
                                if(ilObjUserTracking::_enabledLearningProgress() and $ilAccess->checkAccess("edit_learning_progress", "", $this->ref_id) and $ilUser->getId() != ANONYMOUS_USER_ID)
                                {
                                        $tabs_gui->addTarget('learning_progress',
                                                $this->ctrl->getLinkTargetByClass(array('illearningprogressgui'),''),
                                                        '',
                                                        array('illplistofobjectsgui','illplistofsettingsgui','illearningprogressgui',
                                                                'illplistofprogressgui')
                                        );
                                }

                                // history
                                $tabs_gui->addTarget("history",
                                         $this->ctrl->getLinkTarget($this,'history'),
                                         "history", "");

                                if ($ilAccess->checkAccess("edit_permission", "", $this->ref_id))
                                {
                                        $tabs_gui->addTarget("perm_settings",
                                        $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"), array("perm","info","owner"), 'ilpermissiongui');
                                }
                        }
                }
        }

Here is the call graph for this function:

ilObjTestGUI::historyObject (  ) 

Creates the change history for a test.

Creates the change history for a test

public

Definition at line 3689 of file class.ilObjTestGUI.php.

References $log, ilObjAssessmentFolder::_getLog(), ilFormat::formatDate(), ilFormat::ftimestamp2datetimeDB(), ilUtil::prepareFormOutput(), and ilUtil::sendInfo().

        {
                global $ilAccess;
                if (!$ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        // allow only write access
                        ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
                        $this->ctrl->redirect($this, "infoScreen");
                }

                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_status.html", "Modules/Test");
                if ($ilAccess->checkAccess("write", "", $this->ref_id))
                {
                        include_once "./classes/class.ilObjAssessmentFolder.php";
                        $log =& ilObjAssessmentFolder::_getLog("19700101000000", strftime("%Y%m%d%H%M%S"), $this->object->getId(), TRUE);
                        if (count($log))
                        {
                                $tblrow = array("tblrow1", "tblrow2");
                                $counter = 0;
                                include_once './Services/User/classes/class.ilObjUser.php';
                                foreach ($log as $entry)
                                {
                                        $this->tpl->setCurrentBlock("changelog_row");
                                        $this->tpl->setVariable("ROW_CLASS", $tblrow[$counter % 2]);
                                        $username = $this->object->userLookupFullName($entry["user_fi"], TRUE);
                                        $this->tpl->setVariable("TXT_USER", $username);
                                        $this->tpl->setVariable("TXT_DATETIME", ilFormat::formatDate(ilFormat::ftimestamp2datetimeDB($entry["TIMESTAMP14"]), "datetime"));
                                        if (strlen($entry["ref_id"]) && strlen($entry["href"]))
                                        {
                                                $this->tpl->setVariable("TXT_TEST_REFERENCE", $this->lng->txt("perma_link"));
                                                $this->tpl->setVariable("HREF_REFERENCE", $entry["href"]);
                                        }
                                        $this->tpl->setVariable("TXT_LOGTEXT", trim(ilUtil::prepareFormOutput($entry["logtext"])));
                                        $this->tpl->parseCurrentBlock();
                                        $counter++;
                                }
                                $this->tpl->setCurrentBlock("changelog");
                                $this->tpl->setVariable("HEADER_DATETIME", $this->lng->txt("assessment_log_datetime"));
                                $this->tpl->setVariable("HEADER_USER", $this->lng->txt("user"));
                                $this->tpl->setVariable("HEADER_LOGTEXT", $this->lng->txt("assessment_log_text"));
                                $this->tpl->setVariable("HEADER_TEST_REFERENCE", $this->lng->txt("location"));
                                $this->tpl->setVariable("HEADING_CHANGELOG", $this->lng->txt("changelog_heading"));
                                $this->tpl->setVariable("DESCRIPTION_CHANGELOG", $this->lng->txt("changelog_description"));
                                $this->tpl->parseCurrentBlock();
                        }
                }
                
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->parseCurrentBlock();
        }       

Here is the call graph for this function:

ilObjTestGUI::ilObjTestGUI (  ) 

Constructor public.

Definition at line 50 of file class.ilObjTestGUI.php.

References $_GET, $ilCtrl, ilObjectGUI::$lng, and ilObjectGUI::ilObjectGUI().

        {
                global $lng, $ilCtrl;
                $lng->loadLanguageModule("assessment");
                $this->type = "tst";
                $this->ctrl =& $ilCtrl;
                $this->ctrl->saveParameter($this, "ref_id");
                $this->ilObjectGUI("",$_GET["ref_id"], true, false);
                // Added parameter if called from crs_objectives
                if((int) $_GET['crs_show_result'])
                {
                        $this->ctrl->saveParameter($this,'crs_show_result',(int) $_GET['crs_show_result']);
                }
        }

Here is the call graph for this function:

ilObjTestGUI::importFileObject (  ) 

form for new test object import

Definition at line 186 of file class.ilObjTestGUI.php.

References createObject(), ilUtil::sendInfo(), and uploadTstObject().

        {
                if ($_POST["qpl"] < 1)
                {
                        ilUtil::sendInfo($this->lng->txt("tst_select_questionpools"));
                        $this->createObject();
                        return;
                }
                if (strcmp($_FILES["xmldoc"]["tmp_name"], "") == 0)
                {
                        ilUtil::sendInfo($this->lng->txt("tst_select_file_for_import"));
                        $this->createObject();
                        return;
                }
                $this->ctrl->setParameter($this, "new_type", $this->type);
                $this->uploadTstObject();
        }

Here is the call graph for this function:

ilObjTestGUI::importObject (  ) 

display dialogue for importing tests

public

Reimplemented from ilObjectGUI.

Definition at line 506 of file class.ilObjTestGUI.php.

References ilObjectGUI::getTemplateFile().

Referenced by uploadTstObject().

        {
                $this->getTemplateFile("import", "tst");
                $this->tpl->setCurrentBlock("option_qpl");
                include_once("./Modules/Test/classes/class.ilObjTest.php");
                $tst = new ilObjTest();
                $questionpools =& $tst->getAvailableQuestionpools(TRUE, FALSE, FALSE, TRUE);
                if (count($questionpools) == 0)
                {
                }
                else
                {
                        foreach ($questionpools as $key => $value)
                        {
                                $this->tpl->setCurrentBlock("option_qpl");
                                $this->tpl->setVariable("OPTION_VALUE", $key);
                                $this->tpl->setVariable("TXT_OPTION", $value["title"]);
                                $this->tpl->parseCurrentBlock();
                        }
                }
                $this->tpl->setVariable("TXT_SELECT_QUESTIONPOOL", $this->lng->txt("select_questionpool"));
                $this->tpl->setVariable("OPTION_SELECT_QUESTIONPOOL", $this->lng->txt("select_questionpool_option"));
                $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("BTN_NAME", "uploadTst");
                $this->tpl->setVariable("TXT_UPLOAD", $this->lng->txt("upload"));
                $this->tpl->setVariable("NEW_TYPE", $this->type);
                $this->tpl->setVariable("TXT_IMPORT_TST", $this->lng->txt("import_tst"));
                $this->tpl->setVariable("TXT_SELECT_MODE", $this->lng->txt("select_mode"));
                $this->tpl->setVariable("TXT_SELECT_FILE", $this->lng->txt("select_file"));

        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::importVerifiedFileObject (  ) 

imports question(s) into the questionpool (after verification)

Definition at line 689 of file class.ilObjTestGUI.php.

References $_GET, $_SESSION, ilObjTest::_getImportDirectory(), ilUtil::delDir(), ilUtil::redirect(), and ilUtil::sendInfo().

        {
                include_once "./Modules/Test/classes/class.ilObjTest.php";
                // create new questionpool object
                $newObj = new ilObjTest(0, true);
                // set type of questionpool object
                $newObj->setType($_GET["new_type"]);
                // set title of questionpool object to "dummy"
                $newObj->setTitle("dummy");
                // set description of questionpool object
                $newObj->setDescription("test import");
                // create the questionpool class in the ILIAS database (object_data table)
                $newObj->create(true);
                // create a reference for the questionpool object in the ILIAS database (object_reference table)
                $newObj->createReference();
                // put the questionpool object in the administration tree
                $newObj->putInTree($_GET["ref_id"]);
                // get default permissions and set the permissions for the questionpool object
                $newObj->setPermissions($_GET["ref_id"]);
                // notify the questionpool object and all its parent objects that a "new" object was created
                $newObj->notify("new",$_GET["ref_id"],$_GET["parent_non_rbac_id"],$_GET["ref_id"],$newObj->getRefId());
                // empty mark schema
                $newObj->mark_schema->flush();

                // start parsing of QTI files
                include_once "./Services/QTI/classes/class.ilQTIParser.php";
                $qtiParser = new ilQTIParser($_SESSION["tst_import_qti_file"], IL_MO_PARSE_QTI, $_POST["qpl_id"], $_POST["ident"]);
                $qtiParser->setTestObject($newObj);
                $result = $qtiParser->startParsing();
                $newObj->saveToDb();


                
                // import page data
                include_once ("./Modules/LearningModule/classes/class.ilContObjParser.php");
                $contParser = new ilContObjParser($newObj, $_SESSION["tst_import_xml_file"], $_SESSION["tst_import_subdir"]);
                $contParser->setQuestionMapping($qtiParser->getImportMapping());
                $contParser->startParsing();

                // delete import directory
                ilUtil::delDir(ilObjTest::_getImportDirectory());
                ilUtil::sendInfo($this->lng->txt("object_imported"),true);
                ilUtil::redirect("ilias.php?ref_id=".$newObj->getRefId().
                                "&baseClass=ilObjTestGUI");
        }

Here is the call graph for this function:

ilObjTestGUI::infoScreen ( session_lock = ""  ) 

show information screen

Definition at line 4988 of file class.ilObjTestGUI.php.

References $_GET, $_SESSION, ilObjTestAccess::_lookupOnlineTestAccess(), and ilUtil::sendInfo().

Referenced by executeCommand(), infoScreenObject(), and redirectToInfoScreenObject().

        {
                global $ilAccess;
                global $ilUser;

                // Disabled
                /*
                if ($_GET['crs_show_result'])
                {
                        $this->object->hideCorrectAnsweredQuestions();
                }
                else
                */
                {
                        if ($this->object->getTestSequence()->hasHiddenQuestions())
                        {
                                $this->object->getTestSequence()->clearHiddenQuestions();
                                $this->object->getTestSequence()->saveToDb();
                        }
                }
                
                if (!$ilAccess->checkAccess("visible", "", $this->ref_id))
                {
                        $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
                }

                include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
                $info = new ilInfoScreenGUI($this);

                $seq = $this->object->getTestSession()->getLastSequence();

                include_once "./Modules/Test/classes/class.ilTestOutputGUI.php";
                $output_gui =& new ilTestOutputGUI($this->object);
                $this->ctrl->setParameter($output_gui, "sequence", $seq);
                $info->setFormAction($this->ctrl->getFormAction($output_gui));
                if (strlen($session_lock))
                {
                        $info->addHiddenElement("lock", $session_lock);
                }
                else
                {
                        $info->addHiddenElement("lock", md5($_COOKIE['PHPSESSID'] . time()));
                }
                $online_access = false;
                if ($this->object->getFixedParticipants())
                {
                        include_once "./Modules/Test/classes/class.ilObjTestAccess.php";
                        $online_access_result = ilObjTestAccess::_lookupOnlineTestAccess($this->object->getId(), $ilUser->getId());
                        if ($online_access_result === true)
                        {
                                $online_access = true;
                        }
                        else
                        {
                                ilUtil::sendInfo($online_access_result);
                        }
                }
                if ($this->object->isComplete())
                {
                        if ((!$this->object->getFixedParticipants() || $online_access) && $ilAccess->checkAccess("read", "", $this->ref_id))
                        {
                                $executable = $this->object->isExecutable($ilUser->getId(), $allowPassIncrease = TRUE);
                                if ($executable["executable"])
                                {
                                        if ($this->object->getTestSession()->getActiveId() > 0)
                                        {
                                                // resume test
                                                $resume_text = $this->lng->txt("tst_resume_test");
                                                if (($seq < 1) || ($seq == $this->object->getTestSequence()->getFirstSequence()))
                                                {
                                                        $resume_text = $this->object->getStartTestLabel($this->object->getTestSession()->getActiveId());
                                                }
                                                // Disabled
                                                #if(!$_GET['crs_show_result'] or $this->object->getTestSequence()->getFirstSequence())
                                                {
                                                        $info->addFormButton("resume", $resume_text);
                                                }
                                        }
                                        else
                                        {
                                                // start new test
                                                $info->addFormButton("start", $this->object->getStartTestLabel($this->object->getTestSession()->getActiveId()));
                                        }
                                }
                                else
                                {
                                        ilUtil::sendInfo($executable["errormessage"]);
                                }
                                if ($this->object->getTestSession()->getActiveId() > 0)
                                {
                                        // test results button
                                        if ($this->object->canShowTestResults($ilUser->getId())) 
                                        {
                                                $info->addFormButton("outUserResultsOverview", $this->lng->txt("tst_show_results"));
                                        }
                                }
                        }
                        if ($this->object->getTestSession()->getActiveId() > 0)
                        {
                                if ($this->object->canShowSolutionPrintview($ilUser->getId()))
                                {
                                        $info->addFormButton("outUserListOfAnswerPasses", $this->lng->txt("tst_list_of_answers_show"));
                                }
                        }
                }
                
                $info->enablePrivateNotes();
                
                if (strlen($this->object->getIntroduction()))
                {
                        $info->addSection($this->lng->txt("tst_introduction"));
                        $info->addProperty("", $this->object->prepareTextareaOutput($this->object->getIntroduction()));
                }

                $info->addSection($this->lng->txt("tst_general_properties"));
                $info->addProperty($this->lng->txt("author"), $this->object->getAuthor());
                $info->addProperty($this->lng->txt("title"), $this->object->getTitle());
                if ($this->object->isComplete())
                {
                        if ((!$this->object->getFixedParticipants() || $online_access) && $ilAccess->checkAccess("read", "", $this->ref_id))
                        {
                                // use javascript
                                $checked_javascript = false;
                                if ($this->object->getJavaScriptOutput())
                                {
                                        $checked_javascript = true;
                                }
                                $info->addPropertyCheckbox($this->lng->txt("tst_test_output"), "chb_javascript", 1, $this->lng->txt("tst_use_javascript"), $checked_javascript);
        
                                // hide previous results
                                if (!$this->object->isRandomTest())
                                {
                                        if ($this->object->getNrOfTries() != 1)
                                        {
                                                if ($this->object->getUsePreviousAnswers() == 0)
                                                {
                                                        $info->addProperty($this->lng->txt("tst_use_previous_answers"), $this->lng->txt("tst_dont_use_previous_answers"));
                                                }
                                                else
                                                {
                                                        $use_previous_answers = FALSE;
                                                        if ($ilUser->prefs["tst_use_previous_answers"])
                                                        {
                                                                $checked_previous_answers = TRUE;
                                                        }
                                                        $info->addPropertyCheckbox($this->lng->txt("tst_use_previous_answers"), "chb_use_previous_answers", 1, $this->lng->txt("tst_use_previous_answers_user"), $checked_previous_answers);
                                                }
                                        }
                                }
                                if ($_SESSION["AccountId"] == ANONYMOUS_USER_ID)
                                {
                                        $info->addPropertyTextinput($this->lng->txt("enter_anonymous_code"), "anonymous_id", "", 8, "setAnonymousId", $this->lng->txt("submit"));
                                }
                        }
                }
                                                 
                $info->addSection($this->lng->txt("tst_sequence_properties"));
                $info->addProperty($this->lng->txt("tst_sequence"), $this->lng->txt(($this->object->getSequenceSettings() == TEST_FIXED_SEQUENCE)? "tst_sequence_fixed":"tst_sequence_postpone"));
                
                $info->addSection($this->lng->txt("tst_heading_scoring"));
                $info->addProperty($this->lng->txt("tst_text_count_system"), $this->lng->txt(($this->object->getCountSystem() == COUNT_PARTIAL_SOLUTIONS)? "tst_count_partial_solutions":"tst_count_correct_solutions"));
                $info->addProperty($this->lng->txt("tst_score_mcmr_questions"), $this->lng->txt(($this->object->getMCScoring() == SCORE_ZERO_POINTS_WHEN_UNANSWERED)? "tst_score_mcmr_zero_points_when_unanswered":"tst_score_mcmr_use_scoring_system"));
                if ($this->object->isRandomTest())
                {
                        $info->addProperty($this->lng->txt("tst_pass_scoring"), $this->lng->txt(($this->object->getPassScoring() == SCORE_BEST_PASS)? "tst_pass_best_pass":"tst_pass_last_pass"));
                }

                $info->addSection($this->lng->txt("tst_score_reporting"));
                $score_reporting_text = "";
                switch ($this->object->getScoreReporting())
                {
                        case REPORT_AFTER_TEST:
                                $score_reporting_text = $this->lng->txt("tst_report_after_test");
                                break;
                        case REPORT_ALWAYS:
                                $score_reporting_text = $this->lng->txt("tst_report_after_first_question");
                                break;
                        case REPORT_AFTER_DATE:
                                $score_reporting_text = $this->lng->txt("tst_report_after_date");
                                break;
                }
                $info->addProperty($this->lng->txt("tst_score_reporting"), $score_reporting_text); 
                $reporting_date = $this->object->getReportingDate();
                if ($reporting_date)
                {
                        preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $reporting_date, $matches);
                        $txt_reporting_date = date($this->lng->text["lang_dateformat"] . " " . $this->lng->text["lang_timeformat"], mktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]));
                        $info->addProperty($this->lng->txt("tst_score_reporting_date"), $txt_reporting_date);
                }
        
                $info->addSection($this->lng->txt("tst_session_settings"));
                $info->addProperty($this->lng->txt("tst_nr_of_tries"), ($this->object->getNrOfTries() == 0)?$this->lng->txt("unlimited"):$this->object->getNrOfTries());
                if ($this->object->getNrOfTries() != 1)
                {
                        $info->addProperty($this->lng->txt("tst_nr_of_tries_of_user"), ($this->object->getTestSession()->getPass() == false)?$this->lng->txt("tst_no_tries"):$this->object->getTestSession()->getPass());
                }

                if ($this->object->getEnableProcessingTime())
                {
                        $info->addProperty($this->lng->txt("tst_processing_time"), $this->object->getProcessingTime());
                }
                if (strlen($this->object->getAllowedUsers()) && ($this->object->getAllowedUsersTimeGap()))
                {
                        $info->addProperty($this->lng->txt("tst_allowed_users"), $this->object->getAllowedUsers());
                }
                
                $starting_time = $this->object->getStartingTime();
                if ($starting_time)
                {
                        preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $starting_time, $matches);
                        $txt_starting_time = date($this->lng->text["lang_dateformat"] . " " . $this->lng->text["lang_timeformat"], mktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]));
                        $info->addProperty($this->lng->txt("tst_starting_time"), $txt_starting_time);
                }
                $ending_time = $this->object->getEndingTime();
                if ($ending_time)
                {
                        preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $ending_time, $matches);
                        $txt_ending_time = date($this->lng->text["lang_dateformat"] . " " . $this->lng->text["lang_timeformat"], mktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]));
                        $info->addProperty($this->lng->txt("tst_ending_time"), $txt_ending_time);
                }
                $info->addMetaDataSections($this->object->getId(),0, $this->object->getType());
                // forward the command

                if($_GET['crs_show_result'] and !$this->object->getTestSequence()->getFirstSequence())
                {
                        #ilUtil::sendInfo($this->lng->txt('crs_all_questions_answered_successfully'));
                }                       

                $this->ctrl->forwardCommand($info);
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::infoScreenObject (  ) 

this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually, if everything works through ilCtrl in the future this may be changed

Definition at line 4971 of file class.ilObjTestGUI.php.

References infoScreen().

        {
                $this->ctrl->setCmd("showSummary");
                $this->ctrl->setCmdClass("ilinfoscreengui");
                $this->infoScreen();
        }

Here is the call graph for this function:

ilObjTestGUI::insertQuestionsAfterObject (  ) 

Insert checked questions after the actual selection.

Insert checked questions after the actual selection

public

Definition at line 3006 of file class.ilObjTestGUI.php.

References ilUtil::sendInfo().

        {
                // get all questions to move
                $move_questions = array();
                foreach ($_POST as $key => $value)
                {
                        if (preg_match("/^move_(\d+)$/", $key, $matches))
                        {
                                array_push($move_questions, $value);
                        }
                }
                // get insert point
                $insert_id = -1;
                foreach ($_POST as $key => $value)
                {
                        if (preg_match("/^cb_(\d+)$/", $key, $matches))
                        {
                                if ($insert_id < 0)
                                {
                                        $insert_id = $matches[1];
                                }
                        }
                }
                if ($insert_id <= 0)
                {
                        ilUtil::sendInfo($this->lng->txt("no_target_selected_for_move"), true);
                }
                else
                {
                        $insert_mode = 1;
                        $this->object->moveQuestions($move_questions, $insert_id, $insert_mode);
                }
                $this->ctrl->redirect($this, "questions");
        }

Here is the call graph for this function:

ilObjTestGUI::insertQuestionsBeforeObject (  ) 

Insert checked questions before the actual selection.

Insert checked questions before the actual selection

public

Definition at line 2964 of file class.ilObjTestGUI.php.

References ilUtil::sendInfo().

        {
                // get all questions to move
                $move_questions = array();
                foreach ($_POST as $key => $value)
                {
                        if (preg_match("/^move_(\d+)$/", $key, $matches))
                        {
                                array_push($move_questions, $value);
                        }
                }
                // get insert point
                $insert_id = -1;
                foreach ($_POST as $key => $value)
                {
                        if (preg_match("/^cb_(\d+)$/", $key, $matches))
                        {
                                if ($insert_id < 0)
                                {
                                        $insert_id = $matches[1];
                                }
                        }
                }
                if ($insert_id <= 0)
                {
                        ilUtil::sendInfo($this->lng->txt("no_target_selected_for_move"), true);
                }
                else
                {
                        $insert_mode = 0;
                        $this->object->moveQuestions($move_questions, $insert_id, $insert_mode);
                }
                $this->ctrl->redirect($this, "questions");
        }

Here is the call graph for this function:

ilObjTestGUI::insertQuestionsObject (  ) 

Insert questions from the questionbrowser into the test.

Insert questions from the questionbrowser into the test

public

Definition at line 1821 of file class.ilObjTestGUI.php.

References assQuestion::_needsManualScoring(), and ilUtil::sendInfo().

        {
                // insert selected questions into test
                $selected_array = array();
                foreach ($_POST as $key => $value)
                {
                        if (preg_match("/cb_(\d+)/", $key, $matches))
                        {
                                array_push($selected_array, $matches[1]);
                        }
                }
                if (!count($selected_array))
                {
                        ilUtil::sendInfo($this->lng->txt("tst_insert_missing_question"), true);
                        $this->ctrl->setParameterByClass(get_class($this), "sel_filter_type", $_POST["sel_filter_type"]);
                        $this->ctrl->setParameterByClass(get_class($this), "sel_question_type", $_POST["sel_question_type"]);
                        $this->ctrl->setParameterByClass(get_class($this), "sel_questionpool", $_POST["sel_questionpool"]);
                        $this->ctrl->setParameterByClass(get_class($this), "filter_text", $_POST["filter_text"]);
                        $this->ctrl->redirect($this, "browseForQuestions");
                }
                else
                {
                        include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
                        $manscoring = FALSE;
                        foreach ($selected_array as $key => $value) 
                        {
                                $this->object->insertQuestion($value);
                                if (!$manscoring)
                                {
                                        $manscoring = $manscoring | assQuestion::_needsManualScoring($value);
                                }
                        }
                        $this->object->saveCompleteStatus();
                        if ($manscoring)
                        {
                                ilUtil::sendInfo($this->lng->txt("manscoring_hint"), TRUE);
                        }
                        else
                        {
                                ilUtil::sendInfo($this->lng->txt("tst_questions_inserted"), TRUE);
                        }
                        $this->ctrl->redirect($this, "questions");
                        return;
                }
        }

Here is the call graph for this function:

ilObjTestGUI::insertRandomSelectionObject (  ) 

Inserts a random selection into the test.

Inserts a random selection into the test

public

Definition at line 2477 of file class.ilObjTestGUI.php.

References $total, and ilUtil::sendInfo().

        {
                $selected_array = split(",", $_POST["chosen_questions"]);
                if (!count($selected_array))
                {
                        ilUtil::sendInfo($this->lng->txt("tst_insert_missing_question"));
                }
                else
                {
                        $total = $this->object->evalTotalPersons();
                        if ($total)
                        {
                                // the test was executed previously
                                ilUtil::sendInfo(sprintf($this->lng->txt("tst_insert_questions_and_results"), $total));
                        }
                        else
                        {
                                ilUtil::sendInfo($this->lng->txt("tst_insert_questions"));
                        }
                        foreach ($selected_array as $key => $value) 
                        {
                                $this->object->insertQuestion($value);
                        }
                        $this->object->saveCompleteStatus();
                        ilUtil::sendInfo($this->lng->txt("tst_questions_inserted"), true);
                        $this->ctrl->redirect($this, "questions");
                        return;
                }
        }

Here is the call graph for this function:

ilObjTestGUI::inviteParticipantsObject (  ) 

Creates the output for user/group invitation to a test.

Creates the output for user/group invitation to a test

public

Definition at line 3938 of file class.ilObjTestGUI.php.

References $total, backToRepositoryObject(), outUserGroupTable(), and ilUtil::sendInfo().

Referenced by searchParticipantsObject().

        {
                global $ilAccess;
                if (!$ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        // allow only write access
                        ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
                        $this->ctrl->redirect($this, "infoScreen");
                }

                $total = $this->object->evalTotalPersons();
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_fixed_users.html", "Modules/Test");

                if ($_POST["cmd"]["cancel"])
                {
                        $this->backToRepositoryObject();
                }

                if (strcmp($this->ctrl->getCmd(), "searchParticipants") == 0)
                {
                        if (is_array($_POST["search_for"]))
                        {
                                $this->tpl->setCurrentBlock("search_results_title");
                                $this->tpl->setVariable("TEXT_SEARCH_RESULTS", $this->lng->txt("search_results"));
                                $this->tpl->parseCurrentBlock();
                                if (in_array("usr", $_POST["search_for"]) or in_array("grp", $_POST["search_for"]) or in_array("role", $_POST["search_for"]))
                                {
                                        include_once './classes/class.ilSearch.php';
                                        $search =& new ilSearch($ilUser->id);
                                        $search->setSearchString($_POST["search_term"]);
                                        $search->setCombination($_POST["concatenation"]);
                                        $search->setSearchFor($_POST["search_for"]);
                                        $search->setSearchType("new");
                                        if($search->validate($message))
                                        {
                                                $search->performSearch();
                                        }
                                        if ($message)
                                        {
                                                ilUtil::sendInfo($message);
                                        }
                                        
                                        if(!$search->getNumberOfResults() && $search->getSearchFor())
                                        {
                                                ilUtil::sendInfo($this->lng->txt("search_no_match"));
                                        }
                                        $buttons = array("add");
        
                                        $invited_users =& $this->object->getInvitedUsers();
                                
                                        if ($searchresult = $search->getResultByType("usr"))
                                        {
                                                $users = array();
                                                foreach ($searchresult as $result_array)
                                                {
                                                        if (!array_key_exists($result_array["id"], $invited_users))
                                                        {
                                                                array_push($users, $result_array["id"]);
                                                        }
                                                }
                                                
                                                $users = $this->object->getUserData($users);
                                                
                                                if (count ($users))
                                                        $this->outUserGroupTable("usr", $users, "user_result", "user_row", $this->lng->txt("search_user"),"TEXT_USER_TITLE", $buttons);
                                        }
        
                                        $searchresult = array();
                                        
                                        if ($searchresult = $search->getResultByType("grp"))
                                        {
                                                $groups = array();
                                                
                                                foreach ($searchresult as $result_array)
                                                {                                                       
                                                        array_push($groups, $result_array["id"]);
                                                }
                                                $groups = $this->object->getGroupData ($groups);
                                                
                                                if (count ($groups))
                                                        $this->outUserGroupTable("grp", $groups, "group_result", "group_row", $this->lng->txt("search_group"), "TEXT_GROUP_TITLE", $buttons);
                                        }
                                        
                                        $searchresult = array();
                                        
                                        if ($searchresult = $search->getResultByType("role"))
                                        {
                                                $roles = array();
                                                
                                                foreach ($searchresult as $result_array)
                                                {                                                       
                                                        array_push($roles, $result_array["id"]);
                                                }
                                                
                                                $roles = $this->object->getRoleData ($roles);                   
                                                                
                                                if (count ($roles))
                                                        $this->outUserGroupTable("role", $roles, "role_result", "role_row", $this->lng->txt("role"), "TEXT_ROLE_TITLE", $buttons);
                                        }
                                        
                                }
                                
                        }
                        else
                        {
                                ilUtil::sendInfo($this->lng->txt("no_user_or_group_selected"));
                        }
                }
                
                if ($_POST["cmd"]["save"])
                {
                        $this->object->saveToDb();
                }
                $invited_users = $this->object->getInvitedUsers();

                $buttons = array("save","remove");
                
                if ($this->object->getFixedParticipants())
                {
                        if ($ilAccess->checkAccess("write", "", $this->ref_id))
                        {
                                $this->tpl->setCurrentBlock("invitation");
                                $this->tpl->setVariable("SEARCH_INVITATION", $this->lng->txt("search"));
                                $this->tpl->setVariable("SEARCH_TERM", $this->lng->txt("search_term"));
                                $this->tpl->setVariable("SEARCH_FOR", $this->lng->txt("search_for"));
                                $this->tpl->setVariable("SEARCH_USERS", $this->lng->txt("search_users"));
                                $this->tpl->setVariable("SEARCH_GROUPS", $this->lng->txt("search_groups"));
                                $this->tpl->setVariable("SEARCH_ROLES", $this->lng->txt("search_roles"));
                                $this->tpl->setVariable("TEXT_CONCATENATION", $this->lng->txt("concatenation"));
                                $this->tpl->setVariable("TEXT_AND", $this->lng->txt("and"));
                                $this->tpl->setVariable("TEXT_OR", $this->lng->txt("or"));
                                $this->tpl->setVariable("VALUE_SEARCH_TERM", $_POST["search_term"]);
                                if (is_array($_POST["search_for"]))
                                {
                                        if (in_array("usr", $_POST["search_for"]))
                                        {
                                                $this->tpl->setVariable("CHECKED_USERS", " checked=\"checked\"");
                                        }
                                        if (in_array("grp", $_POST["search_for"]))
                                        {
                                                $this->tpl->setVariable("CHECKED_GROUPS", " checked=\"checked\"");
                                        }
                                        if (in_array("role", $_POST["search_for"]))
                                        {
                                                $this->tpl->setVariable("CHECKED_ROLES", " checked=\"checked\"");
                                        }
                                }
                                else
                                {
                                        $this->tpl->setVariable("CHECKED_USERS", " checked=\"checked\"");
                                }
                                if (strcmp($_POST["concatenation"], "and") == 0)
                                {
                                        $this->tpl->setVariable("CHECKED_AND", " checked=\"checked\"");
                                }
                                else
                                {
                                        $this->tpl->setVariable("CHECKED_OR", " checked=\"checked\"");
                                }
                                $this->tpl->setVariable("SEARCH", $this->lng->txt("search"));
                                $this->tpl->setVariable("SEARCH_INTRODUCTION", $this->lng->txt("participants_invitation_search_introduction"));
                                $this->tpl->setVariable("TEXT_INVITATION", $this->lng->txt("invitation"));
                                $this->tpl->setVariable("VALUE_ON", $this->lng->txt("on"));
                                $this->tpl->setVariable("VALUE_OFF", $this->lng->txt("off"));
                                $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
                                $this->tpl->parseCurrentBlock();
                        }
                }
                
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("TEXT_ALLOW_FIXED_PARTICIPANTS", $this->lng->txt("tst_allow_fixed_participants"));
                $this->tpl->setVariable("BUTTON_SAVE", $this->lng->txt("save"));
                $this->tpl->setVariable("TEXT_FIXED_PARTICIPANTS", $this->lng->txt("participants_invitation"));
                $this->tpl->setVariable("TEXT_FIXED_PARTICIPANTS_DESCRIPTION", $this->lng->txt("participants_invitation_description"));
                if ($this->object->getFixedParticipants())
                {
                        $this->tpl->setVariable("CHECKED_FIXED_PARTICIPANTS", " checked=\"checked\"");
                }
                if ($total && (count($invited_users) == 0))
                {
                        ilUtil::sendInfo($this->lng->txt("tst_fixed_participants_data_exists"));
                        $this->tpl->setVariable("DISABLED_FIXED_PARTICIPANTS", " disabled=\"disabled\"");
                }

                if ($ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        $this->tpl->setVariable("SAVE", $this->lng->txt("save"));
                        $this->tpl->setVariable("CANCEL", $this->lng->txt("cancel"));
                }
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::marksObject (  ) 

Definition at line 3391 of file class.ilObjTestGUI.php.

References ilUtil::getImagePath(), and ilUtil::sendInfo().

Referenced by addMarkStepObject(), addSimpleMarkSchemaObject(), deleteMarkStepsObject(), and saveMarksObject().

        {
                global $ilAccess;
                if (!$ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        // allow only write access
                        ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
                        $this->ctrl->redirect($this, "infoScreen");
                }

                if (!$this->object->canEditMarks())
                {
                        ilUtil::sendInfo($this->lng->txt("cannot_edit_marks"));
                }
                
                $this->object->mark_schema->sort();
        
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_marks.html", "Modules/Test");
                $marks = $this->object->mark_schema->mark_steps;
                $rows = array("tblrow1", "tblrow2");
                $counter = 0;
                foreach ($marks as $key => $value) {
                        $this->tpl->setCurrentBlock("markrow");
                        $this->tpl->setVariable("MARK_SHORT", $value->getShortName());
                        $this->tpl->setVariable("MARK_OFFICIAL", $value->getOfficialName());
                        $this->tpl->setVariable("MARK_PERCENTAGE", sprintf("%.2f", $value->getMinimumLevel()));
                        $this->tpl->setVariable("MARK_PASSED", strtolower($this->lng->txt("tst_mark_passed")));
                        $this->tpl->setVariable("MARK_ID", "$key");
                        $this->tpl->setVariable("ROW_CLASS", $rows[$counter % 2]);
                        if ($value->getPassed()) {
                                $this->tpl->setVariable("MARK_PASSED_CHECKED", " checked=\"checked\"");
                        }
                        $this->tpl->parseCurrentBlock();
                        $counter++;
                }
                if (count($marks) == 0) 
                {
                        $this->tpl->setCurrentBlock("Emptyrow");
                        $this->tpl->setVariable("EMPTY_ROW", $this->lng->txt("tst_no_marks_defined"));
                        $this->tpl->setVariable("ROW_CLASS", $rows[$counter % 2]);
                        $this->tpl->parseCurrentBlock();
                } 
                else 
                {
                        if ($ilAccess->checkAccess("write", "", $this->ref_id) && $this->object->canEditMarks()) 
                        {
                                $this->tpl->setCurrentBlock("selectall");
                                $counter++;
                                $this->tpl->setVariable("ROW_CLASS", $rows[$counter % 2]);
                                $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
                                $this->tpl->parseCurrentBlock();
                                $this->tpl->setCurrentBlock("Footer");
                                $this->tpl->setVariable("ARROW", "<img src=\"" . ilUtil::getImagePath("arrow_downright.gif") . "\" alt=\"".$this->lng->txt("arrow_downright")."\"/>");
                                $this->tpl->setVariable("BUTTON_EDIT", $this->lng->txt("edit"));
                                $this->tpl->setVariable("BUTTON_DELETE", $this->lng->txt("delete"));
                                $this->tpl->parseCurrentBlock();
                        }
                }
                
                if ($this->object->getReportingDate())
                {
                        $this->tpl->setCurrentBlock("ects");
                        if ($this->object->ects_output)
                        {
                                $this->tpl->setVariable("CHECKED_ECTS", " checked=\"checked\"");
                        }
                        $this->tpl->setVariable("TEXT_OUTPUT_ECTS_GRADES", $this->lng->txt("ects_output_of_ects_grades"));
                        $this->tpl->setVariable("TEXT_ALLOW_ECTS_GRADES", $this->lng->txt("ects_allow_ects_grades"));
                        $this->tpl->setVariable("TEXT_USE_FX", $this->lng->txt("ects_use_fx_grade"));
                        if (preg_match("/\d+/", $this->object->ects_fx))
                        {
                                $this->tpl->setVariable("CHECKED_FX", " checked=\"checked\"");
                                $this->tpl->setVariable("VALUE_PERCENT_FX", sprintf("value=\"%s\" ", $this->object->ects_fx));
                        }
                        $this->tpl->setVariable("TEXT_PERCENT", $this->lng->txt("ects_use_fx_grade_part2"));
                        $this->tpl->setVariable("ECTS_GRADE", $this->lng->txt("ects_grade"));
                        $this->tpl->setVariable("PERCENTILE", $this->lng->txt("percentile"));
                        $this->tpl->setVariable("ECTS_GRADE_A", "A - " . $this->lng->txt("ects_grade_a_short"));
                        $this->tpl->setVariable("VALUE_GRADE_A", $this->object->ects_grades["A"]);
                        $this->tpl->setVariable("ECTS_GRADE_B", "B - " . $this->lng->txt("ects_grade_b_short"));
                        $this->tpl->setVariable("VALUE_GRADE_B", $this->object->ects_grades["B"]);
                        $this->tpl->setVariable("ECTS_GRADE_C", "C - " . $this->lng->txt("ects_grade_c_short"));
                        $this->tpl->setVariable("VALUE_GRADE_C", $this->object->ects_grades["C"]);
                        $this->tpl->setVariable("ECTS_GRADE_D", "D - " . $this->lng->txt("ects_grade_d_short"));
                        $this->tpl->setVariable("VALUE_GRADE_D", $this->object->ects_grades["D"]);
                        $this->tpl->setVariable("ECTS_GRADE_E", "E - " . $this->lng->txt("ects_grade_e_short"));
                        $this->tpl->setVariable("VALUE_GRADE_E", $this->object->ects_grades["E"]);
                        
                        $this->tpl->parseCurrentBlock();
                }

                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("ACTION_MARKS", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("HEADER_SHORT", $this->lng->txt("tst_mark_short_form"));
                $this->tpl->setVariable("HEADER_OFFICIAL", $this->lng->txt("tst_mark_official_form"));
                $this->tpl->setVariable("HEADER_PERCENTAGE", $this->lng->txt("tst_mark_minimum_level"));
                $this->tpl->setVariable("HEADER_PASSED", $this->lng->txt("tst_mark_passed"));
                if ($ilAccess->checkAccess("write", "", $this->ref_id) && $this->object->canEditMarks()) 
                {
                        $this->tpl->setVariable("BUTTON_NEW", $this->lng->txt("tst_mark_create_new_mark_step"));
                        $this->tpl->setVariable("BUTTON_NEW_SIMPLE", $this->lng->txt("tst_mark_create_simple_mark_schema"));
                        $this->tpl->setVariable("SAVE", $this->lng->txt("save"));
                        $this->tpl->setVariable("CANCEL", $this->lng->txt("cancel"));
                }
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::moveQuestionsObject (  ) 

Marks selected questions for moving.

Marks selected questions for moving

public

Definition at line 2952 of file class.ilObjTestGUI.php.

References questionsObject().

        {
                $this->questionsObject();
        }

Here is the call graph for this function:

ilObjTestGUI::outEvaluationObject (  ) 

Definition at line 178 of file class.ilObjTestGUI.php.

        {
                $this->ctrl->redirectByClass("iltestevaluationgui", "outEvaluation");
        }

ilObjTestGUI::outUserGroupTable ( a_type,
data_array,
block_result,
block_row,
title_text,
title_label,
buttons 
)

Output of the table structures for selected users and selected groups.

Output of the table structures for selected users and selected groups for the invite participants tab

private

Definition at line 4520 of file class.ilObjTestGUI.php.

References ilObjectGUI::$data, ilFormat::formatDate(), and ilUtil::getImagePath().

Referenced by inviteParticipantsObject(), and participantsObject().

        {
                global $ilAccess;
                $rowclass = array("tblrow1", "tblrow2");
                switch($a_type)
                {
                        case "iv_usr":
                                if ($ilAccess->checkAccess("write", "", $this->object->getRefId()))
                                {
                                        foreach ($buttons as $arr)
                                        {
                                                foreach ($arr as $val => $cat)
                                                {
                                                        $this->tpl->setCurrentBlock("commandoption");
                                                        $this->tpl->setVariable("OPTION_NAME", $this->lng->txt($cat));
                                                        $this->tpl->setVariable("OPTION_VALUE", $val);
                                                        $this->tpl->parseCurrentBlock();
                                                }
                                        }
                                        $this->tpl->setCurrentBlock("user_action_buttons");
                                        $this->tpl->setVariable("ARROW", "<img src=\"" . ilUtil::getImagePath("arrow_downright.gif") . "\" alt=\"".$this->lng->txt("arrow_downright")."\"/>");
                                        $this->tpl->setVariable("VALUE_SUBMIT", $this->lng->txt("submit"));
                                        $this->tpl->parseCurrentBlock();
                                }

                                $finished = "<img border=\"0\" align=\"middle\" src=\"".ilUtil::getImagePath("icon_ok.gif") . "\" alt=\"".$this->lng->txt("checkbox_checked")."\" />";
                                $started  = "<img border=\"0\" align=\"middle\" src=\"".ilUtil::getImagePath("icon_ok.gif") . "\" alt=\"".$this->lng->txt("checkbox_checked")."\" />" ;
                                $counter = 0;
                                foreach ($data_array as $data)
                                {
                                        $maxpass = $this->object->_getMaxPass($data->active_id);
                                        if (!is_null($maxpass))
                                        {
                                                $maxpass += 1;
                                        }
                                        $passes = ($maxpass) ? (($maxpass == 1) ? sprintf($this->lng->txt("pass_finished"), $maxpass) : sprintf($this->lng->txt("passes_finished"), $maxpass)) : "&nbsp;";
                                        $this->tpl->setCurrentBlock($block_row);
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->setVariable("COUNTER", $data->usr_id);
                                        $this->tpl->setVariable("VALUE_IV_USR_ID", $data->usr_id);
                                        $this->tpl->setVariable("VALUE_IV_LOGIN", $data->login);
                                        $this->tpl->setVariable("VALUE_IV_FIRSTNAME", $data->firstname);
                                        $this->tpl->setVariable("VALUE_IV_LASTNAME", $data->lastname);
                                        $this->tpl->setVariable("VALUE_IV_CLIENT_IP", $data->clientip);
                                        $this->tpl->setVariable("VALUE_IV_TEST_FINISHED", ($data->test_finished==1)?$finished.$passes:$passes);
                                        $this->tpl->setVariable("VALUE_IV_TEST_STARTED", ($data->test_started==1)?$started:"&nbsp;");
                                        if (strlen($data->usr_id))
                                        {
                                                $last_access = $this->object->_getLastAccess($data->active_id);
                                                if (!strlen($last_access))
                                                {
                                                        $this->tpl->setVariable("VALUE_IV_LAST_ACCESS", $this->lng->txt("not_yet_accessed"));
                                                }
                                                else
                                                {
                                                        $this->tpl->setVariable("VALUE_IV_LAST_ACCESS", ilFormat::formatDate($last_access));
                                                }
                                        }
                                        else
                                        {
                                                $last_access = $this->lng->txt("not_yet_accessed");
                                                $this->tpl->setVariable("VALUE_IV_LAST_ACCESS", $last_access);
                                        }
                                        $this->ctrl->setParameter($this, "active_id", $data->active_id);
                                        if ($data->test_started)
                                        {
                                                $this->tpl->setVariable("VALUE_TST_SHOW_RESULTS", $this->lng->txt("tst_show_results"));
                                                $this->ctrl->setParameterByClass("iltestoutputgui", "active_id", $data->active_id);
                                                $this->tpl->setVariable("URL_TST_SHOW_RESULTS", $this->ctrl->getLinkTargetByClass("iltestoutputgui", "outParticipantsResultsOverview"));
                                        }
                                        $counter++;
                                        $this->tpl->parseCurrentBlock();
                                }
                                if (count($data_array))
                                {
                                        $this->tpl->setCurrentBlock("selectall");
                                        $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
                                        $counter++;
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->parseCurrentBlock();
                                }
                                $this->tpl->setCurrentBlock($block_result);
                                $this->tpl->setVariable("$title_label", "<img src=\"" . ilUtil::getImagePath("icon_usr_b.gif") . "\" alt=\"".$this->lng->txt("objs_usr")."\" align=\"middle\" /> " . $title_text);
                                $this->tpl->setVariable("TEXT_IV_LOGIN", $this->lng->txt("login"));
                                $this->tpl->setVariable("TEXT_IV_FIRSTNAME", $this->lng->txt("firstname"));
                                $this->tpl->setVariable("TEXT_IV_LASTNAME", $this->lng->txt("lastname"));
                                $this->tpl->setVariable("TEXT_IV_CLIENT_IP", $this->lng->txt("clientip"));
                                $this->tpl->setVariable("TEXT_IV_TEST_FINISHED", $this->lng->txt("tst_finished"));
                                $this->tpl->setVariable("TEXT_IV_TEST_STARTED", $this->lng->txt("tst_started"));
                                $this->tpl->setVariable("TEXT_IV_LAST_ACCESS", $this->lng->txt("last_access"));
                                $this->tpl->parseCurrentBlock();
                                break;
                        case "iv_participants":
                                if ($ilAccess->checkAccess("write", "", $this->object->getRefId()))
                                {
                                        foreach ($buttons as $arr)
                                        {
                                                foreach ($arr as $val => $cat)
                                                {
                                                        $this->tpl->setCurrentBlock("commandoption");
                                                        $this->tpl->setVariable("OPTION_NAME", $this->lng->txt($cat));
                                                        $this->tpl->setVariable("OPTION_VALUE", $val);
                                                        $this->tpl->parseCurrentBlock();
                                                }
                                        }
                                        $this->tpl->setCurrentBlock("user_action_buttons");
                                        $this->tpl->setVariable("ARROW", "<img src=\"" . ilUtil::getImagePath("arrow_downright.gif") . "\" alt=\"".$this->lng->txt("arrow_downright")."\"/>");
                                        $this->tpl->setVariable("VALUE_SUBMIT", $this->lng->txt("submit"));
                                        $this->tpl->parseCurrentBlock();
                                }
                                $finished = "<img border=\"0\" align=\"middle\" src=\"".ilUtil::getImagePath("icon_ok.gif") . "\" alt=\"".$this->lng->txt("checkbox_checked")."\" />";
                                $started  = "<img border=\"0\" align=\"middle\" src=\"".ilUtil::getImagePath("icon_ok.gif") . "\" alt=\"".$this->lng->txt("checkbox_checked")."\" />" ;
                                $counter = 0;
                                foreach ($data_array as $data)
                                {
                                        $maxpass = $this->object->_getMaxPass($data->active_id);
                                        if (!is_null($maxpass))
                                        {
                                                $maxpass += 1;
                                        }
                                        $passes = ($maxpass) ? (($maxpass == 1) ? sprintf($this->lng->txt("pass_finished"), $maxpass) : sprintf($this->lng->txt("passes_finished"), $maxpass)) : "&nbsp;";
                                        $this->tpl->setCurrentBlock($block_row);
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->setVariable("COUNTER", $data->active_id);
                                        $this->tpl->setVariable("VALUE_IV_USR_ID", $data->active_id);
                                        $this->tpl->setVariable("VALUE_IV_LOGIN", $data->login);
                                        $this->tpl->setVariable("VALUE_IV_FIRSTNAME", $data->firstname);
                                        $this->tpl->setVariable("VALUE_IV_LASTNAME", $data->lastname);
                                        $this->tpl->setVariable("VALUE_IV_TEST_FINISHED", ($data->test_finished==1)?$finished.$passes:$passes);
                                        $this->tpl->setVariable("VALUE_IV_TEST_STARTED", ($data->test_started==1)?$started:"&nbsp;");
                                        if (strlen($data->active_id))
                                        {
                                                $last_access = $this->object->_getLastAccess($data->active_id);
                                                $this->tpl->setVariable("VALUE_IV_LAST_ACCESS", ilFormat::formatDate($last_access));
                                        }
                                        else
                                        {
                                                $last_access = $this->lng->txt("not_yet_accessed");
                                                $this->tpl->setVariable("VALUE_IV_LAST_ACCESS", $last_access);
                                        }
                                        $this->ctrl->setParameter($this, "active_id", $data->active_id);
                                        if ($data->test_started)
                                        {
                                                $this->tpl->setVariable("VALUE_TST_SHOW_RESULTS", $this->lng->txt("tst_show_results"));
                                                $this->ctrl->setParameterByClass("iltestoutputgui", "active_id", $data->active_id);
                                                $this->tpl->setVariable("URL_TST_SHOW_RESULTS", $this->ctrl->getLinkTargetByClass("iltestoutputgui", "outParticipantsResultsOverview"));
                                        }
                                        $counter++;
                                        $this->tpl->parseCurrentBlock();
                                }
                                if (count($data_array))
                                {
                                        $this->tpl->setCurrentBlock("selectall");
                                        $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
                                        $counter++;
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->parseCurrentBlock();
                                }
                                $this->tpl->setCurrentBlock($block_result);
                                $this->tpl->setVariable("$title_label", "<img src=\"" . ilUtil::getImagePath("icon_usr_b.gif") . "\" alt=\"".$this->lng->txt("objs_usr")."\" align=\"middle\" /> " . $title_text);
                                $this->tpl->setVariable("TEXT_IV_LOGIN", $this->lng->txt("login"));
                                $this->tpl->setVariable("TEXT_IV_FIRSTNAME", $this->lng->txt("firstname"));
                                $this->tpl->setVariable("TEXT_IV_LASTNAME", $this->lng->txt("lastname"));
                                $this->tpl->setVariable("TEXT_IV_TEST_FINISHED", $this->lng->txt("tst_finished"));
                                $this->tpl->setVariable("TEXT_IV_TEST_STARTED", $this->lng->txt("tst_started"));
                                $this->tpl->setVariable("TEXT_IV_LAST_ACCESS", $this->lng->txt("last_access"));
                                $this->tpl->parseCurrentBlock();
                                break;
                        case "usr":
                                $counter = 0;
                                foreach ($data_array as $data)
                                {
                                        $this->tpl->setCurrentBlock($block_row);
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->setVariable("COUNTER", $data->usr_id);
                                        $this->tpl->setVariable("VALUE_LOGIN", $data->login);
                                        $this->tpl->setVariable("VALUE_FIRSTNAME", $data->firstname);
                                        $this->tpl->setVariable("VALUE_LASTNAME", $data->lastname);
                                        $this->tpl->setVariable("VALUE_CLIENT_IP", $data->clientip);
                                        $counter++;
                                        $this->tpl->parseCurrentBlock();
                                }
                                if (count($data_array))
                                {
                                        $this->tpl->setCurrentBlock("selectall_user_row");
                                        $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
                                        $counter++;
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->parseCurrentBlock();
                                }
                                $this->tpl->setCurrentBlock($block_result);
                                $this->tpl->setVariable("$title_label", "<img src=\"" . ilUtil::getImagePath("icon_usr_b.gif") . "\" alt=\"".$this->lng->txt("objs_usr")."\" align=\"middle\" /> " . $title_text);
                                $this->tpl->setVariable("TEXT_LOGIN", $this->lng->txt("login"));
                                $this->tpl->setVariable("TEXT_FIRSTNAME", $this->lng->txt("firstname"));
                                $this->tpl->setVariable("TEXT_LASTNAME", $this->lng->txt("lastname"));
                                $this->tpl->setVariable("TEXT_CLIENT_IP", $this->lng->txt("clientip"));
                                        
                                if ($ilAccess->checkAccess("write", "", $this->object->getRefId()))
                                {
                                        foreach ($buttons as $cat)
                                        {
                                                $this->tpl->setVariable("VALUE_" . strtoupper($cat), $this->lng->txt($cat));
                                        }
                                        $this->tpl->setVariable("ARROW", "<img src=\"" . ilUtil::getImagePath("arrow_downright.gif") . "\" alt=\"".$this->lng->txt("arrow_downright")."\"/>");
                                }
                                $this->tpl->parseCurrentBlock();
                                break;
                                
                        case "role":
                        case "grp":
                                $counter = 0;
                                foreach ($data_array as $key => $data)
                                {
                                        $this->tpl->setCurrentBlock($block_row);
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->setVariable("COUNTER", $key);
                                        $this->tpl->setVariable("VALUE_TITLE", $data->title);
                                        $this->tpl->setVariable("VALUE_DESCRIPTION", $data->description);
                                        $counter++;
                                        $this->tpl->parseCurrentBlock();
                                }
                                if (count($data_array))
                                {
                                        $this->tpl->setCurrentBlock("selectall_" . $a_type . "_row");
                                        $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
                                        $counter++;
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->parseCurrentBlock();
                                }
                                $this->tpl->setCurrentBlock($block_result);
                                $this->tpl->setVariable("$title_label", "<img src=\"" . ilUtil::getImagePath("icon_".$a_type."_b.gif") . "\" align=\"middle\" alt=\"".$this->lng->txt("objs_".$a_type)."\" /> " . $title_text);
                                $this->tpl->setVariable("TEXT_TITLE", $this->lng->txt("title"));
                                $this->tpl->setVariable("TEXT_DESCRIPTION", $this->lng->txt("description"));
                                if ($ilAccess->checkAccess("write", "", $this->object->getRefId()))
                                {
                                        foreach ($buttons as $cat)
                                        {
                                                $this->tpl->setVariable("VALUE_" . strtoupper($cat), $this->lng->txt($cat));
                                        }
                                        $this->tpl->setVariable("ARROW", "<img src=\"" . ilUtil::getImagePath("arrow_downright.gif") . "\" alt=\"".$this->lng->txt("arrow_downright")."\"/>");
                                }
                                $this->tpl->parseCurrentBlock();
                                break;
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::participantsActionObject (  ) 

Evaluates the actions on the participants page.

Evaluates the actions on the participants page

public

Definition at line 4138 of file class.ilObjTestGUI.php.

References $command.

        {
                $command = $_POST["command"];
                if (strlen($command))
                {
                        $method = $command . "Object";
                        if (method_exists($this, $method))
                        {
                                $this->$method();
                                return;
                        }
                }
                $this->ctrl->redirect($this, "participants");
        }

ilObjTestGUI::participantsObject (  ) 

Creates the output of the test participants.

Creates the output of the test participants

public

Definition at line 4160 of file class.ilObjTestGUI.php.

References ilYuiUtil::addYesNoDialog(), backToRepositoryObject(), outUserGroupTable(), and ilUtil::sendInfo().

        {
                global $ilAccess;
                if (!$ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        // allow only write access
                        ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
                        $this->ctrl->redirect($this, "infoScreen");
                }

                if ($this->object->getFixedParticipants())
                {
                        $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_invite.html", "Modules/Test");
                }
                else
                {
                        $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_participants.html", "Modules/Test");
                }
                include_once "./Services/YUI/classes/class.ilYuiUtil.php";
                ilYuiUtil::addYesNoDialog(
                        "deleteAllUserResults", 
                        $this->lng->txt("delete_all_user_data"), 
                        $this->lng->txt("confirm_delete_all_user_data"), 
                        "location.href='" . $this->ctrl->getLinkTarget($this, "confirmDeleteAllUserResults") . "';", 
                        "", 
                        TRUE, 
                        $icon = "warn"
                );
                if ($_POST["cmd"]["cancel"])
                {
                        $this->backToRepositoryObject();
                }
                
                if ($_POST["cmd"]["save"])
                {
                        $this->object->saveToDb();
                }
                
                if ($ilAccess->checkAccess("write", "", $this->ref_id))
                {
                        if ($this->tpl->blockExists("invitation"))
                        {
                                $this->tpl->setCurrentBlock("invitation");
                                $this->tpl->setVariable("SEARCH_INVITATION", $this->lng->txt("search"));
                                $this->tpl->setVariable("SEARCH_TERM", $this->lng->txt("search_term"));
                                $this->tpl->setVariable("SEARCH_FOR", $this->lng->txt("search_for"));
                                $this->tpl->setVariable("SEARCH_USERS", $this->lng->txt("search_users"));
                                $this->tpl->setVariable("SEARCH_GROUPS", $this->lng->txt("search_groups"));
                                $this->tpl->setVariable("SEARCH_ROLES", $this->lng->txt("search_roles"));
                                $this->tpl->setVariable("TEXT_CONCATENATION", $this->lng->txt("concatenation"));
                                $this->tpl->setVariable("TEXT_AND", $this->lng->txt("and"));
                                $this->tpl->setVariable("TEXT_OR", $this->lng->txt("or"));
                                $this->tpl->setVariable("VALUE_SEARCH_TERM", $_POST["search_term"]);
                                if (is_array($_POST["search_for"]))
                                {
                                        if (in_array("usr", $_POST["search_for"]))
                                        {
                                                $this->tpl->setVariable("CHECKED_USERS", " checked=\"checked\"");
                                        }
                                        if (in_array("grp", $_POST["search_for"]))
                                        {
                                                $this->tpl->setVariable("CHECKED_GROUPS", " checked=\"checked\"");
                                        }
                                        if (in_array("role", $_POST["search_for"]))
                                        {
                                                $this->tpl->setVariable("CHECKED_ROLES", " checked=\"checked\"");
                                        }

                                }
                                if (strcmp($_POST["concatenation"], "and") == 0)
                                {
                                        $this->tpl->setVariable("CHECKED_AND", " checked=\"checked\"");
                                }
                                else if (strcmp($_POST["concatenation"], "or") == 0)
                                {
                                        $this->tpl->setVariable("CHECKED_OR", " checked=\"checked\"");
                                }
                                $this->tpl->setVariable("SEARCH", $this->lng->txt("search"));
                                $this->tpl->parseCurrentBlock();
                        }
                }

                if ($this->object->getFixedParticipants())
                {
                        $invited_users =& $this->object->getInvitedUsers();
                        if (count($invited_users) == 0)
                        {
                                ilUtil::sendInfo($this->lng->txt("tst_participants_no_fixed"));
                        }
                        else
                        {
                                $this->tpl->setCurrentBlock("delete_all");
                                $this->tpl->setVariable("VALUE_DELETE_ALL_USER_DATA", $this->lng->txt("delete_all_user_data"));
                                $this->tpl->setVariable("FORMACTION_DELETEALL", $this->ctrl->getFormAction($this, "deleteAllUserResults"));
                                $this->tpl->parseCurrentBlock();
                        }
                        $buttons = array(array("saveClientIP" => "save"),array("removeParticipant" => "remove_as_participant"));
                        if (!$this->object->getAnonymity())
                        {
                                array_push($buttons, array("showPassOverview" => "show_pass_overview"));
                                array_push($buttons, array("showUserAnswers" => "show_user_answers"));
                                array_push($buttons, array("showDetailedResults" => "show_detailed_results"));
                        }
                        array_push($buttons, array("deleteSingleUserResults" => "delete_user_data"));
                        if (count($invited_users))
                        {
                                $this->outUserGroupTable("iv_usr", $invited_users, "invited_user_result", "invited_user_row", $this->lng->txt("tst_fixed_participating_users"), "TEXT_INVITED_USER_TITLE",$buttons);
                        }
                }
                else
                {
                        $invited_users =& $this->object->getTestParticipants();
                        if (count($invited_users) == 0) 
                        {
                                ilUtil::sendInfo($this->lng->txt("tst_participants_no"));
                        }
                        else
                        {
                                $this->tpl->setCurrentBlock("delete_all");
                                $this->tpl->setVariable("VALUE_DELETE_ALL_USER_DATA", $this->lng->txt("delete_all_user_data"));
                                $this->tpl->setVariable("FORMACTION_DELETEALL", $this->ctrl->getFormAction($this, "deleteAllUserResults"));
                                $this->tpl->parseCurrentBlock();
                        }
                        $buttons = array();
                        if (!$this->object->getAnonymity())
                        {
                                array_push($buttons, array("showPassOverview" => "show_pass_overview"));
                                array_push($buttons, array("showUserAnswers" => "show_user_answers"));
                                array_push($buttons, array("showDetailedResults" => "show_detailed_results"));
                        }
                        array_push($buttons, array("deleteSingleUserResults" => "delete_user_data"));
                        if (count($invited_users))
                        {
                                $this->outUserGroupTable("iv_participants", $invited_users, "invited_user_result", "invited_user_row", $this->lng->txt("tst_participating_users"), "TEXT_INVITED_USER_TITLE",$buttons);
                        }
                }

                if ($this->object->getFixedParticipants())
                {
                        $this->tpl->setCurrentBlock("fixed_participants_hint");
                        $this->tpl->setVariable("FIXED_PARTICIPANTS_HINT", sprintf($this->lng->txt("fixed_participants_hint"), $this->lng->txt("participants_invitation")));
                        $this->tpl->parseCurrentBlock();
                }
                
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("TEXT_INVITATION", $this->lng->txt("invitation"));
                $this->tpl->setVariable("VALUE_ON", $this->lng->txt("on"));
                $this->tpl->setVariable("VALUE_OFF", $this->lng->txt("off"));
                $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));

                if ($ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        $this->tpl->setVariable("SAVE", $this->lng->txt("save"));
                        $this->tpl->setVariable("CANCEL", $this->lng->txt("cancel"));
                }
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

ilObjTestGUI::printobject (  ) 

Print tab to create a print of all questions with points and solutions.

Print tab to create a print of all questions with points and solutions

public

Definition at line 4459 of file class.ilObjTestGUI.php.

References getQuestionsSubTabs(), ilUtil::getStyleSheetLocation(), and ilUtil::sendInfo().

        {
                global $ilAccess;
                if (!$ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        // allow only write access
                        ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
                        $this->ctrl->redirect($this, "infoScreen");
                }
                $this->getQuestionsSubTabs();
                $this->tpl->addBlockFile("PRINT_CONTENT", "adm_content", "tpl.il_as_tst_print_test_confirm.html", "Modules/Test");
                $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print");
                
                global $ilUser;         
                $print_date = mktime(date("H"), date("i"), date("s"), date("m")  , date("d"), date("Y"));
                $max_points= 0;
                $counter = 1;
                                        
                foreach ($this->object->questions as $question) 
                {               
                        $this->tpl->setCurrentBlock("question");                        
                        $question_gui = $this->object->createQuestionGUI("", $question);
                        $this->tpl->setVariable("COUNTER_QUESTION", $counter.".");
                        $this->tpl->setVariable("QUESTION_TITLE", $question_gui->object->getTitle());
                        if ($question_gui->object->getMaximumPoints() == 1)
                        {
                                $this->tpl->setVariable("QUESTION_POINTS", $question_gui->object->getMaximumPoints() . " " . $this->lng->txt("point"));
                        }
                        else
                        {
                                $this->tpl->setVariable("QUESTION_POINTS", $question_gui->object->getMaximumPoints() . " " . $this->lng->txt("points"));
                        }
                        $result_output = $question_gui->getSolutionOutput("", NULL, FALSE, TRUE, FALSE, $this->object->getShowSolutionFeedback());
                        $this->tpl->setVariable("SOLUTION_OUTPUT", $result_output);
                        $this->tpl->parseCurrentBlock("question");
                        $counter ++;                                    
                        $max_points += $question_gui->object->getMaximumPoints();                       
                }

                $this->tpl->setCurrentBlock("navigation_buttons");
                $this->tpl->setVariable("BUTTON_PRINT", $this->lng->txt("print"));
                $this->tpl->parseCurrentBlock();
                
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("TITLE", $this->object->getTitle());            
                $this->tpl->setVariable("PRINT_TEST", $this->lng->txt("tst_print"));
                $this->tpl->setVariable("TXT_PRINT_DATE", $this->lng->txt("date"));
                $this->tpl->setVariable("VALUE_PRINT_DATE", strftime("%c",$print_date));
                $this->tpl->setVariable("TXT_MAXIMUM_POINTS", $this->lng->txt("tst_maximum_points"));
                $this->tpl->setVariable("VALUE_MAXIMUM_POINTS", $max_points);
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

ilObjTestGUI::propertiesObject (  ) 

Display and fill the properties form of the test.

Display and fill the properties form of the test

public

Definition at line 1408 of file class.ilObjTestGUI.php.

References $_GET, ilObjectGUI::$data, ilObjectGUI::$obj_id, $total, ilRTE::_getRTEClassname(), ilObject::_lookupObjectId(), ilObject::_lookupType(), ilUtil::getImagePath(), ilUtil::makeDateSelect(), ilUtil::makeTimeSelect(), ilUtil::prepareFormOutput(), and ilUtil::sendInfo().

        {
                global $ilAccess;
                if (!$ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        // allow only write access
                        ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
                        $this->ctrl->redirect($this, "infoScreen");
                }
                // to set the command class for the default command after object creation to make the RTE editor switch work
                if (strlen($this->ctrl->getCmdClass()) == 0) $this->ctrl->setCmdClass("ilobjtestgui");
                include_once "./Services/RTE/classes/class.ilRTE.php";
                $rtestring = ilRTE::_getRTEClassname();
                include_once "./Services/RTE/classes/class.$rtestring.php";
                $rte = new $rtestring();
                include_once "./classes/class.ilObject.php";
                $obj_id = ilObject::_lookupObjectId($_GET["ref_id"]);
                $obj_type = ilObject::_lookupType($_GET["ref_id"], TRUE);
                $rte->addRTESupport($obj_id, $obj_type, "assessment");

                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_properties.html", "Modules/Test");
                $total = $this->object->evalTotalPersons();
                if ($total == 0)
                {
                        $this->tpl->setCurrentBlock("change_button");
                        $this->tpl->setVariable("BTN_CHANGE", $this->lng->txt("change"));
                        $this->tpl->parseCurrentBlock();
                }
                $this->lng->loadLanguageModule("jscalendar");
                $this->tpl->addBlockFile("CALENDAR_LANG_JAVASCRIPT", "calendar_javascript", "tpl.calendar.html");
                $this->tpl->setCurrentBlock("calendar_javascript");
                $this->tpl->setVariable("FULL_SUNDAY", $this->lng->txt("l_su"));
                $this->tpl->setVariable("FULL_MONDAY", $this->lng->txt("l_mo"));
                $this->tpl->setVariable("FULL_TUESDAY", $this->lng->txt("l_tu"));
                $this->tpl->setVariable("FULL_WEDNESDAY", $this->lng->txt("l_we"));
                $this->tpl->setVariable("FULL_THURSDAY", $this->lng->txt("l_th"));
                $this->tpl->setVariable("FULL_FRIDAY", $this->lng->txt("l_fr"));
                $this->tpl->setVariable("FULL_SATURDAY", $this->lng->txt("l_sa"));
                $this->tpl->setVariable("SHORT_SUNDAY", $this->lng->txt("s_su"));
                $this->tpl->setVariable("SHORT_MONDAY", $this->lng->txt("s_mo"));
                $this->tpl->setVariable("SHORT_TUESDAY", $this->lng->txt("s_tu"));
                $this->tpl->setVariable("SHORT_WEDNESDAY", $this->lng->txt("s_we"));
                $this->tpl->setVariable("SHORT_THURSDAY", $this->lng->txt("s_th"));
                $this->tpl->setVariable("SHORT_FRIDAY", $this->lng->txt("s_fr"));
                $this->tpl->setVariable("SHORT_SATURDAY", $this->lng->txt("s_sa"));
                $this->tpl->setVariable("FULL_JANUARY", $this->lng->txt("l_01"));
                $this->tpl->setVariable("FULL_FEBRUARY", $this->lng->txt("l_02"));
                $this->tpl->setVariable("FULL_MARCH", $this->lng->txt("l_03"));
                $this->tpl->setVariable("FULL_APRIL", $this->lng->txt("l_04"));
                $this->tpl->setVariable("FULL_MAY", $this->lng->txt("l_05"));
                $this->tpl->setVariable("FULL_JUNE", $this->lng->txt("l_06"));
                $this->tpl->setVariable("FULL_JULY", $this->lng->txt("l_07"));
                $this->tpl->setVariable("FULL_AUGUST", $this->lng->txt("l_08"));
                $this->tpl->setVariable("FULL_SEPTEMBER", $this->lng->txt("l_09"));
                $this->tpl->setVariable("FULL_OCTOBER", $this->lng->txt("l_10"));
                $this->tpl->setVariable("FULL_NOVEMBER", $this->lng->txt("l_11"));
                $this->tpl->setVariable("FULL_DECEMBER", $this->lng->txt("l_12"));
                $this->tpl->setVariable("SHORT_JANUARY", $this->lng->txt("s_01"));
                $this->tpl->setVariable("SHORT_FEBRUARY", $this->lng->txt("s_02"));
                $this->tpl->setVariable("SHORT_MARCH", $this->lng->txt("s_03"));
                $this->tpl->setVariable("SHORT_APRIL", $this->lng->txt("s_04"));
                $this->tpl->setVariable("SHORT_MAY", $this->lng->txt("s_05"));
                $this->tpl->setVariable("SHORT_JUNE", $this->lng->txt("s_06"));
                $this->tpl->setVariable("SHORT_JULY", $this->lng->txt("s_07"));
                $this->tpl->setVariable("SHORT_AUGUST", $this->lng->txt("s_08"));
                $this->tpl->setVariable("SHORT_SEPTEMBER", $this->lng->txt("s_09"));
                $this->tpl->setVariable("SHORT_OCTOBER", $this->lng->txt("s_10"));
                $this->tpl->setVariable("SHORT_NOVEMBER", $this->lng->txt("s_11"));
                $this->tpl->setVariable("SHORT_DECEMBER", $this->lng->txt("s_12"));
                $this->tpl->setVariable("ABOUT_CALENDAR", $this->lng->txt("about_calendar"));
                $this->tpl->setVariable("ABOUT_CALENDAR_LONG", $this->lng->txt("about_calendar_long"));
                $this->tpl->setVariable("ABOUT_TIME_LONG", $this->lng->txt("about_time"));
                $this->tpl->setVariable("PREV_YEAR", $this->lng->txt("prev_year"));
                $this->tpl->setVariable("PREV_MONTH", $this->lng->txt("prev_month"));
                $this->tpl->setVariable("GO_TODAY", $this->lng->txt("go_today"));
                $this->tpl->setVariable("NEXT_MONTH", $this->lng->txt("next_month"));
                $this->tpl->setVariable("NEXT_YEAR", $this->lng->txt("next_year"));
                $this->tpl->setVariable("SEL_DATE", $this->lng->txt("select_date"));
                $this->tpl->setVariable("DRAG_TO_MOVE", $this->lng->txt("drag_to_move"));
                $this->tpl->setVariable("PART_TODAY", $this->lng->txt("part_today"));
                $this->tpl->setVariable("DAY_FIRST", $this->lng->txt("day_first"));
                $this->tpl->setVariable("CLOSE", $this->lng->txt("close"));
                $this->tpl->setVariable("TODAY", $this->lng->txt("today"));
                $this->tpl->setVariable("TIME_PART", $this->lng->txt("time_part"));
                $this->tpl->setVariable("DEF_DATE_FORMAT", $this->lng->txt("def_date_format"));
                $this->tpl->setVariable("TT_DATE_FORMAT", $this->lng->txt("tt_date_format"));
                $this->tpl->setVariable("WK", $this->lng->txt("wk"));
                $this->tpl->setVariable("TIME", $this->lng->txt("time"));
                $this->tpl->parseCurrentBlock();
                $this->tpl->setCurrentBlock("CalendarJS");
                $this->tpl->setVariable("LOCATION_JAVASCRIPT_CALENDAR", "./Modules/Test/js/calendar/calendar.js");
                $this->tpl->setVariable("LOCATION_JAVASCRIPT_CALENDAR_SETUP", "./Modules/Test/js/calendar/calendar-setup.js");
                $this->tpl->setVariable("LOCATION_JAVASCRIPT_CALENDAR_STYLESHEET", "./Modules/Test/js/calendar/calendar.css");
                $this->tpl->parseCurrentBlock();
                $this->tpl->setCurrentBlock("javascript_call_calendar");
                $this->tpl->setVariable("INPUT_FIELDS_STARTING_DATE", "starting_date");
                $this->tpl->setVariable("INPUT_FIELDS_ENDING_DATE", "ending_date");
                $this->tpl->parseCurrentBlock();
                
                $total = $this->object->evalTotalPersons();
                $data["anonymity"] = $this->object->getAnonymity();
                $data["show_cancel"] = $this->object->getShowCancel();
                $data["show_marker"] = $this->object->getShowMarker();
                $data["introduction"] = $this->object->getIntroduction();
                $data["sequence_settings"] = $this->object->getSequenceSettings();
                $data["nr_of_tries"] = $this->object->getNrOfTries();
                $data["use_previous_answers"] = $this->object->getUsePreviousAnswers();
                $data["title_output"] = $this->object->getTitleOutput();
                $data["enable_processing_time"] = $this->object->getEnableProcessingTime();
                $data["reset_processing_time"] = $this->object->getResetProcessingTime();
                $data["processing_time"] = $this->object->getProcessingTime();
                $data["random_test"] = $this->object->isRandomTest();
                $data["password"] = $this->object->getPassword();
                $data["allowedUsers"] = $this->object->getAllowedUsers();
                $data["allowedUsersTimeGap"] = $this->object->getAllowedUsersTimeGap();
                if (!$this->object->getEnableProcessingTime())
                {
                        $proc_time = $this->object->getEstimatedWorkingTime();
                        $data["processing_time"] = sprintf("%02d:%02d:%02d",
                                $proc_time["h"],
                                $proc_time["m"],
                                $proc_time["s"]
                        );
                }
                $data["starting_time"] = $this->object->getStartingTime();
                $data["ending_time"] = $this->object->getEndingTime();
                
                $this->tpl->setCurrentBlock("starting_time");
                $this->tpl->setVariable("TEXT_STARTING_TIME", $this->lng->txt("tst_starting_time"));
                if (!$data["starting_time"])
                {
                        $date_input = ilUtil::makeDateSelect("starting_date");
                        $time_input = ilUtil::makeTimeSelect("starting_time");
                }
                else
                {
                        preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $data["starting_time"], $matches);
                        $date_input = ilUtil::makeDateSelect("starting_date", $matches[1], sprintf("%d", $matches[2]), sprintf("%d", $matches[3]));
                        $time_input = ilUtil::makeTimeSelect("starting_time", true, sprintf("%d", $matches[4]), sprintf("%d", $matches[5]), sprintf("%d", $matches[6]));
                }
                $this->tpl->setVariable("IMG_STARTING_TIME_CALENDAR", ilUtil::getImagePath("calendar.png"));
                $this->tpl->setVariable("TXT_STARTING_TIME_CALENDAR", $this->lng->txt("open_calendar"));
                $this->tpl->setVariable("TXT_ENABLED", $this->lng->txt("enabled"));
                if ($data["starting_time"])
                {
                        $this->tpl->setVariable("CHECKED_STARTING_TIME", " checked=\"checked\"");
                }
                $this->tpl->setVariable("INPUT_STARTING_TIME", $this->lng->txt("date") . ": " . $date_input . $this->lng->txt("time") . ": " . $time_input);
                $this->tpl->parseCurrentBlock();

                $this->tpl->setCurrentBlock("ending_time");
                $this->tpl->setVariable("TEXT_ENDING_TIME", $this->lng->txt("tst_ending_time"));
                if (!$data["ending_time"])
                {
                        $date_input = ilUtil::makeDateSelect("ending_date");
                        $time_input = ilUtil::makeTimeSelect("ending_time");
                }
                else
                {
                        preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $data["ending_time"], $matches);
                        $date_input = ilUtil::makeDateSelect("ending_date", $matches[1], sprintf("%d", $matches[2]), sprintf("%d", $matches[3]));
                        $time_input = ilUtil::makeTimeSelect("ending_time", true, sprintf("%d", $matches[4]), sprintf("%d", $matches[5]), sprintf("%d", $matches[6]));
                }
                $this->tpl->setVariable("IMG_ENDING_TIME_CALENDAR", ilUtil::getImagePath("calendar.png"));
                $this->tpl->setVariable("TXT_ENDING_TIME_CALENDAR", $this->lng->txt("open_calendar"));
                $this->tpl->setVariable("TXT_ENABLED", $this->lng->txt("enabled"));
                if ($data["ending_time"])
                {
                        $this->tpl->setVariable("CHECKED_ENDING_TIME", " checked=\"checked\"");
                }
                $this->tpl->setVariable("INPUT_ENDING_TIME", $this->lng->txt("date") . ": " . $date_input . $this->lng->txt("time") . ": " . $time_input);
                $this->tpl->parseCurrentBlock();

                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("ACTION_PROPERTIES", $this->ctrl->getFormAction($this));
                if ($ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        $this->tpl->setVariable("SUBMIT_TYPE", $this->lng->txt("change"));
                }
                $this->tpl->setVariable("HEADING_GENERAL", $this->lng->txt("tst_general_properties"));
                $this->tpl->setVariable("TEXT_ANONYMITY", $this->lng->txt("tst_anonymity"));
                $this->tpl->setVariable("DESCRIPTION_ANONYMITY", $this->lng->txt("tst_anonymity_description"));
                if ($data["anonymity"])
                {
                        $this->tpl->setVariable("CHECKED_ANONYMITY", " checked=\"checked\"");
                }
                if ($total)
                {
                        $this->tpl->setVariable("DISABLED_ANONYMITY", " disabled=\"disabled\"");
                }

                $this->tpl->setVariable("TEXT_SHOW_MARKER", $this->lng->txt("question_marking"));
                $this->tpl->setVariable("TEXT_SHOW_MARKER_DESCRIPTION", $this->lng->txt("question_marking_description"));
                if ($data["show_marker"])
                {
                        $this->tpl->setVariable("CHECKED_SHOW_MARKER", " checked=\"checked\"");
                }

                $this->tpl->setVariable("TEXT_SHOW_CANCEL", $this->lng->txt("tst_show_cancel"));
                $this->tpl->setVariable("TEXT_SHOW_CANCEL_DESCRIPTION", $this->lng->txt("tst_show_cancel_description"));
                if ($data["show_cancel"])
                {
                        $this->tpl->setVariable("CHECKED_SHOW_CANCEL", " checked=\"checked\"");
                }
                $this->tpl->setVariable("TEXT_INTRODUCTION", $this->lng->txt("tst_introduction"));
                $this->tpl->setVariable("VALUE_INTRODUCTION", ilUtil::prepareFormOutput($this->object->prepareTextareaOutput($data["introduction"])));
                $this->tpl->setVariable("HEADING_SEQUENCE", $this->lng->txt("tst_sequence_properties"));
                $this->tpl->setVariable("TEXT_POSTPONE", $this->lng->txt("tst_postpone"));
                $this->tpl->setVariable("TEXT_POSTPONE_DESCRIPTION", $this->lng->txt("tst_postpone_description"));
                if ($data["sequence_settings"] == 1) 
                {
                        $this->tpl->setVariable("CHECKED_POSTPONE", " checked=\"checked\"");
                }
                $this->tpl->setVariable("TEXT_SHUFFLE_QUESTIONS", $this->lng->txt("tst_shuffle_questions"));
                $this->tpl->setVariable("TEXT_SHUFFLE_QUESTIONS_DESCRIPTION", $this->lng->txt("tst_shuffle_questions_description"));
                if ($this->object->getShuffleQuestions())
                {
                        $this->tpl->setVariable("CHECKED_SHUFFLE_QUESTIONS", " checked=\"checked\"");
                }

                $this->tpl->setVariable("TEXT_SHOW_SUMMARY", $this->lng->txt("tst_show_summary"));
                $this->tpl->setVariable("TEXT_SHOW_SUMMARY_DESCRIPTION", $this->lng->txt("tst_show_summary_description"));
                $this->tpl->setVariable("TEXT_NO", $this->lng->txt("no"));
                $this->tpl->setVariable("TEXT_YES", $this->lng->txt("tst_list_of_questions_yes"));
                $this->tpl->setVariable("TEXT_LIST_OF_QUESTIONS_START", $this->lng->txt("tst_list_of_questions_start"));
                $this->tpl->setVariable("TEXT_LIST_OF_QUESTIONS_END", $this->lng->txt("tst_list_of_questions_end"));
                $this->tpl->setVariable("TEXT_LIST_OF_QUESTIONS_WITH_DESCRIPTION", $this->lng->txt("tst_list_of_questions_with_description"));
                if ($this->object->getListOfQuestions())
                {
                        $this->tpl->setVariable("CHECKED_LIST_OF_QUESTIONS_YES", " checked=\"checked\"");
                        if ($this->object->getListOfQuestionsStart())
                        {
                                $this->tpl->setVariable("CHECKED_LIST_OF_QUESTIONS_START", " checked=\"checked\"");
                        }
                        if ($this->object->getListOfQuestionsEnd())
                        {
                                $this->tpl->setVariable("CHECKED_LIST_OF_QUESTIONS_END", " checked=\"checked\"");
                        }
                        if ($this->object->getListOfQuestionsDescription())
                        {
                                $this->tpl->setVariable("CHECKED_LIST_OF_QUESTIONS_WITH_DESCRIPTION", " checked=\"checked\"");
                        }
                }
                else
                {
                        $this->tpl->setVariable("CHECKED_LIST_OF_QUESTIONS_NO", " checked=\"checked\"");
                }
                
                $this->tpl->setVariable("TEXT_USE_PREVIOUS_ANSWERS", $this->lng->txt("tst_use_previous_answers"));
                $this->tpl->setVariable("TEXT_USE_PREVIOUS_ANSWERS_DESCRIPTION", $this->lng->txt("tst_use_previous_answers_description"));
                $this->tpl->setVariable("TEXT_TITLE_OUTPUT", $this->lng->txt("tst_title_output"));
                $this->tpl->setVariable("TEXT_TITLE_OUTPUT_FULL", $this->lng->txt("tst_title_output_full"));
                $this->tpl->setVariable("TEXT_TITLE_OUTPUT_HIDE_POINTS", $this->lng->txt("tst_title_output_hide_points"));
                $this->tpl->setVariable("TEXT_TITLE_OUTPUT_NO_TITLE", $this->lng->txt("tst_title_output_no_title"));
                $this->tpl->setVariable("TEXT_TITLE_OUTPUT_DESCRIPTION", $this->lng->txt("tst_title_output_description"));
                switch ($data["title_output"])
                {
                        case 1:
                                $this->tpl->setVariable("CHECKED_TITLE_OUTPUT_HIDE_POINTS", " checked=\"checked\"");
                                break;
                        case 2:
                                $this->tpl->setVariable("CHECKED_TITLE_OUTPUT_NO_TITLE", " checked=\"checked\"");
                                break;
                        case 0:
                        default:
                                $this->tpl->setVariable("CHECKED_TITLE_OUTPUT_FULL", " checked=\"checked\"");
                                break;
                }
                if ($data["random_test"])
                {
                        $data["use_previous_answers"] = 0;
                }
                if ($data["use_previous_answers"])
                {
                        $this->tpl->setVariable("CHECKED_USE_PREVIOUS_ANSWERS",  " checked=\"checked\"");
                }
                if ($data["random_test"])
                {
                        $this->tpl->setVariable("DISABLE_USE_PREVIOUS_ANSWERS",  " disabled=\"disabled\"");
                }
                $this->tpl->setVariable("HEADING_SESSION", $this->lng->txt("tst_session_settings"));
                $this->tpl->setVariable("TEXT_NR_OF_TRIES", $this->lng->txt("tst_nr_of_tries"));
                $this->tpl->setVariable("VALUE_NR_OF_TRIES", $data["nr_of_tries"]);
                $this->tpl->setVariable("COMMENT_NR_OF_TRIES", $this->lng->txt("0_unlimited"));
                $this->tpl->setVariable("TXT_ENABLED", $this->lng->txt("enabled"));
                $this->tpl->setVariable("TXT_RESET_PROCESSING_TIME", $this->lng->txt("tst_reset_processing_time"));
                $this->tpl->setVariable("TEXT_RESET_PROCESSING_TIME_DESC", $this->lng->txt("tst_reset_processing_time_desc"));
                $this->tpl->setVariable("TEXT_PROCESSING_TIME", $this->lng->txt("tst_processing_time"));
                $this->tpl->setVariable("TEXT_PROCESSING_TIME_DESC", $this->lng->txt("tst_processing_time_desc"));
                $time_input = ilUtil::makeTimeSelect("processing_time", false, substr($data["processing_time"], 0, 2), substr($data["processing_time"], 3, 2), substr($data["processing_time"], 6, 2));
                $this->tpl->setVariable("MAX_PROCESSING_TIME", $time_input . " (hh:mm:ss)");
                if ($data["enable_processing_time"]) {
                        $this->tpl->setVariable("CHECKED_PROCESSING_TIME", " checked=\"checked\"");
                }
                if ($data["reset_processing_time"]) 
                {
                        $this->tpl->setVariable("CHECKED_RESET_PROCESSING_TIME", " checked=\"checked\"");
                }
                $this->tpl->setVariable("TEXT_RANDOM_TEST", $this->lng->txt("tst_random_selection"));
                $this->tpl->setVariable("TEXT_RANDOM_TEST_DESCRIPTION", $this->lng->txt("tst_random_test_description"));
                if ($data["random_test"]) 
                {
                        $this->tpl->setVariable("CHECKED_RANDOM_TEST", " checked=\"checked\"");
                }

                $this->tpl->setVariable("TEXT_MAX_ALLOWED_USERS", $this->lng->txt("tst_max_allowed_users"));
                $this->tpl->setVariable("TEXT_ALLOWED_USERS", $this->lng->txt("tst_allowed_users"));
                $this->tpl->setVariable("TEXT_ALLOWED_USERS_TIME_GAP", $this->lng->txt("tst_allowed_users_time_gap"));
                if ($data["allowedUsers"] > 0)
                {
                        $this->tpl->setVariable("VALUE_ALLOWED_USERS", " value=\"" . $data["allowedUsers"] . "\"");
                }
                $this->tpl->setVariable("TEXT_ALLOWED_USERS_TIME_GAP", $this->lng->txt("tst_allowed_users_time_gap"));
                if ($data["allowedUsersTimeGap"] > 0)
                {
                        $this->tpl->setVariable("VALUE_ALLOWED_USERS_TIME_GAP", " value=\"" . $data["allowedUsersTimeGap"] . "\"");
                }
                $this->tpl->setVariable("SECONDS", $this->lng->txt("seconds"));
                $this->tpl->setVariable("TEXT_PASSWORD", $this->lng->txt("tst_password"));
                $this->tpl->setVariable("TEXT_PASSWORD_DETAILS", $this->lng->txt("tst_password_details"));
                if (strlen($data["password"]))
                {
                        $this->tpl->setVariable("VALUE_PASSWORD", " value=\"". ilUtil::prepareFormOutput($data["password"])."\"");
                }
                if ($ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        $this->tpl->setVariable("SAVE", $this->lng->txt("save"));
                }
                if ($total > 0)
                {
                        $this->tpl->setVariable("ENABLED_RANDOM_TEST", " disabled=\"disabled\"");
                }
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

ilObjTestGUI::questionBrowser (  ) 

Creates a form to select questions from questionpools to insert the questions into the test.

Creates a form to select questions from questionpools to insert the questions into the test

public

Definition at line 1874 of file class.ilObjTestGUI.php.

References $_GET, ilObjectGUI::$data, ilObjQuestionPool::_getQuestionTypes(), ilFormat::formatDate(), ilFormat::ftimestamp2dateDB(), ilUtil::getImagePath(), ilUtil::getStyleSheetLocation(), and ilYuiUtil::initMenu().

Referenced by browseForQuestionsObject(), executeCommand(), filterObject(), and resetFilterObject().

        {
                global $ilAccess;

                $this->ctrl->setParameterByClass(get_class($this), "browse", "1");
                $textfilters = array();
                if (strcmp($this->ctrl->getCmd(), "resetFilter") == 0)
                {
                        $filter_type = "";
                        $filter_question_type = "";
                        $filter_questionpool = "";
                        $filter_text = "";
                }
                else
                {
                        $filter_question_type = (array_key_exists("sel_question_type", $_POST)) ? $_POST["sel_question_type"] : $_GET["sel_question_type"];
                        $filter_type = (array_key_exists("sel_filter_type", $_POST)) ? $_POST["sel_filter_type"] : $_GET["sel_filter_type"];
                        $filter_questionpool = (array_key_exists("sel_questionpool", $_POST)) ? $_POST["sel_questionpool"] : $_GET["sel_questionpool"];
                        $filter_text = (array_key_exists("filter_text", $_POST)) ? $_POST["filter_text"] : $_GET["filter_text"];
                }
                
                $filter_title = (array_key_exists("filter_title", $_POST)) ? $_POST["filter_title"] : $_GET["filter_title"];
                if (strlen($filter_title)) $textfilters["title"] = $filter_title;
                $filter_qpl = (array_key_exists("filter_qpl", $_POST)) ? $_POST["filter_qpl"] : $_GET["filter_qpl"];
                if (strlen($filter_qpl)) $textfilters["qpl"] = $filter_qpl;
                $filter_comment = (array_key_exists("filter_comment", $_POST)) ? $_POST["filter_comment"] : $_GET["filter_comment"];
                if (strlen($filter_comment)) $textfilters["comment"] = $filter_comment;
                $filter_author = (array_key_exists("filter_author", $_POST)) ? $_POST["filter_author"] : $_GET["filter_author"];
                if (strlen($filter_author)) $textfilters["author"] = $filter_author;

                $this->ctrl->setParameterByClass(get_class($this), "sel_filter_type", $filter_type);
                $this->ctrl->setParameterByClass(get_class($this), "sel_question_type", $filter_question_type);
                $this->ctrl->setParameterByClass(get_class($this), "sel_questionpool", $filter_questionpool);
                $this->ctrl->setParameterByClass(get_class($this), "filter_text", $filter_text);
                $this->ctrl->setParameterByClass(get_class($this), "filter_title", $filter_title);
                $this->ctrl->setParameterByClass(get_class($this), "filter_qpl", $filter_qpl);
                $this->ctrl->setParameterByClass(get_class($this), "filter_comment", $filter_comment);
                $this->ctrl->setParameterByClass(get_class($this), "filter_author", $filter_author);
                
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_questionbrowser.html", "Modules/Test");
                $this->tpl->addBlockFile("A_BUTTONS", "a_buttons", "tpl.il_as_qpl_action_buttons.html", "Modules/Test");
                $this->tpl->addBlockFile("FILTER_QUESTION_MANAGER", "filter_questions", "tpl.il_as_tst_filter_questions.html", "Modules/Test");

                $questionpools =& $this->object->getAvailableQuestionpools(true);
                $filter_fields = array(
                        "title" => $this->lng->txt("title"),
                        "comment" => $this->lng->txt("description"),
                        "author" => $this->lng->txt("author"),
                );
                $this->tpl->setCurrentBlock("filterrow");
                foreach ($filter_fields as $key => $value) {
                        $this->tpl->setVariable("VALUE_FILTER_TYPE", "$key");
                        $this->tpl->setVariable("NAME_FILTER_TYPE", "$value");
                        if (strcmp($this->ctrl->getCmd(), "resetFilter") != 0) 
                        {
                                if (strcmp($filter_type, $key) == 0) 
                                {
                                        $this->tpl->setVariable("VALUE_FILTER_SELECTED", " selected=\"selected\"");
                                }
                        }
                        $this->tpl->parseCurrentBlock();
                }

                include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php";
                $questiontypes =& ilObjQuestionPool::_getQuestionTypes();
                foreach ($questiontypes as $key => $value)
                {
                        $this->tpl->setCurrentBlock("questiontype_row");
                        $this->tpl->setVariable("VALUE_QUESTION_TYPE", $value["type_tag"]);
                        $this->tpl->setVariable("TEXT_QUESTION_TYPE", $this->lng->txt($value["type_tag"]));
                        if (strcmp($filter_question_type, $value["type_tag"]) == 0)
                        {
                                $this->tpl->setVariable("SELECTED_QUESTION_TYPE", " selected=\"selected\"");
                        }
                        $this->tpl->parseCurrentBlock();
                }
                
                foreach ($questionpools as $key => $value)
                {
                        $this->tpl->setCurrentBlock("questionpool_row");
                        $this->tpl->setVariable("VALUE_QUESTIONPOOL", $key);
                        $this->tpl->setVariable("TEXT_QUESTIONPOOL", $value["title"]);
                        if (strcmp($filter_questionpool, $key) == 0)
                        {
                                $this->tpl->setVariable("SELECTED_QUESTIONPOOL", " selected=\"selected\"");
                        }
                        $this->tpl->parseCurrentBlock();
                }

                $this->tpl->setCurrentBlock("filter_questions");
                $this->tpl->setVariable("SHOW_QUESTION_TYPES", $this->lng->txt("filter_show_question_types"));
                $this->tpl->setVariable("TEXT_ALL_QUESTION_TYPES", $this->lng->txt("filter_all_question_types"));
                $this->tpl->setVariable("SHOW_QUESTIONPOOLS", $this->lng->txt("filter_show_questionpools"));
                $this->tpl->setVariable("TEXT_ALL_QUESTIONPOOLS", $this->lng->txt("filter_all_questionpools"));
                $this->tpl->setVariable("FILTER_TEXT", $this->lng->txt("filter"));
                $this->tpl->setVariable("TEXT_FILTER_BY", $this->lng->txt("by"));
                if (strcmp($this->ctrl->getCmd(), "resetFilter") != 0) 
                {
                        $this->tpl->setVariable("VALUE_FILTER_TEXT", $filter_text);
                }
                $this->tpl->setVariable("VALUE_SUBMIT_FILTER", $this->lng->txt("set_filter"));
                $this->tpl->setVariable("VALUE_RESET_FILTER", $this->lng->txt("reset_filter"));
                $this->tpl->parseCurrentBlock();

                $startrow = 0;
                if ($_GET["prevrow"])
                {
                        $startrow = $_GET["prevrow"];
                }
                if ($_GET["nextrow"])
                {
                        $startrow = $_GET["nextrow"];
                }
                if ($_GET["startrow"])
                {
                        $startrow = $_GET["startrow"];
                }
                $sort = ($_GET["sort"]) ? $_GET["sort"] : "title";
                $sortorder = ($_GET["sortorder"]) ? $_GET["sortorder"] : "ASC";
                $this->ctrl->setParameter($this, "sort", $sort);
                $this->ctrl->setParameter($this, "sortorder", $sortorder);
                if (strlen($filter_text) && strlen($filter_type)) $textfilters[$filter_type] = $filter_text;
                $table = $this->object->getQuestionsTable($sort, $sortorder, $textfilters, $startrow, 1, $filter_question_type, $filter_questionpool);
                // display all questions in accessable question pools
                $colors = array("tblrow1", "tblrow2");
                $counter = 0;
                $existing_questions =& $this->object->getExistingQuestions();
                if ((is_array($table["rows"])) && (count($table["rows"])))
                {
                        foreach ($table["rows"] as $data)
                        {
                                if (!in_array($data["question_id"], $existing_questions))
                                {
                                        if ($data["complete"])
                                        {
                                                // make only complete questions selectable
                                                $this->tpl->setCurrentBlock("checkable");
                                                $this->tpl->setVariable("QUESTION_ID", $data["question_id"]);
                                                $this->tpl->parseCurrentBlock();
                                        }
                                        $this->tpl->setCurrentBlock("QTab");
                                        $this->tpl->setVariable("QUESTION_ID", $data["question_id"]);
                                        $this->tpl->setVariable("QUESTION_TITLE", "<strong>" . $data["title"] . "</strong>");
                                        $this->tpl->setVariable("PREVIEW", "[<a href=\"" . $this->ctrl->getLinkTarget($this, "questions") . "&preview=" . $data["question_id"] . "\">" . $this->lng->txt("preview") . "</a>]");
                                        $this->tpl->setVariable("QUESTION_COMMENT", $data["comment"]);
                                        $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt($data["type_tag"]));
                                        $this->tpl->setVariable("QUESTION_AUTHOR", $data["author"]);
                                        $this->tpl->setVariable("QUESTION_CREATED", ilFormat::formatDate(ilFormat::ftimestamp2dateDB($data["created"]), "date"));
                                        $this->tpl->setVariable("QUESTION_UPDATED", ilFormat::formatDate(ilFormat::ftimestamp2dateDB($data["TIMESTAMP14"]), "date"));
                                        $this->tpl->setVariable("COLOR_CLASS", $colors[$counter % 2]);
                                        $this->tpl->setVariable("QUESTION_POOL", $questionpools[$data["obj_fi"]]["title"]);
                                        $this->tpl->parseCurrentBlock();
                                        $counter++;
                                }
                        }
        
                        if ($table["rowcount"] > count($table["rows"]))
                        {
                                $nextstep = $table["nextrow"] + $table["step"];
                                if ($nextstep > $table["rowcount"])
                                {
                                        $nextstep = $table["rowcount"];
                                }
                                $counter = 1;
                                for ($i = 0; $i < $table["rowcount"]; $i += $table["step"])
                                {
                                        $this->tpl->setCurrentBlock("pages");
                                        if ($table["startrow"] == $i)
                                        {
                                                $this->tpl->setVariable("PAGE_NUMBER", "<span class=\"inactivepage\">$counter</span>");
                                        }
                                        else
                                        {
                                                $this->tpl->setVariable("PAGE_NUMBER", "<a href=\"" . $this->ctrl->getLinkTarget($this, "browseForQuestions") . "&nextrow=$i" . "\">$counter</a>");
                                        }
                                        $this->tpl->parseCurrentBlock();
                                        $counter++;
                                }
                                $this->tpl->setCurrentBlock("navigation_bottom");
                                $this->tpl->setVariable("TEXT_ITEM", $this->lng->txt("item"));
                                $this->tpl->setVariable("TEXT_ITEM_START", $table["startrow"] + 1);
                                $end = $table["startrow"] + $table["step"];
                                if ($end > $table["rowcount"])
                                {
                                        $end = $table["rowcount"];
                                }
                                $this->tpl->setVariable("TEXT_ITEM_END", $end);
                                $this->tpl->setVariable("TEXT_OF", strtolower($this->lng->txt("of")));
                                $this->tpl->setVariable("TEXT_ITEM_COUNT", $table["rowcount"]);
                                $this->tpl->setVariable("TEXT_PREVIOUS", $this->lng->txt("previous"));
                                $this->tpl->setVariable("TEXT_NEXT", $this->lng->txt("next"));
                                $this->tpl->setVariable("HREF_PREV_ROWS", $this->ctrl->getLinkTarget($this, "browseForQuestions") . "&prevrow=" . $table["prevrow"]);
                                $this->tpl->setVariable("HREF_NEXT_ROWS", $this->ctrl->getLinkTarget($this, "browseForQuestions") . "&nextrow=" . $table["nextrow"]);
                                $this->tpl->parseCurrentBlock();
                        }
                }

                // if there are no questions, display a message
                if (!((is_array($table["rows"])) && (count($table["rows"]))))
                {
                        $this->tpl->setCurrentBlock("Emptytable");
                        $this->tpl->setVariable("TEXT_EMPTYTABLE", $this->lng->txt("no_questions_available"));
                        $this->tpl->parseCurrentBlock();
                }
                else
                {
                        // create edit buttons & table footer
                        $this->tpl->setCurrentBlock("selection");
                        $this->tpl->setVariable("INSERT", $this->lng->txt("insert"));
                        $this->tpl->parseCurrentBlock();
        
                        $this->tpl->setCurrentBlock("selectall");
                        $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
                        $counter++;
                        $this->tpl->setVariable("COLOR_CLASS", $colors[$counter % 2]);
                        $this->tpl->parseCurrentBlock();
        
                        $this->tpl->setCurrentBlock("Footer");
                        $this->tpl->setVariable("ARROW", "<img src=\"" . ilUtil::getImagePath("arrow_downright.gif") . "\" alt=\"".$this->lng->txt("arrow_downright")."\"/>");
                        $this->tpl->parseCurrentBlock();
                }
                // define the sort column parameters
                $sortarray = array(
                        "title" => (strcmp($sort, "title") == 0) ? $sortorder : "",
                        "comment" => (strcmp($sort, "comment") == 0) ? $sortorder : "",
                        "type" => (strcmp($sort, "type") == 0) ? $sortorder : "",
                        "author" => (strcmp($sort, "author") == 0) ? $sortorder : "",
                        "created" => (strcmp($sort, "created") == 0) ? $sortorder : "",
                        "updated" => (strcmp($sort, "updated") == 0) ? $sortorder : "",
                        "qpl" => (strcmp($sort, "qpl") == 0) ? $sortorder : ""
                );
                foreach ($sortarray as $key => $value) 
                {
                        if (strcmp($value, "ASC") == 0) 
                        {
                                $sortarray[$key] = "DESC";
                        } 
                        else 
                        {
                                $sortarray[$key] = "ASC";
                        }
                }

                // add imports for YUI menu
                include_once "./Services/YUI/classes/class.ilYuiUtil.php";
                ilYuiUtil::initMenu();
                $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "tpl.text_filter.css", "Modules/TestQuestionPool"));

                // add title text filter
                $titlefilter = new ilTemplate("tpl.text_filter.js", TRUE, TRUE, "Modules/TestQuestionPool");
                $titlefilter->setVariable("FILTERELEMENTID", "titlefilter");
                $titlefilter->setVariable("OVERLAY_WIDTH", "500px");
                $titlefilter->setVariable("OVERLAY_HEIGHT", "5em");
                $titlefilter->setVariable("TEXTFIELD_NAME", "filter_title");
                $titlefilter->setVariable("IMAGE_CLOSE", ilUtil::getImagePath("icon_close2_s.gif"));
                $titlefilter->setVariable("ALT_CLOSE", $this->lng->txt("close"));
                $titlefilter->setVariable("TITLE_CLOSE", $this->lng->txt("close"));
                $titlefilter->setVariable("FORMACTION", $this->ctrl->getFormAction($this, "filter"));
                $titlefilter->setVariable("VALUE_FILTER_TEXT", $filter_title);
                $titlefilter->setVariable("VALUE_SUBMIT_FILTER", $this->lng->txt("set_filter"));
                $titlefilter->setVariable("VALUE_RESET_FILTER", $this->lng->txt("reset_filter"));
                $this->tpl->setCurrentBlock("HeadContent");
                $this->tpl->setVariable("CONTENT_BLOCK", $titlefilter->get());
                $this->tpl->parseCurrentBlock();

                // add questiontype filter
                $filtermenu = new ilTemplate("tpl.question_type_menu.js", TRUE, TRUE, "Modules/TestQuestionPool");
                if (strcmp($filter_question_type, "") == 0)
                {
                        $filtermenu->setCurrentBlock("selected");
                        $filtermenu->touchBlock("selected");
                        $filtermenu->parseCurrentBlock();
                }
                $filtermenu->setCurrentBlock("menuitem");
                $filtermenu->setVariable("ITEM_TEXT", $this->lng->txt("filter_all_question_types"));
                $this->ctrl->setParameter($this, "sel_question_type", "");
                $this->ctrl->setParameter($this, "sort", $sort);
                $this->ctrl->setParameter($this, "sortorder", $sortorder);
                $filtermenu->setVariable("ITEM_URL", $this->ctrl->getLinkTarget($this, "browseForQuestions"));
                $filtermenu->parseCurrentBlock();
                foreach ($questiontypes as $key => $value)
                {
                        if (strcmp($filter_question_type, $value["type_tag"]) == 0)
                        {
                                $filtermenu->setCurrentBlock("selected");
                                $filtermenu->touchBlock("selected");
                                $filtermenu->parseCurrentBlock();
                        }
                        $filtermenu->setCurrentBlock("menuitem");
                        $filtermenu->setVariable("VALUE_QUESTION_TYPE", $value["type_tag"]);
                        $filtermenu->setVariable("ITEM_TEXT", $this->lng->txt($value["type_tag"]));
                        $this->ctrl->setParameter($this, "sel_question_type", $value["type_tag"]);
                        $filtermenu->setVariable("ITEM_URL", $this->ctrl->getLinkTarget($this, "browseForQuestions"));
                        $filtermenu->parseCurrentBlock();
                }
                $this->ctrl->setParameter($this, "sel_question_type", $filter_question_type);
                $this->tpl->setCurrentBlock("HeadContent");
                $this->tpl->setVariable("CONTENT_BLOCK", $filtermenu->get());
                $this->tpl->parseCurrentBlock();

                // add description text filter
                $commenttextfilter = new ilTemplate("tpl.text_filter.js", TRUE, TRUE, "Modules/TestQuestionPool");
                $commenttextfilter->setVariable("FILTERELEMENTID", "commenttextfilter");
                $commenttextfilter->setVariable("OVERLAY_WIDTH", "500px");
                $commenttextfilter->setVariable("OVERLAY_HEIGHT", "5em");
                $commenttextfilter->setVariable("TEXTFIELD_NAME", "filter_comment");
                $commenttextfilter->setVariable("IMAGE_CLOSE", ilUtil::getImagePath("icon_close2_s.gif"));
                $commenttextfilter->setVariable("ALT_CLOSE", $this->lng->txt("close"));
                $commenttextfilter->setVariable("TITLE_CLOSE", $this->lng->txt("close"));
                $commenttextfilter->setVariable("FORMACTION", $this->ctrl->getFormAction($this, "filter"));
                $commenttextfilter->setVariable("VALUE_FILTER_TEXT", $filter_comment);
                $commenttextfilter->setVariable("VALUE_SUBMIT_FILTER", $this->lng->txt("set_filter"));
                $commenttextfilter->setVariable("VALUE_RESET_FILTER", $this->lng->txt("reset_filter"));
                $this->tpl->setCurrentBlock("HeadContent");
                $this->tpl->setVariable("CONTENT_BLOCK", $commenttextfilter->get());
                $this->tpl->parseCurrentBlock();

                // add author text filter
                $authortextfilter = new ilTemplate("tpl.text_filter.js", TRUE, TRUE, "Modules/TestQuestionPool");
                $authortextfilter->setVariable("FILTERELEMENTID", "authortextfilter");
                $authortextfilter->setVariable("OVERLAY_WIDTH", "500px");
                $authortextfilter->setVariable("OVERLAY_HEIGHT", "5em");
                $authortextfilter->setVariable("TEXTFIELD_NAME", "filter_author");
                $authortextfilter->setVariable("IMAGE_CLOSE", ilUtil::getImagePath("icon_close2_s.gif"));
                $authortextfilter->setVariable("ALT_CLOSE", $this->lng->txt("close"));
                $authortextfilter->setVariable("TITLE_CLOSE", $this->lng->txt("close"));
                $authortextfilter->setVariable("FORMACTION", $this->ctrl->getFormAction($this, "filter"));
                $authortextfilter->setVariable("VALUE_FILTER_TEXT", $filter_author);
                $authortextfilter->setVariable("VALUE_SUBMIT_FILTER", $this->lng->txt("set_filter"));
                $authortextfilter->setVariable("VALUE_RESET_FILTER", $this->lng->txt("reset_filter"));
                $this->tpl->setCurrentBlock("HeadContent");
                $this->tpl->setVariable("CONTENT_BLOCK", $authortextfilter->get());
                $this->tpl->parseCurrentBlock();

                // add question pool text filter
                $qpltextfilter = new ilTemplate("tpl.text_filter.js", TRUE, TRUE, "Modules/TestQuestionPool");
                $qpltextfilter->setVariable("FILTERELEMENTID", "qpltextfilter");
                $qpltextfilter->setVariable("OVERLAY_WIDTH", "500px");
                $qpltextfilter->setVariable("OVERLAY_HEIGHT", "5em");
                $qpltextfilter->setVariable("TEXTFIELD_NAME", "filter_qpl");
                $qpltextfilter->setVariable("IMAGE_CLOSE", ilUtil::getImagePath("icon_close2_s.gif"));
                $qpltextfilter->setVariable("ALT_CLOSE", $this->lng->txt("close"));
                $qpltextfilter->setVariable("TITLE_CLOSE", $this->lng->txt("close"));
                $qpltextfilter->setVariable("FORMACTION", $this->ctrl->getFormAction($this, "filter"));
                $qpltextfilter->setVariable("VALUE_FILTER_TEXT", $filter_qpl);
                $qpltextfilter->setVariable("VALUE_SUBMIT_FILTER", $this->lng->txt("set_filter"));
                $qpltextfilter->setVariable("VALUE_RESET_FILTER", $this->lng->txt("reset_filter"));
                $this->tpl->setCurrentBlock("HeadContent");
                $this->tpl->setVariable("CONTENT_BLOCK", $qpltextfilter->get());
                $this->tpl->parseCurrentBlock();

                $this->tpl->setCurrentBlock("adm_content");
                $this->ctrl->setCmd("questionBrowser");
                $this->ctrl->setParameterByClass(get_class($this), "startrow", $table["startrow"]);
                $template = new ilTemplate("tpl.image.html", true, true);
                if (strlen($filter_title))
                {
                        $template->setVariable("IMAGE_SOURCE", ilUtil::getImagePath("search-filter-locked.png"));
                }
                else
                {
                        $template->setVariable("IMAGE_SOURCE", ilUtil::getImagePath("search-filter.png"));
                }
                $template->setVariable("IMAGE_TITLE", $this->lng->txt("filter"));
                $template->setVariable("IMAGE_ALT", $this->lng->txt("filter"));
                $template->setVariable("ID", "titlefilter");
                $template->setVariable("STYLE", "visibility: hidden; cursor: pointer");
                $this->ctrl->setParameter($this, "sort", "title");
                $this->ctrl->setParameter($this, "sortorder", $sortarray["title"]);
                $questiontitle = "<a href=\"" . $this->ctrl->getLinkTarget($this, "browseForQuestions") . "\">" . $this->lng->txt("title") . "</a>";
                $questiontitle .= $template->get();
                $questiontitle .= $table["images"]["title"];
                $this->tpl->setVariable("QUESTION_TITLE", $questiontitle);
                $this->ctrl->setParameter($this, "sort", "comment");
                $this->ctrl->setParameter($this, "sortorder", $sortarray["comment"]);
                $template = new ilTemplate("tpl.image.html", true, true);
                if (strlen($filter_comment))
                {
                        $template->setVariable("IMAGE_SOURCE", ilUtil::getImagePath("search-filter-locked.png"));
                }
                else
                {
                        $template->setVariable("IMAGE_SOURCE", ilUtil::getImagePath("search-filter.png"));
                }
                $template->setVariable("IMAGE_TITLE", $this->lng->txt("filter"));
                $template->setVariable("IMAGE_ALT", $this->lng->txt("filter"));
                $template->setVariable("ID", "commenttextfilter");
                $template->setVariable("STYLE", "visibility: hidden; cursor: pointer");
                $this->ctrl->setParameter($this, "sort", "comment");
                $this->ctrl->setParameter($this, "sortorder", $sortarray["comment"]);
                $questiontype = "<a href=\"" . $this->ctrl->getLinkTarget($this, "browseForQuestions") . "\">" . $this->lng->txt("description") . "</a>";
                $questiontype .= $template->get();
                $questiontype .= $table["images"]["comment"];
                $this->tpl->setVariable("QUESTION_COMMENT", $questiontype);
                $template = new ilTemplate("tpl.image.html", true, true);
                if (strlen($filter_question_type))
                {
                        $template->setVariable("IMAGE_SOURCE", ilUtil::getImagePath("search-filter-locked.png"));
                }
                else
                {
                        $template->setVariable("IMAGE_SOURCE", ilUtil::getImagePath("search-filter.png"));
                }
                $template->setVariable("IMAGE_TITLE", $this->lng->txt("filter"));
                $template->setVariable("IMAGE_ALT", $this->lng->txt("filter"));
                $template->setVariable("ID", "filter");
                $template->setVariable("STYLE", "visibility: hidden; cursor: pointer");
                $this->ctrl->setParameter($this, "sort", "type");
                $this->ctrl->setParameter($this, "sortorder", $sortarray["type"]);
                $questiontype = "<a href=\"" . $this->ctrl->getLinkTarget($this, "browseForQuestions") . "\">" . $this->lng->txt("question_type") . "</a>";
                $questiontype .= $template->get();
                $questiontype .= $table["images"]["type"];
                $this->tpl->setVariable("QUESTION_TYPE", $questiontype);
                $template = new ilTemplate("tpl.image.html", true, true);
                if (strlen($filter_author))
                {
                        $template->setVariable("IMAGE_SOURCE", ilUtil::getImagePath("search-filter-locked.png"));
                }
                else
                {
                        $template->setVariable("IMAGE_SOURCE", ilUtil::getImagePath("search-filter.png"));
                }
                $template->setVariable("IMAGE_TITLE", $this->lng->txt("filter"));
                $template->setVariable("IMAGE_ALT", $this->lng->txt("filter"));
                $template->setVariable("ID", "authortextfilter");
                $template->setVariable("STYLE", "visibility: hidden; cursor: pointer;");
                $this->ctrl->setParameter($this, "sort", "author");
                $this->ctrl->setParameter($this, "sortorder", $sortarray["author"]);
                $questiontype = "<a href=\"" . $this->ctrl->getLinkTarget($this, "browseForQuestions") . "\">" . $this->lng->txt("author") . "</a>";
                $questiontype .= $template->get();
                $questiontype .= $table["images"]["author"];
                $this->tpl->setVariable("QUESTION_AUTHOR", $questiontype);
                $this->ctrl->setParameter($this, "sort", "created");
                $this->ctrl->setParameter($this, "sortorder", $sortarray["created"]);
                $this->tpl->setVariable("QUESTION_CREATED", "<a href=\"" . $this->ctrl->getLinkTarget($this, "browseForQuestions") . "\">" . $this->lng->txt("create_date") . "</a>" . $table["images"]["created"]);
                $this->ctrl->setParameter($this, "sort", "updated");
                $this->ctrl->setParameter($this, "sortorder", $sortarray["updated"]);
                $this->tpl->setVariable("QUESTION_UPDATED", "<a href=\"" . $this->ctrl->getLinkTarget($this, "browseForQuestions") . "\">" . $this->lng->txt("last_update") . "</a>" . $table["images"]["updated"]);
                $template = new ilTemplate("tpl.image.html", true, true);
                if (strlen($filter_qpl))
                {
                        $template->setVariable("IMAGE_SOURCE", ilUtil::getImagePath("search-filter-locked.png"));
                }
                else
                {
                        $template->setVariable("IMAGE_SOURCE", ilUtil::getImagePath("search-filter.png"));
                }
                $template->setVariable("IMAGE_TITLE", $this->lng->txt("filter"));
                $template->setVariable("IMAGE_ALT", $this->lng->txt("filter"));
                $template->setVariable("ID", "qpltextfilter");
                $template->setVariable("STYLE", "visibility: hidden; cursor: pointer");
                $this->ctrl->setParameter($this, "sort", "qpl");
                $this->ctrl->setParameter($this, "sortorder", $sortarray["qpl"]);
                $qpfilter = "<a href=\"" . $this->ctrl->getLinkTarget($this, "browseForQuestions") . "\">" . $this->lng->txt("obj_qpl") . "</a>";
                $qpfilter .= $template->get();
                $qpfilter .= $table["images"]["qpl"];
                $this->tpl->setVariable("QUESTION_POOL", $qpfilter);
                $this->tpl->setVariable("BUTTON_BACK", $this->lng->txt("back"));
                $this->ctrl->setParameter($this, "sort", $sort);
                $this->ctrl->setParameter($this, "sortorder", $sortorder);
                $this->tpl->setVariable("ACTION_QUESTION_FORM", $this->ctrl->getFormAction($this));
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::questionsObject (  ) 

Definition at line 3041 of file class.ilObjTestGUI.php.

References $_GET, ilObjectGUI::$data, $total, ilObjQuestionPool::_getQuestionTypes(), ilUtil::getImagePath(), getQuestionsSubTabs(), randomQuestionsObject(), ilUtil::redirect(), and ilUtil::sendInfo().

Referenced by executeCommand(), and moveQuestionsObject().

        {
                global $ilAccess;
                if (!$ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        // allow only write access
                        ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
                        $this->ctrl->redirect($this, "infoScreen");
                }

                $this->getQuestionsSubTabs();
                if ($this->object->isRandomTest())
                {
                        $this->randomQuestionsObject();
                        return;
                }
                
                if ($_GET["eqid"] and $_GET["eqpl"])
                {
                        ilUtil::redirect("ilias.php?baseClass=ilObjQuestionPoolGUI&ref_id=" . $_GET["eqpl"] . "&cmd=editQuestionForTest&calling_test=".$_GET["ref_id"]."&q_id=" . $_GET["eqid"]);
                }
                
                if ($_GET["up"] > 0)
                {
                        $this->object->questionMoveUp($_GET["up"]);
                }
                if ($_GET["down"] > 0)
                {
                        $this->object->questionMoveDown($_GET["down"]);
                }

                if ($_GET["add"])
                {
                        $selected_array = array();
                        array_push($selected_array, $_GET["add"]);
                        $total = $this->object->evalTotalPersons();
                        if ($total)
                        {
                                // the test was executed previously
                                ilUtil::sendInfo(sprintf($this->lng->txt("tst_insert_questions_and_results"), $total));
                        }
                        else
                        {
                                ilUtil::sendInfo($this->lng->txt("tst_insert_questions"));
                        }
                        $this->insertQuestions($selected_array);
                        return;
                }

                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_questions.html", "Modules/Test");
                $this->tpl->addBlockFile("A_BUTTONS", "question_buttons", "tpl.il_as_tst_question_buttons.html", "Modules/Test");

                if (strcmp($this->ctrl->getCmd(), "moveQuestions") == 0)
                {
                        $checked_move = 0;
                        foreach ($_POST as $key => $value)
                        {
                                if (preg_match("/cb_(\d+)/", $key, $matches))
                                {
                                        $checked_move++;
                                        $this->tpl->setCurrentBlock("move");
                                        $this->tpl->setVariable("MOVE_COUNTER", $matches[1]);
                                        $this->tpl->setVariable("MOVE_VALUE", $matches[1]);
                                        $this->tpl->parseCurrentBlock();
                                }
                        }
                        if ($checked_move)
                        {
                                ilUtil::sendInfo($this->lng->txt("select_target_position_for_move_question"));
                                $this->tpl->setCurrentBlock("move_buttons");
                                $this->tpl->setVariable("INSERT_BEFORE", $this->lng->txt("insert_before"));
                                $this->tpl->setVariable("INSERT_AFTER", $this->lng->txt("insert_after"));
                                $this->tpl->parseCurrentBlock();
                        }
                        else
                        {
                                ilUtil::sendInfo($this->lng->txt("no_question_selected_for_move"));
                        }
                }
                
                $testquestions =& $this->object->getTestQuestions();
                $colors = array("tblrow1", "tblrow2");
                $counter = 0;
                $questionpools = array();
                $total_points = 0;
                $total = $this->object->evalTotalPersons();
                if (count($testquestions) > 0)
                {
                        foreach ($testquestions as $data)
                        {
                                if (!array_key_exists($data->obj_fi, $questionpools))
                                {
                                        $pooltitle = $this->object->_lookupTitle($data["obj_fi"]);
                                        $questionpools[$data["obj_fi"]] = $pooltitle;
                                }
                                $this->tpl->setCurrentBlock("QTab");
                                $this->tpl->setVariable("QUESTION_ID", $data["question_id"]);
                                if (($ilAccess->checkAccess("write", "", $this->ref_id) and ($total == 0))) 
                                {
                                        $q_id = $data["question_id"];
                                        $qpl_ref_id = $this->object->_getRefIdFromObjId($data["obj_fi"]);
                                        $this->tpl->setVariable("QUESTION_TITLE", "<a href=\"" . $this->ctrl->getLinkTarget($this, "questions") . "&eqid=$q_id&eqpl=$qpl_ref_id" . "\">" . $data["title"] . "</a>");
                                } else {
                                        $this->tpl->setVariable("QUESTION_TITLE", $data["title"]);
                                }
                                $this->tpl->setVariable("QUESTION_SEQUENCE", $this->lng->txt("tst_sequence"));

                                if (($ilAccess->checkAccess("write", "", $this->ref_id) and ($total == 0))) 
                                {
                                        if ($data["question_id"] != $this->object->questions[1])
                                        {
                                                $this->tpl->setVariable("BUTTON_UP", "<a href=\"" . $this->ctrl->getLinkTarget($this, "questions") . "&up=".$data["question_id"]."\"><img src=\"" . ilUtil::getImagePath("a_up.gif") . "\" alt=\"" . $this->lng->txt("up") . "\" border=\"0\" /></a>");
                                        }
                                        if ($data["question_id"] != $this->object->questions[count($this->object->questions)])
                                        {
                                                $this->tpl->setVariable("BUTTON_DOWN", "<a href=\"" . $this->ctrl->getLinkTarget($this, "questions") . "&down=".$data["question_id"]."\"><img src=\"" . ilUtil::getImagePath("a_down.gif") . "\" alt=\"" . $this->lng->txt("down") . "\" border=\"0\" /></a>");
                                        }
                                }
                                $this->tpl->setVariable("QUESTION_COMMENT", $data["comment"]);
                                $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt($data["type_tag"]));
                                $this->tpl->setVariable("QUESTION_POINTS", $data["points"]);
                                $total_points += $data["points"];
                                $this->tpl->setVariable("QUESTION_AUTHOR", $data["author"]);
                                $this->tpl->setVariable("QUESTION_POOL", $questionpools[$data["obj_fi"]]);
                                $this->tpl->setVariable("COLOR_CLASS", $colors[$counter % 2]);
                                $this->tpl->parseCurrentBlock();
                                $counter++;
                        }
                }
                if ($counter == 0) 
                {
                        $this->tpl->setCurrentBlock("Emptytable");
                        $this->tpl->setVariable("TEXT_EMPTYTABLE", $this->lng->txt("tst_no_questions_available"));
                        $this->tpl->parseCurrentBlock();
                } 
                else 
                {
                        if (($ilAccess->checkAccess("write", "", $this->ref_id) and ($total == 0))) 
                        {
                                $this->tpl->setCurrentBlock("selectall");
                                $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
                                $counter++;
                                $this->tpl->setVariable("COLOR_CLASS", $colors[$counter % 2]);
                                $this->tpl->setVariable("TOTAL_POINTS", $total_points);
                                $this->tpl->parseCurrentBlock();
                                $this->tpl->setCurrentBlock("QFooter");
                                $this->tpl->setVariable("ARROW", "<img src=\"" . ilUtil::getImagePath("arrow_downright.gif") . "\" alt=\"".$this->lng->txt("arrow_downright")."\"/>");
                                $this->tpl->setVariable("REMOVE", $this->lng->txt("remove_question"));
                                $this->tpl->setVariable("MOVE", $this->lng->txt("move"));
                                $this->tpl->parseCurrentBlock();
                        }
                }

                if (($ilAccess->checkAccess("write", "", $this->ref_id) and ($total == 0))) 
                {
                        global $ilUser;
                        $lastquestiontype = $ilUser->getPref("tst_lastquestiontype");
                        $this->tpl->setCurrentBlock("QTypes");
                        include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php";
                        $question_types =& ilObjQuestionPool::_getQuestionTypes();
                        foreach ($question_types as $data)
                        {
                                if ($data["type_tag"] == $lastquestiontype)
                                {
                                        $this->tpl->setVariable("QUESTION_TYPE_SELECTED", " selected=\"selected\"");
                                }
                                $this->tpl->setVariable("QUESTION_TYPE_ID", $data["type_tag"]);
                                $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt($data["type_tag"]));
                                $this->tpl->parseCurrentBlock();
                        }
                        $this->tpl->parseCurrentBlock();
                }
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("ACTION_QUESTION_FORM", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("QUESTION_TITLE", $this->lng->txt("tst_question_title"));
                $this->tpl->setVariable("QUESTION_COMMENT", $this->lng->txt("description"));
                $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("tst_question_type"));
                $this->tpl->setVariable("QUESTION_POINTS", $this->lng->txt("points"));
                $this->tpl->setVariable("QUESTION_AUTHOR", $this->lng->txt("author"));
                $this->tpl->setVariable("QUESTION_POOL", $this->lng->txt("qpl"));

                if (($ilAccess->checkAccess("write", "", $this->ref_id) and ($total == 0))) 
                {
                        $this->tpl->setVariable("BUTTON_INSERT_QUESTION", $this->lng->txt("tst_browse_for_questions"));
                        $this->tpl->setVariable("TEXT_CREATE_NEW", " " . strtolower($this->lng->txt("or")) . " " . $this->lng->txt("create_new"));
                        $this->tpl->setVariable("BUTTON_CREATE_QUESTION", $this->lng->txt("create"));
                        $this->tpl->setVariable("TXT_OR", $this->lng->txt("or"));
                        $this->tpl->setVariable("TEXT_RANDOM_SELECT", $this->lng->txt("random_selection"));
                }

                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::randomQuestionsObject (  ) 

Definition at line 2517 of file class.ilObjTestGUI.php.

References $total, and ilUtil::sendInfo().

Referenced by addQuestionpoolObject(), questionsObject(), saveQuestionSelectionModeObject(), and saveRandomQuestionsObject().

        {
                global $ilUser;
                $selection_mode = $ilUser->getPref("tst_question_selection_mode_equal");
                $total = $this->object->evalTotalPersons();
                $available_qpl =& $this->object->getAvailableQuestionpools(TRUE, $selection_mode, FALSE, TRUE, TRUE);
                include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php";
                $qpl_question_count = array();
                foreach ($available_qpl as $key => $value)
                {
                        if ($value["count"] > 0)
                        {
                                $qpl_question_count[$key] = $value["count"];
                        }
                        else
                        {
                                unset($available_qpl[$key]);
                        }
                }
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_random_questions.html", "Modules/Test");
                $found_qpls = array();
                if (count($_POST) == 0)
                {
                        $found_qpls = $this->object->getRandomQuestionpools();
                }
                $qpl_unselected = 0;
                foreach ($_POST as $key => $value)
                {
                        if (preg_match("/countqpl_(\d+)/", $key, $matches))
                        {
                                $questioncount = $qpl_question_count[$_POST["qpl_" . $matches[1]]];
                                if ((strlen($questioncount) > 0) && ($value > $questioncount))
                                {
                                        $value = $questioncount;
                                        ilUtil::sendInfo($this->lng->txt("tst_random_selection_question_count_too_high"));
                                }
                                $found_qpls[$matches[1]] = array(
                                        "index" => $matches[1],
                                        "count" => sprintf("%d", $value),
                                        "qpl"   => $_POST["qpl_" . $matches[1]],
                                        "title" => $available_qpl[$_POST["qpl_" . $matches[1]]]["title"]
                                );
                                if ($_POST["qpl_" . $matches[1]] == -1)
                                {
                                        $qpl_unselected = 1;
                                }
                        }
                }
                $commands = $_POST["cmd"];
                if (is_array($commands))
                {
                        foreach ($commands as $key => $value)
                        {
                                if (preg_match("/deleteqpl_(\d+)/", $key, $matches))
                                {
                                        unset($found_qpls[$matches[1]]);
                                }
                        }
                }
                sort($found_qpls);
                $found_qpls = array_values($found_qpls);
                if (count($found_qpls) == 0)
                {
                        foreach ($available_qpl as $key => $value)
                        {
                                $this->tpl->setCurrentBlock("qpl_value");
                                $this->tpl->setVariable("QPL_ID", $key);
                                $this->tpl->setVariable("QPL_TEXT", $value["title"]);
                                $this->tpl->parseCurrentBlock();
                        }
                        $this->tpl->setCurrentBlock("questionpool_row");
                        $this->tpl->setVariable("COUNTQPL", "0");
                        $this->tpl->setVariable("VALUE_COUNTQPL", $_POST["countqpl_0"]);
                        $this->tpl->setVariable("TEXT_SELECT_QUESTIONPOOL", $this->lng->txt("select_questionpool_option"));
                        $this->tpl->setVariable("TEXT_QUESTIONS_FROM", $this->lng->txt("questions_from"));
                        $this->tpl->setVariable("BTNCOUNTQPL", 0);
                        $this->tpl->setVariable("BTN_DELETE", $this->lng->txt("delete"));
                        $this->tpl->parseCurrentBlock();
                }
                $counter = 0;
                foreach ($found_qpls as $key => $value)
                {
                        $pools = $available_qpl;
                        foreach ($found_qpls as $pkey => $pvalue)
                        {
                                if ($pvalue["qpl"] != $value["qpl"])
                                {
                                        unset($pools[$pvalue["qpl"]]);
                                }
                        }
                        // create first questionpool row automatically
                        foreach ($pools as $pkey => $pvalue)
                        {
                                $this->tpl->setCurrentBlock("qpl_value");
                                $this->tpl->setVariable("QPL_ID", $pkey);
                                $this->tpl->setVariable("QPL_TEXT", $pvalue["title"]);
                                if ($pkey == $value["qpl"])
                                {
                                        $this->tpl->setVariable("SELECTED_QPL", " selected=\"selected\"");
                                }
                                $this->tpl->parseCurrentBlock();
                        }
                        $this->tpl->setCurrentBlock("questionpool_row");
                        $this->tpl->setVariable("COUNTQPL", $counter);
                        $this->tpl->setVariable("VALUE_COUNTQPL", $value["count"]);
                        $this->tpl->setVariable("TEXT_SELECT_QUESTIONPOOL", $this->lng->txt("select_questionpool_option"));
                        $this->tpl->setVariable("TEXT_QUESTIONS_FROM", $this->lng->txt("questions_from"));
                        $this->tpl->setVariable("BTNCOUNTQPL", $counter);
                        $this->tpl->setVariable("BTN_DELETE", $this->lng->txt("delete"));
                        $this->tpl->parseCurrentBlock();
                        $counter++;
                }
                if ($_POST["cmd"]["addQuestionpool"])
                {
                        if ($qpl_unselected)
                        {
                                ilUtil::sendInfo($this->lng->txt("tst_random_qpl_unselected"));
                        }
                        else
                        {
                                $pools = $available_qpl;
                                foreach ($found_qpls as $pkey => $pvalue)
                                {
                                        unset($pools[$pvalue["qpl"]]);
                                }
                                if (count($pools) == 0)
                                {
                                        ilUtil::sendInfo($this->lng->txt("tst_no_more_available_questionpools"));
                                }
                                else
                                {
                                        foreach ($pools as $key => $value)
                                        {
                                                $this->tpl->setCurrentBlock("qpl_value");
                                                $this->tpl->setVariable("QPL_ID", $key);
                                                $this->tpl->setVariable("QPL_TEXT", $value["title"]);
                                                $this->tpl->parseCurrentBlock();
                                        }
                                        $this->tpl->setCurrentBlock("questionpool_row");
                                        $this->tpl->setVariable("COUNTQPL", "$counter");
                                        $this->tpl->setVariable("TEXT_SELECT_QUESTIONPOOL", $this->lng->txt("select_questionpool_option"));
                                        $this->tpl->setVariable("TEXT_QUESTIONS_FROM", $this->lng->txt("questions_from"));
                                        $this->tpl->setVariable("BTNCOUNTQPL", $counter);
                                        $this->tpl->setVariable("BTN_DELETE", $this->lng->txt("delete"));
                                        $this->tpl->parseCurrentBlock();
                                }
                        }
                }
                if ($_POST["cmd"]["saveRandomQuestions"])
                {
                        $this->object->saveRandomQuestionCount($_POST["total_questions"]);
                        $this->object->saveRandomQuestionpools($found_qpls);
                        $this->object->saveCompleteStatus();
                }
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("TEXT_SELECT_RANDOM_QUESTIONS", $this->lng->txt("tst_select_random_questions"));
                $this->tpl->setVariable("TEXT_TOTAL_QUESTIONS", $this->lng->txt("tst_total_questions"));
                $this->tpl->setVariable("TEXT_TOTAL_QUESTIONS_DESCRIPTION", $this->lng->txt("tst_total_questions_description"));
                $total_questions = $this->object->getRandomQuestionCount();
                if (array_key_exists("total_questions", $_POST))
                {
                        $total_questions = $_POST["total_questions"];
                }
                if ($total_questions > 0)
                {
                        $sum = 0;
                        foreach ($found_qpls as $key => $value)
                        {
                                $sum += $qpl_question_count[$value["qpl"]];
                        }
                        if ($total_questions > $sum)
                        {
                                $total_questions = $sum;
                                if ($_POST["cmd"]["saveRandomQuestions"])
                                {
                                        $this->object->saveRandomQuestionCount($total_questions);
                                }
                                ilUtil::sendInfo($this->lng->txt("tst_random_selection_question_total_count_too_high"));
                        }
                }
                $this->tpl->setVariable("VALUE_TOTAL_QUESTIONS", $total_questions);
                $this->tpl->setVariable("TEXT_QUESTIONPOOLS", $this->lng->txt("tst_random_questionpools"));
                if (!$total)
                {
                        $this->tpl->setVariable("BTN_SAVE", $this->lng->txt("save"));
                        $this->tpl->setVariable("BTN_ADD_QUESTIONPOOL", $this->lng->txt("add_questionpool"));
                }
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));

                $this->tpl->setVariable("TEXT_QUESTION_SELECTION", $this->lng->txt("tst_question_selection"));
                $this->tpl->setVariable("VALUE_QUESTION_SELECTION", $this->lng->txt("tst_question_selection_equal"));
                $this->tpl->setVariable("CMD_QUESTION_SELECTION", "setEqualQplSelection");
                $this->tpl->setVariable("TEXT_QUESTION_SELECTION_DESCRIPTION", $this->lng->txt("tst_question_selection_description"));
                $this->tpl->setVariable("BUTTON_SAVE", $this->lng->txt("change"));
                if ($selection_mode == 1)
                {
                        $this->tpl->setVariable("CHECKED_QUESTION_SELECTION_MODE", " checked=\"checked\"");
                }
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::randomselectObject (  ) 

Creates a form for random selection of questions.

Creates a form for random selection of questions

public

Definition at line 2371 of file class.ilObjTestGUI.php.

References getQuestionsSubTabs().

        {
                global $ilUser;
                $this->getQuestionsSubTabs();
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_random_select.html", "Modules/Test");
                $questionpools =& $this->object->getAvailableQuestionpools(FALSE, FALSE, FALSE, TRUE);
                $this->tpl->setCurrentBlock("option");
                $this->tpl->setVariable("VALUE_OPTION", "0");
                $this->tpl->setVariable("TEXT_OPTION", $this->lng->txt("all_available_question_pools"));
                $this->tpl->parseCurrentBlock();
                foreach ($questionpools as $key => $value)
                {
                        $this->tpl->setCurrentBlock("option");
                        $this->tpl->setVariable("VALUE_OPTION", $key);
                        $this->tpl->setVariable("TEXT_OPTION", $value["title"]);
                        $this->tpl->parseCurrentBlock();
                }
                $this->tpl->setCurrentBlock("hidden");
                $this->tpl->setVariable("HIDDEN_NAME", "sel_question_types");
                $this->tpl->setVariable("HIDDEN_VALUE", $_POST["sel_question_types"]);
                $this->tpl->parseCurrentBlock();
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("TXT_QPL_SELECT", $this->lng->txt("tst_random_select_questionpool"));
                $this->tpl->setVariable("TXT_NR_OF_QUESTIONS", $this->lng->txt("tst_random_nr_of_questions"));
                $this->tpl->setVariable("BTN_SUBMIT", $this->lng->txt("submit"));
                $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

ilObjTestGUI::redirectToInfoScreenObject (  ) 

Definition at line 4978 of file class.ilObjTestGUI.php.

References $_SESSION, and infoScreen().

        {
                $this->ctrl->setCmd("showSummary");
                $this->ctrl->setCmdClass("ilinfoscreengui");
                $this->infoScreen($_SESSION["lock"]);
        }

Here is the call graph for this function:

ilObjTestGUI::removeParticipantObject (  ) 

Definition at line 4420 of file class.ilObjTestGUI.php.

References ilUtil::sendInfo().

        {
                if (is_array($_POST["chbUser"])) 
                {
                        foreach ($_POST["chbUser"] as $user_id)
                        {
                                $this->object->disinviteUser($user_id);                         
                        }
                }
                else
                {
                        ilUtil::sendInfo($this->lng->txt("select_one_user"), true);
                }
                $this->ctrl->redirect($this, "participants");
        }

Here is the call graph for this function:

ilObjTestGUI::removeQuestionsForm ( checked_questions  ) 

Displays a form to confirm the removal of questions from the test.

Displays a form to confirm the removal of questions from the test

public

Definition at line 2872 of file class.ilObjTestGUI.php.

References ilObjectGUI::$data, and ilUtil::sendInfo().

Referenced by removeQuestionsObject().

        {
                ilUtil::sendInfo();
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_remove_questions.html", "Modules/Test");
                $removablequestions =& $this->object->getTestQuestions();
                $colors = array("tblrow1", "tblrow2");
                $counter = 0;
                if (count($removablequestions))
                {
                        foreach ($removablequestions as $data)
                        {
                                if (in_array($data["question_id"], $checked_questions))
                                {
                                        $this->tpl->setCurrentBlock("row");
                                        $this->tpl->setVariable("COLOR_CLASS", $colors[$counter % 2]);
                                        $this->tpl->setVariable("TXT_TITLE", $data["title"]);
                                        $this->tpl->setVariable("TXT_DESCRIPTION", $data["comment"]);
                                        $this->tpl->setVariable("TXT_TYPE", $this->lng->txt($data["type_tag"]));
                                        $this->tpl->parseCurrentBlock();
                                        $counter++;
                                }
                        }
                }
                foreach ($checked_questions as $id)
                {
                        $this->tpl->setCurrentBlock("hidden");
                        $this->tpl->setVariable("HIDDEN_NAME", "id_$id");
                        $this->tpl->setVariable("HIDDEN_VALUE", "1");
                        $this->tpl->parseCurrentBlock();
                }

                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("TXT_TITLE", $this->lng->txt("tst_question_title"));
                $this->tpl->setVariable("TXT_DESCRIPTION", $this->lng->txt("description"));
                $this->tpl->setVariable("TXT_TYPE", $this->lng->txt("tst_question_type"));
                $this->tpl->setVariable("BTN_CONFIRM", $this->lng->txt("confirm"));
                $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::removeQuestionsObject (  ) 

Called when a selection of questions should be removed from the test.

Called when a selection of questions should be removed from the test

public

Definition at line 2920 of file class.ilObjTestGUI.php.

References $total, getQuestionsSubTabs(), removeQuestionsForm(), and ilUtil::sendInfo().

        {
                $this->getQuestionsSubTabs();
                $checked_questions = array();
                foreach ($_POST as $key => $value) {
                        if (preg_match("/cb_(\d+)/", $key, $matches)) {
                                array_push($checked_questions, $matches[1]);
                        }
                }
                if (count($checked_questions) > 0) {
                        $total = $this->object->evalTotalPersons();
                        if ($total) {
                                // the test was executed previously
                                ilUtil::sendInfo(sprintf($this->lng->txt("tst_remove_questions_and_results"), $total));
                        } else {
                                ilUtil::sendInfo($this->lng->txt("tst_remove_questions"));
                        }
                        $this->removeQuestionsForm($checked_questions);
                        return;
                } elseif (count($checked_questions) == 0) {
                        ilUtil::sendInfo($this->lng->txt("tst_no_question_selected_for_removal"), true);
                        $this->ctrl->redirect($this, "questions");
                }
        }

Here is the call graph for this function:

ilObjTestGUI::resetFilterObject (  ) 

Resets the filter for the question browser.

Resets the filter for the question browser

public

Definition at line 1797 of file class.ilObjTestGUI.php.

References questionBrowser().

        {
                $this->questionBrowser();
        }

Here is the call graph for this function:

ilObjTestGUI::runObject (  ) 

Definition at line 173 of file class.ilObjTestGUI.php.

        {
                $this->ctrl->redirect($this, "infoScreen");
        }

ilObjTestGUI::saveClientIPObject (  ) 

Definition at line 4436 of file class.ilObjTestGUI.php.

References ilUtil::sendInfo().

        {
                if (is_array($_POST["chbUser"])) 
                {
                        foreach ($_POST["chbUser"] as $user_id)
                        {
                                $this->object->setClientIP($user_id, $_POST["clientip_".$user_id]);
                        }
                }
                else
                {
                        ilUtil::sendInfo($this->lng->txt("select_one_user"), true);
                }
                $this->ctrl->redirect($this, "participants");
        }

Here is the call graph for this function:

ilObjTestGUI::saveFixedParticipantsStatusObject (  ) 

Saves the status change of the fixed participants status.

Saves the status change of the fixed participants status

public

Definition at line 3908 of file class.ilObjTestGUI.php.

References confirmFixedParticipantsStatusChange().

        {
                $fixed_participants = 0;
                if (array_key_exists("chb_fixed_participants", $_POST))
                {
                        if ($_POST["chb_fixed_participants"])
                        {
                                $fixed_participants = 1;
                        }
                }
                $invited_users = $this->object->getInvitedUsers();
                if ($this->object->getFixedParticipants() && !$fixed_participants && count($invited_users))
                {
                        $this->confirmFixedParticipantsStatusChange();
                }
                else
                {
                        $this->object->setFixedParticipants($fixed_participants);
                        $this->object->saveToDb();
                        $this->ctrl->redirect($this, "inviteParticipants");
                }
        }

Here is the call graph for this function:

ilObjTestGUI::saveMarkSchemaFormData (  ) 

Save the mark schema POST data when the form was submitted.

Save the mark schema POST data when the form was submitted

public

Definition at line 3258 of file class.ilObjTestGUI.php.

Referenced by addMarkStepObject(), deleteMarkStepsObject(), and saveMarksObject().

        {
                $this->object->mark_schema->flush();
                foreach ($_POST as $key => $value) {
                        if (preg_match("/mark_short_(\d+)/", $key, $matches)) 
                        {
                                $this->object->mark_schema->addMarkStep($_POST["mark_short_$matches[1]"], $_POST["mark_official_$matches[1]"], $_POST["mark_percentage_$matches[1]"], $_POST["passed_$matches[1]"]);
                        }
                }
                $this->object->ects_grades["A"] = $_POST["ects_grade_a"];
                $this->object->ects_grades["B"] = $_POST["ects_grade_b"];
                $this->object->ects_grades["C"] = $_POST["ects_grade_c"];
                $this->object->ects_grades["D"] = $_POST["ects_grade_d"];
                $this->object->ects_grades["E"] = $_POST["ects_grade_e"];
                if ($_POST["chbUseFX"])
                {
                        $this->object->ects_fx = $_POST["percentFX"];
                }
                else
                {
                        $this->object->ects_fx = "";
                }
                $this->object->ects_output = $_POST["chbECTS"];
        }

Here is the caller graph for this function:

ilObjTestGUI::saveMarksObject (  ) 

Save the mark schema.

Save the mark schema

public

Definition at line 3340 of file class.ilObjTestGUI.php.

References marksObject(), saveMarkSchemaFormData(), ilUtil::sendInfo(), and ilUtil::stripSlashes().

        {
                $this->saveMarkSchemaFormData();
                
                $mark_check = $this->object->checkMarks();
                if ($mark_check !== true)
                {
                        ilUtil::sendInfo($this->lng->txt($mark_check));
                }
                elseif ($_POST["chbECTS"] && ((strcmp($_POST["ects_grade_a"], "") == 0) or (strcmp($_POST["ects_grade_b"], "") == 0) or (strcmp($_POST["ects_grade_c"], "") == 0) or (strcmp($_POST["ects_grade_d"], "") == 0) or (strcmp($_POST["ects_grade_e"], "") == 0)))
                {
                        ilUtil::sendInfo($this->lng->txt("ects_fill_out_all_values"), true);
                }
                elseif (($_POST["ects_grade_a"] > 100) or ($_POST["ects_grade_a"] < 0))
                {
                        ilUtil::sendInfo($this->lng->txt("ects_range_error_a"), true);
                }
                elseif (($_POST["ects_grade_b"] > 100) or ($_POST["ects_grade_b"] < 0))
                {
                        ilUtil::sendInfo($this->lng->txt("ects_range_error_b"), true);
                }
                elseif (($_POST["ects_grade_c"] > 100) or ($_POST["ects_grade_c"] < 0))
                {
                        ilUtil::sendInfo($this->lng->txt("ects_range_error_c"), true);
                }
                elseif (($_POST["ects_grade_d"] > 100) or ($_POST["ects_grade_d"] < 0))
                {
                        ilUtil::sendInfo($this->lng->txt("ects_range_error_d"), true);
                }
                elseif (($_POST["ects_grade_e"] > 100) or ($_POST["ects_grade_e"] < 0))
                {
                        ilUtil::sendInfo($this->lng->txt("ects_range_error_e"), true);
                }
                else 
                {
                        $this->object->mark_schema->saveToDb($this->object->getTestId());
                        $this->object->saveCompleteStatus();
                        if ($this->object->getReportingDate())
                        {
                                $fxpercent = "";
                                if ($_POST["chbUseFX"])
                                {
                                        $fxpercent = ilUtil::stripSlashes($_POST["percentFX"]);
                                }
                                $this->object->saveECTSStatus($_POST["chbECTS"], $fxpercent, $this->object->ects_grades["A"], $this->object->ects_grades["B"], $this->object->ects_grades["C"], $this->object->ects_grades["D"], $this->object->ects_grades["E"]);
                        }
                        ilUtil::sendInfo($this->lng->txt("msg_obj_modified"), true);
                }
                $this->marksObject();
        }

Here is the call graph for this function:

ilObjTestGUI::saveObject (  ) 

save object public

Reimplemented from ilObjectGUI.

Definition at line 208 of file class.ilObjTestGUI.php.

References ilUtil::redirect(), and ilUtil::sendInfo().

        {
                global $rbacadmin;

                // create and insert forum in objecttree
                $newObj = parent::saveObject();
                if ($_POST["defaults"] > 0) 
                {
                        $newObj->applyDefaults($_POST["defaults"]);
                }

                // always send a message
                ilUtil::sendInfo($this->lng->txt("object_added"),true);
                ilUtil::redirect("ilias.php?baseClass=ilObjTestGUI&ref_id=".$newObj->getRefId()."&cmd=properties");
        }

Here is the call graph for this function:

ilObjTestGUI::savePropertiesObject (  ) 

Save the form input of the properties form.

Save the form input of the properties form

public

Definition at line 818 of file class.ilObjTestGUI.php.

References ilObjectGUI::$data, $total, ilObjAdvancedEditing::_getUsedHTMLTagsAsString(), confirmChangeProperties(), ilUtil::sendInfo(), and ilUtil::stripSlashes().

        {
                $total = $this->object->evalTotalPersons();
                $randomtest_switch = false;
                // Check the values the user entered in the form
                if (!$total)
                {
                        if (!array_key_exists("tst_properties_confirmation", $_POST))
                        {
                                if (($this->object->isRandomTest()) && (count($this->object->getRandomQuestionpools()) > 0))
                                {
                                        if (!$_POST["chb_random"])
                                        {
                                                // user tries to change from a random test with existing random question pools to a non random test
                                                $this->confirmChangeProperties(0);
                                                return;
                                        }
                                }
                                if ((!$this->object->isRandomTest()) && (count($this->object->questions) > 0))
                                {
                                        if ($_POST["chb_random"])
                                        {
                                                // user tries to change from a non random test with existing questions to a random test
                                                $this->confirmChangeProperties(1);
                                                return;
                                        }
                                }
                        }

                        if (!strlen($_POST["chb_random"]))
                        {
                                $data["random_test"] = 0;
                        }
                        else
                        {
                                $data["random_test"] = ilUtil::stripSlashes($_POST["chb_random"]);
                        }
                }
                else
                {
                        $data["random_test"] = $this->object->random_test;
                }
                if ($data["random_test"] != $this->object->random_test)
                {
                        $randomtest_switch = true;
                }
                $data["anonymity"] = $_POST["anonymity"];
                if ($total)
                {
                        $data["anonymity"] = $this->object->getAnonymity();
                }
                $data["show_cancel"] = $_POST["show_cancel"];
                $data["password"] = $_POST["password"];
                $data["allowedUsers"] = $_POST["allowedUsers"];
                $data["show_cancel"] = $_POST["chb_show_cancel"];
                $data["show_marker"] = ($_POST["chb_show_marker"] ? 1 : 0);
                $data["allowedUsersTimeGap"] = $_POST["allowedUsersTimeGap"];
                include_once "./classes/class.ilObjAdvancedEditing.php";
                $introduction = ilUtil::stripSlashes($_POST["introduction"], false, ilObjAdvancedEditing::_getUsedHTMLTagsAsString("assessment"));
                $data["introduction"] = $introduction;
                $data["sequence_settings"] = ilUtil::stripSlashes($_POST["chb_postpone"]);
                $data["shuffle_questions"] = 0;
                if ($_POST["chb_shuffle_questions"])
                {
                        $data["shuffle_questions"] = $_POST["chb_shuffle_questions"];
                }
                $data["list_of_questions"] = 0;
                if ($_POST["list_of_questions"] == 1)
                {
                        $data["list_of_questions"] = 1;
                }
                $data["list_of_questions_start"] = 0;
                if ($_POST["chb_list_of_questions_start"] == 1)
                {
                        $data["list_of_questions_start"] = 1;
                }
                $data["list_of_questions_end"] = 0;
                if ($_POST["chb_list_of_questions_end"] == 1)
                {
                        $data["list_of_questions_end"] = 1;
                }
                $data["list_of_questions_with_description"] = 0;
                if ($_POST["chb_list_of_questions_with_description"] == 1)
                {
                        $data["list_of_questions_with_description"] = 1;
                }
                $data["nr_of_tries"] = ilUtil::stripSlashes($_POST["nr_of_tries"]);
                $data["processing_time"] = ilUtil::stripSlashes($_POST["processing_time"]);
                if (!$_POST["chb_starting_time"])
                {
                        $data["starting_time"] = "";
                }
                else
                {
                        $data["starting_time"] = sprintf("%04d%02d%02d%02d%02d%02d",
                                $_POST["starting_date"]["y"],
                                $_POST["starting_date"]["m"],
                                $_POST["starting_date"]["d"],
                                $_POST["starting_time"]["h"],
                                $_POST["starting_time"]["m"],
                                0
                        );
                }
                if (!$_POST["chb_ending_time"])
                {
                        $data["ending_time"] = "";
                }
                else
                {
                        $data["ending_time"] = sprintf("%04d%02d%02d%02d%02d%02d",
                                $_POST["ending_date"]["y"],
                                $_POST["ending_date"]["m"],
                                $_POST["ending_date"]["d"],
                                $_POST["ending_time"]["h"],
                                $_POST["ending_time"]["m"],
                                0
                        );
                }

                if ($_POST["chb_processing_time"])
                {
                        $data["enable_processing_time"] = "1";
                }
                else
                {
                        $data["enable_processing_time"] = "0";
                }
                $data["reset_processing_time"] = "0";
                if ($_POST["chb_processing_time"])
                {
                        if ($_POST["chb_reset_processing_time"])
                        {
                                $data["reset_processing_time"] = "1";
                        }
                }
                if ($_POST["chb_use_previous_answers"])
                {
                        $data["use_previous_answers"] = "1";
                }
                else
                {
                        $data["use_previous_answers"] = "0";
                }

                $data["title_output"] = $_POST["title_output"];

                if ($data["enable_processing_time"])
                {
                        $data["processing_time"] = sprintf("%02d:%02d:%02d",
                                $_POST["processing_time"]["h"],
                                $_POST["processing_time"]["m"],
                                $_POST["processing_time"]["s"]
                        );
                }
                else
                {
                        $proc_time = $this->object->getEstimatedWorkingTime();
                        $data["processing_time"] = sprintf("%02d:%02d:%02d",
                                $proc_time["h"],
                                $proc_time["m"],
                                $proc_time["s"]
                        );
                }

                if ($data["nr_of_tries"] == 1)
                {
                        $data["pass_scoring"] = SCORE_LAST_PASS;
                }
                $this->object->setIntroduction($data["introduction"]);
                $this->object->setSequenceSettings($data["sequence_settings"]);
                $this->object->setAnonymity($data["anonymity"]);
                $this->object->setShowCancel($data["show_cancel"]);
                $this->object->setShowMarker($data["show_marker"]);
                $this->object->setPassword($data["password"]);
                $this->object->setAllowedUsers($data["allowedUsers"]);
                $this->object->setAllowedUsersTimeGap($data["allowedUsersTimeGap"]);
                $this->object->setNrOfTries($data["nr_of_tries"]);
                $this->object->setStartingTime($data["starting_time"]);
                $this->object->setEndingTime($data["ending_time"]);
                $this->object->setProcessingTime($data["processing_time"]);
                $this->object->setRandomTest($data["random_test"]);
                $this->object->setEnableProcessingTime($data["enable_processing_time"]);
                $this->object->setResetProcessingTime($data["reset_processing_time"]);
                $this->object->setUsePreviousAnswers($data["use_previous_answers"]);
                $this->object->setTitleOutput($data["title_output"]);
                
                if ($this->object->isRandomTest())
                {
                        $this->object->setUsePreviousAnswers(0);
                        $this->object->setRandomTest(1);
                }
                if ($data["shuffle_questions"])
                {
                        $this->object->setShuffleQuestions(TRUE);
                }
                else
                {
                        $this->object->setShuffleQuestions(FALSE);
                }
                $this->object->setListOfQuestions($data["list_of_questions"]);
                $this->object->setListOfQuestionsStart($data["list_of_questions_start"]);
                $this->object->setListOfQuestionsEnd($data["list_of_questions_end"]);
                $this->object->setListOfQuestionsDescription($data["list_of_questions_with_description"]);

                $this->object->saveToDb(true);

                ilUtil::sendInfo($this->lng->txt("msg_obj_modified"));
                if ($randomtest_switch)
                {
                        if ($this->object->isRandomTest())
                        {
                                $this->object->removeNonRandomTestData();
                        }
                        else
                        {
                                $this->object->removeRandomTestData();
                        }
                }
                $this->ctrl->redirect($this, "properties");
        }

Here is the call graph for this function:

ilObjTestGUI::saveQuestionSelectionModeObject (  ) 

Definition at line 2718 of file class.ilObjTestGUI.php.

References randomQuestionsObject().

        {
                global $ilUser;
                if ($_POST["chbQuestionSelectionMode"])
                {
                        $ilUser->setPref("tst_question_selection_mode_equal", 1);
                        $ilUser->writePref("tst_question_selection_mode_equal", 1);
                }
                else
                {
                        $ilUser->setPref("tst_question_selection_mode_equal", 0);
                        $ilUser->writePref("tst_question_selection_mode_equal", 0);
                }
                $this->randomQuestionsObject();
        }

Here is the call graph for this function:

ilObjTestGUI::saveRandomQuestionsObject (  ) 

Definition at line 2507 of file class.ilObjTestGUI.php.

References randomQuestionsObject().

        {
                $this->randomQuestionsObject();
        }

Here is the call graph for this function:

ilObjTestGUI::saveScoringObject (  ) 

Save the form input of the scoring form.

Save the form input of the scoring form

public

Definition at line 1046 of file class.ilObjTestGUI.php.

References ilObjectGUI::$data, $total, and ilUtil::sendInfo().

        {
                $total = $this->object->evalTotalPersons();
                // Check the values the user entered in the form
                if (!$total)
                {
                        $data["count_system"] = $_POST["count_system"];
                        $data["mc_scoring"] = $_POST["mc_scoring"];
                        $data["score_cutting"] = $_POST["score_cutting"];
                        $data["pass_scoring"] = $_POST["pass_scoring"];
                }
                else
                {
                        $data["count_system"] = $this->object->getCountSystem();
                        $data["mc_scoring"] = $this->object->getMCScoring();
                        $data["score_cutting"] = $this->object->getScoreCutting();
                        $data["pass_scoring"] = $this->object->getPassScoring();
                }

                $data["instant_feedback_solution"] = $_POST["chb_instant_feedback_solution"];
                $data["answer_feedback"] = ($_POST["chb_instant_feedback_answer"]) ? 1 : 0;
                $data["answer_feedback_points"] = ($_POST["chb_instant_feedback_results"]) ? 1 : 0;

                $data["show_solution_printview"] = ($_POST["chb_show_solution_printview"] == 1) ? 1 : 0;
                $data["show_solution_feedback"] = ($_POST["chb_show_solution_feedback"] == 1) ? 1 : 0;
                $data["show_solution_details"] = $_POST["chb_show_solution_details"];
                $data["show_solution_answers_only"] = $_POST["chb_show_solution_answers_only"];
                $data["show_solution_signature"] = $_POST["chb_show_solution_signature"];
                $data["show_pass_details"] = $_POST["chb_show_pass_details"];
                $data["results_access"] = $_POST["results_access"];
                
                $this->object->setCountSystem($data["count_system"]);
                $this->object->setMCScoring($data["mc_scoring"]);
                $this->object->setScoreCutting($data["score_cutting"]);
                $this->object->setPassScoring($data["pass_scoring"]);
                $this->object->setInstantFeedbackSolution($data["instant_feedback_solution"]);
                $this->object->setAnswerFeedback($data["answer_feedback"]);
                $this->object->setAnswerFeedbackPoints($data["answer_feedback_points"]);
                $this->object->setShowSolutionDetails($data["show_solution_details"]);
                $this->object->setShowSolutionAnswersOnly($data["show_solution_answers_only"]);
                $this->object->setShowSolutionSignature($data["show_solution_signature"]);
                $this->object->setShowPassDetails($data["show_pass_details"]);
                $this->object->setScoreReporting($data["results_access"]);
                $this->object->setShowSolutionPrintview($data["show_solution_printview"]);
                $this->object->setShowSolutionFeedback($data["show_solution_feedback"]);
                if ($data["results_access"] == REPORT_AFTER_DATE)
                {
                        $data["reporting_date"] = sprintf("%04d%02d%02d%02d%02d%02d",
                                $_POST["reporting_date"]["y"],
                                $_POST["reporting_date"]["m"],
                                $_POST["reporting_date"]["d"],
                                $_POST["reporting_time"]["h"],
                                $_POST["reporting_time"]["m"],
                                0
                        );
                        $this->object->setReportingDate($data["reporting_date"]);
                }
                else
                {
                        $this->object->setReportingDate("");
                }
                $this->object->saveToDb(true);
                ilUtil::sendInfo($this->lng->txt("msg_obj_modified"), TRUE);

                $this->ctrl->redirect($this, "scoring");
        }

Here is the call graph for this function:

ilObjTestGUI::scoringObject (  ) 

Display and fill the scoring settings form of the test.

Display and fill the scoring settings form of the test

public

Definition at line 1120 of file class.ilObjTestGUI.php.

References ilObjectGUI::$data, $total, ilUtil::getImagePath(), ilUtil::makeDateSelect(), ilUtil::makeTimeSelect(), and ilUtil::sendInfo().

        {
                global $ilAccess;
                if (!$ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        // allow only write access
                        ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
                        $this->ctrl->redirect($this, "infoScreen");
                }

                $data["count_system"] = $this->object->getCountSystem();
                $data["mc_scoring"] = $this->object->getMCScoring();
                $data["score_cutting"] = $this->object->getScoreCutting();
                $data["pass_scoring"] = $this->object->getPassScoring();
                $data["instant_feedback_solution"] = $this->object->getInstantFeedbackSolution();
                $data["answer_feedback"] = $this->object->getAnswerFeedback();
                $data["answer_feedback_points"] = $this->object->getAnswerFeedbackPoints();
                $data["show_solution_printview"] = $this->object->getShowSolutionPrintview();
                $data["show_solution_feedback"] = $this->object->getShowSolutionFeedback();
                $data["show_solution_details"] = $this->object->getShowSolutionDetails();
                $data["show_solution_answers_only"] = $this->object->getShowSolutionAnswersOnly();
                $data["show_solution_signature"] = $this->object->getShowSolutionSignature();
                $data["show_pass_details"] = $this->object->getShowPassDetails();
                $data["results_access"] = $this->object->getScoreReporting();

                $total = $this->object->evalTotalPersons();
                
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_scoring.html", "Modules/Test");

                $this->lng->loadLanguageModule("jscalendar");
                $this->tpl->addBlockFile("CALENDAR_LANG_JAVASCRIPT", "calendar_javascript", "tpl.calendar.html");
                $this->tpl->setCurrentBlock("calendar_javascript");
                $this->tpl->setVariable("FULL_SUNDAY", $this->lng->txt("l_su"));
                $this->tpl->setVariable("FULL_MONDAY", $this->lng->txt("l_mo"));
                $this->tpl->setVariable("FULL_TUESDAY", $this->lng->txt("l_tu"));
                $this->tpl->setVariable("FULL_WEDNESDAY", $this->lng->txt("l_we"));
                $this->tpl->setVariable("FULL_THURSDAY", $this->lng->txt("l_th"));
                $this->tpl->setVariable("FULL_FRIDAY", $this->lng->txt("l_fr"));
                $this->tpl->setVariable("FULL_SATURDAY", $this->lng->txt("l_sa"));
                $this->tpl->setVariable("SHORT_SUNDAY", $this->lng->txt("s_su"));
                $this->tpl->setVariable("SHORT_MONDAY", $this->lng->txt("s_mo"));
                $this->tpl->setVariable("SHORT_TUESDAY", $this->lng->txt("s_tu"));
                $this->tpl->setVariable("SHORT_WEDNESDAY", $this->lng->txt("s_we"));
                $this->tpl->setVariable("SHORT_THURSDAY", $this->lng->txt("s_th"));
                $this->tpl->setVariable("SHORT_FRIDAY", $this->lng->txt("s_fr"));
                $this->tpl->setVariable("SHORT_SATURDAY", $this->lng->txt("s_sa"));
                $this->tpl->setVariable("FULL_JANUARY", $this->lng->txt("l_01"));
                $this->tpl->setVariable("FULL_FEBRUARY", $this->lng->txt("l_02"));
                $this->tpl->setVariable("FULL_MARCH", $this->lng->txt("l_03"));
                $this->tpl->setVariable("FULL_APRIL", $this->lng->txt("l_04"));
                $this->tpl->setVariable("FULL_MAY", $this->lng->txt("l_05"));
                $this->tpl->setVariable("FULL_JUNE", $this->lng->txt("l_06"));
                $this->tpl->setVariable("FULL_JULY", $this->lng->txt("l_07"));
                $this->tpl->setVariable("FULL_AUGUST", $this->lng->txt("l_08"));
                $this->tpl->setVariable("FULL_SEPTEMBER", $this->lng->txt("l_09"));
                $this->tpl->setVariable("FULL_OCTOBER", $this->lng->txt("l_10"));
                $this->tpl->setVariable("FULL_NOVEMBER", $this->lng->txt("l_11"));
                $this->tpl->setVariable("FULL_DECEMBER", $this->lng->txt("l_12"));
                $this->tpl->setVariable("SHORT_JANUARY", $this->lng->txt("s_01"));
                $this->tpl->setVariable("SHORT_FEBRUARY", $this->lng->txt("s_02"));
                $this->tpl->setVariable("SHORT_MARCH", $this->lng->txt("s_03"));
                $this->tpl->setVariable("SHORT_APRIL", $this->lng->txt("s_04"));
                $this->tpl->setVariable("SHORT_MAY", $this->lng->txt("s_05"));
                $this->tpl->setVariable("SHORT_JUNE", $this->lng->txt("s_06"));
                $this->tpl->setVariable("SHORT_JULY", $this->lng->txt("s_07"));
                $this->tpl->setVariable("SHORT_AUGUST", $this->lng->txt("s_08"));
                $this->tpl->setVariable("SHORT_SEPTEMBER", $this->lng->txt("s_09"));
                $this->tpl->setVariable("SHORT_OCTOBER", $this->lng->txt("s_10"));
                $this->tpl->setVariable("SHORT_NOVEMBER", $this->lng->txt("s_11"));
                $this->tpl->setVariable("SHORT_DECEMBER", $this->lng->txt("s_12"));
                $this->tpl->setVariable("ABOUT_CALENDAR", $this->lng->txt("about_calendar"));
                $this->tpl->setVariable("ABOUT_CALENDAR_LONG", $this->lng->txt("about_calendar_long"));
                $this->tpl->setVariable("ABOUT_TIME_LONG", $this->lng->txt("about_time"));
                $this->tpl->setVariable("PREV_YEAR", $this->lng->txt("prev_year"));
                $this->tpl->setVariable("PREV_MONTH", $this->lng->txt("prev_month"));
                $this->tpl->setVariable("GO_TODAY", $this->lng->txt("go_today"));
                $this->tpl->setVariable("NEXT_MONTH", $this->lng->txt("next_month"));
                $this->tpl->setVariable("NEXT_YEAR", $this->lng->txt("next_year"));
                $this->tpl->setVariable("SEL_DATE", $this->lng->txt("select_date"));
                $this->tpl->setVariable("DRAG_TO_MOVE", $this->lng->txt("drag_to_move"));
                $this->tpl->setVariable("PART_TODAY", $this->lng->txt("part_today"));
                $this->tpl->setVariable("DAY_FIRST", $this->lng->txt("day_first"));
                $this->tpl->setVariable("CLOSE", $this->lng->txt("close"));
                $this->tpl->setVariable("TODAY", $this->lng->txt("today"));
                $this->tpl->setVariable("TIME_PART", $this->lng->txt("time_part"));
                $this->tpl->setVariable("DEF_DATE_FORMAT", $this->lng->txt("def_date_format"));
                $this->tpl->setVariable("TT_DATE_FORMAT", $this->lng->txt("tt_date_format"));
                $this->tpl->setVariable("WK", $this->lng->txt("wk"));
                $this->tpl->setVariable("TIME", $this->lng->txt("time"));
                $this->tpl->parseCurrentBlock();
                $this->tpl->setCurrentBlock("CalendarJS");
                $this->tpl->setVariable("LOCATION_JAVASCRIPT_CALENDAR", "./Modules/Test/js/calendar/calendar.js");
                $this->tpl->setVariable("LOCATION_JAVASCRIPT_CALENDAR_SETUP", "./Modules/Test/js/calendar/calendar-setup.js");
                $this->tpl->setVariable("LOCATION_JAVASCRIPT_CALENDAR_STYLESHEET", "./Modules/Test/js/calendar/calendar.css");
                $this->tpl->parseCurrentBlock();
                $this->tpl->setCurrentBlock("javascript_call_calendar");
                $this->tpl->setVariable("INPUT_FIELDS_REPORTING_DATE", "reporting_date");
                $this->tpl->parseCurrentBlock();

                $this->tpl->setVariable("HEADING_SCORING_AND_RESULTS", $this->lng->txt("scoring"));
                $this->tpl->setVariable("DEFAULT", "(" . $this->lng->txt("default") . ")");
                $this->tpl->setVariable("TEXT_COUNT_SYSTEM", $this->lng->txt("tst_text_count_system"));
                $this->tpl->setVariable("COUNT_PARTIAL_SOLUTIONS", $this->lng->txt("tst_count_partial_solutions"));
                $this->tpl->setVariable("COUNT_CORRECT_SOLUTIONS", $this->lng->txt("tst_count_correct_solutions"));
                $this->tpl->setVariable("COUNT_SYSTEM_DESCRIPTION", $this->lng->txt("tst_count_system_description"));
                switch ($data["count_system"])
                {
                        case COUNT_CORRECT_SOLUTIONS:
                                $this->tpl->setVariable("CHECKED_COUNT_CORRECT_SOLUTIONS", " checked=\"checked\"");
                                break;
                        case COUNT_PARTIAL_SOLUTIONS:
                        default:
                                $this->tpl->setVariable("CHECKED_COUNT_PARTIAL_SOLUTIONS", " checked=\"checked\"");
                                break;
                }
                if ($total)
                {
                        $this->tpl->setVariable("DISABLED_COUNT_CORRECT_SOLUTIONS", " disabled=\"disabled\"");
                        $this->tpl->setVariable("DISABLED_COUNT_PARTIAL_SOLUTIONS", " disabled=\"disabled\"");
                }

                $this->tpl->setVariable("TEXT_SCORE_MCMR", $this->lng->txt("tst_score_mcmr_questions"));
                $this->tpl->setVariable("ZERO_POINTS_WHEN_UNANSWERED", $this->lng->txt("tst_score_mcmr_zero_points_when_unanswered"));
                $this->tpl->setVariable("USE_SCORING_SYSTEM", $this->lng->txt("tst_score_mcmr_use_scoring_system"));
                $this->tpl->setVariable("TEXT_SCORE_MCMR_DESCRIPTION", $this->lng->txt("tst_score_mcmr_questions_description"));
                switch ($data["mc_scoring"])
                {
                        case SCORE_ZERO_POINTS_WHEN_UNANSWERED:
                                $this->tpl->setVariable("CHECKED_ZERO_POINTS_WHEN_UNANSWERED", " checked=\"checked\"");
                                break;
                        case SCORE_STANDARD_SCORE_SYSTEM:
                        default:
                                $this->tpl->setVariable("CHECKED_USE_SCORING_SYSTEM", " checked=\"checked\"");
                                break;
                }
                if ($total)
                {
                        $this->tpl->setVariable("DISABLED_ZERO_POINTS_WHEN_UNANSWERED", " disabled=\"disabled\"");
                        $this->tpl->setVariable("DISABLED_USE_SCORING_SYSTEM", " disabled=\"disabled\"");
                }

                $this->tpl->setVariable("TEXT_SCORE_CUTTING", $this->lng->txt("tst_score_cutting"));
                $this->tpl->setVariable("TEXT_CUT_QUESTION", $this->lng->txt("tst_score_cut_question"));
                $this->tpl->setVariable("TEXT_CUT_TEST", $this->lng->txt("tst_score_cut_test"));
                $this->tpl->setVariable("TEXT_SCORE_CUTTING_DESCRIPTION", $this->lng->txt("tst_score_cutting_description"));
                switch ($data["score_cutting"])
                {
                        case SCORE_CUT_QUESTION:
                                $this->tpl->setVariable("CHECKED_CUT_QUESTION", " checked=\"checked\"");
                                break;
                        case SCORE_CUT_TEST:
                        default:
                                $this->tpl->setVariable("CHECKED_CUT_TEST", " checked=\"checked\"");
                                break;
                }
                if ($total)
                {
                        $this->tpl->setVariable("DISABLED_CUT_QUESTION", " disabled=\"disabled\"");
                        $this->tpl->setVariable("DISABLED_CUT_TEST", " disabled=\"disabled\"");
                }
                
                $this->tpl->setVariable("TEXT_PASS_SCORING", $this->lng->txt("tst_pass_scoring"));
                $this->tpl->setVariable("TEXT_LASTPASS", $this->lng->txt("tst_pass_last_pass"));
                $this->tpl->setVariable("TEXT_BESTPASS", $this->lng->txt("tst_pass_best_pass"));
                $this->tpl->setVariable("TEXT_PASS_SCORING_DESCRIPTION", $this->lng->txt("tst_pass_scoring_description"));
                switch ($data["pass_scoring"])
                {
                        case SCORE_BEST_PASS:
                                $this->tpl->setVariable("CHECKED_BESTPASS", " checked=\"checked\"");
                                break;
                        case SCORE_LAST_PASS:
                        default:
                                $this->tpl->setVariable("CHECKED_LASTPASS", " checked=\"checked\"");
                                break;
                }
                if ($total)
                {
                        $this->tpl->setVariable("DISABLED_BESTPASS", " disabled=\"disabled\"");
                        $this->tpl->setVariable("DISABLED_LASTPASS", " disabled=\"disabled\"");
                }

                $this->tpl->setVariable("TEXT_INSTANT_FEEDBACK", $this->lng->txt("tst_instant_feedback"));
                $this->tpl->setVariable("TEXT_ANSWER_SPECIFIC_FEEDBACK", $this->lng->txt("tst_instant_feedback_answer_specific"));
                $this->tpl->setVariable("TEXT_SHOW_RESULTS", $this->lng->txt("tst_instant_feedback_results"));
                if ($data["answer_feedback_points"])
                {
                        $this->tpl->setVariable("CHECKED_SHOW_RESULTS", " checked=\"checked\"");
                }
                $this->tpl->setVariable("TEXT_SHOW_SOLUTION", $this->lng->txt("tst_instant_feedback_solution"));
                $this->tpl->setVariable("TEXT_INSTANT_FEEDBACK_DESCRIPTION", $this->lng->txt("tst_instant_feedback_description"));
                if ($data["instant_feedback_solution"])
                {
                        $this->tpl->setVariable("CHECKED_SHOW_SOLUTION", " checked=\"checked\"");
                }
                if ($data["answer_feedback"])
                {
                        $this->tpl->setVariable("CHECKED_ANSWER_SPECIFIC_FEEDBACK", " checked=\"checked\"");
                }
                $this->tpl->setVariable("TEXT_RESULTS_PRESENTATION", $this->lng->txt("tst_results_presentation"));
                $this->tpl->setVariable("TEXT_SHOW_PASS_DETAILS", $this->lng->txt("tst_show_pass_details"));
                if ($data["show_pass_details"])
                {
                        $this->tpl->setVariable("CHECKED_SHOW_PASS_DETAILS", " checked=\"checked\"");
                }
                $this->tpl->setVariable("TEXT_SHOW_SOLUTION_DETAILS", $this->lng->txt("tst_show_solution_details"));
                if ($data["show_solution_details"])
                {
                        $this->tpl->setVariable("CHECKED_SHOW_SOLUTION_DETAILS", " checked=\"checked\"");
                }
                $this->tpl->setVariable("TEXT_SHOW_SOLUTION_ANSWERS_ONLY", $this->lng->txt("tst_show_solution_answers_only"));
                if ($data["show_solution_answers_only"])
                {
                        $this->tpl->setVariable("CHECKED_SHOW_SOLUTION_ANSWERS_ONLY", " checked=\"checked\"");
                }
                $this->tpl->setVariable("TEXT_SHOW_SOLUTION_SIGNATURE", $this->lng->txt("tst_show_solution_signature"));
                if ($this->object->getAnonymity())
                {
                        $this->tpl->setVariable("DISABLED_SHOW_SOLUTION_SIGNATURE", " disabled=\"disabled\"");
                }
                else
                {
                        if ($data["show_solution_signature"])
                        {
                                $this->tpl->setVariable("CHECKED_SHOW_SOLUTION_SIGNATURE", " checked=\"checked\"");
                        }
                }

                $this->tpl->setVariable("TEXT_SHOW_SOLUTION_FEEDBACK", $this->lng->txt("tst_show_solution_feedback"));
                if ($data["show_solution_feedback"])
                {
                        $this->tpl->setVariable("CHECKED_SHOW_SOLUTION_FEEDBACK", " checked=\"checked\"");
                }

                $this->tpl->setVariable("TEXT_SHOW_SOLUTION_PRINTVIEW", $this->lng->txt("tst_show_solution_printview"));
                $this->tpl->setVariable("TEXT_RESULTS_PRESENTATION_DESCRIPTION", $this->lng->txt("tst_results_presentation_description"));
                if ($data["show_solution_printview"])
                {
                        $this->tpl->setVariable("CHECKED_SHOW_SOLUTION_PRINTVIEW", " checked=\"checked\"");
                }

                $this->tpl->setVariable("TEXT_RESULTS_ACCESS", $this->lng->txt("tst_results_access"));
                $this->tpl->setVariable("TEXT_RESULTS_FINISHED", $this->lng->txt("tst_results_access_finished"));
                $this->tpl->setVariable("TEXT_RESULTS_DATE", $this->lng->txt("tst_results_access_date"));
                if ($data["results_access"] != REPORT_AFTER_DATE)
                {
                        $report = getdate(time()+60*60*24*7);
                        $date_input = ilUtil::makeDateSelect("reporting_date", $report["year"], $report["mon"], $report["mday"]);
                        $time_input = ilUtil::makeTimeSelect("reporting_time", true, "12", "0", "0");
                } else {
                        preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $this->object->getReportingDate(), $matches);
                        $date_input = ilUtil::makeDateSelect("reporting_date", $matches[1], sprintf("%d", $matches[2]), sprintf("%d", $matches[3]));
                        $time_input = ilUtil::makeTimeSelect("reporting_time", true, sprintf("%d", $matches[4]), sprintf("%d", $matches[5]), sprintf("%d", $matches[6]));
                }
                switch ($data["results_access"])
                {
                        case REPORT_ALWAYS:
                                $this->tpl->setVariable("CHECKED_RESULTS_ALWAYS", " checked=\"checked\"");
                                break;
                        case REPORT_AFTER_DATE:
                                $this->tpl->setVariable("CHECKED_RESULTS_DATE", " checked=\"checked\"");
                                break;
                        case REPORT_AFTER_TEST:
                        default:
                                $this->tpl->setVariable("CHECKED_RESULTS_FINISHED", " checked=\"checked\"");
                                break;
                }
                $this->tpl->setVariable("INPUT_REPORTING_DATE", $this->lng->txt("date") . ": " . $date_input . $this->lng->txt("time") . ": " . $time_input);
                $this->tpl->setVariable("IMG_REPORTING_DATE_CALENDAR", ilUtil::getImagePath("calendar.png"));
                $this->tpl->setVariable("TXT_REPORTING_DATE_CALENDAR", $this->lng->txt("open_calendar"));
                $this->tpl->setVariable("TEXT_RESULTS_ALWAYS", $this->lng->txt("tst_results_access_always"));
                $this->tpl->setVariable("TEXT_RESULTS_ACCESS_DESCRIPTION", $this->lng->txt("tst_results_access_description"));

                $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
                if ($ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        $this->tpl->setVariable("SAVE", $this->lng->txt("save"));
                }
                
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

ilObjTestGUI::searchParticipantsObject (  ) 

Definition at line 4828 of file class.ilObjTestGUI.php.

References inviteParticipantsObject().

        {
                $this->inviteParticipantsObject();
        }

Here is the call graph for this function:

ilObjTestGUI::showDetailedResultsObject (  ) 

Shows the pass overview and the answers of one ore more users for the scored pass.

Shows the pass overview and the answers of one ore more users for the scored pass

public

Definition at line 4326 of file class.ilObjTestGUI.php.

References $_SESSION, and showUserResults().

        {
                if (count($_POST))
                {
                        $_SESSION["show_user_results"] = $_POST["chbUser"];
                }
                $this->showUserResults($show_pass_details = TRUE, $show_answers = TRUE, $show_reached_points = TRUE);
        }

Here is the call graph for this function:

ilObjTestGUI::showPassOverviewObject (  ) 

Shows the pass overview of the scored pass for one ore more users.

Shows the pass overview of the scored pass for one ore more users

public

Definition at line 4358 of file class.ilObjTestGUI.php.

References $_SESSION, and showUserResults().

        {
                if (count($_POST))
                {
                        $_SESSION["show_user_results"] = $_POST["chbUser"];
                }
                $this->showUserResults($show_pass_details = TRUE, $show_answers = FALSE);
        }

Here is the call graph for this function:

ilObjTestGUI::showUserAnswersObject (  ) 

Shows the answers of one ore more users for the scored pass.

Shows the answers of one ore more users for the scored pass

public

Definition at line 4342 of file class.ilObjTestGUI.php.

References $_SESSION, and showUserResults().

        {
                if (count($_POST))
                {
                        $_SESSION["show_user_results"] = $_POST["chbUser"];
                }
                $this->showUserResults($show_pass_details = FALSE, $show_answers = TRUE);
        }

Here is the call graph for this function:

ilObjTestGUI::showUserResults ( show_pass_details,
show_answers,
show_reached_points = FALSE 
)

Shows the pass overview of the scored pass for one ore more users.

Shows the pass overview of the scored pass for one ore more users

public

Definition at line 4374 of file class.ilObjTestGUI.php.

References $_SESSION, $results, ilUtil::getStyleSheetLocation(), and ilUtil::sendInfo().

Referenced by showDetailedResultsObject(), showPassOverviewObject(), and showUserAnswersObject().

        {
                $template = new ilTemplate("tpl.il_as_tst_participants_result_output.html", TRUE, TRUE, "Modules/Test");
                
                if (count($_SESSION["show_user_results"]) == 0)
                {
                        ilUtil::sendInfo($this->lng->txt("select_one_user"), TRUE);
                        $this->ctrl->redirect($this, "participants");
                }

                include_once "./Modules/Test/classes/class.ilTestServiceGUI.php";
                $serviceGUI =& new ilTestServiceGUI($this->object);
                $count = 0;
                foreach ($_SESSION["show_user_results"] as $key => $active_id)
                {
                        $count++;
                        $results = "";
                        if ($this->object->getFixedParticipants())
                        {
                                $active_id = $this->object->getActiveIdOfUser($active_id);
                        }
                        if ($active_id > 0)
                        {
                                $results = $serviceGUI->getResultsOfUserOutput($active_id, $this->object->_getResultPass($active_id), $show_pass_details, $show_answers, FALSE, $show_reached_points);
                        }
                        if ($count < count($_SESSION["show_user_results"]))
                        {
                                $template->touchBlock("break");
                        }
                        $template->setCurrentBlock("user_result");
                        $template->setVariable("USER_RESULT", $results);
                        $template->parseCurrentBlock();
                }
                $template->setVariable("BACK_TEXT", $this->lng->txt("back"));
                $template->setVariable("BACK_URL", $this->ctrl->getLinkTargetByClass("ilobjtestgui", "participants"));
                $template->setVariable("PRINT_TEXT", $this->lng->txt("print"));
                $template->setVariable("PRINT_URL", "javascript:window.print();");
                
                $this->tpl->setVariable("ADM_CONTENT", $template->get());
                $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print");
                if ($this->object->getShowSolutionAnswersOnly())
                {
                        $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print_hide_content.css", "Modules/Test"), "print");
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjTestGUI::statisticsObject (  ) 

Definition at line 5302 of file class.ilObjTestGUI.php.

        {
        }

ilObjTestGUI::takenObject (  ) 

Definition at line 3234 of file class.ilObjTestGUI.php.

                               {
        }

ilObjTestGUI::uploadObject ( redirect = true  ) 

display status information or report errors messages in case of error

public

Definition at line 748 of file class.ilObjTestGUI.php.

References uploadTstObject().

        {
                $this->uploadTstObject();
        }

Here is the call graph for this function:

ilObjTestGUI::uploadTstObject (  ) 

imports test and question(s)

Definition at line 541 of file class.ilObjTestGUI.php.

References $_SESSION, $file, ilObjTest::_createImportDirectory(), ilObjTest::_getImportDirectory(), ilUtil::delDir(), ilUtil::getImagePath(), importObject(), ilUtil::moveUploadedFile(), ilUtil::sendInfo(), and ilUtil::unzip().

Referenced by importFileObject(), and uploadObject().

        {
                if ($_POST["qpl"] < 1)
                {
                        ilUtil::sendInfo($this->lng->txt("tst_select_questionpools"));
                        $this->importObject();
                        return;
                }

                if ($_FILES["xmldoc"]["error"] > UPLOAD_ERR_OK)
                {
                        ilUtil::sendInfo($this->lng->txt("error_upload"));
                        $this->importObject();
                        return;
                }
                include_once("./Modules/Test/classes/class.ilObjTest.php");
                // create import directory
                ilObjTest::_createImportDirectory();

                // copy uploaded file to import directory
                $file = pathinfo($_FILES["xmldoc"]["name"]);
                $full_path = ilObjTest::_getImportDirectory()."/".$_FILES["xmldoc"]["name"];
                ilUtil::moveUploadedFile($_FILES["xmldoc"]["tmp_name"], $_FILES["xmldoc"]["name"], $full_path);

                // unzip file
                ilUtil::unzip($full_path);

                // determine filenames of xml files
                $subdir = basename($file["basename"],".".$file["extension"]);
                $xml_file = ilObjTest::_getImportDirectory()."/".$subdir."/".$subdir.".xml";
                $qti_file = ilObjTest::_getImportDirectory()."/".$subdir."/". str_replace("test", "qti", $subdir).".xml";
                // start verification of QTI files
                include_once "./Services/QTI/classes/class.ilQTIParser.php";
                $qtiParser = new ilQTIParser($qti_file, IL_MO_VERIFY_QTI, 0, "");
                $result = $qtiParser->startParsing();
                $founditems =& $qtiParser->getFoundItems();
                
                if (count($founditems) == 0)
                {
                        // nothing found

                        // delete import directory
                        ilUtil::delDir(ilObjTest::_getImportDirectory());

                        ilUtil::sendInfo($this->lng->txt("tst_import_no_items"));
                        $this->importObject();
                        return;
                }
                
                $complete = 0;
                $incomplete = 0;
                foreach ($founditems as $item)
                {
                        if (strlen($item["type"]))
                        {
                                $complete++;
                        }
                        else
                        {
                                $incomplete++;
                        }
                }
                
                if ($complete == 0)
                {
                        // delete import directory
                        ilUtil::delDir(ilObjTest::_getImportDirectory());

                        ilUtil::sendInfo($this->lng->txt("qpl_import_non_ilias_files"));
                        $this->importObject();
                        return;
                }
                
                $_SESSION["tst_import_xml_file"] = $xml_file;
                $_SESSION["tst_import_qti_file"] = $qti_file;
                $_SESSION["tst_import_subdir"] = $subdir;
                // display of found questions
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.tst_import_verification.html");
                $row_class = array("tblrow1", "tblrow2");
                $counter = 0;
                foreach ($founditems as $item)
                {
                        $this->tpl->setCurrentBlock("verification_row");
                        $this->tpl->setVariable("ROW_CLASS", $row_class[$counter++ % 2]);
                        $this->tpl->setVariable("QUESTION_TITLE", $item["title"]);
                        $this->tpl->setVariable("QUESTION_IDENT", $item["ident"]);
                        include_once "./Services/QTI/classes/class.ilQTIItem.php";
                        switch ($item["type"])
                        {
                                case "MULTIPLE CHOICE QUESTION":
                                case QT_MULTIPLE_CHOICE_MR:
                                        $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("qt_multiple_choice"));
                                        break;
                                case "SINGLE CHOICE QUESTION":
                                case QT_MULTIPLE_CHOICE_SR:
                                        $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assSingleChoice"));
                                        break;
                                case "NUMERIC QUESTION":
                                case QT_NUMERIC:
                                        $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assNumeric"));
                                        break;
                                case "TEXTSUBSET QUESTION":
                                case QT_TEXTSUBSET:
                                        $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assTextSubset"));
                                        break;
                                case "CLOZE QUESTION":
                                case QT_CLOZE:
                                        $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assClozeTest"));
                                        break;
                                case "IMAGE MAP QUESTION":
                                case QT_IMAGEMAP:
                                        $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assImagemapQuestion"));
                                        break;
                                case "JAVA APPLET QUESTION":
                                case QT_JAVAAPPLET:
                                        $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assJavaApplet"));
                                        break;
                                case "MATCHING QUESTION":
                                case QT_MATCHING:
                                        $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assMatchingQuestion"));
                                        break;
                                case "ORDERING QUESTION":
                                case QT_ORDERING:
                                        $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assOrderingQuestion"));
                                        break;
                                case "TEXT QUESTION":
                                case QT_TEXT:
                                        $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assTextQuestion"));
                                        break;
                        }
                        $this->tpl->parseCurrentBlock();
                }
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("TEXT_TYPE", $this->lng->txt("question_type"));
                $this->tpl->setVariable("TEXT_TITLE", $this->lng->txt("question_title"));
                $this->tpl->setVariable("FOUND_QUESTIONS_INTRODUCTION", $this->lng->txt("tst_import_verify_found_questions"));
                $this->tpl->setVariable("VERIFICATION_HEADING", $this->lng->txt("import_tst"));
                $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("ARROW", ilUtil::getImagePath("arrow_downright.gif"));
                $this->tpl->setVariable("QUESTIONPOOL_ID", $_POST["qpl"]);
                $this->tpl->setVariable("VALUE_IMPORT", $this->lng->txt("import"));
                $this->tpl->setVariable("VALUE_CANCEL", $this->lng->txt("cancel"));
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

Here is the caller graph for this function:


The documentation for this class was generated from the following file: