ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
ilObjTestGUI Class Reference

Class ilObjTestGUI. More...

+ Inheritance diagram for ilObjTestGUI:
+ Collaboration diagram for ilObjTestGUI:

Public Member Functions

 __construct ()
 Constructor @access public. More...
 
 executeCommand ()
 execute command More...
 
 createUserResults ($show_pass_details, $show_answers, $show_reached_points, $show_user_results)
 
 runObject ()
 
 outEvaluationObject ()
 
 addDidacticTemplateOptions (array &$a_options)
 Add custom templates. More...
 
 afterSave (ilObject $a_new_object)
 save object @access public More...
 
 backToRepositoryObject ()
 
 uploadTstObject ()
 imports test and question(s) More...
 
 importVerifiedFileObject ()
 imports question(s) into the questionpool (after verification) More...
 
 uploadObject ($redirect=true)
 display status information or report errors messages in case of error More...
 
 downloadFileObject ()
 download file More...
 
 fullscreenObject ()
 show fullscreen view More...
 
 download_paragraphObject ()
 download source code paragraph More...
 
 filterObject ()
 Sets the filter for the question browser. More...
 
 resetFilterObject ()
 Resets the filter for the question browser. More...
 
 backObject ()
 Called when the back button in the question browser was pressed. More...
 
 createQuestionPool ($name="dummy", $description="")
 Creates a new questionpool and returns the reference id. More...
 
 randomselectObject ()
 Creates a form for random selection of questions. More...
 
 cancelRandomSelectObject ()
 Cancels the form for random selection of questions. More...
 
 createRandomSelectionObject ()
 Offers a random selection for insertion in the test. More...
 
 insertRandomSelectionObject ()
 Inserts a random selection into the test. More...
 
 browseForQuestionsObject ()
 
 executeCreateQuestionObject ()
 Called when a new question should be created from a test after confirmation. More...
 
 cancelCreateQuestionObject ()
 Called when the creation of a new question is cancelled. More...
 
 createQuestionObject ()
 Called when a new question should be created from a test. More...
 
 confirmRemoveQuestionsObject ()
 Remove questions from the test after confirmation. More...
 
 cancelRemoveQuestionsObject ()
 Cancels the removal of questions from the test. More...
 
 removeQuestionsForm ($checked_questions)
 Displays a form to confirm the removal of questions from the test. More...
 
 removeQuestionsObject ()
 Called when a selection of questions should be removed from the test. More...
 
 moveQuestionsObject ()
 Marks selected questions for moving. More...
 
 insertQuestionsBeforeObject ()
 Insert checked questions before the actual selection. More...
 
 insertQuestionsAfterObject ()
 Insert checked questions after the actual selection. More...
 
 insertQuestionsObject ()
 Insert questions from the questionbrowser into the test. More...
 
 addQuestionObject ()
 
 questionsObject ()
 
 takenObject ()
 
 confirmDeleteAllUserResultsObject ()
 Deletes all user data for the test object. More...
 
 confirmDeleteSelectedUserDataObject ()
 Deletes the selected user data for the test object. More...
 
 cancelDeleteSelectedUserDataObject ()
 Cancels the deletion of all user data for the test object. More...
 
 deleteAllUserDataObject ()
 Asks for a confirmation to delete all user data of the test object. More...
 
 deleteAllUserResultsObject ()
 Asks for a confirmation to delete all user data of the test object. More...
 
 deleteSingleUserResultsObject ()
 Asks for a confirmation to delete selected user data of the test object. More...
 
 historyObject ()
 Creates the change history for a test. More...
 
 initImportForm ($a_new_type)
 Init object import form. More...
 
 participantsActionObject ()
 Evaluates the actions on the participants page. More...
 
 participantsObject ()
 Creates the output of the test participants. More...
 
 timingOverviewObject ()
 
 timingObject ()
 
 showTimingFormObject ()
 
 applyFilterCriteria ($in_rows)
 
 fpSetFilterObject ()
 
 fpResetFilterObject ()
 
 npSetFilterObject ()
 
 npResetFilterObject ()
 
 showDetailedResultsObject ()
 Shows the pass overview and the answers of one ore more users for the scored pass. More...
 
 showUserAnswersObject ()
 Shows the answers of one ore more users for the scored pass. More...
 
 showPassOverviewObject ()
 Shows the pass overview of the scored pass for one ore more users. More...
 
 showUserResults ($show_pass_details, $show_answers, $show_reached_points=FALSE)
 Shows the pass overview of the scored pass for one ore more users. More...
 
 removeParticipantObject ()
 
 saveClientIPObject ()
 
 printobject ()
 Print tab to create a print of all questions with points and solutions. More...
 
 reviewobject ()
 Review tab to create a print of all questions without points and solutions. More...
 
 addParticipantsObject ($a_user_ids=array())
 
 deleteDefaultsObject ()
 Deletes selected test defaults. More...
 
 confirmedApplyDefaultsObject ()
 
 applyDefaultsObject ($confirmed=false)
 Applies the selected test defaults. More...
 
 addDefaultsObject ()
 Adds the defaults of this test to the defaults. More...
 
 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 More...
 
 redirectToInfoScreenObject ()
 
 addLocatorItems ()
 should be overwritten to add object specific items (repository items are preloaded) More...
 
 getBrowseForQuestionsTab (&$tabs_gui)
 
 getRandomQuestionsTab (&$tabs_gui)
 
 statisticsObject ()
 
 certificateObject ()
 Shows the certificate editor. More...
 
 getQuestionsSubTabs ()
 
 getStatisticsSubTabs ()
 
 getParticipantsSubTabs ()
 
 getTabs ()
 adds tabs to tab gui object More...
 
 buildPageViewToolbar ($qid=0)
 Questions per page. More...
 
 copyQuestionsToPoolObject ()
 
 copyQuestionsToPool ($questionIds, $qplId)
 
 copyQuestionToPool ($sourceQuestionId, $targetParentId)
 
 copyAndLinkQuestionsToPoolObject ()
 @global ilObjectDataCache $ilObjDataCache More...
 
 copyToQuestionpoolObject ()
 
 copyAndLinkToQuestionpoolObject ()
 
 createQuestionPoolAndCopyObject ()
 
 createQuestionpoolTargetObject ($cmd)
 Called when a new question should be created from a test Important: $cmd may be overwritten if no question pool is available. More...
 
 applyTemplate ($templateData, $object)
 
 saveOrderAndObligationsObject ()
 
 movePageObject ()
 
 showPageObject ()
 
 copyQuestionObject ()
 
- Public Member Functions inherited from ilObjectGUI
 executeCommand ()
 execute command More...
 
 withReferences ()
 determines wether objects are referenced or not (got ref ids or not) More...
 
 setCreationMode ($a_mode=true)
 if true, a creation screen is displayed the current $_GET[ref_id] don't belong to the current class! the mode is determined in ilrepositorygui More...
 
 getCreationMode ()
 get creation mode More...
 
 prepareOutput ($a_show_subobjects=true)
 prepare output More...
 
 getAdminTabs ()
 administration tabs show only permissions and trash folder More...
 
 getHTML ()
 
 confirmedDeleteObject ()
 confirmed deletion of object -> objects are moved to trash or deleted immediately, if trash is disabled More...
 
 cancelDeleteObject ()
 cancel deletion of object More...
 
 cancelObject ()
 cancel action and go back to previous page @access public More...
 
 createObject ()
 create new object form More...
 
 cancelCreation ()
 cancel create action and go back to repository parent More...
 
 saveObject ()
 save object More...
 
 editObject ()
 edit object More...
 
 addExternalEditFormCustom (ilPropertyFormGUI $a_form)
 
 updateObject ()
 updates object entry in object_data More...
 
 getFormAction ($a_cmd, $a_formaction="")
 get form action for command (command is method name without "Object", e.g. More...
 
 isVisible ($a_ref_id, $a_type)
 
 viewObject ()
 list childs of current object More...
 
 deleteObject ($a_error=false)
 Display deletion confirmation screen. More...
 
 cloneAllObject ()
 Clone single (not container object) Method is overwritten in ilContainerGUI. More...
 

Static Public Member Functions

static accessViolationRedirect ()
 
static _goto ($a_target)
 Redirect script to call a test with the test reference id. More...
 
- Static Public Member Functions inherited from ilObjectGUI
static _gotoRepositoryRoot ($a_raise_error=false)
 Goto repository root. More...
 
static _gotoRepositoryNode ($a_ref_id, $a_cmd="frameset")
 Goto repository root. More...
 

Data Fields

 $object = null
 
- Data Fields inherited from ilObjectGUI
const COPY_WIZARD_NEEDS_PAGE = 1
 
 $ilias
 
 $objDefinition
 
 $tpl
 
 $tree
 
 $lng
 
 $data
 
 $object
 
 $ref_id
 
 $obj_id
 
 $maxcount
 
 $formaction
 
 $return_location
 
 $target_frame
 
 $tab_target_script
 
 $actions
 
 $sub_objects
 
 $omit_locator = false
 
const CFORM_NEW = 1
 
const CFORM_IMPORT = 2
 
const CFORM_CLONE = 3
 

Protected Member Functions

 trackTestObjectReadEvent ()
 
 exportObject ()
 Gateway for exports initiated from workspace, as there is a generic forward to {objTypeMainGUI}::export() More...
 
 fetchAuthoringQuestionIdParameter ()
 
 importFileObject ($parent_id=null, $a_catch_errors=true)
 form for new test object import More...
 
 addFinishAllPassesButton ($unfinished_passes, $ilToolbar)
 
 removeImportFailsObject ()
 
 movePageFormObject ()
 Move current page. More...
 
 determineObjectiveOrientedContainer ()
 
 getObjectiveOrientedContainer ()
 
- Protected Member Functions inherited from ilObjectGUI
 assignObject ()
 
 setTitleAndDescription ()
 called by prepare output More...
 
 initHeaderAction ($a_sub_type=null, $a_sub_id=null)
 Add header action menu. More...
 
 insertHeaderAction ($a_list_gui)
 Insert header action into main template. More...
 
 addHeaderAction ()
 Add header action menu. More...
 
 redrawHeaderActionObject ()
 Ajax call: redraw action header only. More...
 
 showMountWebfolderIcon ()
 
 setTabs ()
 set admin tabs @access public More...
 
 setAdminTabs ()
 set admin tabs @access public More...
 
 setLocator ()
 set Locator More...
 
 addLocatorItems ()
 should be overwritten to add object specific items (repository items are preloaded) More...
 
 omitLocator ($a_omit=true)
 
 addAdminLocatorItems ($a_do_not_add_object=false)
 should be overwritten to add object specific items (repository items are preloaded) More...
 
 initCreationForms ($a_new_type)
 Init creation froms. More...
 
 getCreationFormsHTML (array $a_forms)
 Get HTML for creation forms (accordion) More...
 
 initCreateForm ($a_new_type)
 Init object creation form. More...
 
 initDidacticTemplate (ilPropertyFormGUI $form)
 Show didactic template types. More...
 
 addDidacticTemplateOptions (array &$a_options)
 Add custom templates. More...
 
 getDidacticTemplateVar ($a_type)
 Get didactic template setting from creation screen. More...
 
 putObjectInTree (ilObject $a_obj, $a_parent_node_id=null)
 Add object to tree at given position. More...
 
 afterSave (ilObject $a_new_object)
 Post (successful) object creation hook. More...
 
 initEditForm ()
 Init object edit form. More...
 
 initEditCustomForm (ilPropertyFormGUI $a_form)
 Add custom fields to update form. More...
 
 getEditFormValues ()
 Get values for edit form. More...
 
 getEditFormCustomValues (array &$a_values)
 Add values to custom edit fields. More...
 
 validateCustom (ilPropertyFormGUI $a_form)
 Validate custom values (if not possible with checkInput()) More...
 
 updateCustom (ilPropertyFormGUI $a_form)
 Insert custom update form values into object. More...
 
 afterUpdate ()
 Post (successful) object update hook. More...
 
 initImportForm ($a_new_type)
 Init object import form. More...
 
 importFileObject ($parent_id=null, $a_catch_errors=true)
 Import. More...
 
 afterImport (ilObject $a_new_object)
 Post (successful) object import hook. More...
 
 setFormAction ($a_cmd, $a_formaction)
 set specific form action for command More...
 
 getReturnLocation ($a_cmd, $a_location="")
 get return location for command (command is method name without "Object", e.g. More...
 
 setReturnLocation ($a_cmd, $a_location)
 set specific return location for command More...
 
 getTargetFrame ($a_cmd, $a_target_frame="")
 get target frame for command (command is method name without "Object", e.g. More...
 
 setTargetFrame ($a_cmd, $a_target_frame)
 set specific target frame for command More...
 
 showPossibleSubObjects ()
 show possible subobjects (pulldown menu) More...
 
 getTemplateFile ($a_cmd, $a_type="")
 get a template blockfile format: tpl. More...
 
 getTabs ()
 get tabs abstract method. More...
 
 __showButton ($a_cmd, $a_text, $a_target='')
 
 hitsperpageObject ()
 
__initTableGUI ()
 
 __setTableGUIBasicData (&$tbl, &$result_set, $a_from="")
 standard implementation for tables use 'from' variable use different initial setting of table More...
 
 redirectToRefId ($a_ref_id, $a_cmd="")
 redirects to (repository) view per ref id usually to a container and usually used at the end of a save/import method where the object gui type (of the new object) doesn't match with the type of the current $_GET["ref_id"] value More...
 
 fillCloneTemplate ($a_tpl_varname, $a_type)
 Fill object clone template This method can be called from any object GUI class that wants to offer object cloning. More...
 
 getCenterColumnHTML ()
 Get center column. More...
 
 getRightColumnHTML ()
 Display right column. More...
 
 setColumnSettings (ilColumnGUI $column_gui)
 May be overwritten in subclasses. More...
 
 checkPermission ($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
 Check permission and redirect on error. More...
 
 checkPermissionBool ($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
 Check permission. More...
 
 enableDragDropFileUpload ()
 Enables the file upload into this object by dropping files. More...
 
 handleAutoRating (ilObject $a_new_obj)
 Activate rating automatically if parent container setting. More...
 

Private Member Functions

 questionsTabGatewayObject ()
 
 userResultsGatewayObject ()
 
 forwardToEvaluationGUI ()
 
 forwardToEvalObjectiveOrientedGUI ()
 
 redirectTo_ilObjTestSettingsGeneralGUI_showForm_Object ()
 
 prepareSubGuiOutput ()
 prepares ilias to get output rendered by sub gui class More...
 
 populateQuestionBrowserToolbarButtons (ilToolbarGUI $toolbar, $context)
 
 formTimingObject ()
 
 isCommandClassAnyInfoScreenChild ()
 
 getQuestionpoolCreationForm ()
 
 isPdfDeliveryRequest ()
 

Private Attributes

 $testQuestionSetConfigFactory = null
 
 $testPlayerFactory = null
 
 $testSessionFactory = null
 
 $testSequenceFactory = null
 
 $objectiveOrientedContainer
 

Static Private Attributes

static $infoScreenChildClasses
 

Additional Inherited Members

- Protected Attributes inherited from ilObjectGUI
 $tmp_import_dir
 
 $tabs_gui = null
 
 $ctrl
 

Detailed Description

Class ilObjTestGUI.

Author
Helmut Schottmüller helmu.nosp@m.t.sc.nosp@m.hottm.nosp@m.uell.nosp@m.er@ma.nosp@m.c.co.nosp@m.m
Björn Heyser bheys.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Maximilian Becker mbeck.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Version
$Id$

@ilCtrl_Calls ilObjTestGUI: ilObjCourseGUI, ilObjectMetaDataGUI, ilCertificateGUI, ilPermissionGUI @ilCtrl_Calls ilObjTestGUI: ilTestPlayerFixedQuestionSetGUI, ilTestPlayerRandomQuestionSetGUI, ilTestPlayerDynamicQuestionSetGUI @ilCtrl_Calls ilObjTestGUI: ilLearningProgressGUI, ilMarkSchemaGUI @ilCtrl_Calls ilObjTestGUI: ilTestEvaluationGUI, ilTestEvalObjectiveOrientedGUI @ilCtrl_Calls ilObjTestGUI: ilAssGenFeedbackPageGUI, ilAssSpecFeedbackPageGUI @ilCtrl_Calls ilObjTestGUI: ilInfoScreenGUI, ilObjectCopyGUI, ilTestScoringGUI @ilCtrl_Calls ilObjTestGUI: ilRepositorySearchGUI, ilScoringAdjustmentGUI, ilTestExportGUI @ilCtrl_Calls ilObjTestGUI: assMultipleChoiceGUI, assClozeTestGUI, assMatchingQuestionGUI @ilCtrl_Calls ilObjTestGUI: assOrderingQuestionGUI, assImagemapQuestionGUI, assJavaAppletGUI @ilCtrl_Calls ilObjTestGUI: assNumericGUI, assErrorTextGUI, ilTestScoringByQuestionsGUI @ilCtrl_Calls ilObjTestGUI: assTextSubsetGUI, assOrderingHorizontalGUI, ilTestToplistGUI @ilCtrl_Calls ilObjTestGUI: assSingleChoiceGUI, assFileUploadGUI, assTextQuestionGUI, assFlashQuestionGUI @ilCtrl_Calls ilObjTestGUI: ilTestExpressPageObjectGUI, ilPageEditorGUI, ilAssQuestionPageGUI @ilCtrl_Calls ilObjTestGUI: ilObjQuestionPoolGUI, ilEditClipboardGUI @ilCtrl_Calls ilObjTestGUI: ilObjTestSettingsGeneralGUI, ilObjTestSettingsScoringResultsGUI @ilCtrl_Calls ilObjTestGUI: ilCommonActionDispatcherGUI, ilObjTestDynamicQuestionSetConfigGUI @ilCtrl_Calls ilObjTestGUI: ilTestRandomQuestionSetConfigGUI @ilCtrl_Calls ilObjTestGUI: ilAssQuestionHintsGUI, ilAssQuestionFeedbackEditingGUI, ilLocalUnitConfigurationGUI, assFormulaQuestionGUI @ilCtrl_Calls ilObjTestGUI: ilTestPassDetailsOverviewTableGUI @ilCtrl_Calls ilObjTestGUI: ilTestResultsToolbarGUI @ilCtrl_Calls ilObjTestGUI: ilTestSettingsChangeConfirmationGUI @ilCtrl_Calls ilObjTestGUI: ilTestSkillAdministrationGUI, ilTestSkillEvaluationGUI @ilCtrl_Calls ilObjTestGUI: ilAssQuestionPreviewGUI @ilCtrl_Calls ilObjTestGUI: assKprimChoiceGUI, assLongMenuGUI @ilCtrl_Calls ilObjTestGUI: ilTestQuestionBrowserTableGUI, ilTestInfoScreenToolbarGUI

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

Constructor & Destructor Documentation

◆ __construct()

ilObjTestGUI::__construct ( )

Constructor @access public.

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

79 {
80 global $lng, $ilCtrl, $ilDB, $ilPluginAdmin, $tree;
81 $lng->loadLanguageModule("assessment");
82 $this->type = "tst";
83 $this->ctrl = $ilCtrl;
84 $this->ctrl->saveParameter($this, array("ref_id", "test_ref_id", "calling_test", "test_express_mode", "q_id"));
85 parent::__construct("",$_GET["ref_id"], true, false);
86
87 if( $this->object instanceof ilObjTest )
88 {
89 require_once 'Modules/Test/classes/class.ilTestQuestionSetConfigFactory.php';
90 $this->testQuestionSetConfigFactory = new ilTestQuestionSetConfigFactory($tree, $ilDB, $ilPluginAdmin, $this->object);
91
92 require_once 'Modules/Test/classes/class.ilTestPlayerFactory.php';
93 $this->testPlayerFactory = new ilTestPlayerFactory($this->object);
94
95 require_once 'Modules/Test/classes/class.ilTestSessionFactory.php';
96 $this->testSessionFactory = new ilTestSessionFactory($this->object);
97
98 require_once 'Modules/Test/classes/class.ilTestSequenceFactory.php';
99 $this->testSequenceFactory = new ilTestSequenceFactory($ilDB, $lng, $ilPluginAdmin, $this->object);
100 }
101
102 require_once 'Modules/Test/classes/class.ilTestObjectiveOrientedContainer.php';
103 $this->objectiveOrientedContainer = new ilTestObjectiveOrientedContainer();
104 }
$_GET["client_id"]
global $ilCtrl
Definition: ilias.php:18
global $ilDB

References $_GET, $ilCtrl, $ilDB, ilObjectGUI\$lng, and ilObjectGUI\$tree.

Member Function Documentation

◆ _goto()

static ilObjTestGUI::_goto (   $a_target)
static

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_targetThe reference id of the test @access public

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

4474 {
4475 global $ilAccess, $ilErr, $lng;
4476
4477 if ($ilAccess->checkAccess("read", "", $a_target))
4478 {
4479 //include_once "./Services/Utilities/classes/class.ilUtil.php";
4480 $_GET["baseClass"] = "ilObjTestGUI";
4481 $_GET["cmd"] = "infoScreen";
4482 $_GET["ref_id"] = $a_target;
4483 include_once("ilias.php");
4484 exit;
4485 //ilUtil::redirect("ilias.php?baseClass=ilObjTestGUI&cmd=infoScreen&ref_id=$a_target");
4486 }
4487 else if ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID))
4488 {
4489 ilUtil::sendInfo(sprintf($lng->txt("msg_no_perm_read_item"),
4492 }
4493
4494 $ilErr->raiseError($lng->txt("msg_no_perm_read_lm"), $ilErr->FATAL);
4495 }
sprintf('%.4f', $callTime)
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
static _lookupObjId($a_id)
static _lookupTitle($a_id)
lookup object title
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
global $ilErr
Definition: raiseError.php:16

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

+ Here is the call graph for this function:

◆ accessViolationRedirect()

static ilObjTestGUI::accessViolationRedirect ( )
static

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

4458 {
4459 global $DIC; /* @var ILIAS\DI\Container $DIC */
4460
4461 ilUtil::sendInfo($DIC->language()->txt("no_permission"), true);
4462 $DIC->ctrl()->redirectByClass('ilObjTestGUI', "infoScreen");
4463 }
global $DIC

References $DIC, and ilUtil\sendInfo().

Referenced by ilTestServiceGUI\outCorrectSolution().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addDefaultsObject()

ilObjTestGUI::addDefaultsObject ( )

Adds the defaults of this test to the defaults.

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

3579 {
3580 if (strlen($_POST["name"]) > 0)
3581 {
3582 $this->object->addDefaults($_POST['name']);
3583 }
3584 else
3585 {
3586 ilUtil::sendInfo($this->lng->txt("tst_defaults_enter_name"));
3587 }
3588 $this->defaultsObject();
3589 }
$_POST["username"]

References $_POST, and ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ addDidacticTemplateOptions()

ilObjTestGUI::addDidacticTemplateOptions ( array &  $a_options)

Add custom templates.

Parameters
array$a_options

Reimplemented from ilObjectGUI.

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

1037 {
1038 include_once("./Modules/Test/classes/class.ilObjTest.php");
1039 $tst = new ilObjTest();
1040 $defaults = $tst->getAvailableDefaults();
1041 if (count($defaults))
1042 {
1043 foreach ($defaults as $row)
1044 {
1045 $a_options["tstdef_".$row["test_defaults_id"]] = array($row["name"],
1046 $this->lng->txt("tst_default_settings"));
1047 }
1048 }
1049
1050 // using template?
1051 include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
1053 if($templates)
1054 {
1055 foreach($templates as $item)
1056 {
1057 $a_options["tsttpl_".$item["id"]] = array($item["title"],
1058 nl2br(trim($item["description"])));
1059 }
1060 }
1061 }
static getAllSettingsTemplates($a_type, $a_include_auto_generated=false)
Get all settings templates of type.

References $row, and ilSettingsTemplate\getAllSettingsTemplates().

+ Here is the call graph for this function:

◆ addFinishAllPassesButton()

ilObjTestGUI::addFinishAllPassesButton (   $unfinished_passes,
  $ilToolbar 
)
protected
Parameters
$unfinished_passes
$ilToolbar

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

2841 {
2842 if($unfinished_passes)
2843 {
2844 $ilToolbar->addSeparator();
2845 $finish_all_user_passes_btn = ilLinkButton::getInstance();
2846 $finish_all_user_passes_btn->setCaption('finish_all_user_passes');
2847 $finish_all_user_passes_btn->setUrl($this->ctrl->getLinkTargetByClass('iltestevaluationgui', 'finishAllUserPasses'));
2848 $ilToolbar->addButtonInstance($finish_all_user_passes_btn);
2849 }
2850 }
static getInstance()
Factory.

References ilLinkButton\getInstance().

Referenced by participantsObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addLocatorItems()

ilObjTestGUI::addLocatorItems ( )

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

Reimplemented from ilObjectGUI.

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

3823 {
3824 global $ilLocator;
3825 switch ($this->ctrl->getCmd())
3826 {
3827 case "run":
3828 case "infoScreen":
3829 case "redirectToInfoScreen":
3830 case "start":
3831 case "resume":
3832 case "previous":
3833 case "next":
3834 case "summary":
3835 case "finishTest":
3836 case "outCorrectSolution":
3837 case "passDetails":
3838 case "showAnswersOfUser":
3839 case "outUserResultsOverview":
3840 case "backFromSummary":
3841 case "show_answers":
3842 case "setsolved":
3843 case "resetsolved":
3844 case "outTestSummary":
3845 case "outQuestionSummary":
3846 case "gotoQuestion":
3847 case "selectImagemapRegion":
3848 case "confirmSubmitAnswers":
3849 case "finalSubmission":
3850 case "postpone":
3851 case "outUserPassDetails":
3852 case "checkPassword":
3853 $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "infoScreen"), "", $_GET["ref_id"]);
3854 break;
3855 case "eval_stat":
3856 case "evalAllUsers":
3857 case "evalUserDetail":
3858 $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "eval_stat"), "", $_GET["ref_id"]);
3859 break;
3860 case "create":
3861 case "save":
3862 case "cancel":
3863 case "importFile":
3864 case "cloneAll":
3865 case "importVerifiedFile":
3866 case "cancelImport":
3867 break;
3868 default:
3869 $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, ""), "", $_GET["ref_id"]);
3870 break;
3871 }
3872 }

References $_GET.

◆ addParticipantsObject()

ilObjTestGUI::addParticipantsObject (   $a_user_ids = array())

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

3386 {
3387 $countusers = 0;
3388 // add users
3389 if (is_array($a_user_ids))
3390 {
3391 $i = 0;
3392 foreach ($a_user_ids as $user_id)
3393 {
3394 $client_ip = $_POST["client_ip"][$i];
3395 $this->object->inviteUser($user_id, $client_ip);
3396 $countusers++;
3397 $i++;
3398 }
3399 }
3400 $message = "";
3401 if ($countusers)
3402 {
3403 $message = $this->lng->txt("tst_invited_selected_users");
3404 }
3405 if (strlen($message))
3406 {
3407 ilUtil::sendInfo($message, TRUE);
3408 }
3409 else
3410 {
3411 ilUtil::sendInfo($this->lng->txt("tst_invited_nobody"), TRUE);
3412 return false;
3413 }
3414
3415 $this->ctrl->redirect($this, "participants");
3416 }

References $_POST, and ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ addQuestionObject()

ilObjTestGUI::addQuestionObject ( )

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

2096 {
2097 global $lng, $ilCtrl, $tpl;
2098 global $DIC; /* @var \ILIAS\DI\Container $DIC */
2099 $ilHelp = $DIC['ilHelp']; /* @var ilHelpGUI $ilHelp */
2100
2101 $subScreenId = array('createQuestion');
2102
2103 include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
2104
2105 $ilCtrl->setParameter($this, 'qtype', $_REQUEST['qtype']);
2106
2107 $form = new ilPropertyFormGUI();
2108
2109 $form->setFormAction($ilCtrl->getFormAction($this, "executeCreateQuestion"));
2110 $form->setTitle($lng->txt("ass_create_question"));
2111 include_once 'Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
2112
2113 $pool = new ilObjQuestionPool();
2114 $questionTypes = $pool->getQuestionTypes(false, true);
2115 $options = array();
2116
2117 // question type
2118 foreach($questionTypes as $label => $data)
2119 {
2120 $options[$data['question_type_id']] = $label;
2121 }
2122
2123 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
2124 $si = new ilSelectInputGUI($lng->txt("question_type"), "qtype");
2125 $si->setOptions($options);
2126 $form->addItem($si, true);
2127
2128 // position
2129 $questions = $this->object->getQuestionTitlesAndIndexes();
2130 if($questions)
2131 {
2132 $si = new ilSelectInputGUI($lng->txt("position"), "position");
2133 $options = array('0' => $lng->txt('first'));
2134 foreach($questions as $key => $title)
2135 {
2136 $options[$key] = $lng->txt('behind') . ' '. $title . ' ['.$this->lng->txt('question_id_short') . ': '. $key .']';
2137 }
2138 $si->setOptions($options);
2139 $si->setValue($_REQUEST['q_id']);
2140 $form->addItem($si, true);
2141 }
2142
2143 // content editing mode
2145 {
2146 $subScreenId[] = 'editMode';
2147
2148 $ri = new ilRadioGroupInputGUI($lng->txt("tst_add_quest_cont_edit_mode"), "add_quest_cont_edit_mode");
2149
2150 $ri->addOption(new ilRadioOption(
2151 $lng->txt('tst_add_quest_cont_edit_mode_default'),
2153 ));
2154
2155 $ri->addOption(new ilRadioOption(
2156 $lng->txt('tst_add_quest_cont_edit_mode_page_object'),
2158 ));
2159
2161
2162 $form->addItem($ri, true);
2163 }
2164 else
2165 {
2166 $hi = new ilHiddenInputGUI("question_content_editing_type");
2168 $form->addItem($hi, true);
2169 }
2170
2171 if($this->object->getPoolUsage())
2172 {
2173 $subScreenId[] = 'poolSelect';
2174
2175 // use pool
2176 $usage = new ilRadioGroupInputGUI($this->lng->txt("assessment_pool_selection"), "usage");
2177 $usage->setRequired(true);
2178 $no_pool = new ilRadioOption($this->lng->txt("assessment_no_pool"), 1);
2179 $usage->addOption($no_pool);
2180 $existing_pool = new ilRadioOption($this->lng->txt("assessment_existing_pool"), 3);
2181 $usage->addOption($existing_pool);
2182 $new_pool = new ilRadioOption($this->lng->txt("assessment_new_pool"), 2);
2183 $usage->addOption($new_pool);
2184 $form->addItem($usage);
2185
2186 $usage->setValue(1);
2187
2188 $questionpools = ilObjQuestionPool::_getAvailableQuestionpools(FALSE, FALSE, TRUE, FALSE, FALSE, "write");
2189 $pools_data = array();
2190 foreach($questionpools as $key => $p)
2191 {
2192 $pools_data[$key] = $p['title'];
2193 }
2194 $pools = new ilSelectInputGUI($this->lng->txt("select_questionpool"), "sel_qpl");
2195 $pools->setOptions($pools_data);
2196 $existing_pool->addSubItem($pools);
2197
2198 $name = new ilTextInputGUI($this->lng->txt("name"), "txt_qpl");
2199 $name->setSize(50);
2200 $name->setMaxLength(50);
2201 $new_pool->addSubItem($name);
2202 }
2203
2204 $form->addCommandButton("executeCreateQuestion", $lng->txt("create"));
2205 $form->addCommandButton("questions", $lng->txt("cancel"));
2206
2207 $ilHelp->setScreenId('assQuestions');
2208 $ilHelp->setSubScreenId(implode('_', $subScreenId));
2209
2210 return $tpl->setContent($form->getHTML());
2211 }
const ADDITIONAL_CONTENT_EDITING_MODE_DEFAULT
constant for additional content editing mode "default"
const ADDITIONAL_CONTENT_EDITING_MODE_PAGE_OBJECT
constant for additional content editing mode "pageobject"
This class represents a hidden form property in a property form.
static isAdditionalQuestionContentEditingModePageObjectEnabled()
returns the fact wether content editing with ilias page editor is enabled for questions or not
static _getAvailableQuestionpools($use_object_id=FALSE, $equal_points=FALSE, $could_be_offline=FALSE, $showPath=FALSE, $with_questioncount=FALSE, $permission="read", $usr_id="")
Returns the available question pools for the active user.
This class represents a property form user interface.
This class represents a property in a property form.
This class represents an option in a radio group.
This class represents a selection list property in a property form.
This class represents a text property in a property form.
if(!is_array($argv)) $options

References ilObjectGUI\$data, $DIC, $ilCtrl, ilObjectGUI\$lng, $options, $si, $title, ilObjectGUI\$tpl, ilObjQuestionPool\_getAvailableQuestionpools(), assQuestion\ADDITIONAL_CONTENT_EDITING_MODE_DEFAULT, assQuestion\ADDITIONAL_CONTENT_EDITING_MODE_PAGE_OBJECT, and ilObjAssessmentFolder\isAdditionalQuestionContentEditingModePageObjectEnabled().

+ Here is the call graph for this function:

◆ afterSave()

ilObjTestGUI::afterSave ( ilObject  $a_new_object)

save object @access public

Reimplemented from ilObjectGUI.

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

1068 {
1069 $tstdef = $this->getDidacticTemplateVar("tstdef");
1070 if ($tstdef)
1071 {
1072 $testDefaultsId = $tstdef;
1073 $testDefaults = ilObjTest::_getTestDefaults($testDefaultsId);
1074 $a_new_object->applyDefaults($testDefaults);
1075 }
1076
1077 $template_id = $this->getDidacticTemplateVar("tsttpl");
1078 if($template_id)
1079 {
1080 include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
1082
1083 $template_settings = $template->getSettings();
1084 if($template_settings)
1085 {
1086 $this->applyTemplate($template_settings, $a_new_object);
1087 }
1088
1089 $a_new_object->setTemplate($template_id);
1090 }
1091
1092 $a_new_object->saveToDb();
1093
1094 // always send a message
1095 ilUtil::sendSuccess($this->lng->txt("object_added"),true);
1096 $this->ctrl->setParameter($this, 'ref_id', $a_new_object->getRefId());
1097 $this->ctrl->redirectByClass('ilObjTestSettingsGeneralGUI');
1098 }
applyTemplate($templateData, $object)
static _getTestDefaults($test_defaults_id)
getDidacticTemplateVar($a_type)
Get didactic template setting from creation screen.
getRefId()
get reference id @access public
Settings template application class.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
$template_id
Definition: example_062.php:89

References $template_id, ilObjTest\_getTestDefaults(), applyTemplate(), ilObjectGUI\getDidacticTemplateVar(), ilObject\getRefId(), ilObjAssessmentFolderGUI\getSettingsTemplateConfig(), and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ applyDefaultsObject()

ilObjTestGUI::applyDefaultsObject (   $confirmed = false)

Applies the selected test defaults.

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

3480 {
3481 if( !is_array($_POST["chb_defaults"]) || 1 !== count($_POST["chb_defaults"]))
3482 {
3484 $this->lng->txt("tst_defaults_apply_select_one")
3485 );
3486
3487 return $this->defaultsObject();
3488 }
3489
3490 // do not apply if user datasets exist
3491 if($this->object->evalTotalPersons() > 0)
3492 {
3494 $this->lng->txt("tst_defaults_apply_not_possible")
3495 );
3496
3497 return $this->defaultsObject();
3498 }
3499
3500 $defaults =& $this->object->getTestDefaults($_POST["chb_defaults"][0]);
3501 $defaultSettings = unserialize($defaults["defaults"]);
3502
3503 if( isset($defaultSettings['isRandomTest']) )
3504 {
3505 if( $defaultSettings['isRandomTest'] )
3506 {
3507 $newQuestionSetType = ilObjTest::QUESTION_SET_TYPE_RANDOM;
3508 $this->object->setQuestionSetType(ilObjTest::QUESTION_SET_TYPE_RANDOM);
3509 }
3510 else
3511 {
3512 $newQuestionSetType = ilObjTest::QUESTION_SET_TYPE_FIXED;
3513 $this->object->setQuestionSetType(ilObjTest::QUESTION_SET_TYPE_FIXED);
3514 }
3515 }
3516 elseif( isset($defaultSettings['questionSetType']) )
3517 {
3518 $newQuestionSetType = $defaultSettings['questionSetType'];
3519 }
3520 $oldQuestionSetType = $this->object->getQuestionSetType();
3521 $questionSetTypeSettingSwitched = ( $oldQuestionSetType != $newQuestionSetType );
3522
3523 $oldQuestionSetConfig = $this->testQuestionSetConfigFactory->getQuestionSetConfigByType($oldQuestionSetType);
3524
3525 switch( true )
3526 {
3527 case !$questionSetTypeSettingSwitched:
3528 case !$oldQuestionSetConfig->doesQuestionSetRelatedDataExist():
3529 case $confirmed:
3530
3531 break;
3532
3533 default:
3534
3535 require_once 'Modules/Test/classes/confirmations/class.ilTestSettingsChangeConfirmationGUI.php';
3536 $confirmation = new ilTestSettingsChangeConfirmationGUI($this->lng, $this->object);
3537
3538 $confirmation->setFormAction( $this->ctrl->getFormAction($this) );
3539 $confirmation->setCancel($this->lng->txt('cancel'), 'defaults');
3540 $confirmation->setConfirm($this->lng->txt('confirm'), 'confirmedApplyDefaults');
3541
3542 $confirmation->setOldQuestionSetType($this->object->getQuestionSetType());
3543 $confirmation->setNewQuestionSetType($newQuestionSetType);
3544 $confirmation->setQuestionLossInfoEnabled(false);
3545 $confirmation->build();
3546
3547 $confirmation->populateParametersFromPost();
3548
3549 $this->tpl->setContent( $this->ctrl->getHTML($confirmation) );
3550
3551 return;
3552 }
3553
3554 if( $questionSetTypeSettingSwitched && $this->object->isOnline() )
3555 {
3556 $this->object->setOnline(false);
3557
3558 $info = $this->lng->txt("tst_set_offline_due_to_switched_question_set_type_setting");
3559
3560 ilUtil::sendInfo($info, true);
3561 }
3562
3563 $this->object->applyDefaults($defaults);
3564
3565 ilUtil::sendSuccess($this->lng->txt("tst_defaults_applied"), true);
3566
3567 if( $questionSetTypeSettingSwitched && $oldQuestionSetConfig->doesQuestionSetRelatedDataExist() )
3568 {
3569 $oldQuestionSetConfig->removeQuestionSetRelatedData();
3570 }
3571
3572 $this->ctrl->redirect($this, 'defaults');
3573 }
const QUESTION_SET_TYPE_RANDOM
type setting value for random question set
const QUESTION_SET_TYPE_FIXED
type setting value for fixed question set
$info
Definition: example_052.php:80

References $_POST, $info, ilObjTest\QUESTION_SET_TYPE_FIXED, ilObjTest\QUESTION_SET_TYPE_RANDOM, ilUtil\sendInfo(), and ilUtil\sendSuccess().

Referenced by confirmedApplyDefaultsObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ applyFilterCriteria()

ilObjTestGUI::applyFilterCriteria (   $in_rows)

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

3004 {
3005 global $ilDB;
3006 $sess_filter = $_SESSION['form_tst_participants_' . $this->ref_id]['selection'];
3007 $sess_filter = str_replace('"','',$sess_filter);
3008 $sess_filter = explode(':', $sess_filter);
3009 $filter = substr($sess_filter[2],0, strlen($sess_filter[2])-1);
3010
3011 if ($filter == 'all' || $filter == false)
3012 {
3013 return $in_rows; #unchanged - no filter.
3014 }
3015
3016 $with_result = array();
3017 $without_result = array();
3018 foreach ($in_rows as $row)
3019 {
3020 $result = $ilDB->query(
3021 'SELECT count(solution_id) count
3022 FROM tst_solutions
3023 WHERE active_fi = ' . $ilDB->quote($row['active_id'])
3024 );
3025 $count = $ilDB->fetchAssoc($result);
3026 $count = $count['count'];
3027
3028 if ($count == 0)
3029 {
3030 $without_result[] = $row;
3031 }
3032 else
3033 {
3034 $with_result[] = $row;
3035 }
3036 }
3037
3038 if ($filter == 'withSolutions')
3039 {
3040 return $with_result;
3041 }
3042 return $without_result;
3043
3044 }
$result
$_SESSION["AccountId"]

References $_SESSION, $ilDB, ilObjectGUI\$ref_id, $result, and $row.

Referenced by participantsObject().

+ Here is the caller graph for this function:

◆ applyTemplate()

ilObjTestGUI::applyTemplate (   $templateData,
  $object 
)

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

4961 {
4962 // map formFieldName => setterName
4963 $simpleSetters = array(
4964
4965 // general properties
4966 'use_pool' => 'setPoolUsage',
4967 'question_set_type' => 'setQuestionSetType',
4968
4969 // test intro properties
4970 'intro_enabled' => 'setIntroductionEnabled',
4971 'showinfo' => 'setShowInfo',
4972
4973 // test access properties
4974 'chb_starting_time' => 'setStartingTimeEnabled',
4975 'chb_ending_time' => 'setEndingTimeEnabled',
4976 'password_enabled' => 'setPasswordEnabled',
4977 'fixedparticipants' => 'setFixedParticipants',
4978 'limitUsers' => 'setLimitUsersEnabled',
4979
4980 // test run properties
4981 'nr_of_tries' => 'setNrOfTries',
4982 'chb_processing_time' => 'setEnableProcessingTime',
4983 'kiosk' => 'setKiosk',
4984 'examid_in_test_pass' => 'setShowExamIdInTestPassEnabled',
4985
4986 // question behavior properties
4987 'title_output' => 'setTitleOutput',
4988 'autosave' => null, // handled specially in loop below
4989 'chb_shuffle_questions' => 'setShuffleQuestions',
4990 'offer_hints' => 'setOfferingQuestionHintsEnabled',
4991 'instant_feedback' => 'setScoringFeedbackOptionsByArray',
4992 'obligations_enabled' => 'setObligationsEnabled',
4993
4994 // test sequence properties
4995 'chb_use_previous_answers' => 'setUsePreviousAnswers',
4996 'chb_show_cancel' => 'setShowCancel',
4997 'chb_postpone' => 'setPostponingEnabled',
4998 'list_of_questions' => 'setListOfQuestionsSettings',
4999 'chb_show_marker' => 'setShowMarker',
5000
5001 // test finish properties
5002 'enable_examview' => 'setEnableExamview',
5003 'showfinalstatement' => 'setShowFinalStatement',
5004 'redirection_enabled' => null, // handled specially in loop below
5005 'sign_submission' => 'setSignSubmission',
5006 'mailnotification' => 'setMailNotification',
5007
5008 // scoring options properties
5009 'count_system' => 'setCountSystem',
5010 'mc_scoring' => 'setMCScoring',
5011 'score_cutting' => 'setScoreCutting',
5012 'pass_scoring' => 'setPassScoring',
5013 'pass_deletion_allowed' => 'setPassDeletionAllowed',
5014
5015 // result summary properties
5016 'results_access_enabled' => 'setScoreReporting',
5017 'grading_status' => 'setShowGradingStatusEnabled',
5018 'grading_mark' => 'setShowGradingMarkEnabled',
5019
5020 // result details properties
5021 'solution_details' => 'setShowSolutionDetails',
5022 'solution_feedback' => 'setShowSolutionFeedback',
5023 'solution_suggested' => 'setShowSolutionSuggested',
5024 'solution_printview' => 'setShowSolutionPrintview',
5025 'highscore_enabled' => 'setHighscoreEnabled',
5026 'solution_signature' => 'setShowSolutionSignature',
5027 'examid_in_test_res' => 'setShowExamIdInTestResultsEnabled',
5028 'exp_sc_short' => 'setExportSettingsSingleChoiceShort',
5029
5030 // misc scoring & result properties
5031 'anonymity' => 'setAnonymity',
5032 'enable_archiving' => 'setEnableArchiving'
5033 );
5034
5035 if (!$templateData['results_presentation']['value'])
5036 {
5037 $templateData['results_presentation']['value'] = array();
5038 }
5039
5040 foreach($simpleSetters as $field => $setter)
5041 {
5042 if($templateData[$field] && strlen($setter))
5043 {
5044 $object->$setter($templateData[$field]['value']);
5045 continue;
5046 }
5047
5048 switch($field)
5049 {
5050 case 'autosave':
5051 if( $templateData[$field]['value'] > 0 )
5052 {
5053 $object->setAutosave(true);
5054 $object->setAutosaveIval($templateData[$field]['value'] * 1000);
5055 }
5056 else
5057 {
5058 $object->setAutosave(false);
5059 }
5060 break;
5061
5062 case 'redirection_enabled':
5063 /* if( $templateData[$field]['value'] > REDIRECT_NONE )
5064 {
5065 $object->setRedirectionMode($templateData[$field]['value']);
5066 }
5067 else
5068 {
5069 $object->setRedirectionMode(REDIRECT_NONE);
5070 } */
5071 if( strlen($templateData[$field]['value']) )
5072 {
5073 $object->setRedirectionMode(REDIRECT_ALWAYS);
5074 $object->setRedirectionUrl($templateData[$field]['value']);
5075 }
5076 else
5077 {
5078 $object->setRedirectionMode(REDIRECT_NONE);
5079 $object->setRedirectionUrl('');
5080 }
5081 }
5082 }
5083 }
const REDIRECT_NONE
Redirect after finishing test constants.
const REDIRECT_ALWAYS

References $object, REDIRECT_ALWAYS, and REDIRECT_NONE.

Referenced by afterSave().

+ Here is the caller graph for this function:

◆ backObject()

ilObjTestGUI::backObject ( )

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

Called when the back button in the question browser was pressed

@access public

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

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

◆ backToRepositoryObject()

ilObjTestGUI::backToRepositoryObject ( )

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

1101 {
1102 include_once "./Services/Utilities/classes/class.ilUtil.php";
1103 $path = $this->tree->getPathFull($this->object->getRefID());
1104 ilUtil::redirect($this->getReturnLocation("cancel","./ilias.php?baseClass=ilRepositoryGUI&cmd=frameset&ref_id=" . $path[count($path) - 2]["child"]));
1105 }
$path
Definition: aliased.php:25
getReturnLocation($a_cmd, $a_location="")
get return location for command (command is method name without "Object", e.g.
static redirect($a_script)
http redirect to other script

References $path, ilObjectGUI\getReturnLocation(), and ilUtil\redirect().

+ Here is the call graph for this function:

◆ browseForQuestionsObject()

ilObjTestGUI::browseForQuestionsObject ( )

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

1630 {
1631 $this->questionBrowser();
1632 }

◆ buildPageViewToolbar()

ilObjTestGUI::buildPageViewToolbar (   $qid = 0)

Questions per page.

Parameters

return

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

4504 {
4505 if($this->create_question_mode)
4506 return;
4507
4508 global $ilToolbar, $ilCtrl, $lng;
4509
4510 require_once 'Services/UIComponent/Button/classes/class.ilLinkButton.php';
4511
4512 $this->getQuestionsSubTabs();
4513
4514 $ilCtrl->saveParameter($this, 'q_mode');
4515
4516 $ilCtrl->setParameterByClass('iltestexpresspageobjectgui', 'test_express_mode', 1);
4517 $ilCtrl->setParameter($this, 'test_express_mode', 1);
4518 $ilCtrl->setParameterByClass('iltestexpresspageobjectgui', 'q_id', $_REQUEST['q_id']);
4519 $ilCtrl->setParameter($this, 'q_id', $_REQUEST['q_id']);
4520 $ilToolbar->setFormAction($ilCtrl->getFormActionByClass('iltestexpresspageobjectgui', 'edit'));
4521
4522 if($this->object->evalTotalPersons() == 0)
4523 {
4524 /*
4525 include_once 'Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
4526 $pool = new ilObjQuestionPool();
4527 $questionTypes = $pool->getQuestionTypes();$options = array();
4528 foreach($questionTypes as $label => $data) {
4529 $options[$data['question_type_id']] = $label;
4530 }
4531
4532 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
4533 $si = new ilSelectInputGUI($lng->txt("test_add_new_question"), "qtype");
4534 $si->setOptions($options);
4535 $ilToolbar->addInputItem($si, true);
4536 /*
4537 // use pool
4538 if ($this->object->isExpressModeQuestionPoolAllowed()) {
4539 include_once("./Services/Form/classes/class.ilCheckboxInputGUI.php");
4540 $cb = new ilCheckboxInputGUI($lng->txt("test_use_pool"), "use_pool");
4541 $ilToolbar->addInputItem($cb, true);
4542 }
4543 */
4544 $ilToolbar->addFormButton($lng->txt("ass_create_question"), "addQuestion");
4545
4546 $ilToolbar->addSeparator();
4547
4548 if($this->object->getPoolUsage())
4549 {
4550 require_once 'Modules/Test/classes/tables/class.ilTestQuestionBrowserTableGUI.php';
4551
4553
4554 $show_separator = true;
4555 }
4556 }
4557
4558 $questions = $this->object->getQuestionTitlesAndIndexes();
4559
4560 // desc
4561 $options = array();
4562 foreach($questions as $id => $label)
4563 {
4564 $options[$id] = $label . ' ['. $this->lng->txt('question_id_short') . ': ' . $id . ']';
4565 }
4566
4567 $optionKeys = array_keys($options);
4568
4569 if(!$options)
4570 {
4571 $options[] = $lng->txt('none');
4572 }
4573 //else if (count($options) > 1) {
4574// $addSeparator = false;
4575// if ($optionKeys[0] != $qid) {
4576// //$ilToolbar->addFormButton($lng->txt("test_prev_question"), "prevQuestion");
4577// $ilToolbar->addLink($lng->txt("test_prev_question"), $ilCtrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'prevQuestion'));
4578// $addSeparator = true;
4579// }
4580// else {
4581// $ilToolbar->addSpacer(45);
4582// }
4583//
4584// if ($optionKeys[count($optionKeys)-1] != $qid) {
4585// //$ilToolbar->addFormButton($lng->txt("test_next_question"), "nextQuestion");
4586// $ilToolbar->addLink($lng->txt("test_next_question"), $ilCtrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'nextQuestion'));
4587// $addSeparator = true;
4588// }
4589// else {
4590// $ilToolbar->addSpacer(45);
4591// }
4592//
4593// //if ($addSeparator) {
4594// $ilToolbar->addSeparator();
4595// //}
4596
4597 if(count($questions))
4598 {
4599 if(isset($show_separator) && $show_separator)
4600 {
4601 $ilToolbar->addSeparator();
4602 }
4603
4605 $btn->setCaption("test_prev_question");
4606 $btn->setUrl($ilCtrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'prevQuestion'));
4607 $ilToolbar->addButtonInstance($btn);
4608
4609 if( count($options) <= 1 || $optionKeys[0] == $qid )
4610 {
4611 $btn->setDisabled(true);
4612 }
4613
4615 $btn->setCaption("test_next_question");
4616 $btn->setUrl($ilCtrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'nextQuestion'));
4617 $ilToolbar->addButtonInstance($btn);
4618
4619 if( count($options) <= 1 || $optionKeys[count($optionKeys) - 1] == $qid )
4620 {
4621 $btn->setDisabled(true);
4622 }
4623 }
4624
4625 if(count($questions) > 1)
4626 {
4627
4628 $ilToolbar->addSeparator();
4629
4630 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
4631 $si = new ilSelectInputGUI($lng->txt("test_jump_to"), "q_id");
4632 $si->addCustomAttribute("onChange=\"forms['ilToolbar'].submit();\"");
4633 $si->setOptions($options);
4634
4635 if($qid)
4636 {
4637 $si->setValue($qid);
4638 }
4639
4640 $ilToolbar->addInputItem($si, true);
4641 }
4642
4643 $total = $this->object->evalTotalPersons();
4644
4645 /*if (count($options)) {
4646 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
4647 $si = new ilSelectInputGUI($lng->txt("test_jump_to"), "q_id");
4648 $si->addCustomAttribute("onChange=\"forms['ilToolbar'].submit();\"");
4649 $si->setOptions($options);
4650
4651 if ($qid) {
4652 $si->setValue($qid);
4653 }
4654
4655 $ilToolbar->addInputItem($si, true);
4656 }*/
4657
4658 if(count($questions) && !$total)
4659 {
4660 $ilCtrl->setParameter($this, 'q_id', $_REQUEST['q_id']);
4661 $ilToolbar->addSeparator();
4662 $ilToolbar->addButton($lng->txt("test_delete_page"), $ilCtrl->getLinkTarget($this, "removeQuestions"));
4663 }
4664
4665 if(count($questions) > 1 && !$total)
4666 {
4667 $ilToolbar->addSeparator();
4668 $ilToolbar->addButton($lng->txt("test_move_page"), $ilCtrl->getLinkTarget($this, "movePageForm"));
4669 }
4670
4671 global $ilAccess, $ilUser;
4672
4673 $online_access = false;
4674 if($this->object->getFixedParticipants())
4675 {
4676 include_once "./Modules/Test/classes/class.ilObjTestAccess.php";
4677 $online_access_result = ilObjTestAccess::_lookupOnlineTestAccess($this->object->getId(), $ilUser->getId());
4678 if($online_access_result === true)
4679 {
4680 $online_access = true;
4681 }
4682 }
4683
4684 if($this->object->isOnline() && $this->object->isComplete( $this->testQuestionSetConfigFactory->getQuestionSetConfig() ))
4685 {
4686 if((!$this->object->getFixedParticipants() || $online_access) && $ilAccess->checkAccess("read", "", $this->ref_id))
4687 {
4688 $testSession = $this->testSessionFactory->getSession();
4689
4690 $executable = $this->object->isExecutable($testSession, $ilUser->getId(), $allowPassIncrease = TRUE);
4691
4692 if($executable["executable"])
4693 {
4694 $player_factory = new ilTestPlayerFactory($this->object);
4695 $player_instance = $player_factory->getPlayerGUI();
4696
4697 if ($testSession->getActiveId() > 0)
4698 {
4699 $ilToolbar->addSeparator();
4700 $ilToolbar->addButton($lng->txt('tst_resume_test'), $ilCtrl->getLinkTarget($player_instance, 'resumePlayer'));
4701 }
4702 else
4703 {
4704 $ilToolbar->addSeparator();
4705 $ilToolbar->addButton($lng->txt('tst_start_test'), $ilCtrl->getLinkTarget($player_instance, 'startTest'));
4706 }
4707 }
4708 }
4709 }
4710 }
$total
Definition: Utf8Test.php:87
static _lookupOnlineTestAccess($a_test_id, $a_user_id)
Checks if a user is allowd to run an online exam.
populateQuestionBrowserToolbarButtons(ilToolbarGUI $toolbar, $context)
$ilUser
Definition: imgupload.php:18

References $ilCtrl, $ilUser, ilObjectGUI\$lng, $options, $si, $total, ilObjTestAccess\_lookupOnlineTestAccess(), ilTestQuestionBrowserTableGUI\CONTEXT_PAGE_VIEW, ilLinkButton\getInstance(), getQuestionsSubTabs(), and populateQuestionBrowserToolbarButtons().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cancelCreateQuestionObject()

ilObjTestGUI::cancelCreateQuestionObject ( )

Called when the creation of a new question is cancelled.

Called when the creation of a new question is cancelled

@access public

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

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

◆ cancelDeleteSelectedUserDataObject()

ilObjTestGUI::cancelDeleteSelectedUserDataObject ( )

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

Cancels the deletion of all user data for the test object

@access public

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

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

◆ cancelRandomSelectObject()

ilObjTestGUI::cancelRandomSelectObject ( )

Cancels the form for random selection of questions.

Cancels the form for random selection of questions

@access public

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

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

◆ cancelRemoveQuestionsObject()

ilObjTestGUI::cancelRemoveQuestionsObject ( )

Cancels the removal of questions from the test.

Cancels the removal of questions from the test

@access public

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

1892 {
1893 if ($_REQUEST['test_express_mode']) {
1894 $this->ctrl->setParameter($this, 'q_id', $_REQUEST['q_id']);
1895 $this->ctrl->redirect($this, "showPage");
1896 }
1897 else {
1898 $this->ctrl->redirect($this, "questions");
1899 }
1900 }

◆ certificateObject()

ilObjTestGUI::certificateObject ( )

Shows the certificate editor.

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

3913 {
3914 include_once "./Services/Certificate/classes/class.ilCertificateGUI.php";
3915 include_once "./Modules/Test/classes/class.ilTestCertificateAdapter.php";
3916 $output_gui = new ilCertificateGUI(new ilTestCertificateAdapter($this->object));
3917 $output_gui->certificateEditor();
3918 }
GUI class to create PDF certificates.

◆ confirmDeleteAllUserResultsObject()

ilObjTestGUI::confirmDeleteAllUserResultsObject ( )

Deletes all user data for the test object.

Deletes all user data for the test object

@access public

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

2399 {
2400 global $ilDB, $lng;
2401
2402 require_once 'Modules/Test/classes/class.ilTestParticipantData.php';
2403
2404 $participantData = new ilTestParticipantData($ilDB, $lng);
2405 $participantData->load($this->object->getTestId());
2406
2407 $this->object->removeTestResults($participantData);
2408
2409 ilUtil::sendSuccess($this->lng->txt("tst_all_user_data_deleted"), true);
2410 $this->ctrl->redirect($this, "participants");
2411 }

References $ilDB, ilObjectGUI\$lng, and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ confirmDeleteSelectedUserDataObject()

ilObjTestGUI::confirmDeleteSelectedUserDataObject ( )

Deletes the selected user data for the test object.

Deletes the selected user data for the test object

@access public

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

2421 {
2422 global $ilDB, $lng;
2423
2424 require_once 'Modules/Test/classes/class.ilTestParticipantData.php';
2425 $participantData = new ilTestParticipantData($ilDB, $lng);
2426
2427 if( $this->object->getFixedParticipants() )
2428 {
2429 $participantData->setUserIds($_POST["chbUser"]);
2430 }
2431 else
2432 {
2433 $participantData->setActiveIds($_POST["chbUser"]);
2434 }
2435
2436 $participantData->load($this->object->getTestId());
2437
2438 $this->object->removeTestResults($participantData);
2439
2440 ilUtil::sendSuccess($this->lng->txt("tst_selected_user_data_deleted"), true);
2441 $this->ctrl->redirect($this, "participants");
2442 }

References $_POST, $ilDB, ilObjectGUI\$lng, and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ confirmedApplyDefaultsObject()

ilObjTestGUI::confirmedApplyDefaultsObject ( )

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

3471 {
3472 $this->applyDefaultsObject(true);
3473 return;
3474 }
applyDefaultsObject($confirmed=false)
Applies the selected test defaults.

References applyDefaultsObject().

+ Here is the call graph for this function:

◆ confirmRemoveQuestionsObject()

ilObjTestGUI::confirmRemoveQuestionsObject ( )

Remove questions from the test after confirmation.

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

1825 {
1826 $removeQuestionIds = (array)$_POST["q_id"];
1827
1828 $questions = $this->object->getQuestionTitlesAndIndexes();
1829
1830 $this->object->removeQuestions($removeQuestionIds);
1831
1832 $this->object->saveCompleteStatus( $this->testQuestionSetConfigFactory->getQuestionSetConfig() );
1833
1834 ilUtil::sendSuccess($this->lng->txt("tst_questions_removed"));
1835
1836 if($_REQUEST['test_express_mode'])
1837 {
1838 $prev = null;
1839 $return_to = null;
1840 $deleted_tmp = $removeQuestionIds;
1841 $first = array_shift($deleted_tmp);
1842 foreach((array)$questions as $key => $value)
1843 {
1844 if(!in_array($key, $removeQuestionIds))
1845 {
1846 $prev = $key;
1847 if(!$first)
1848 {
1849 $return_to = $prev;
1850 break;
1851 }
1852 else continue;
1853 }
1854 else if($key == $first)
1855 {
1856 if($prev)
1857 {
1858 $return_to = $prev;
1859 break;
1860 }
1861 $first = array_shift($deleted_tmp);
1862 }
1863 }
1864
1865 if(
1866 count($questions) == count($removeQuestionIds) ||
1867 !$return_to
1868 )
1869 {
1870 $this->ctrl->setParameter($this, 'q_id', '');
1871 $this->ctrl->redirect($this, 'showPage');
1872 }
1873
1874 $this->ctrl->setParameter($this, 'q_id', $return_to);
1875 $this->ctrl->redirect($this, "showPage");
1876 }
1877 else
1878 {
1879 $this->ctrl->setParameter($this, 'q_id', '');
1880 $this->ctrl->redirect($this, 'questions');
1881 }
1882 }

References $_POST, and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ copyAndLinkQuestionsToPoolObject()

ilObjTestGUI::copyAndLinkQuestionsToPoolObject ( )

@global ilObjectDataCache $ilObjDataCache

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

4757 {
4758 global $ilObjDataCache;
4759
4760 $qplId = $ilObjDataCache->lookupObjId($_REQUEST['sel_qpl']);
4761 $result = $this->copyQuestionsToPool($_REQUEST['q_id'], $qplId);
4762
4763 foreach($result->ids as $oldId => $newId)
4764 {
4765 $questionInstance = assQuestion::_instanciateQuestion($oldId);
4766
4767 if( assQuestion::originalQuestionExists($questionInstance->getOriginalId()) )
4768 {
4769 $oldOriginal = assQuestion::_instanciateQuestion($questionInstance->getOriginalId());
4770 $oldOriginal->delete($oldOriginal->getId());
4771 }
4772
4773 $questionInstance->setNewOriginalId($newId);
4774 }
4775
4776 ilUtil::sendSuccess($this->lng->txt('tst_qst_added_to_pool_' . (count($result->ids) > 1 ? 'p' : 's')), true);
4777 $this->ctrl->redirect($this, 'questions');
4778 }
static originalQuestionExists($questionId)
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
copyQuestionsToPool($questionIds, $qplId)

References $result, assQuestion\_instanciateQuestion(), copyQuestionsToPool(), assQuestion\originalQuestionExists(), and ilUtil\sendSuccess().

Referenced by createQuestionPoolAndCopyObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ copyAndLinkToQuestionpoolObject()

ilObjTestGUI::copyAndLinkToQuestionpoolObject ( )

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

4814 {
4815 global $lng;
4816
4817 require_once 'Modules/TestQuestionPool/classes/class.assQuestion.php';
4818
4819 // #13761; All methods use for this request should be revised, thx japo ;-)
4820 if(
4821 'copyAndLinkToQuestionpool' == $this->ctrl->getCmd() &&
4822 (!isset($_REQUEST['q_id']) || !is_array($_REQUEST['q_id']))
4823 )
4824 {
4825 ilUtil::sendFailure($this->lng->txt('tst_no_question_selected_for_moving_to_qpl'), true);
4826 $this->ctrl->redirect($this, 'questions');
4827 }
4828
4829 if(isset($_REQUEST['q_id']) && is_array($_REQUEST['q_id']))
4830 {
4831 foreach($_REQUEST['q_id'] as $q_id)
4832 {
4834 {
4835 continue;
4836 }
4837
4839
4840 if($type !== 'tst')
4841 {
4842 ilUtil::sendFailure($lng->txt('tst_link_only_unassigned'), true);
4843 $this->ctrl->redirect($this, 'questions');
4844 return;
4845 }
4846 }
4847 }
4848
4849 $this->createQuestionpoolTargetObject('copyAndLinkQuestionsToPool');
4850 }
static _getOriginalId($question_id)
Returns the original id of a question.
static lookupParentObjId($questionId)
@global ilDBInterface $ilDB
createQuestionpoolTargetObject($cmd)
Called when a new question should be created from a test Important: $cmd may be overwritten if no que...
static _lookupType($a_id, $a_reference=false)
lookup object type
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.

References ilObjectGUI\$lng, assQuestion\_getOriginalId(), ilObject\_lookupType(), createQuestionpoolTargetObject(), assQuestion\lookupParentObjId(), assQuestion\originalQuestionExists(), and ilUtil\sendFailure().

Referenced by createQuestionPoolAndCopyObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ copyQuestionObject()

ilObjTestGUI::copyQuestionObject ( )

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

5193 {
5194 global $ilAccess;
5195 if (!$ilAccess->checkAccess("write", "", $this->ref_id))
5196 {
5197 // allow only write access
5198 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
5199 $this->ctrl->redirect($this, "infoScreen");
5200 }
5201
5202 if ($_REQUEST['q_id'] && !is_array($_REQUEST['q_id']))
5203 $ids = array($_REQUEST['q_id']);
5204 else if ($_REQUEST['q_id'])
5205 $ids = $_REQUEST['q_id'];
5206 else
5207 {
5208 ilUtil::sendFailure( $this->lng->txt('copy_no_questions_selected'), true );
5209 $this->ctrl->redirect($this, 'questions');
5210 }
5211
5212 $copy_count = 0;
5213
5214 $questionTitles = $this->object->getQuestionTitles();
5215
5216 foreach($ids as $id)
5217 {
5218 include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
5219 $question = assQuestion::_instanciateQuestionGUI($id);
5220 if ($question)
5221 {
5222 $title = $question->object->getTitle();
5223 $i = 2;
5224 while( in_array( $title . ' (' . $i . ')', $questionTitles ))
5225 $i++;
5226
5227 $title .= ' (' . $i . ')';
5228
5229 $questionTitles[] = $title;
5230
5231 $new_id = $question->object->duplicate(false, $title);
5232
5233 $clone = assQuestion::_instanciateQuestionGUI($new_id);
5234 $clone->object->setObjId($this->object->getId());
5235 $clone->object->saveToDb();
5236
5237 $this->object->insertQuestion( $this->testQuestionSetConfigFactory->getQuestionSetConfig(), $new_id, true );
5238
5239 $copy_count++;
5240 }
5241 }
5242
5243 ilUtil::sendSuccess($this->lng->txt('copy_questions_success'), true);
5244
5245 $this->ctrl->redirect($this, 'questions');
5246 }
static & _instanciateQuestionGUI($question_id)
Creates an instance of a question gui with a given question id.

References $title, assQuestion\_instanciateQuestionGUI(), ilUtil\sendFailure(), ilUtil\sendInfo(), and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ copyQuestionsToPool()

ilObjTestGUI::copyQuestionsToPool (   $questionIds,
  $qplId 
)

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

4719 {
4720 $newIds = array();
4721 foreach($questionIds as $q_id)
4722 {
4723 $newId = $this->copyQuestionToPool($q_id, $qplId);
4724 $newIds[$q_id] = $newId;
4725 }
4726
4727 $result = new stdClass();
4728 $result->ids = $newIds;
4729 $result->qpoolid = $qplId;
4730
4731 return $result;
4732 }
copyQuestionToPool($sourceQuestionId, $targetParentId)

References $result, and copyQuestionToPool().

Referenced by copyAndLinkQuestionsToPoolObject(), and copyQuestionsToPoolObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ copyQuestionsToPoolObject()

ilObjTestGUI::copyQuestionsToPoolObject ( )

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

4713 {
4714 $this->copyQuestionsToPool($_REQUEST['q_id'], $_REQUEST['sel_qpl']);
4715 $this->ctrl->redirect($this, 'questions');
4716 }

References copyQuestionsToPool().

+ Here is the call graph for this function:

◆ copyQuestionToPool()

ilObjTestGUI::copyQuestionToPool (   $sourceQuestionId,
  $targetParentId 
)

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

4735 {
4736 require_once 'Modules/TestQuestionPool/classes/class.assQuestion.php';
4737 $question_gui = assQuestion::instantiateQuestionGUI($sourceQuestionId);
4738
4739 $newtitle = $question_gui->object->getTitle();
4740 if ($question_gui->object->questionTitleExists($targetParentId, $question_gui->object->getTitle()))
4741 {
4742 $counter = 2;
4743 while ($question_gui->object->questionTitleExists($targetParentId, $question_gui->object->getTitle() . " ($counter)"))
4744 {
4745 $counter++;
4746 }
4747 $newtitle = $question_gui->object->getTitle() . " ($counter)";
4748 }
4749
4750 return $question_gui->object->createNewOriginalFromThisDuplicate($targetParentId, $newtitle);
4751 }
static instantiateQuestionGUI($a_question_id)
Creates an instance of a question gui with a given question id.
$counter

References $counter, and assQuestion\instantiateQuestionGUI().

Referenced by copyQuestionsToPool().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ copyToQuestionpoolObject()

ilObjTestGUI::copyToQuestionpoolObject ( )

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

4809 {
4810 $this->createQuestionpoolTargetObject('copyQuestionsToPool');
4811 }

References createQuestionpoolTargetObject().

+ Here is the call graph for this function:

◆ createQuestionObject()

ilObjTestGUI::createQuestionObject ( )

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

Called when a new question should be created from a test

@access public

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

1729 {
1730 global $ilUser;
1731 $this->getQuestionsSubTabs();
1732 //$this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_qpl_select.html", "Modules/Test");
1733 $questionpools =& $this->object->getAvailableQuestionpools(FALSE, FALSE, FALSE, TRUE, FALSE, "write");
1734
1735 if ($this->object->getPoolUsage()) {
1736 global $lng, $ilCtrl, $tpl;
1737
1738 include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
1739
1740 $form = new ilPropertyFormGUI();
1741 $form->setFormAction($ilCtrl->getFormAction($this, "executeCreateQuestion"));
1742 $form->setTitle($lng->txt("ass_create_question"));
1743 include_once 'Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
1744
1745
1746 $hidden = new ilHiddenInputGUI('sel_question_types');
1747 $hidden->setValue($_REQUEST["sel_question_types"]);
1748 $form->addItem($hidden);
1749
1750 // content editing mode
1752 {
1753 $ri = new ilRadioGroupInputGUI($lng->txt("tst_add_quest_cont_edit_mode"), "add_quest_cont_edit_mode");
1754
1755 $ri->addOption(new ilRadioOption(
1756 $lng->txt('tst_add_quest_cont_edit_mode_default'),
1758 ));
1759
1760 $ri->addOption(new ilRadioOption(
1761 $lng->txt('tst_add_quest_cont_edit_mode_page_object'),
1763 ));
1764
1766
1767 $form->addItem($ri, true);
1768 }
1769 else
1770 {
1771 $hi = new ilHiddenInputGUI("question_content_editing_type");
1773 $form->addItem($hi, true);
1774 }
1775
1776 // use pool
1777 $usage = new ilRadioGroupInputGUI($this->lng->txt("assessment_pool_selection"), "usage");
1778 $usage->setRequired(true);
1779 $no_pool = new ilRadioOption($this->lng->txt("assessment_no_pool"), 1);
1780 $usage->addOption($no_pool);
1781 $existing_pool = new ilRadioOption($this->lng->txt("assessment_existing_pool"), 3);
1782 $usage->addOption($existing_pool);
1783 $new_pool = new ilRadioOption($this->lng->txt("assessment_new_pool"), 2);
1784 $usage->addOption($new_pool);
1785 $form->addItem($usage);
1786
1787 $usage->setValue(1);
1788
1789 $questionpools = ilObjQuestionPool::_getAvailableQuestionpools(FALSE, FALSE, TRUE, FALSE, FALSE, "write");
1790 $pools_data = array();
1791 foreach($questionpools as $key => $p) {
1792 $pools_data[$key] = $p['title'];
1793 }
1794 $pools = new ilSelectInputGUI($this->lng->txt("select_questionpool"), "sel_qpl");
1795 $pools->setOptions($pools_data);
1796 $existing_pool->addSubItem($pools);
1797
1798
1799 $this->lng->loadLanguageModule('rbac');
1800 $name = new ilTextInputGUI($this->lng->txt("rbac_create_qpl"), "txt_qpl");
1801 $name->setSize(50);
1802 $name->setMaxLength(50);
1803 $new_pool->addSubItem($name);
1804
1805 $form->addCommandButton("executeCreateQuestion", $lng->txt("submit"));
1806 $form->addCommandButton("cancelCreateQuestion", $lng->txt("cancel"));
1807
1808 return $this->tpl->setVariable('ADM_CONTENT', $form->getHTML());
1809
1810 }
1811 else {
1812 global $ilCtrl;
1813
1814 $ilCtrl->setParameterByClass('iltestexpresspageobjectgui', 'sel_question_types', $_REQUEST["sel_question_types"]);
1815 $ilCtrl->setParameterByClass('iltestexpresspageobjectgui', 'add_quest_cont_edit_mode', $_REQUEST["add_quest_cont_edit_mode"]);
1816 $link = $ilCtrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'handleToolbarCommand','',false,false);
1817 ilUtil::redirect($link);
1818 }
1819 }

References $ilCtrl, $ilUser, ilObjectGUI\$lng, ilObjectGUI\$tpl, ilObjQuestionPool\_getAvailableQuestionpools(), assQuestion\ADDITIONAL_CONTENT_EDITING_MODE_DEFAULT, assQuestion\ADDITIONAL_CONTENT_EDITING_MODE_PAGE_OBJECT, getQuestionsSubTabs(), ilObjAssessmentFolder\isAdditionalQuestionContentEditingModePageObjectEnabled(), and ilUtil\redirect().

Referenced by executeCreateQuestionObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createQuestionPool()

ilObjTestGUI::createQuestionPool (   $name = "dummy",
  $description = "" 
)

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 @access public

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

1472 {
1473 global $tree;
1474 $parent_ref = $tree->getParentId($this->object->getRefId());
1475 include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php";
1476 $qpl = new ilObjQuestionPool();
1477 $qpl->setType("qpl");
1478 $qpl->setTitle($name);
1479 $qpl->setDescription($description);
1480 $qpl->create();
1481 $qpl->createReference();
1482 $qpl->putInTree($parent_ref);
1483 $qpl->setPermissions($parent_ref);
1484 $qpl->setOnline(1); // must be online to be available
1485 $qpl->saveToDb();
1486 return $qpl->getRefId();
1487 }

References ilObjectGUI\$tree.

Referenced by createQuestionPoolAndCopyObject(), and executeCreateQuestionObject().

+ Here is the caller graph for this function:

◆ createQuestionPoolAndCopyObject()

ilObjTestGUI::createQuestionPoolAndCopyObject ( )

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

4853 {
4854 $form = $this->getQuestionpoolCreationForm();
4855
4856 if ($_REQUEST['title'])
4857 {
4858 $title = $_REQUEST['title'];
4859 }
4860 else
4861 {
4862 $title = $_REQUEST['txt_qpl'];
4863 }
4864
4865 if (!$title)
4866 {
4867 ilUtil::sendInfo($this->lng->txt("questionpool_not_entered"));
4868 return $this->copyAndLinkToQuestionpoolObject();
4869 }
4870
4871 $ref_id = $this->createQuestionPool($title, $_REQUEST['description']);
4872 $_REQUEST['sel_qpl'] = $ref_id;
4873
4874 //if ($_REQUEST['link'])
4875 //{
4877 //}
4878 //else
4879 //{
4880 // $this->copyQuestionsToPoolObject();
4881 //}
4882 }
createQuestionPool($name="dummy", $description="")
Creates a new questionpool and returns the reference id.
copyAndLinkQuestionsToPoolObject()
@global ilObjectDataCache $ilObjDataCache

References ilObjectGUI\$ref_id, $title, copyAndLinkQuestionsToPoolObject(), copyAndLinkToQuestionpoolObject(), createQuestionPool(), getQuestionpoolCreationForm(), and ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ createQuestionpoolTargetObject()

ilObjTestGUI::createQuestionpoolTargetObject (   $cmd)

Called when a new question should be created from a test Important: $cmd may be overwritten if no question pool is available.

@access public

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

4891 {
4892 global $ilUser, $ilTabs;
4893 $this->getQuestionsSubTabs();
4894 $ilTabs->activateSubTab('edit_test_questions');
4895
4896 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_qpl_select_copy.html", "Modules/Test");
4897 $questionpools =& $this->object->getAvailableQuestionpools(FALSE, FALSE, FALSE, TRUE, FALSE, "write");
4898 if(count($questionpools) == 0)
4899 {
4900 $this->tpl->setCurrentBlock("option");
4901 $this->tpl->setVariable("VALUE_QPL", "");
4902 $this->tpl->parseCurrentBlock();
4903 }
4904 else
4905 {
4906 foreach($questionpools as $key => $value)
4907 {
4908 $this->tpl->setCurrentBlock("option");
4909 $this->tpl->setVariable("VALUE_OPTION", $key);
4910 $this->tpl->setVariable("TEXT_OPTION", $value["title"]);
4911 $this->tpl->parseCurrentBlock();
4912 }
4913 }
4914
4915 if(isset($_REQUEST['q_id']) && is_array($_REQUEST['q_id']))
4916 {
4917 foreach($_REQUEST['q_id'] as $id)
4918 {
4919 $this->tpl->setCurrentBlock("hidden");
4920 $this->tpl->setVariable("HIDDEN_NAME", "q_id[]");
4921 $this->tpl->setVariable("HIDDEN_VALUE", $id);
4922 $this->tpl->parseCurrentBlock();
4923 $this->tpl->setCurrentBlock("adm_content");
4924 }
4925 }
4926 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
4927
4928 if(count($questionpools) == 0)
4929 {
4930 $this->tpl->setVariable("TXT_QPL_SELECT", $this->lng->txt("tst_enter_questionpool"));
4931 $cmd = 'createQuestionPoolAndCopy';
4932 }
4933 else
4934 {
4935 $this->tpl->setVariable("TXT_QPL_SELECT", $this->lng->txt("tst_select_questionpool"));
4936 }
4937
4938 $this->tpl->setVariable("CMD_SUBMIT", $cmd);
4939 $this->tpl->setVariable("BTN_SUBMIT", $this->lng->txt("submit"));
4940 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
4941
4942 $createForm = $this->getQuestionpoolCreationForm();
4943 switch($cmd)
4944 {
4945 case 'copyAndLinkQuestionsToPool':
4946 $hidden = new ilHiddenInputGUI('link');
4947 $hidden->setValue(1);
4948 $createForm->addItem($hidden);
4949 break;
4950 case 'copyQuestionsToPool':
4951 break;
4952 }
4953 $createForm->setFormAction($this->ctrl->getFormAction($this));
4954
4955 $this->tpl->parseCurrentBlock();
4956 }
$cmd
Definition: sahs_server.php:35

References $cmd, $ilUser, getQuestionpoolCreationForm(), and getQuestionsSubTabs().

Referenced by copyAndLinkToQuestionpoolObject(), and copyToQuestionpoolObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createRandomSelectionObject()

ilObjTestGUI::createRandomSelectionObject ( )

Offers a random selection for insertion in the test.

Offers a random selection for insertion in the test

@access public

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

1542 {
1543 $this->getQuestionsSubTabs();
1544 $question_array = $this->object->randomSelectQuestions($_POST["nr_of_questions"], $_POST["sel_qpl"]);
1545 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_random_question_offer.html", "Modules/Test");
1546 $color_class = array("tblrow1", "tblrow2");
1547 $counter = 0;
1548 $questionpools =& $this->object->getAvailableQuestionpools(true);
1549 include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
1550 foreach ($question_array as $question_id)
1551 {
1552 $dataset = $this->object->getQuestionDataset($question_id);
1553 $this->tpl->setCurrentBlock("QTab");
1554 $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
1555 $this->tpl->setVariable("QUESTION_TITLE", $dataset->title);
1556 $this->tpl->setVariable("QUESTION_COMMENT", $dataset->description);
1557 $this->tpl->setVariable("QUESTION_TYPE", assQuestion::_getQuestionTypeName($dataset->type_tag));
1558 $this->tpl->setVariable("QUESTION_AUTHOR", $dataset->author);
1559 $this->tpl->setVariable("QUESTION_POOL", $questionpools[$dataset->obj_fi]["title"]);
1560 $this->tpl->parseCurrentBlock();
1561 $counter++;
1562 }
1563 if (count($question_array) == 0)
1564 {
1565 $this->tpl->setCurrentBlock("Emptytable");
1566 $this->tpl->setVariable("TEXT_NO_QUESTIONS_AVAILABLE", $this->lng->txt("no_questions_available"));
1567 $this->tpl->parseCurrentBlock();
1568 }
1569 else
1570 {
1571 $this->tpl->setCurrentBlock("Selectionbuttons");
1572 $this->tpl->setVariable("BTN_YES", $this->lng->txt("random_accept_sample"));
1573 $this->tpl->setVariable("BTN_NO", $this->lng->txt("random_another_sample"));
1574 $this->tpl->parseCurrentBlock();
1575 }
1576 $chosen_questions = join($question_array, ",");
1577 $this->tpl->setCurrentBlock("adm_content");
1578 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
1579 $this->tpl->setVariable("QUESTION_TITLE", $this->lng->txt("tst_question_title"));
1580 $this->tpl->setVariable("QUESTION_COMMENT", $this->lng->txt("description"));
1581 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("tst_question_type"));
1582 $this->tpl->setVariable("QUESTION_AUTHOR", $this->lng->txt("author"));
1583 $this->tpl->setVariable("QUESTION_POOL", $this->lng->txt("qpl"));
1584 $this->tpl->setVariable("VALUE_CHOSEN_QUESTIONS", $chosen_questions);
1585 $this->tpl->setVariable("VALUE_QUESTIONPOOL_SELECTION", $_POST["sel_qpl"]);
1586 $this->tpl->setVariable("VALUE_NR_OF_QUESTIONS", $_POST["nr_of_questions"]);
1587 $this->tpl->setVariable("TEXT_QUESTION_OFFER", $this->lng->txt("tst_question_offer"));
1588 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
1589 $this->tpl->parseCurrentBlock();
1590 }
static _getQuestionTypeName($type_tag)
Return the translation for a given question type tag.

References $_POST, $counter, assQuestion\_getQuestionTypeName(), and getQuestionsSubTabs().

+ Here is the call graph for this function:

◆ createUserResults()

ilObjTestGUI::createUserResults (   $show_pass_details,
  $show_answers,
  $show_reached_points,
  $show_user_results 
)
Parameters
$show_pass_details
$show_answers
$show_reached_points
$show_user_results
Returns
ilTemplate

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

843 {
844 global $ilTabs, $ilDB;
845
846 // prepare generation before contents are processed (needed for mathjax)
847 if( $this->isPdfDeliveryRequest() )
848 {
849 require_once 'Services/PDFGeneration/classes/class.ilPDFGeneration.php';
851 }
852
853 $ilTabs->setBackTarget(
854 $this->lng->txt('back'), $this->ctrl->getLinkTarget($this, 'participants')
855 );
856
857 if( $this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired() )
858 {
859 require_once 'Services/Link/classes/class.ilLink.php';
860 $courseLink = ilLink::_getLink($this->getObjectiveOrientedContainer()->getRefId());
861 $ilTabs->setBack2Target($this->lng->txt('back_to_objective_container'), $courseLink);
862 }
863
864 $template = new ilTemplate("tpl.il_as_tst_participants_result_output.html", TRUE, TRUE, "Modules/Test");
865
866 require_once 'Modules/Test/classes/toolbars/class.ilTestResultsToolbarGUI.php';
867 $toolbar = new ilTestResultsToolbarGUI($this->ctrl, $this->tpl, $this->lng);
868
869 $this->ctrl->setParameter($this, 'pdf', '1');
870 $toolbar->setPdfExportLinkTarget( $this->ctrl->getLinkTarget($this, $this->ctrl->getCmd()) );
871 $this->ctrl->setParameter($this, 'pdf', '');
872
873 if( $show_answers )
874 {
875 if( isset($_GET['show_best_solutions']) )
876 {
877 $_SESSION['tst_results_show_best_solutions'] = true;
878 }
879 elseif( isset($_GET['hide_best_solutions']) )
880 {
881 $_SESSION['tst_results_show_best_solutions'] = false;
882 }
883 elseif( !isset($_SESSION['tst_results_show_best_solutions']) )
884 {
885 $_SESSION['tst_results_show_best_solutions'] = false;
886 }
887
888 if( $_SESSION['tst_results_show_best_solutions'] )
889 {
890 $this->ctrl->setParameter($this, 'hide_best_solutions', '1');
891 $toolbar->setHideBestSolutionsLinkTarget($this->ctrl->getLinkTarget($this, $this->ctrl->getCmd()));
892 $this->ctrl->setParameter($this, 'hide_best_solutions', '');
893 }
894 else
895 {
896 $this->ctrl->setParameter($this, 'show_best_solutions', '1');
897 $toolbar->setShowBestSolutionsLinkTarget($this->ctrl->getLinkTarget($this, $this->ctrl->getCmd()));
898 $this->ctrl->setParameterByClass('', 'show_best_solutions', '');
899 }
900 }
901
902 require_once 'Modules/Test/classes/class.ilTestParticipantData.php';
903 $participantData = new ilTestParticipantData($ilDB, $this->lng);
904 if( $this->object->getFixedParticipants() )
905 {
906 $participantData->setUserIds($show_user_results);
907 }
908 else
909 {
910 $participantData->setActiveIds($show_user_results);
911 }
912 $participantData->load($this->object->getTestId());
913 $toolbar->setParticipantSelectorOptions($participantData->getOptionArray($show_user_results));
914
915 $toolbar->build();
916 $template->setVariable('RESULTS_TOOLBAR', $this->ctrl->getHTML($toolbar));
917
918 include_once "./Modules/Test/classes/class.ilTestServiceGUI.php";
919 $serviceGUI = new ilTestServiceGUI($this->object);
920 $serviceGUI->setObjectiveOrientedContainer($this->getObjectiveOrientedContainer());
921 $serviceGUI->setParticipantData($participantData);
922
923 $count = 0;
924 foreach ($show_user_results as $key => $active_id)
925 {
926 $count++;
927 $results = "";
928 if ($this->object->getFixedParticipants())
929 {
930 $active_id = $this->object->getActiveIdOfUser( $active_id );
931 }
932 if ($active_id > 0)
933 {
934 $results = $serviceGUI->getResultsOfUserOutput(
935 $this->testSessionFactory->getSession( $active_id ),
936 $active_id,
937 $this->object->_getResultPass( $active_id ),
938 $this,
939 $show_pass_details,
940 $show_answers,
941 FALSE,
942 $show_reached_points
943 );
944 }
945 if ($count < count( $show_user_results ))
946 {
947 $template->touchBlock( "break" );
948 }
949 $template->setCurrentBlock( "user_result" );
950 $template->setVariable( "USER_RESULT", $results );
951 $template->parseCurrentBlock();
952 }
953
954 if( $this->isPdfDeliveryRequest() )
955 {
956 require_once 'class.ilTestPDFGenerator.php';
957
959 $template->get(), ilTestPDFGenerator::PDF_OUTPUT_DOWNLOAD, $this->object->getTitle()
960 );
961 }
962 else
963 {
964 return $template;
965 }
966 }
static prepareGeneration()
Prepare the PDF generation This initializes the purpose for MathJax rendering It has to be called bef...
special template class to simplify handling of ITX/PEAR
static generatePDF($pdf_output, $output_mode, $filename=null)
Service GUI class for tests.
$results

References $_GET, $_SESSION, $ilDB, $results, ilLink\_getLink(), ilTestPDFGenerator\generatePDF(), getObjectiveOrientedContainer(), isPdfDeliveryRequest(), ilTestPDFGenerator\PDF_OUTPUT_DOWNLOAD, and ilPDFGeneration\prepareGeneration().

Referenced by showUserResults().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deleteAllUserDataObject()

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

DEPRECATED?

@access public

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

2466 {
2467 ilUtil::sendQuestion($this->lng->txt("confirm_delete_all_user_data"));
2468 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_maintenance.html", "Modules/Test");
2469
2470 $this->tpl->setCurrentBlock("confirm_delete");
2471 $this->tpl->setVariable("BTN_CONFIRM_DELETE_ALL", $this->lng->txt("confirm"));
2472 $this->tpl->setVariable("BTN_CANCEL_DELETE_ALL", $this->lng->txt("cancel"));
2473 $this->tpl->parseCurrentBlock();
2474
2475 $this->tpl->setCurrentBlock("adm_content");
2476 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
2477 $this->tpl->parseCurrentBlock();
2478 }
static sendQuestion($a_info="", $a_keep=false)
Send Question to Screen.

References ilUtil\sendQuestion().

+ Here is the call graph for this function:

◆ deleteAllUserResultsObject()

ilObjTestGUI::deleteAllUserResultsObject ( )

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

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

2484 {
2485 // display confirmation message
2486 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
2487 $cgui = new ilConfirmationGUI();
2488 $cgui->setFormAction($this->ctrl->getFormAction($this, "participants"));
2489 $cgui->setHeaderText($this->lng->txt("delete_all_user_data_confirmation"));
2490 $cgui->setCancel($this->lng->txt("cancel"), "participants");
2491 $cgui->setConfirm($this->lng->txt("proceed"), "confirmDeleteAllUserResults");
2492
2493 $this->tpl->setContent($cgui->getHTML());
2494 }
Confirmation screen class.

◆ deleteDefaultsObject()

ilObjTestGUI::deleteDefaultsObject ( )

Deletes selected test defaults.

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

3452 {
3453 if(isset($_POST['chb_defaults']) && is_array($_POST['chb_defaults']) && count($_POST['chb_defaults']))
3454 {
3455 foreach($_POST['chb_defaults'] as $test_default_id)
3456 {
3457 $this->object->deleteDefaults($test_default_id);
3458 }
3459 }
3460 else
3461 {
3462 ilUtil::sendInfo($this->lng->txt('select_one'));
3463 }
3464 $this->defaultsObject();
3465 }

References $_POST, and ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ deleteSingleUserResultsObject()

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

@access public

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

2504 {
2505 if (count($_POST["chbUser"]) == 0)
2506 {
2507 ilUtil::sendInfo($this->lng->txt("select_one_user"), TRUE);
2508 $this->ctrl->redirect($this, "participants");
2509 }
2510
2511 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
2512 $cgui = new ilConfirmationGUI();
2513 $cgui->setHeaderText($this->lng->txt("confirm_delete_single_user_data"));
2514
2515 $cgui->setFormAction($this->ctrl->getFormAction($this));
2516 $cgui->setCancel($this->lng->txt("cancel"), "cancelDeleteSelectedUserData");
2517 $cgui->setConfirm($this->lng->txt("confirm"), "confirmDeleteSelectedUserData");
2518
2519 include_once './Services/User/classes/class.ilObjUser.php';
2520 foreach ($_POST["chbUser"] as $key => $active_id)
2521 {
2522 if ($this->object->getFixedParticipants())
2523 {
2524 $user_id = $active_id;
2525 }
2526 else
2527 {
2528 $user_id = $this->object->_getUserIdFromActiveId($active_id);
2529 }
2530 $user = ilObjUser::_lookupName($user_id);
2531
2532 if ($this->object->getAnonymity())
2533 {
2534 $name = $this->lng->txt("anonymous");
2535 }
2536 else if($user["lastname"])
2537 {
2538 $name = $user["lastname"].", ".$user["firstname"]." (".
2539 $user["login"].")";
2540 }
2541 else
2542 {
2543 $name = $this->lng->txt("deleted_user");
2544 }
2545
2546 $cgui->addItem("chbUser[]", $active_id, $name,
2547 ilUtil::getImagePath("icon_usr.svg"), $this->lng->txt("usr"));
2548 }
2549
2550 $this->tpl->setContent($cgui->getHTML());
2551 }
static _lookupName($a_user_id)
lookup user name
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)

References $_POST, ilObjUser\_lookupName(), ilUtil\getImagePath(), and ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ determineObjectiveOrientedContainer()

ilObjTestGUI::determineObjectiveOrientedContainer ( )
protected

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

5267 {
5268 require_once 'Modules/Course/classes/Objectives/class.ilLOSettings.php';
5269 $containerObjId = (int)ilLOSettings::isObjectiveTest($this->ref_id);
5270
5271 $containerRefId = current(ilObject::_getAllReferences($containerObjId));
5272
5273 $this->objectiveOrientedContainer->setObjId($containerObjId);
5274 $this->objectiveOrientedContainer->setRefId($containerRefId);
5275 }
static isObjectiveTest($a_trst_ref_id)
Check if test ref_id is used in an objective course.
static _getAllReferences($a_id)
get all reference ids of object

References ilObject\_getAllReferences(), and ilLOSettings\isObjectiveTest().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ download_paragraphObject()

ilObjTestGUI::download_paragraphObject ( )

download source code paragraph

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

1420 {
1421 include_once("./Modules/TestQuestionPool/classes/class.ilAssQuestionPage.php");
1422 $pg_obj = new ilAssQuestionPage($_GET["pg_id"]);
1423 $pg_obj->send_paragraph ($_GET["par_id"], $_GET["downloadtitle"]);
1424 exit;
1425 }
Question page object.

References $_GET, and exit.

◆ downloadFileObject()

ilObjTestGUI::downloadFileObject ( )

download file

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

1397 {
1398 $file = explode("_", $_GET["file_id"]);
1399 include_once("./Modules/File/classes/class.ilObjFile.php");
1400 $fileObj = new ilObjFile($file[count($file) - 1], false);
1401 $fileObj->sendFile();
1402 exit;
1403 }
Class ilObjFile.
if(!file_exists("$old.txt")) if( $old===$new) if(file_exists("$new.txt")) $file

References $_GET, $file, and exit.

◆ executeCommand()

ilObjTestGUI::executeCommand ( )

execute command

Reimplemented from ilObjectGUI.

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

110 {
111 global $ilAccess, $ilNavigationHistory, $ilCtrl, $ilErr, $tpl, $lng, $ilTabs, $ilPluginAdmin, $ilDB, $tree, $ilias, $ilUser;
112
113 if((!$ilAccess->checkAccess("read", "", $_GET["ref_id"])))
114 {
115 $ilias->raiseError($this->lng->txt("permission_denied"), $ilias->error_obj->MESSAGE);
116 }
117
118 $cmd = $this->ctrl->getCmd("infoScreen");
119
120 $cmdsDisabledDueToOfflineStatus = array(
121 'resumePlayer', 'resumePlayer', 'outUserResultsOverview', 'outUserListOfAnswerPasses'
122 );
123
124 if(!$this->getCreationMode() && !$this->object->isOnline() && in_array($cmd, $cmdsDisabledDueToOfflineStatus))
125 {
126 $cmd = 'infoScreen';
127 }
128
129 $next_class = $this->ctrl->getNextClass($this);
130 $this->ctrl->setReturn($this, "infoScreen");
131
132 if(method_exists($this->object, "getTestStyleLocation")) $this->tpl->addCss($this->object->getTestStyleLocation("output"), "screen");
133
134 // add entry to navigation history
135 if(!$this->getCreationMode() &&
136 $ilAccess->checkAccess("read", "", $_GET["ref_id"])
137 )
138 {
139 $ilNavigationHistory->addItem($_GET["ref_id"],
140 "ilias.php?baseClass=ilObjTestGUI&cmd=infoScreen&ref_id=" . $_GET["ref_id"], "tst");
141 }
142
143 // elba hack for storing question id for inserting new question after
144 if($_REQUEST['prev_qid'])
145 {
146 global $___prev_question_id;
147 $___prev_question_id = $_REQUEST['prev_qid'];
148 $this->ctrl->setParameter($this, 'prev_qid', $_REQUEST['prev_qid']);
149 }
150
151 if( !$this->getCreationMode() && $this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesBroken() )
152 {
153 if( !$this->testQuestionSetConfigFactory->getQuestionSetConfig()->isValidRequestOnBrokenQuestionSetDepencies($next_class, $cmd) )
154 {
155 $this->ctrl->redirectByClass('ilObjTestGUI', 'infoScreen');
156 }
157 }
158
160
161 switch($next_class)
162 {
163 case 'iltestexportgui':
164 if(!$ilAccess->checkAccess('write', '', $this->ref_id))
165 {
166 $ilErr->raiseError($this->lng->txt('permission_denied'), $ilErr->WARNING);
167 }
168
169 $this->prepareOutput();
170 $this->addHeaderAction();
171 require_once 'Modules/Test/classes/class.ilTestExportGUI.php';
172 $ilCtrl->forwardCommand(new ilTestExportGUI($this));
173 break;
174
175 case "ilinfoscreengui":
176 $this->prepareOutput();
177 $this->addHeaderAction();
178 $this->infoScreen(); // forwards command
179 break;
180 case 'ilobjectmetadatagui':
181 if(!$ilAccess->checkAccess('write', '', $this->object->getRefId()))
182 {
183 $ilErr->raiseError($this->lng->txt('permission_denied'), $ilErr->WARNING);
184 }
185
186 $this->prepareOutput();
187 $this->addHeaderAction();
188 include_once 'Services/Object/classes/class.ilObjectMetaDataGUI.php';
189 $md_gui = new ilObjectMetaDataGUI($this->object);
190 $this->ctrl->forwardCommand($md_gui);
191 break;
192
193 case "iltestplayerfixedquestionsetgui":
195 require_once "./Modules/Test/classes/class.ilTestPlayerFixedQuestionSetGUI.php";
196 if(!$this->object->getKioskMode()) $this->prepareOutput();
197 $gui = new ilTestPlayerFixedQuestionSetGUI($this->object);
198 $gui->setObjectiveOrientedContainer($this->getObjectiveOrientedContainer());
199 $this->ctrl->forwardCommand($gui);
200 break;
201
202 case "iltestplayerrandomquestionsetgui":
204 require_once "./Modules/Test/classes/class.ilTestPlayerRandomQuestionSetGUI.php";
205 if(!$this->object->getKioskMode()) $this->prepareOutput();
206 $gui = new ilTestPlayerRandomQuestionSetGUI($this->object);
207 $gui->setObjectiveOrientedContainer($this->getObjectiveOrientedContainer());
208 $this->ctrl->forwardCommand($gui);
209 break;
210
211 case "iltestplayerdynamicquestionsetgui":
213 require_once "./Modules/Test/classes/class.ilTestPlayerDynamicQuestionSetGUI.php";
214 if (!$this->object->getKioskMode()) $this->prepareOutput();
215 $gui = new ilTestPlayerDynamicQuestionSetGUI($this->object);
216 $gui->setObjectiveOrientedContainer($this->getObjectiveOrientedContainer());
217 $this->ctrl->forwardCommand($gui);
218 break;
219
220 case "iltestevaluationgui":
221 $this->forwardToEvaluationGUI();
222 break;
223
224 case "iltestevalobjectiveorientedgui":
226 break;
227
228 case "iltestservicegui":
229 $this->prepareOutput();
230 $this->addHeaderAction();
231 require_once "./Modules/Test/classes/class.ilTestServiceGUI.php";
232 $serviceGUI = new ilTestServiceGUI($this->object);
233 $this->ctrl->forwardCommand($serviceGUI);
234 break;
235
236 case 'ilpermissiongui':
237 $this->prepareOutput();
238 $this->addHeaderAction();
239 include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
240 $perm_gui = new ilPermissionGUI($this);
241 $ret = $this->ctrl->forwardCommand($perm_gui);
242 break;
243
244 case "illearningprogressgui":
245 $this->prepareOutput();
246 $this->addHeaderAction();
247 require_once './Services/Tracking/classes/class.ilLearningProgressGUI.php';
248 $new_gui = new ilLearningProgressGUI(ilLearningProgressGUI::LP_CONTEXT_REPOSITORY, $this->object->getRefId());
249 $this->ctrl->forwardCommand($new_gui);
250
251 break;
252
253 case "ilcertificategui":
254 $this->prepareOutput();
255 $this->addHeaderAction();
256 require_once "./Services/Certificate/classes/class.ilCertificateGUI.php";
257 require_once "./Modules/Test/classes/class.ilTestCertificateAdapter.php";
258 $output_gui = new ilCertificateGUI(new ilTestCertificateAdapter($this->object));
259 $this->ctrl->forwardCommand($output_gui);
260 break;
261
262 case "iltestscoringgui":
263 $this->prepareOutput();
264 $this->addHeaderAction();
265 require_once "./Modules/Test/classes/class.ilTestScoringGUI.php";
266 $output_gui = new ilTestScoringGUI($this->object);
267 $this->ctrl->forwardCommand($output_gui);
268 break;
269
270 case 'ilmarkschemagui':
271 if(!$ilAccess->checkAccess('write', '', $this->object->getRefId()))
272 {
273 ilUtil::sendInfo($this->lng->txt('cannot_edit_test'), true);
274 $this->ctrl->redirect($this, 'infoScreen');
275 }
276 $this->prepareOutput();
277 $this->addHeaderAction();
278 require_once 'Modules/Test/classes/class.ilMarkSchemaGUI.php';
279 $mark_schema_gui = new ilMarkSchemaGUI($this->object);
280 $this->ctrl->forwardCommand($mark_schema_gui);
281 break;
282
283 case 'iltestscoringbyquestionsgui':
284 $this->prepareOutput();
285 $this->addHeaderAction();
286 include_once 'Modules/Test/classes/class.ilTestScoringByQuestionsGUI.php';
287 $output_gui = new ilTestScoringByQuestionsGUI($this->object);
288 $this->ctrl->forwardCommand($output_gui);
289 break;
290
291 case 'ilobjtestsettingsgeneralgui':
292 $this->prepareOutput();
293 $this->addHeaderAction();
294 require_once 'Modules/Test/classes/class.ilObjTestSettingsGeneralGUI.php';
296 $this->ctrl, $ilAccess, $this->lng, $this->tpl, $this->tree, $ilDB, $ilPluginAdmin, $ilUser, $this
297 );
298 $this->ctrl->forwardCommand($gui);
299 break;
300
301 case 'ilobjtestsettingsscoringresultsgui':
302 $this->prepareOutput();
303 $this->addHeaderAction();
304 require_once 'Modules/Test/classes/class.ilObjTestSettingsScoringResultsGUI.php';
306 $this->ctrl, $ilAccess, $this->lng, $this->tpl, $this->tree, $ilDB, $ilPluginAdmin, $this
307 );
308 $this->ctrl->forwardCommand($gui);
309 break;
310
311 case 'ilobjtestdynamicquestionsetconfiggui':
312 $this->prepareOutput();
313 $this->addHeaderAction();
314 require_once 'Modules/Test/classes/class.ilObjTestDynamicQuestionSetConfigGUI.php';
315 $gui = new ilObjTestDynamicQuestionSetConfigGUI($this->ctrl, $ilAccess, $ilTabs, $this->lng, $this->tpl, $ilDB, $tree, $ilPluginAdmin, $this->object);
316 $this->ctrl->forwardCommand($gui);
317 break;
318
319 case 'iltestrandomquestionsetconfiggui':
320 $this->prepareOutput();
321 $this->addHeaderAction();
322 require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetConfigGUI.php';
323 $gui = new ilTestRandomQuestionSetConfigGUI($this->ctrl, $ilAccess, $ilTabs, $this->lng, $this->tpl, $ilDB, $tree, $ilPluginAdmin, $this->object);
324 $this->ctrl->forwardCommand($gui);
325 break;
326
327 case 'iltestquestionbrowsertablegui':
328 $this->prepareOutput();
329 $this->addHeaderAction();
330 require_once 'Modules/Test/classes/tables/class.ilTestQuestionBrowserTableGUI.php';
331 $gui = new ilTestQuestionBrowserTableGUI($this->ctrl, $this->tpl, $ilTabs, $this->lng, $tree, $ilDB, $ilPluginAdmin, $this->object, $ilAccess);
332 $gui->setWriteAccess($ilAccess->checkAccess("write", "", $this->ref_id));
333 $gui->init();
334 $this->ctrl->forwardCommand($gui);
335 break;
336
337 case 'iltestskilladministrationgui':
338 $this->prepareOutput();
339 $this->addHeaderAction();
340 require_once 'Modules/Test/classes/class.ilTestSkillAdministrationGUI.php';
341 $gui = new ilTestSkillAdministrationGUI($ilias, $this->ctrl, $ilAccess, $ilTabs, $this->tpl, $this->lng, $ilDB, $tree, $ilPluginAdmin, $this->object, $this->ref_id);
342 $this->ctrl->forwardCommand($gui);
343 break;
344
345 case 'iltestskillevaluationgui':
346 $this->prepareOutput();
347 $this->addHeaderAction();
348
349 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionList.php';
350 if( $this->object->isDynamicTest() )
351 {
352 require_once 'Modules/Test/classes/class.ilObjTestDynamicQuestionSetConfig.php';
353 $dynamicQuestionSetConfig = new ilObjTestDynamicQuestionSetConfig($tree, $ilDB, $ilPluginAdmin, $this->object);
354 $dynamicQuestionSetConfig->loadFromDb();
355 $questionList = new ilAssQuestionList($ilDB, $this->lng, $ilPluginAdmin);
356 $questionList->setParentObjId($dynamicQuestionSetConfig->getSourceQuestionPoolId());
357 $questionList->setQuestionInstanceTypeFilter(ilAssQuestionList::QUESTION_INSTANCE_TYPE_ORIGINALS);
358 }
359 else
360 {
361 $questionList = new ilAssQuestionList($ilDB, $this->lng, $ilPluginAdmin);
362 $questionList->setParentObjId($this->object->getId());
363 $questionList->setQuestionInstanceTypeFilter(ilAssQuestionList::QUESTION_INSTANCE_TYPE_DUPLICATES);
364 }
365 $questionList->load();
366
367 require_once 'Modules/Test/classes/class.ilTestSessionFactory.php';
368 $testSessionFactory = new ilTestSessionFactory($this->object);
369 $testSession = $testSessionFactory->getSession();
370
371 require_once 'Modules/Test/classes/class.ilTestSkillEvaluationGUI.php';
372 $gui = new ilTestSkillEvaluationGUI($this->ctrl, $ilTabs, $this->tpl, $this->lng, $ilDB, $this->object);
373 $gui->setQuestionList($questionList);
374 $gui->setTestSession($testSession);
375 $gui->setObjectiveOrientedContainer($this->getObjectiveOrientedContainer());
376 $this->ctrl->forwardCommand($gui);
377 break;
378
379 case 'ilobjectcopygui':
380 $this->prepareOutput();
381 $this->addHeaderAction();
382 require_once './Services/Object/classes/class.ilObjectCopyGUI.php';
383 $cp = new ilObjectCopyGUI($this);
384 $cp->setType('tst');
385 $this->ctrl->forwardCommand($cp);
386 break;
387
388 case 'ilrepositorysearchgui':
389 $this->prepareOutput();
390 $this->addHeaderAction();
391 require_once './Services/Search/classes/class.ilRepositorySearchGUI.php';
392 $rep_search = new ilRepositorySearchGUI();
393 $rep_search->setCallback($this,
394 'addParticipantsObject',
395 array()
396 );
397
398 // Set tabs
399 $this->ctrl->setReturn($this, 'participants');
400 $ret =& $this->ctrl->forwardCommand($rep_search);
401 $this->tabs_gui->setTabActive('participants');
402 break;
403
404 case 'ilpageeditorgui':
405 case 'iltestexpresspageobjectgui':
406
407 require_once 'Modules/TestQuestionPool/classes/class.ilAssIncompleteQuestionPurger.php';
408 $incompleteQuestionPurger = new ilAssIncompleteQuestionPurger($ilDB);
409 $incompleteQuestionPurger->setOwnerId($ilUser->getId());
410 $incompleteQuestionPurger->purge();
411
412 try
413 {
414 $qid = $this->fetchAuthoringQuestionIdParameter();
415 }
416 catch(ilTestException $e)
417 {
418 $qid = 0;
419 }
420
421 $this->prepareOutput();
422 if(!in_array($cmd, array('addQuestion', 'browseForQuestions')))
423 {
424 $this->buildPageViewToolbar($qid);
425 }
426
427 if(!$qid || in_array($cmd, array('insertQuestions', 'browseForQuestions')))
428 {
429 require_once "./Modules/Test/classes/class.ilTestExpressPageObjectGUI.php";
430 $pageObject = new ilTestExpressPageObjectGUI (0);
431 $pageObject->test_object = $this->object;
432 $ret =& $this->ctrl->forwardCommand($pageObject);
433 break;
434 }
435 require_once "./Services/Style/Content/classes/class.ilObjStyleSheet.php";
436 $this->tpl->setCurrentBlock("ContentStyle");
437 $this->tpl->setVariable("LOCATION_CONTENT_STYLESHEET",
439 $this->tpl->parseCurrentBlock();
440
441 // syntax style
442 $this->tpl->setCurrentBlock("SyntaxStyle");
443 $this->tpl->setVariable("LOCATION_SYNTAX_STYLESHEET",
445 $this->tpl->parseCurrentBlock();
446 require_once "./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
447
448 $q_gui = assQuestionGUI::_getQuestionGUI("", $qid);
449 if(!($q_gui instanceof assQuestionGUI))
450 {
451 $this->ctrl->setParameterByClass('iltestexpresspageobjectgui', 'q_id', '');
452 $this->ctrl->redirectByClass('iltestexpresspageobjectgui', $this->ctrl->getCmd());
453 }
454
455 $q_gui->setRenderPurpose(assQuestionGUI::RENDER_PURPOSE_PREVIEW);
456
457 $q_gui->outAdditionalOutput();
458 $q_gui->object->setObjId($this->object->getId());
459
460 $q_gui->setTargetGuiClass(null);
461 $q_gui->setQuestionActionCmd(null);
462
463 $question = $q_gui->object;
464 $this->ctrl->saveParameter($this, "q_id");
465
466 #$this->lng->loadLanguageModule("content");
467 $this->ctrl->setReturnByClass("ilTestExpressPageObjectGUI", "view");
468 $this->ctrl->setReturn($this, "questions");
469
470 require_once "./Modules/TestQuestionPool/classes/class.ilAssQuestionPage.php";
471 require_once "./Modules/Test/classes/class.ilTestExpressPageObjectGUI.php";
472
473 $page_gui = new ilTestExpressPageObjectGUI($qid);
474 $page_gui->test_object = $this->object;
475 $page_gui->setEditPreview(true);
476 $page_gui->setEnabledTabs(false);
477 if(strlen($this->ctrl->getCmd()) == 0)
478 {
479 $this->ctrl->setCmdClass(get_class($page_gui));
480 $this->ctrl->setCmd("preview");
481 }
482
483 $page_gui->setQuestionHTML(array($q_gui->object->getId() => $q_gui->getPreview(TRUE)));
484 $page_gui->setTemplateTargetVar("ADM_CONTENT");
485
486 $page_gui->setOutputMode($this->object->evalTotalPersons() == 0 ? "edit" : 'preview');
487
488 $page_gui->setHeader($question->getTitle());
489 $page_gui->setFileDownloadLink($this->ctrl->getLinkTarget($this, "downloadFile"));
490 $page_gui->setFullscreenLink($this->ctrl->getLinkTarget($this, "fullscreen"));
491 $page_gui->setSourcecodeDownloadScript($this->ctrl->getLinkTarget($this));
492 $page_gui->setPresentationTitle($question->getTitle() . ' ['. $this->lng->txt('question_id_short') . ': ' . $question->getId() . ']');
493 $ret =& $this->ctrl->forwardCommand($page_gui);
494
495 global $ilTabs;
496 $ilTabs->activateTab('assQuestions');
497
498 $this->tpl->setContent($ret);
499 break;
500
501 case 'ilassquestionpreviewgui':
502
503 $this->prepareOutput();
504
505 $this->ctrl->saveParameter($this, "q_id");
506
507 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionPreviewGUI.php';
508 $gui = new ilAssQuestionPreviewGUI($this->ctrl, $this->tabs_gui, $this->tpl, $this->lng, $ilDB, $ilUser);
509
510 $gui->initQuestion($this->fetchAuthoringQuestionIdParameter(), $this->object->getId());
511 $gui->initPreviewSettings($this->object->getRefId());
512 $gui->initPreviewSession($ilUser->getId(), (int)$_GET['q_id']);
513 $gui->initHintTracking();
514 $gui->initStyleSheets();
515
516 $this->ctrl->forwardCommand($gui);
517
518 break;
519
520 case 'ilassquestionpagegui':
521
522 $_GET['q_id'] = $this->fetchAuthoringQuestionIdParameter();
523
524 require_once "./Modules/TestQuestionPool/classes/class.ilAssQuestionPageGUI.php";
525 //echo $_REQUEST['prev_qid'];
526 if($_REQUEST['prev_qid'])
527 {
528 $this->ctrl->setParameter($this, 'prev_qid', $_REQUEST['prev_qid']);
529 }
530
531 $this->prepareOutput();
532 //global $___test_express_mode;
533 //$___test_express_mode = true;
534 $_GET['calling_test'] = $this->object->getRefId();
535 include_once("./Services/Style/Content/classes/class.ilObjStyleSheet.php");
536 $this->tpl->setCurrentBlock("ContentStyle");
537 $this->tpl->setVariable("LOCATION_CONTENT_STYLESHEET",
539 $this->tpl->parseCurrentBlock();
540
541 // syntax style
542 $this->tpl->setCurrentBlock("SyntaxStyle");
543 $this->tpl->setVariable("LOCATION_SYNTAX_STYLESHEET",
545 $this->tpl->parseCurrentBlock();
546 require_once "./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
547 $q_gui = assQuestionGUI::_getQuestionGUI("", $_GET["q_id"]);
548 $q_gui->setRenderPurpose(assQuestionGUI::RENDER_PURPOSE_PREVIEW);
549 $q_gui->setQuestionTabs();
550 $q_gui->outAdditionalOutput();
551 $q_gui->object->setObjId($this->object->getId());
552 $question =& $q_gui->object;
553 $this->ctrl->saveParameter($this, "q_id");
554 $this->lng->loadLanguageModule("content");
555 $this->ctrl->setReturnByClass("ilAssQuestionPageGUI", "view");
556 $this->ctrl->setReturn($this, "questions");
557 $page_gui = new ilAssQuestionPageGUI($_GET["q_id"]);
558 $page_gui->setEditPreview(true);
559 if(strlen($this->ctrl->getCmd()) == 0)
560 {
561 $this->ctrl->setCmdClass(get_class($page_gui));
562 $this->ctrl->setCmd("preview");
563 }
564 $page_gui->setQuestionHTML(array($q_gui->object->getId() => $q_gui->getPreview(TRUE)));
565 $page_gui->setTemplateTargetVar("ADM_CONTENT");
566 $page_gui->setOutputMode($this->object->evalTotalPersons() == 0 ? "edit" : 'preview');
567 $page_gui->setHeader($question->getTitle());
568 $page_gui->setPresentationTitle($question->getTitle() . ' ['. $this->lng->txt('question_id_short') . ': ' . $question->getId() . ']');
569 $ret =& $this->ctrl->forwardCommand($page_gui);
570 $this->tpl->setContent($ret);
571 break;
572
573 case 'ilassspecfeedbackpagegui':
574 require_once "./Modules/TestQuestionPool/classes/feedback/class.ilAssSpecFeedbackPageGUI.php";
575 $pg_gui = new ilAssSpecFeedbackPageGUI((int) $_GET["feedback_id"]);
576 $this->ctrl->forwardCommand($pg_gui);
577 break;
578
579 case 'ilassgenfeedbackpagegui':
580 require_once "./Modules/TestQuestionPool/classes/feedback/class.ilAssGenFeedbackPageGUI.php";
581 $pg_gui = new ilAssGenFeedbackPageGUI((int) $_GET["feedback_id"]);
582 $this->ctrl->forwardCommand($pg_gui);
583 break;
584
585 case 'illocalunitconfigurationgui':
586 $this->prepareSubGuiOutput();
587
588 // set return target
589 $this->ctrl->setReturn($this, "questions");
590
591 // set context tabs
592 require_once 'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
594 $questionGUI->object->setObjId($this->object->getId());
595 $questionGUI->setQuestionTabs();
596
597 require_once 'Modules/TestQuestionPool/classes/class.ilLocalUnitConfigurationGUI.php';
598 require_once 'Modules/TestQuestionPool/classes/class.ilUnitConfigurationRepository.php';
600 new ilUnitConfigurationRepository((int)$_GET['q_id'])
601 );
602 $this->ctrl->forwardCommand($gui);
603 break;
604
605 case "ilcommonactiondispatchergui":
606 require_once "Services/Object/classes/class.ilCommonActionDispatcherGUI.php";
608 $this->ctrl->forwardCommand($gui);
609 break;
610
611 case 'ilassquestionhintsgui':
612
613 $this->prepareSubGuiOutput();
614
615 // set return target
616 $this->ctrl->setReturn($this, "questions");
617
618 // set context tabs
619 require_once 'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
621 $questionGUI->object->setObjId($this->object->getId());
622 $questionGUI->setQuestionTabs();
623
624 // forward to ilAssQuestionHintsGUI
625 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionHintsGUI.php';
626 $gui = new ilAssQuestionHintsGUI($questionGUI);
627
628 global $DIC; /* @var ILIAS\DI\Container $DIC */
629
630 $gui->setEditingEnabled(
631 $DIC->access()->checkAccess('write', '', $this->object->getRefId())
632 );
633
634 $ilCtrl->forwardCommand($gui);
635
636 break;
637
638 case 'ilassquestionfeedbackeditinggui':
639
640 $this->prepareSubGuiOutput();
641
642 // set return target
643 $this->ctrl->setReturn($this, "questions");
644
645 // set context tabs
646 require_once 'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
648 $questionGUI->object->setObjId($this->object->getId());
649 $questionGUI->setQuestionTabs();
650
651 // forward to ilAssQuestionFeedbackGUI
652 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionFeedbackEditingGUI.php';
653 $gui = new ilAssQuestionFeedbackEditingGUI($questionGUI, $ilCtrl, $ilAccess, $tpl, $ilTabs, $lng);
654 $ilCtrl->forwardCommand($gui);
655
656 break;
657
658 case 'iltesttoplistgui':
659 $this->prepareOutput();
660 require_once './Modules/Test/classes/class.ilTestToplistGUI.php';
661 $gui = new ilTestToplistGUI($this);
662 $this->ctrl->forwardCommand($gui);
663 break;
664
665 case 'ilscoringadjustmentgui':
666 $this->prepareOutput();
667 require_once './Modules/Test/classes/class.ilScoringAdjustmentGUI.php';
668 $gui = new ilScoringAdjustmentGUI($this->object);
669 $this->ctrl->forwardCommand($gui);
670 break;
671
672 case '':
673 case 'ilobjtestgui':
674 $this->prepareOutput();
675 $this->addHeaderAction();
676 if((strcmp($cmd, "properties") == 0) && ($_GET["browse"]))
677 {
678 $this->questionBrowser();
679 return;
680 }
681 if((strcmp($cmd, "properties") == 0) && ($_GET["up"] || $_GET["down"]))
682 {
683 $this->questionsObject();
684 return;
685 }
686 $cmd .= "Object";
687 $ret =& $this->$cmd();
688 break;
689 default:
690 // elba hack for storing question id for inserting new question after
691 if($_REQUEST['prev_qid'])
692 {
693 global $___prev_question_id;
694 $___prev_question_id = $_REQUEST['prev_qid'];
695 $this->ctrl->setParameterByClass('ilassquestionpagegui', 'prev_qid', $_REQUEST['prev_qid']);
696 $this->ctrl->setParameterByClass($_GET['sel_question_types'] . 'gui', 'prev_qid', $_REQUEST['prev_qid']);
697 }
698 $this->create_question_mode = true;
699 $this->prepareOutput();
700
701 $this->ctrl->setReturn($this, "questions");
702 require_once "./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
703 $q_gui =& assQuestionGUI::_getQuestionGUI($_GET['sel_question_types'], $this->fetchAuthoringQuestionIdParameter());
704 $q_gui->setEditContext(assQuestionGUI::EDIT_CONTEXT_AUTHORING);
705 $q_gui->object->setObjId($this->object->getId());
706 if(!$_GET['sel_question_types'])
708 else
709 {
710 $qType = $_GET['sel_question_types'];
711 }
712 $this->ctrl->setParameterByClass($qType . "GUI", 'prev_qid', $_REQUEST['prev_qid']);
713 $this->ctrl->setParameterByClass($qType . "GUI", 'test_ref_id', $_REQUEST['ref_id']);
714 $this->ctrl->setParameterByClass($qType . "GUI", 'q_id', $_REQUEST['q_id']);
715 if($_REQUEST['test_express_mode'])
716 $this->ctrl->setParameterByClass($qType . "GUI", 'test_express_mode', 1);
717
718 #global $___test_express_mode;
719 #$___test_express_mode = true;
720 if(!$q_gui->isSaveCommand())
721 $_GET['calling_test'] = $this->object->getRefId();
722
723 $q_gui->setQuestionTabs();
724 #unset($___test_express_mode);
725 $ret =& $this->ctrl->forwardCommand($q_gui);
726 break;
727 }
728 if ( !in_array(strtolower($_GET["baseClass"]), array('iladministrationgui', 'ilrepositorygui')) &&
729 $this->getCreationMode() != true)
730 {
731 $this->tpl->show();
732 }
733 }
Basic GUI class for assessment questions.
static _getQuestionGUI($question_type, $question_id=-1)
Creates a question gui representation and returns the alias to the question gui note: please do not u...
static getQuestionTypeFromDb($question_id)
get question type for question id
Generic feedback page GUI class.
Question page GUI class.
Specific feedback page GUI class.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
Class ilObjUserTrackingGUI.
Class ilLocalUnitConfigurationGUI.
static getSyntaxStylePath()
get syntax style path
static getContentStylePath($a_style_id)
get content style path
prepareSubGuiOutput()
prepares ilias to get output rendered by sub gui class
buildPageViewToolbar($qid=0)
Questions per page.
GUI class for the workflow of copying objects.
prepareOutput($a_show_subobjects=true)
prepare output
getCreationMode()
get creation mode
addHeaderAction()
Add header action menu.
Class ilObjectMetaDataGUI.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
Class ilScoringAdjustmentGUI.
Base Exception for all Exceptions relating to Modules/Test.
Export User Interface Class.
@ilCtrl_Calls ilTestExpressPageObjectGUI: assMultipleChoiceGUI, assClozeTestGUI, assMatchingQuestionG...
Scoring class for tests.
Scoring class for tests.
Class ilUnitConfigurationRepository.
$ret
Definition: parser.php:6

References $_GET, $cmd, $DIC, $ilCtrl, $ilDB, $ilErr, ilObjectGUI\$ilias, $ilUser, ilObjectGUI\$lng, $object, $ret, $testSessionFactory, ilObjectGUI\$tpl, ilObjectGUI\$tree, assQuestionGUI\_getQuestionGUI(), ilObjectGUI\addHeaderAction(), buildPageViewToolbar(), determineObjectiveOrientedContainer(), assQuestionGUI\EDIT_CONTEXT_AUTHORING, fetchAuthoringQuestionIdParameter(), forwardToEvalObjectiveOrientedGUI(), forwardToEvaluationGUI(), ilObjStyleSheet\getContentStylePath(), ilObjectGUI\getCreationMode(), ilCommonActionDispatcherGUI\getInstanceFromAjaxCall(), getObjectiveOrientedContainer(), assQuestion\getQuestionTypeFromDb(), ilObjStyleSheet\getSyntaxStylePath(), ilLearningProgressBaseGUI\LP_CONTEXT_REPOSITORY, ilObjectGUI\prepareOutput(), prepareSubGuiOutput(), ilAssQuestionList\QUESTION_INSTANCE_TYPE_DUPLICATES, ilAssQuestionList\QUESTION_INSTANCE_TYPE_ORIGINALS, questionsObject(), assQuestionGUI\RENDER_PURPOSE_PREVIEW, ilUtil\sendInfo(), and trackTestObjectReadEvent().

+ Here is the call graph for this function:

◆ executeCreateQuestionObject()

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

@access public

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

1642 {
1643 $qpl_ref_id = $_REQUEST["sel_qpl"];
1644
1645 $qpl_mode = $_REQUEST['usage'];
1646
1647 if(isset($_REQUEST['qtype']))
1648 {
1649 include_once 'Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
1650 $sel_question_types = ilObjQuestionPool::getQuestionTypeByTypeId($_REQUEST["qtype"]);
1651 }
1652 else if(isset($_REQUEST['sel_question_types']))
1653 {
1654 $sel_question_types = $_REQUEST["sel_question_types"];
1655 }
1656
1657 if (!$qpl_mode || ($qpl_mode == 2 && strcmp($_REQUEST["txt_qpl"], "") == 0) || ($qpl_mode == 3 && strcmp($qpl_ref_id, "") == 0))
1658 //if ((strcmp($_REQUEST["txt_qpl"], "") == 0) && (strcmp($qpl_ref_id, "") == 0))
1659 {
1660 // Mantis #14890
1661 $_REQUEST['sel_question_types'] = $sel_question_types;
1662 ilUtil::sendInfo($this->lng->txt("questionpool_not_entered"));
1663 $this->createQuestionObject();
1664 return;
1665 }
1666 else
1667 {
1668 $_SESSION["test_id"] = $this->object->getRefId();
1669 if ($qpl_mode == 2 && strcmp($_REQUEST["txt_qpl"], "") != 0)
1670 {
1671 // create a new question pool and return the reference id
1672 $qpl_ref_id = $this->createQuestionPool($_REQUEST["txt_qpl"]);
1673 }
1674 else if ($qpl_mode == 1)
1675 {
1676 $qpl_ref_id = $_GET["ref_id"];
1677 }
1678
1679 include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPoolGUI.php";
1680 $baselink = "ilias.php?baseClass=ilObjQuestionPoolGUI&ref_id=" . $qpl_ref_id . "&cmd=createQuestionForTest&test_ref_id=".$_GET["ref_id"]."&calling_test=".$_GET["ref_id"]."&sel_question_types=" . $sel_question_types;
1681
1682 if (isset($_REQUEST['prev_qid']))
1683 {
1684 $baselink .= '&prev_qid=' . $_REQUEST['prev_qid'];
1685 }
1686 else if(isset($_REQUEST['position']))
1687 {
1688 $baselink .= '&prev_qid=' . $_REQUEST['position'];
1689 }
1690
1691 if ($_REQUEST['test_express_mode']) {
1692 $baselink .= '&test_express_mode=1';
1693 }
1694
1695 if( isset($_REQUEST['add_quest_cont_edit_mode']) )
1696 {
1698 $baselink, "add_quest_cont_edit_mode={$_REQUEST['add_quest_cont_edit_mode']}", false
1699 );
1700 }
1701
1702#var_dump($_REQUEST['prev_qid']);
1703 ilUtil::redirect($baselink);
1704
1705 exit();
1706 }
1707 }
static getQuestionTypeByTypeId($type_id)
createQuestionObject()
Called when a new question should be created from a test.
static appendUrlParameterString($a_url, $a_par, $xml_style=false)
append URL parameter string ("par1=value1&par2=value2...") to given URL string

References $_GET, $_SESSION, ilUtil\appendUrlParameterString(), createQuestionObject(), createQuestionPool(), exit, ilObjQuestionPool\getQuestionTypeByTypeId(), ilUtil\redirect(), and ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ exportObject()

ilObjTestGUI::exportObject ( )
protected

Gateway for exports initiated from workspace, as there is a generic forward to {objTypeMainGUI}::export()

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

752 {
753 global $DIC; /* @var ILIAS\DI\Container $DIC */
754 $DIC->ctrl()->redirectByClass('ilTestExportGUI');
755 }

References $DIC.

◆ fetchAuthoringQuestionIdParameter()

ilObjTestGUI::fetchAuthoringQuestionIdParameter ( )
protected
Returns
mixed

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

761 {
762 $qid = $_REQUEST['q_id'];
763
764 if (!$qid || $qid == 'Array')
765 {
766 $questions = $this->object->getQuestionTitlesAndIndexes();
767 if (!is_array($questions))
768 $questions = array();
769
770 $keys = array_keys($questions);
771 $qid = $keys[0];
772
773 $_REQUEST['q_id'] = $qid;
774 $_GET['q_id'] = $qid;
775 $_POST['q_id'] = $qid;
776 }
777
778 if( $this->object->checkQuestionParent($qid) )
779 {
780 return $qid;
781 }
782
783 throw new ilTestException('question id does not relate to parent object!');
784 }

References $_GET, and $_POST.

Referenced by executeCommand().

+ Here is the caller graph for this function:

◆ filterObject()

ilObjTestGUI::filterObject ( )

Sets the filter for the question browser.

Sets the filter for the question browser

@access public

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

1435 {
1436 $this->questionBrowser();
1437 }

◆ formTimingObject()

ilObjTestGUI::formTimingObject ( )
private

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

2936 {
2937 global $ilAccess;
2938
2939 include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
2940 $form = new ilPropertyFormGUI();
2941 $form->setFormAction($this->ctrl->getFormAction($this));
2942 $form->setTableWidth("100%");
2943 $form->setId("tst_change_workingtime");
2944 $form->setTitle($this->lng->txt("tst_change_workingtime"));
2945
2946 // test users
2947 $participantslist = new ilSelectInputGUI($this->lng->txt('participants'), "participant");
2948 $participants =& $this->object->getTestParticipants();
2949 $times = $this->object->getStartingTimeOfParticipants();
2950 $addons = $this->object->getTimeExtensionsOfParticipants();
2951 $options = array(
2952 '' => $this->lng->txt('please_select'),
2953 '0' => $this->lng->txt('all_participants')
2954 );
2955 foreach ($participants as $participant)
2956 {
2957 $started = "";
2958
2959 if ($this->object->getAnonymity())
2960 {
2961 $name = $this->lng->txt("anonymous");
2962 }
2963 else
2964 {
2965 $name = $participant['lastname'] . ', ' . $participant['firstname'];
2966 }
2967
2968
2969 if ($times[$participant['active_id']])
2970 {
2971 $started = ", ".$this->lng->txt('tst_started').': '.ilDatePresentation::formatDate(new ilDateTime($times[$participant['active_id']], IL_CAL_DATETIME));
2972 }
2973 if ($addons[$participant['active_id']] > 0) $started .= ", " . $this->lng->txt('extratime') . ': ' . $addons[$participant['active_id']] . ' ' . $this->lng->txt('minutes');
2974 $options[$participant['active_id']] = $participant['login'] . ' (' .$name. ')'.$started;
2975 }
2976 $participantslist->setRequired(true);
2977 $participantslist->setOptions($options);
2978 $form->addItem($participantslist);
2979
2980 // extra time
2981 $extratime = new ilNumberInputGUI($this->lng->txt("extratime"), "extratime");
2982 $extratime->setInfo($this->lng->txt('tst_extratime_info'));
2983 $extratime->setRequired(true);
2984 $extratime->setMinValue(0);
2985 $extratime->setMinvalueShouldBeGreater(false);
2986 $extratime->setSuffix($this->lng->txt('minutes'));
2987 $extratime->setSize(5);
2988 $form->addItem($extratime);
2989
2990 if (is_array($_POST) && strlen($_POST['cmd']['timing'])) $form->setValuesByArray($_POST);
2991
2992 if ($ilAccess->checkAccess("write", "", $_GET["ref_id"])) $form->addCommandButton("timing", $this->lng->txt("save"));
2993 $form->addCommandButton('timingOverview', $this->lng->txt("cancel"));
2994 return $form;
2995 }
const IL_CAL_DATETIME
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
This class represents a number property in a property form.

References $_GET, $_POST, $options, ilDatePresentation\formatDate(), and IL_CAL_DATETIME.

Referenced by showTimingFormObject(), and timingObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ forwardToEvalObjectiveOrientedGUI()

ilObjTestGUI::forwardToEvalObjectiveOrientedGUI ( )
private

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

823 {
824 $this->prepareOutput();
825 $this->addHeaderAction();
826
827 require_once 'Modules/Test/classes/class.ilTestEvalObjectiveOrientedGUI.php';
828 $gui = new ilTestEvalObjectiveOrientedGUI($this->object);
829 $gui->setObjectiveOrientedContainer($this->getObjectiveOrientedContainer());
830
831 $this->ctrl->forwardCommand($gui);
832 }

References ilObjectGUI\addHeaderAction(), getObjectiveOrientedContainer(), and ilObjectGUI\prepareOutput().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ forwardToEvaluationGUI()

ilObjTestGUI::forwardToEvaluationGUI ( )
private

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

811 {
812 $this->prepareOutput();
813 $this->addHeaderAction();
814
815 require_once 'Modules/Test/classes/class.ilTestEvaluationGUI.php';
816 $gui = new ilTestEvaluationGUI($this->object);
817 $gui->setObjectiveOrientedContainer($this->getObjectiveOrientedContainer());
818
819 $this->ctrl->forwardCommand($gui);
820 }
Output class for assessment test evaluation.

References ilObjectGUI\addHeaderAction(), getObjectiveOrientedContainer(), and ilObjectGUI\prepareOutput().

Referenced by executeCommand(), and userResultsGatewayObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fpResetFilterObject()

ilObjTestGUI::fpResetFilterObject ( )

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

3056 {
3057 include_once("./Modules/Test/classes/tables/class.ilTestFixedParticipantsTableGUI.php");
3058 $table_gui = new ilTestFixedParticipantsTableGUI(
3059 $this, "participants", false, $this->object->getAnonymity(), 0
3060 );
3061 $table_gui->resetFilter(); // writes filter to session
3062 $table_gui->resetOffset(); // sets record offest to 0 (first page)
3063 $this->participantsObject();
3064 }
participantsObject()
Creates the output of the test participants.

References participantsObject().

+ Here is the call graph for this function:

◆ fpSetFilterObject()

ilObjTestGUI::fpSetFilterObject ( )

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

3047 {
3048 include_once("./Modules/Test/classes/tables/class.ilTestFixedParticipantsTableGUI.php");
3049 $table_gui = new ilTestFixedParticipantsTableGUI($this, "participants", false, $this->object->getAnonymity(), 0);
3050 $table_gui->writeFilterToSession(); // writes filter to session
3051 $table_gui->resetOffset(); // sets record offest to 0 (first page)
3052 $this->participantsObject();
3053 }

References participantsObject().

+ Here is the call graph for this function:

◆ fullscreenObject()

ilObjTestGUI::fullscreenObject ( )

show fullscreen view

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

1409 {
1410 include_once("./Modules/TestQuestionPool/classes/class.ilAssQuestionPageGUI.php");
1411 $page_gui = new ilAssQuestionPageGUI($_GET["pg_id"]);
1412 $page_gui->showMediaFullscreen();
1413
1414 }

References $_GET.

◆ getBrowseForQuestionsTab()

ilObjTestGUI::getBrowseForQuestionsTab ( $tabs_gui)

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

3875 {
3876 global $ilAccess;
3877 if ($ilAccess->checkAccess("write", "", $this->ref_id))
3878 {
3879 $this->ctrl->saveParameterByClass($this->ctrl->getCmdClass(), 'q_id');
3880 // edit page
3881 $tabs_gui->setBackTarget($this->lng->txt("backtocallingtest"), $this->ctrl->getLinkTargetByClass($this->ctrl->getCmdClass(), "questions"));
3882 $tabs_gui->addTarget("tst_browse_for_questions",
3883 $this->ctrl->getLinkTarget($this, "browseForQuestions"),
3884 array("browseForQuestions", "filter", "resetFilter", "resetTextFilter", "insertQuestions"),
3885 "", "", TRUE
3886 );
3887 }
3888 }

References ilObjectGUI\$tabs_gui.

Referenced by getTabs().

+ Here is the caller graph for this function:

◆ getObjectiveOrientedContainer()

ilObjTestGUI::getObjectiveOrientedContainer ( )
protected

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

5278 {
5280 }

References $objectiveOrientedContainer.

Referenced by createUserResults(), executeCommand(), forwardToEvalObjectiveOrientedGUI(), forwardToEvaluationGUI(), and getTabs().

+ Here is the caller graph for this function:

◆ getParticipantsSubTabs()

ilObjTestGUI::getParticipantsSubTabs ( )

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

4050 {
4051 global $ilTabs;
4052
4053 // participants subtab
4054 $ilTabs->addSubTabTarget( "participants",
4055 $this->ctrl->getLinkTarget($this,'participants'),
4056 array(
4057 "participants", "saveClientIP",
4058 "removeParticipant",
4059 "showParticipantAnswersForAuthor",
4060 "deleteAllUserResults",
4061 "cancelDeleteAllUserData", "deleteSingleUserResults",
4062 "outParticipantsResultsOverview", "outParticipantsPassDetails",
4063 "showPassOverview", "showUserAnswers", "participantsAction",
4064 "showDetailedResults",
4065 'npResetFilter', 'npSetFilter'
4066 ),
4067 ""
4068 );
4069
4070 if( !$this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesBroken() )
4071 {
4072 if($this->object->getProcessingTimeInSeconds() > 0 && $this->object->getNrOfTries() == 1)
4073 {
4074 // extratime subtab
4075 $ilTabs->addSubTabTarget( "timing",
4076 $this->ctrl->getLinkTarget($this,'timingOverview'),
4077 array("timing", "timingOverview"), "", ""
4078 );
4079 }
4080 }
4081 }

Referenced by participantsObject(), timingObject(), and timingOverviewObject().

+ Here is the caller graph for this function:

◆ getQuestionpoolCreationForm()

ilObjTestGUI::getQuestionpoolCreationForm ( )
private

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

4781 {
4782 global $lng;
4783 include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
4784 $form = new ilPropertyFormGUI();
4785
4786 $title = new ilTextInputGUI($lng->txt('title'), 'title');
4787 $title->setRequired(true);
4788 $form->addItem($title);
4789
4790 $description = new ilTextAreaInputGUI($lng->txt('description'), 'description');
4791 $form->addItem($description);
4792
4793 $form->addCommandButton('createQuestionPoolAndCopy', $lng->txt('create'));
4794
4795 if(isset($_REQUEST['q_id']) && is_array($_REQUEST['q_id']))
4796 {
4797 foreach($_REQUEST['q_id'] as $id)
4798 {
4799 $hidden = new ilHiddenInputGUI('q_id[]');
4800 $hidden->setValue($id);
4801 $form->addItem($hidden);
4802 }
4803 }
4804
4805 return $form;
4806 }
This class represents a text area property in a property form.

References ilObjectGUI\$lng, and $title.

Referenced by createQuestionPoolAndCopyObject(), and createQuestionpoolTargetObject().

+ Here is the caller graph for this function:

◆ getQuestionsSubTabs()

ilObjTestGUI::getQuestionsSubTabs ( )

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

3921 {
3922 global $ilTabs, $ilCtrl;
3923 $ilTabs->activateTab('assQuestions');
3924 $a_cmd = $ilCtrl->getCmd();
3925
3926 if (!$this->object->isRandomTest())
3927 {
3928 #if (in_array($this->object->getEnabledViewMode(), array('both', 'express'))) {
3929 $questions_per_page = ($a_cmd == 'questions_per_page' || ($a_cmd == 'removeQuestions' && $_REQUEST['test_express_mode'])) ? true : false;
3930
3931 $this->tabs_gui->addSubTabTarget(
3932 "questions_per_page_view",
3933 $this->ctrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'showPage'),
3934 "", "", "", $questions_per_page);
3935 #}
3936 }
3937 include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
3938 $template = new ilSettingsTemplate($this->object->getTemplate(), ilObjAssessmentFolderGUI::getSettingsTemplateConfig());
3939
3940 if (!in_array('questions', $template->getHiddenTabs())) {
3941 // questions subtab
3942 $ilTabs->addSubTabTarget("edit_test_questions",
3943 $this->ctrl->getLinkTarget($this,'questions'),
3944 array("questions", "browseForQuestions", "questionBrowser", "createQuestion",
3945 "randomselect", "filter", "resetFilter", "insertQuestions",
3946 "back", "createRandomSelection", "cancelRandomSelect",
3947 "insertRandomSelection", "removeQuestions", "moveQuestions",
3948 "insertQuestionsBefore", "insertQuestionsAfter", "confirmRemoveQuestions",
3949 "cancelRemoveQuestions", "executeCreateQuestion", "cancelCreateQuestion",
3950 "addQuestionpool", "saveRandomQuestions", "saveQuestionSelectionMode"),
3951 "");
3952
3953 if (in_array($a_cmd, array('questions', 'createQuestion')) || ($a_cmd == 'removeQuestions' && !$_REQUEST['test_express_mode']))
3954 $this->tabs_gui->activateSubTab('edit_test_questions');
3955 }
3956 #}
3957
3958 // print view subtab
3959 if (!$this->object->isRandomTest())
3960 {
3961 $ilTabs->addSubTabTarget("print_view",
3962 $this->ctrl->getLinkTarget($this,'print'),
3963 "print", "", "", $this->ctrl->getCmd() == 'print');
3964 $ilTabs->addSubTabTarget('review_view',
3965 $this->ctrl->getLinkTarget($this, 'review'),
3966 'review', '', '', $this->ctrl->getCmd() == 'review');
3967 }
3968
3969
3970 }

References $ilCtrl, and ilObjAssessmentFolderGUI\getSettingsTemplateConfig().

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

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRandomQuestionsTab()

ilObjTestGUI::getRandomQuestionsTab ( $tabs_gui)

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

3891 {
3892 global $ilAccess;
3893 if ($ilAccess->checkAccess("write", "", $this->ref_id))
3894 {
3895 // edit page
3896 $tabs_gui->setBackTarget($this->lng->txt("backtocallingtest"), $this->ctrl->getLinkTarget($this, "questions"));
3897 $tabs_gui->addTarget("random_selection",
3898 $this->ctrl->getLinkTarget($this, "randomQuestions"),
3899 array("randomQuestions"),
3900 "", ""
3901 );
3902 }
3903 }

References ilObjectGUI\$tabs_gui.

◆ getStatisticsSubTabs()

ilObjTestGUI::getStatisticsSubTabs ( )

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

3973 {
3974 global $ilTabs;
3975
3976 // user results subtab
3977 $ilTabs->addSubTabTarget("eval_all_users",
3978 $this->ctrl->getLinkTargetByClass("iltestevaluationgui", "outEvaluation"),
3979 array("outEvaluation", "detailedEvaluation", "exportEvaluation", "evalUserDetail", "passDetails",
3980 "outStatisticsResultsOverview", "statisticsPassDetails")
3981 , "");
3982
3983 // aggregated results subtab
3984 $ilTabs->addSubTabTarget("tst_results_aggregated",
3985 $this->ctrl->getLinkTargetByClass("iltestevaluationgui", "eval_a"),
3986 array("eval_a"),
3987 "", "");
3988
3989 // question export
3990 $ilTabs->addSubTabTarget("tst_single_results",
3991 $this->ctrl->getLinkTargetByClass("iltestevaluationgui", "singleResults"),
3992 array("singleResults"),
3993 "", "");
3994 }

Referenced by getTabs().

+ Here is the caller graph for this function:

◆ getTabs()

ilObjTestGUI::getTabs ( )

adds tabs to tab gui object

Parameters
ilTabsGUI$tabs_gui

Reimplemented from ilObjectGUI.

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

4089 {
4090 global $ilAccess, $ilHelp;
4091
4092 if (preg_match('/^ass(.*?)gui$/i', $this->ctrl->getNextClass($this))) {
4093 return;
4094 }
4095 else if ($this->ctrl->getNextClass($this) == 'ilassquestionpagegui') {
4096 return;
4097 }
4098
4099 $ilHelp->setScreenIdComponent("tst");
4100
4101 $hidden_tabs = array();
4102
4103 $template = $this->object->getTemplate();
4104 if($template)
4105 {
4106 include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
4108
4109 $hidden_tabs = $template->getHiddenTabs();
4110 }
4111
4112 // for local use in this fucking sledge hammer method
4113 $curUserHasWriteAccess = $ilAccess->checkAccess("write", "", $this->ref_id);
4114
4115 switch($this->ctrl->getCmdClass())
4116 {
4117 // no tabs .. no subtabs .. during test pass
4118 case 'iltestoutputgui':
4119
4120 // tab handling happens within GUIs
4121 case 'iltestevaluationgui':
4122 $nonSelfTabbingCommands = array(
4123 'outParticipantsResultsOverview', 'outEvaluation',
4124 'eval_a', 'singleResults', 'detailedEvaluation'
4125 );
4126 if( in_array($this->ctrl->getCmd(), $nonSelfTabbingCommands) )
4127 {
4128 break;
4129 }
4130 case 'iltestevalobjectiveorientedgui':
4131 return;
4132
4133 case 'ilmarkschemagui':
4134 case 'ilobjtestsettingsgeneralgui':
4135 case 'ilobjtestsettingsscoringresultsgui':
4136
4137 if( $curUserHasWriteAccess )
4138 {
4139 $this->getSettingsSubTabs($hidden_tabs);
4140 }
4141
4142 break;
4143 }
4144
4145 if( $this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired() )
4146 {
4147 require_once 'Services/Link/classes/class.ilLink.php';
4148 $courseLink = ilLink::_getLink($this->getObjectiveOrientedContainer()->getRefId());
4149 $this->tabs_gui->setBack2Target($this->lng->txt('back_to_objective_container'), $courseLink);
4150 }
4151
4152 switch($this->ctrl->getCmd())
4153 {
4154 case "resume":
4155 case "previous":
4156 case "next":
4157 case "summary":
4158 case "directfeedback":
4159 case "finishTest":
4160 case "outCorrectSolution":
4161 case "passDetails":
4162 case "showAnswersOfUser":
4163 case "outUserResultsOverview":
4164 case "backFromSummary":
4165 case "show_answers":
4166 case "setsolved":
4167 case "resetsolved":
4168 case "confirmFinish":
4169 case "outTestSummary":
4170 case "outQuestionSummary":
4171 case "gotoQuestion":
4172 case "selectImagemapRegion":
4173 case "confirmSubmitAnswers":
4174 case "finalSubmission":
4175 case "postpone":
4176 case "outUserPassDetails":
4177 case "checkPassword":
4178 case "exportCertificate":
4179 case "finishListOfAnswers":
4180 case "backConfirmFinish":
4181 case "showFinalStatement":
4182 return;
4183 break;
4184 case "browseForQuestions":
4185 case "filter":
4186 case "resetFilter":
4187 case "resetTextFilter":
4188 case "insertQuestions":
4189 // #8497: resetfilter is also used in lp
4190 if($this->ctrl->getNextClass($this) != "illearningprogressgui")
4191 {
4192 return $this->getBrowseForQuestionsTab($this->tabs_gui);
4193 }
4194 break;
4195 case "scoring":
4196 case "certificate":
4197 case "certificateservice":
4198 case "certificateImport":
4199 case "certificateUpload":
4200 case "certificateEditor":
4201 case "certificateDelete":
4202 case "certificateSave":
4203 case "defaults":
4204 case "deleteDefaults":
4205 case "addDefaults":
4206 case "applyDefaults":
4207 case "inviteParticipants":
4208 case "searchParticipants":
4209 if( $curUserHasWriteAccess && in_array($this->ctrl->getCmdClass(), array('ilobjtestgui', 'ilcertificategui')) )
4210 {
4211 $this->getSettingsSubTabs($hidden_tabs);
4212 }
4213 break;
4214 case "export":
4215 case "print":
4216 break;
4217 case "statistics":
4218 case "eval_a":
4219 case "detailedEvaluation":
4220 case "outEvaluation":
4221 case "singleResults":
4222 case "exportEvaluation":
4223 case "evalUserDetail":
4224 case "outStatisticsResultsOverview":
4225 case "statisticsPassDetails":
4226 $this->getStatisticsSubTabs();
4227 break;
4228 }
4229
4230 if (strcmp(strtolower(get_class($this->object)), "ilobjtest") == 0)
4231 {
4232 // questions tab
4233 if ($ilAccess->checkAccess("write", "", $this->ref_id) && !in_array('assQuestions', $hidden_tabs))
4234 {
4235 $force_active = ($_GET["up"] != "" || $_GET["down"] != "")
4236 ? true
4237 : false;
4238 if (!$force_active)
4239 {
4240 if ($_GET["browse"] == 1) $force_active = true;
4241 }
4242
4243 switch( $this->object->getQuestionSetType() )
4244 {
4246 $target = $this->ctrl->getLinkTargetByClass('iltestexpresspageobjectgui','showPage');
4247 break;
4248
4250 $target = $this->ctrl->getLinkTargetByClass('ilTestRandomQuestionSetConfigGUI');
4251 break;
4252
4254 $target = $this->ctrl->getLinkTargetByClass('ilObjTestDynamicQuestionSetConfigGUI');
4255 break;
4256 }
4257
4258 $this->tabs_gui->addTarget("assQuestions",
4259 //$this->ctrl->getLinkTarget($this,'questions'),
4260 $target,
4261 array("questions", "browseForQuestions", "questionBrowser", "createQuestion",
4262 "randomselect", "filter", "resetFilter", "insertQuestions",
4263 "back", "createRandomSelection", "cancelRandomSelect",
4264 "insertRandomSelection", "removeQuestions", "moveQuestions",
4265 "insertQuestionsBefore", "insertQuestionsAfter", "confirmRemoveQuestions",
4266 "cancelRemoveQuestions", "executeCreateQuestion", "cancelCreateQuestion",
4267 "addQuestionpool", "saveRandomQuestions", "saveQuestionSelectionMode", "print",
4268 "addsource", "removesource", "randomQuestions"),
4269 "", "", $force_active);
4270 }
4271
4272 // info tab
4273 if ($ilAccess->checkAccess("read", "", $this->ref_id) && !in_array('info_short', $hidden_tabs))
4274 {
4275 $this->tabs_gui->addTarget("info_short",
4276 $this->ctrl->getLinkTarget($this,'infoScreen'),
4277 array("infoScreen", "outIntroductionPage", "showSummary",
4278 "setAnonymousId", "outUserListOfAnswerPasses", "redirectToInfoScreen"));
4279 }
4280
4281 // settings tab
4282 if ($ilAccess->checkAccess("write", "", $this->ref_id))
4283 {
4284 if (!in_array('settings', $hidden_tabs))
4285 {
4286 $settingsCommands = array(
4287 "marks", "showMarkSchema","addMarkStep", "deleteMarkSteps", "addSimpleMarkSchema", "saveMarks",
4288 "certificate", "certificateEditor", "certificateRemoveBackground", "certificateSave",
4289 "certificatePreview", "certificateDelete", "certificateUpload", "certificateImport",
4290 "scoring", "defaults", "addDefaults", "deleteDefaults", "applyDefaults",
4291 "inviteParticipants", "saveFixedParticipantsStatus", "searchParticipants", "addParticipants" // ARE THEY RIGHT HERE
4292 );
4293
4294 require_once 'Modules/Test/classes/class.ilObjTestSettingsGeneralGUI.php';
4295 $reflection = new ReflectionClass('ilObjTestSettingsGeneralGUI');
4296 foreach($reflection->getConstants() as $name => $value)
4297 if(substr($name, 0, 4) == 'CMD_') $settingsCommands[] = $value;
4298
4299 require_once 'Modules/Test/classes/class.ilObjTestSettingsScoringResultsGUI.php';
4300 $reflection = new ReflectionClass('ilObjTestSettingsScoringResultsGUI');
4301 foreach($reflection->getConstants() as $name => $value)
4302 if(substr($name, 0, 4) == 'CMD_') $settingsCommands[] = $value;
4303
4304 $settingsCommands[] = ""; // DO NOT KNOW WHAT THIS IS DOING, BUT IT'S REQUIRED
4305
4306 $this->tabs_gui->addTarget("settings",
4307 $this->ctrl->getLinkTargetByClass('ilObjTestSettingsGeneralGUI'),
4308 $settingsCommands,
4309 array("ilmarkschemagui", "ilobjtestsettingsgeneralgui", "ilobjtestsettingsscoringresultsgui", "ilobjtestgui", "ilcertificategui")
4310 );
4311 }
4312
4313 // skill service
4314 if( $this->object->isSkillServiceEnabled() && ilObjTest::isSkillManagementGloballyActivated() )
4315 {
4316 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionSkillAssignmentsGUI.php';
4317
4318 $link = $this->ctrl->getLinkTargetByClass(
4319 array('ilTestSkillAdministrationGUI', 'ilAssQuestionSkillAssignmentsGUI'),
4321 );
4322
4323 $this->tabs_gui->addTarget('tst_tab_competences', $link, array(), array());
4324 }
4325
4326 if (!in_array('participants', $hidden_tabs))
4327 {
4328 // participants
4329 $this->tabs_gui->addTarget("participants",
4330 $this->ctrl->getLinkTarget($this,'participants'),
4331 array(
4332 "participants", "saveClientIP",
4333 "removeParticipant",
4334 "showParticipantAnswersForAuthor",
4335 "deleteAllUserResults",
4336 "cancelDeleteAllUserData", "deleteSingleUserResults",
4337 "outParticipantsResultsOverview", "outParticipantsPassDetails",
4338 "showPassOverview", "showUserAnswers", "participantsAction",
4339 "showDetailedResults",
4340 'timing', 'timingOverview', 'npResetFilter', 'npSetFilter', 'showTimingForm'
4341 ),
4342 ""
4343 );
4344 }
4345 }
4346
4347 include_once './Services/Tracking/classes/class.ilLearningProgressAccess.php';
4348 if(ilLearningProgressAccess::checkAccess($this->object->getRefId()) && !in_array('learning_progress', $hidden_tabs))
4349 {
4350 $this->tabs_gui->addTarget('learning_progress',
4351 $this->ctrl->getLinkTargetByClass(array('illearningprogressgui'),''),
4352 '',
4353 array('illplistofobjectsgui','illplistofsettingsgui','illearningprogressgui','illplistofprogressgui'));
4354 }
4355
4356 if ($ilAccess->checkAccess("write", "", $this->ref_id) && !in_array('manscoring', $hidden_tabs))
4357 {
4358 include_once "./Modules/Test/classes/class.ilObjAssessmentFolder.php";
4360 if (count($scoring))
4361 {
4362 // scoring tab
4363 $this->tabs_gui->addTarget(
4364 "manscoring", $this->ctrl->getLinkTargetByClass('ilTestScoringByQuestionsGUI', 'showManScoringByQuestionParticipantsTable'),
4365 array(
4366 'showManScoringParticipantsTable', 'applyManScoringParticipantsFilter', 'resetManScoringParticipantsFilter', 'showManScoringParticipantScreen',
4367 'showManScoringByQuestionParticipantsTable', 'applyManScoringByQuestionFilter', 'resetManScoringByQuestionFilter', 'saveManScoringByQuestion'
4368
4369 ), ''
4370 );
4371 }
4372 }
4373
4374 // Scoring Adjustment
4375 $setting = new ilSetting('assessment');
4376 $scoring_adjust_active = (bool) $setting->get('assessment_adjustments_enabled', false);
4377 if ($ilAccess->checkAccess("write", "", $this->ref_id) && $scoring_adjust_active && !in_array('scoringadjust', $hidden_tabs))
4378 {
4379 // scoring tab
4380 $this->tabs_gui->addTarget(
4381 "scoringadjust", $this->ctrl->getLinkTargetByClass('ilScoringAdjustmentGUI', 'showquestionlist'),
4382 array(
4383 'showquestionlist',
4384 'savescoringfortest',
4385 'adjustscoringfortest'
4386 ), ''
4387 );
4388 }
4389
4390 if ((($ilAccess->checkAccess("tst_statistics", "", $this->ref_id)) || ($ilAccess->checkAccess("write", "", $this->ref_id))) && !in_array('statistics', $hidden_tabs))
4391 {
4392 // statistics tab
4393 $this->tabs_gui->addTarget(
4394 "statistics",
4395 $this->ctrl->getLinkTargetByClass("iltestevaluationgui", "outEvaluation"),
4396 array(
4397 "statistics", "outEvaluation", "exportEvaluation", "detailedEvaluation", "eval_a", "evalUserDetail",
4398 "passDetails", "outStatisticsResultsOverview", "statisticsPassDetails", "singleResults"
4399 ),
4400 ""
4401 );
4402 }
4403
4404 if ($ilAccess->checkAccess("write", "", $this->ref_id))
4405 {
4406 if (!in_array('history', $hidden_tabs)) {
4407
4408 // history
4409 $this->tabs_gui->addTarget("history",
4410 $this->ctrl->getLinkTarget($this,'history'),
4411 "history", "");
4412 }
4413
4414 if (!in_array('meta_data', $hidden_tabs)) {
4415 // meta data
4416 include_once "Services/Object/classes/class.ilObjectMetaDataGUI.php";
4417 $mdgui = new ilObjectMetaDataGUI($this->object);
4418 $mdtab = $mdgui->getTab();
4419 if($mdtab)
4420 {
4421 $this->tabs_gui->addTarget("meta_data",
4422 $mdtab,
4423 "", "ilmdeditorgui");
4424 }
4425 }
4426
4427 if(!in_array('export', $hidden_tabs))
4428 {
4429 // export tab
4430 $this->tabs_gui->addTarget(
4431 "export",
4432 $this->ctrl->getLinkTargetByClass('iltestexportgui' ,''),
4433 '',
4434 array('iltestexportgui')
4435 );
4436 }
4437 }
4438
4439 if ($ilAccess->checkAccess("edit_permission", "", $this->ref_id)&& !in_array('permissions', $hidden_tabs))
4440 {
4441 $this->tabs_gui->addTarget("perm_settings",
4442 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"), array("perm","info","owner"), 'ilpermissiongui');
4443 }
4444 }
4445
4446 if( $this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesBroken() )
4447 {
4448 $hideTabs = $this->testQuestionSetConfigFactory->getQuestionSetConfig()->getHiddenTabsOnBrokenDepencies();
4449
4450 foreach($hideTabs as $tabId)
4451 {
4452 $this->tabs_gui->removeTab($tabId);
4453 }
4454 }
4455 }
static checkAccess($a_ref_id, $a_allow_only_read=true)
check access to learning progress
static _getManualScoring()
Retrieve the manual scoring settings.
getBrowseForQuestionsTab(&$tabs_gui)
const QUESTION_SET_TYPE_DYNAMIC
type setting value for dynamic question set (continues testing mode)
static isSkillManagementGloballyActivated()
ILIAS Setting Class.

References $_GET, $target, ilLink\_getLink(), ilObjAssessmentFolder\_getManualScoring(), ilLearningProgressAccess\checkAccess(), ilAssQuestionSkillAssignmentsGUI\CMD_SHOW_SKILL_QUEST_ASSIGNS, getBrowseForQuestionsTab(), getObjectiveOrientedContainer(), ilObjAssessmentFolderGUI\getSettingsTemplateConfig(), getStatisticsSubTabs(), ilObjTest\isSkillManagementGloballyActivated(), ilObjTest\QUESTION_SET_TYPE_DYNAMIC, ilObjTest\QUESTION_SET_TYPE_FIXED, and ilObjTest\QUESTION_SET_TYPE_RANDOM.

+ Here is the call graph for this function:

◆ historyObject()

ilObjTestGUI::historyObject ( )

Creates the change history for a test.

Creates the change history for a test

@access public

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

2561 {
2562 include_once "./Modules/Test/classes/tables/class.ilTestHistoryTableGUI.php";
2563 $table_gui = new ilTestHistoryTableGUI($this, 'history');
2564 $table_gui->setTestObject($this->object);
2565 include_once "./Modules/Test/classes/class.ilObjAssessmentFolder.php";
2566 $log =& ilObjAssessmentFolder::_getLog(0, time(), $this->object->getId(), TRUE);
2567 $table_gui->setData($log);
2568 $this->tpl->setVariable('ADM_CONTENT', $table_gui->getHTML());
2569 }
static _getLog($ts_from, $ts_to, $test_id, $test_only=FALSE)
Retrieve assessment log datasets from the database.

References $log, and ilObjAssessmentFolder\_getLog().

+ Here is the call graph for this function:

◆ importFileObject()

ilObjTestGUI::importFileObject (   $parent_id = null,
  $a_catch_errors = true 
)
protected

form for new test object import

Reimplemented from ilObjectGUI.

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

1023 {
1024 $form = $this->initImportForm($_REQUEST["new_type"]);
1025 if($form->checkInput())
1026 {
1027 $this->ctrl->setParameter($this, "new_type", $this->type);
1028 $this->uploadTstObject();
1029 }
1030
1031 // display form to correct errors
1032 $form->setValuesByPost();
1033 $this->tpl->setContent($form->getHTML());
1034 }
initImportForm($a_new_type)
Init object import form.
uploadTstObject()
imports test and question(s)

References initImportForm(), and uploadTstObject().

+ Here is the call graph for this function:

◆ importVerifiedFileObject()

ilObjTestGUI::importVerifiedFileObject ( )

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

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

1292 {
1293 include_once "./Modules/Test/classes/class.ilObjTest.php";
1294 // create new questionpool object
1295 $newObj = new ilObjTest(0, true);
1296 // set type of questionpool object
1297 $newObj->setType($_GET["new_type"]);
1298 // set title of questionpool object to "dummy"
1299 $newObj->setTitle("dummy");
1300 // set description of questionpool object
1301 $newObj->setDescription("test import");
1302 // create the questionpool class in the ILIAS database (object_data table)
1303 $newObj->create(true);
1304 // create a reference for the questionpool object in the ILIAS database (object_reference table)
1305 $newObj->createReference();
1306 // put the questionpool object in the administration tree
1307 $newObj->putInTree($_GET["ref_id"]);
1308 // get default permissions and set the permissions for the questionpool object
1309 $newObj->setPermissions($_GET["ref_id"]);
1310 // empty mark schema
1311 $newObj->mark_schema->flush();
1312
1313 // start parsing of QTI files
1314 include_once "./Services/QTI/classes/class.ilQTIParser.php";
1315
1316 // Handle selection of "no questionpool" as qpl_id = -1 -> use test object id instead.
1317 // possible hint: chek if empty strings in $_POST["qpl_id"] relates to a bug or not
1318 if (!isset($_POST["qpl"]) || "-1" === (string)$_POST["qpl"])
1319 {
1320 $questionParentObjId = $newObj->getId();
1321 }
1322 else
1323 {
1324 $questionParentObjId = $_POST["qpl"];
1325 }
1326
1327 if( is_file($_SESSION["tst_import_dir"].'/'.$_SESSION["tst_import_subdir"]."/manifest.xml") )
1328 {
1329 $newObj->saveToDb();
1330
1331 $_SESSION['tst_import_idents'] = $_POST['ident'];
1332 $_SESSION['tst_import_qst_parent'] = $questionParentObjId;
1333
1334 $fileName = $_SESSION['tst_import_subdir'] . '.zip';
1335 $fullPath = $_SESSION['tst_import_dir'] . '/' . $fileName;
1336
1337 include_once("./Services/Export/classes/class.ilImport.php");
1338 $imp = new ilImport((int)$_GET["ref_id"]);
1339 $map = $imp->getMapping();
1340 $map->addMapping('Modules/Test', 'tst', 'new_id', $newObj->getId());
1341 $imp->importObject($newObj, $fullPath, $fileName, 'tst', 'Modules/Test', true);
1342 }
1343 else
1344 {
1345 $qtiParser = new ilQTIParser($_SESSION["tst_import_qti_file"], IL_MO_PARSE_QTI, $questionParentObjId, $_POST["ident"]);
1346 if( !isset($_POST["ident"]) || !is_array($_POST["ident"]) || !count($_POST["ident"]) )
1347 {
1348 $qtiParser->setIgnoreItemsEnabled(true);
1349 }
1350 $qtiParser->setTestObject($newObj);
1351 $result = $qtiParser->startParsing();
1352 $newObj->saveToDb();
1353
1354 // import page data
1355 include_once ("./Modules/LearningModule/classes/class.ilContObjParser.php");
1356 $contParser = new ilContObjParser($newObj, $_SESSION["tst_import_xml_file"], $_SESSION["tst_import_subdir"]);
1357 $contParser->setQuestionMapping($qtiParser->getImportMapping());
1358 $contParser->startParsing();
1359
1360 if( isset($_POST["ident"]) && is_array($_POST["ident"]) && count($_POST["ident"]) == $qtiParser->getNumImportedItems() )
1361 {
1362 // import test results
1363 if(@file_exists($_SESSION["tst_import_results_file"]))
1364 {
1365 include_once ("./Modules/Test/classes/class.ilTestResultsImportParser.php");
1366 $results = new ilTestResultsImportParser($_SESSION["tst_import_results_file"], $newObj);
1367 $results->setQuestionIdMapping($qtiParser->getQuestionIdMapping());
1368 $results->startParsing();
1369 }
1370 }
1371 $newObj->update();
1372 }
1373
1374
1375 // delete import directory
1377
1378 ilUtil::sendSuccess($this->lng->txt("object_imported"), true);
1379 ilUtil::redirect("ilias.php?ref_id=".$newObj->getRefId()."&baseClass=ilObjTestGUI");
1380 }
const IL_MO_PARSE_QTI
Content Object Parser.
Import class.
static _getImportDirectory()
Get the import directory location of the test.
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively

References $_GET, $_POST, $_SESSION, $result, $results, ilObjTest\_getImportDirectory(), ilUtil\delDir(), IL_MO_PARSE_QTI, ilUtil\redirect(), and ilUtil\sendSuccess().

Referenced by uploadTstObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ infoScreenObject()

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 3606 of file class.ilObjTestGUI.php.

3607 {
3608 #if( !include 'competenzenRocker.php' ) exit;
3609
3610 $this->ctrl->setCmd("showSummary");
3611 $this->ctrl->setCmdClass("ilinfoscreengui");
3612 $this->infoScreen();
3613 }

◆ initImportForm()

ilObjTestGUI::initImportForm (   $a_new_type)

Init object import form.

Parameters
stringnew type
Returns
ilPropertyFormGUI

Reimplemented from ilObjectGUI.

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

2572 {
2573 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
2574 $form = new ilPropertyFormGUI();
2575 $form->setTarget("_top");
2576 $new_type = $_POST["new_type"] ? $_POST["new_type"] : $_GET["new_type"];
2577 $this->ctrl->setParameter($this, "new_type", $new_type);
2578 $form->setFormAction($this->ctrl->getFormAction($this));
2579 $form->setTitle($this->lng->txt("import_tst"));
2580
2581 // file
2582 include_once("./Services/Form/classes/class.ilFileInputGUI.php");
2583 $fi = new ilFileInputGUI($this->lng->txt("import_file"), "xmldoc");
2584 $fi->setSuffixes(array("zip"));
2585 $fi->setRequired(true);
2586 $form->addItem($fi);
2587
2588 // question pool
2589 include_once("./Modules/Test/classes/class.ilObjTest.php");
2590 $tst = new ilObjTest();
2591 $questionpools = $tst->getAvailableQuestionpools(TRUE, FALSE, TRUE, TRUE);
2592 if (count($questionpools))
2593 {
2594 $options = array("-1" => $this->lng->txt("dont_use_questionpool"));
2595 foreach ($questionpools as $key => $value)
2596 {
2597 $options[$key] = $value["title"];
2598 }
2599
2600 $pool = new ilSelectInputGUI($this->lng->txt("select_questionpool"), "qpl");
2601 $pool->setInfo($this->lng->txt('select_question_pool_info'));
2602 $pool->setOptions($options);
2603 $form->addItem($pool);
2604 }
2605
2606 $form->addCommandButton("importFile", $this->lng->txt("import"));
2607 $form->addCommandButton("cancel", $this->lng->txt("cancel"));
2608
2609 return $form;
2610 }
This class represents a file property in a property form.

References $_GET, $_POST, and $options.

Referenced by importFileObject().

+ Here is the caller graph for this function:

◆ insertQuestionsAfterObject()

ilObjTestGUI::insertQuestionsAfterObject ( )

Insert checked questions after the actual selection.

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

2036 {
2037 // get all questions to move
2038 $move_questions = $_SESSION['tst_qst_move_' . $this->object->getTestId()];
2039 if (!is_array($_POST['q_id']) || 0 === count($_POST['q_id']))
2040 {
2041 ilUtil::sendFailure($this->lng->txt("no_target_selected_for_move"), true);
2042 $this->ctrl->redirect($this, 'questions');
2043 }
2044 if (count($_POST['q_id']) > 1)
2045 {
2046 ilUtil::sendFailure($this->lng->txt("too_many_targets_selected_for_move"), true);
2047 $this->ctrl->redirect($this, 'questions');
2048 }
2049 $insert_mode = 1;
2050 $this->object->moveQuestions($_SESSION['tst_qst_move_' . $this->object->getTestId()], $_POST['q_id'][0], $insert_mode);
2051 ilUtil::sendSuccess($this->lng->txt("msg_questions_moved"), true);
2052 unset($_SESSION['tst_qst_move_' . $this->object->getTestId()]);
2053 $this->ctrl->redirect($this, "questions");
2054 }

References $_POST, $_SESSION, ilUtil\sendFailure(), and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ insertQuestionsBeforeObject()

ilObjTestGUI::insertQuestionsBeforeObject ( )

Insert checked questions before the actual selection.

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

2011 {
2012 // get all questions to move
2013 $move_questions = $_SESSION['tst_qst_move_' . $this->object->getTestId()];
2014
2015 if (!is_array($_POST['q_id']) || 0 === count($_POST['q_id']))
2016 {
2017 ilUtil::sendFailure($this->lng->txt("no_target_selected_for_move"), true);
2018 $this->ctrl->redirect($this, 'questions');
2019 }
2020 if (count($_POST['q_id']) > 1)
2021 {
2022 ilUtil::sendFailure($this->lng->txt("too_many_targets_selected_for_move"), true);
2023 $this->ctrl->redirect($this, 'questions');
2024 }
2025 $insert_mode = 0;
2026 $this->object->moveQuestions($_SESSION['tst_qst_move_' . $this->object->getTestId()], $_POST['q_id'][0], $insert_mode);
2027 ilUtil::sendSuccess($this->lng->txt("msg_questions_moved"), true);
2028 unset($_SESSION['tst_qst_move_' . $this->object->getTestId()]);
2029 $this->ctrl->redirect($this, "questions");
2030 }

References $_POST, $_SESSION, ilUtil\sendFailure(), and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ insertQuestionsObject()

ilObjTestGUI::insertQuestionsObject ( )

Insert questions from the questionbrowser into the test.

@access public

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

2062 {
2063 $selected_array = (is_array($_POST['q_id'])) ? $_POST['q_id'] : array();
2064 if (!count($selected_array))
2065 {
2066 ilUtil::sendInfo($this->lng->txt("tst_insert_missing_question"), true);
2067 $this->ctrl->redirect($this, "browseForQuestions");
2068 }
2069 else
2070 {
2071 include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
2072 $manscoring = FALSE;
2073 foreach ($selected_array as $key => $value)
2074 {
2075 $this->object->insertQuestion( $this->testQuestionSetConfigFactory->getQuestionSetConfig(), $value );
2076 if (!$manscoring)
2077 {
2078 $manscoring = $manscoring | assQuestion::_needsManualScoring($value);
2079 }
2080 }
2081 $this->object->saveCompleteStatus( $this->testQuestionSetConfigFactory->getQuestionSetConfig() );
2082 if ($manscoring)
2083 {
2084 ilUtil::sendInfo($this->lng->txt("manscoring_hint"), TRUE);
2085 }
2086 else
2087 {
2088 ilUtil::sendSuccess($this->lng->txt("tst_questions_inserted"), TRUE);
2089 }
2090 $this->ctrl->redirect($this, "questions");
2091 return;
2092 }
2093 }
static _needsManualScoring($question_id)

References $_POST, assQuestion\_needsManualScoring(), ilUtil\sendInfo(), and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ insertRandomSelectionObject()

ilObjTestGUI::insertRandomSelectionObject ( )

Inserts a random selection into the test.

Inserts a random selection into the test

@access public

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

1600 {
1601 $selected_array = explode(",", $_POST["chosen_questions"]);
1602 if (!count($selected_array))
1603 {
1604 ilUtil::sendInfo($this->lng->txt("tst_insert_missing_question"));
1605 }
1606 else
1607 {
1608 $total = $this->object->evalTotalPersons();
1609 if ($total)
1610 {
1611 // the test was executed previously
1612 ilUtil::sendInfo(sprintf($this->lng->txt("tst_insert_questions_and_results"), $total));
1613 }
1614 else
1615 {
1616 ilUtil::sendInfo($this->lng->txt("tst_insert_questions"));
1617 }
1618 foreach ($selected_array as $key => $value)
1619 {
1620 $this->object->insertQuestion( $this->testQuestionSetConfigFactory->getQuestionSetConfig(), $value );
1621 }
1622 $this->object->saveCompleteStatus( $this->testQuestionSetConfigFactory->getQuestionSetConfig() );
1623 ilUtil::sendSuccess($this->lng->txt("tst_questions_inserted"), true);
1624 $this->ctrl->redirect($this, "questions");
1625 return;
1626 }
1627 }

References $_POST, $total, ilUtil\sendInfo(), ilUtil\sendSuccess(), and sprintf.

+ Here is the call graph for this function:

◆ isCommandClassAnyInfoScreenChild()

ilObjTestGUI::isCommandClassAnyInfoScreenChild ( )
private

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

3592 {
3593 if( in_array($this->ctrl->getCmdClass(), self::$infoScreenChildClasses) )
3594 {
3595 return true;
3596 }
3597
3598 return false;
3599 }

◆ isPdfDeliveryRequest()

ilObjTestGUI::isPdfDeliveryRequest ( )
private
Returns
bool

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

5252 {
5253 if( !isset($_GET['pdf']) )
5254 {
5255 return false;
5256 }
5257
5258 if( !(bool)$_GET['pdf'] )
5259 {
5260 return false;
5261 }
5262
5263 return true;
5264 }

References $_GET.

Referenced by createUserResults().

+ Here is the caller graph for this function:

◆ movePageFormObject()

ilObjTestGUI::movePageFormObject ( )
protected

Move current page.

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

5131 {
5132 global $lng, $ilCtrl, $tpl;
5133
5134 include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
5135 $form = new ilPropertyFormGUI();
5136 $form->setFormAction($ilCtrl->getFormAction($this, "movePage"));
5137 $form->setTitle($lng->txt("test_move_page"));
5138
5139 $old_pos = new ilHiddenInputGUI("q_id");
5140 $old_pos->setValue($_REQUEST['q_id']);
5141 $form->addItem($old_pos);
5142
5143 $questions = $this->object->getQuestionTitlesAndIndexes();
5144 if (!is_array($questions))
5145 $questions = array();
5146
5147 foreach($questions as $k => $q) {
5148 if ($k == $_REQUEST['q_id']) {
5149 unset($questions[$k]);
5150 continue;
5151 }
5152 $questions[$k] = $lng->txt('behind') . ' '. $q;
5153 }
5154 #$questions['0'] = $lng->txt('first');
5155
5156 $options = array(
5157 0 => $lng->txt('first')
5158 );
5159 foreach($questions as $k => $q) {
5160 $options[$k] = $q . ' ['. $this->lng->txt('question_id_short') . ': ' . $k . ']';
5161 }
5162
5163 $pos = new ilSelectInputGUI($lng->txt("position"), "position_after");
5164 $pos->setOptions($options);
5165 $form->addItem($pos);
5166
5167 $form->addCommandButton("movePage", $lng->txt("submit"));
5168 $form->addCommandButton("showPage", $lng->txt("cancel"));
5169
5170 return $tpl->setContent($form->getHTML());
5171 }

References $ilCtrl, ilObjectGUI\$lng, $options, and ilObjectGUI\$tpl.

◆ movePageObject()

ilObjTestGUI::movePageObject ( )

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

5173 {
5174 global $ilAccess;
5175 if (!$ilAccess->checkAccess("write", "", $this->ref_id))
5176 {
5177 // allow only write access
5178 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
5179 $this->ctrl->redirect($this, "infoScreen");
5180 }
5181
5182 $this->object->moveQuestionAfter($_REQUEST['q_id'], $_REQUEST['position_after']);
5183 $this->showPageObject();
5184 }

References ilUtil\sendInfo(), and showPageObject().

+ Here is the call graph for this function:

◆ moveQuestionsObject()

ilObjTestGUI::moveQuestionsObject ( )

Marks selected questions for moving.

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

1992 {
1993 $selected_questions = NULL;
1994 $selected_questions = $_POST['q_id'];
1995 if (is_array($selected_questions))
1996 {
1997 $_SESSION['tst_qst_move_' . $this->object->getTestId()] = $_POST['q_id'];
1998 ilUtil::sendSuccess($this->lng->txt("msg_selected_for_move"), true);
1999 }
2000 else
2001 {
2002 ilUtil::sendFailure($this->lng->txt('no_selection_for_move'), TRUE);
2003 }
2004 $this->ctrl->redirect($this, 'questions');
2005 }

References $_POST, $_SESSION, ilUtil\sendFailure(), and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ npResetFilterObject()

ilObjTestGUI::npResetFilterObject ( )

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

3079 {
3080 include_once("./Modules/Test/classes/tables/class.ilTestParticipantsTableGUI.php");
3081 $table_gui = new ilTestParticipantsTableGUI(
3082 $this, "participants", false, $this->object->getAnonymity(), 0
3083 );
3084 $table_gui->resetFilter(); // writes filter to session
3085 $table_gui->resetOffset(); // sets record offest to 0 (first page)
3086 $this->participantsObject();
3087
3088 }

References participantsObject().

+ Here is the call graph for this function:

◆ npSetFilterObject()

ilObjTestGUI::npSetFilterObject ( )

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

3067 {
3068 include_once("./Modules/Test/classes/tables/class.ilTestParticipantsTableGUI.php");
3069 $table_gui = new ilTestParticipantsTableGUI(
3070 $this, "participants", false, $this->object->getAnonymity(), 0
3071 );
3072 $table_gui->writeFilterToSession(); // writes filter to session
3073 $table_gui->resetOffset(); // sets record offest to 0 (first page)
3074 $this->participantsObject();
3075
3076 }

References participantsObject().

+ Here is the call graph for this function:

◆ outEvaluationObject()

ilObjTestGUI::outEvaluationObject ( )

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

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

◆ participantsActionObject()

ilObjTestGUI::participantsActionObject ( )

Evaluates the actions on the participants page.

@access public

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

2618 {
2619 $command = $_POST["command"];
2620 if (strlen($command))
2621 {
2622 $method = $command . "Object";
2623 if (method_exists($this, $method))
2624 {
2625 $this->$method();
2626 return;
2627 }
2628 }
2629 $this->ctrl->redirect($this, "participants");
2630 }

References $_POST.

◆ participantsObject()

ilObjTestGUI::participantsObject ( )

Creates the output of the test participants.

@access public

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

2638 {
2639 global $ilAccess, $ilToolbar, $lng;
2640
2641 $this->getParticipantsSubTabs();
2642
2643 if (!$ilAccess->checkAccess("write", "", $this->ref_id))
2644 {
2645 // allow only write access
2646 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
2647 $this->ctrl->redirect($this, "infoScreen");
2648 }
2649
2650 if( $this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesBroken() )
2651 {
2653 $this->testQuestionSetConfigFactory->getQuestionSetConfig()->getDepenciesBrokenMessage($this->lng)
2654 );
2655 }
2656 elseif( $this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesInVulnerableState() )
2657 {
2659 $this->testQuestionSetConfigFactory->getQuestionSetConfig()->getDepenciesInVulnerableStateMessage($this->lng)
2660 );
2661 }
2662
2663 if ($this->object->getFixedParticipants())
2664 {
2665 // search button
2666 include_once './Services/Search/classes/class.ilRepositorySearchGUI.php';
2668 $this,
2669 $ilToolbar,
2670 array(
2671 'auto_complete_name' => $lng->txt('user'),
2672 'submit_name' => $lng->txt('add')
2673 )
2674 );
2675
2676 $ilToolbar->addSeparator();
2677 $search_btn = ilLinkButton::getInstance();
2678 $search_btn->setCaption('tst_search_users');
2679 $search_btn->setUrl($this->ctrl->getLinkTargetByClass('ilRepositorySearchGUI','start'));
2680 $ilToolbar->addButtonInstance($search_btn);
2681 require_once 'Services/UIComponent/Button/classes/class.ilLinkButton.php';
2682
2683 $participants =& $this->object->getInvitedUsers();
2684 $rows = array();
2685 $unfinished_passes = false;
2686 foreach ($participants as $data)
2687 {
2688 $maxpass = $this->object->_getMaxPass($data["active_id"]);
2689 if (!is_null($maxpass))
2690 {
2691 $maxpass += 1;
2692 }
2693 $access = "";
2694 if (strlen($data["active_id"]))
2695 {
2696 $last_access = $this->object->_getLastAccess($data["active_id"]);
2697 $access = $last_access;
2698 }
2699 $this->ctrl->setParameterByClass('iltestevaluationgui', 'active_id', $data['active_id']);
2700
2701 if ($data['active_id'] == null) // if no active id is set, user is invitee not participant...
2702 {
2703 if ( strlen($data["firstname"].$data["lastname"]) == 0 )
2704 {
2705 $fullname = $lng->txt("deleted_user");
2706 }
2707 else if($this->object->getAnonymity())
2708 {
2709 $fullname = $lng->txt('anonymous');
2710 }
2711 else
2712 {
2713 $fullname = trim($data["lastname"] . ", " . $data["firstname"] . " " . $data["title"]);
2714 }
2715 } else {
2716 include_once "./Modules/Test/classes/class.ilObjTestAccess.php";
2717 $fullname = ilObjTestAccess::_getParticipantData($data['active_id']);
2718 }
2719
2720 $unfinished_pass_data = 0;
2721 if($data["unfinished_passes"] == 1)
2722 {
2723 $unfinished_pass_data = 1;
2724 $unfinished_passes = true;
2725 }
2726
2727 array_push($rows, array(
2728 'usr_id' => $data["usr_id"],
2729 'active_id' => $data['active_id'],
2730 'login' => $data["login"],
2731 'clientip' => $data["clientip"],
2732 'firstname' => $data["firstname"],
2733 'lastname' => $data["lastname"],
2734 'name' => $fullname,
2735 'started' => ($data["active_id"] > 0) ? 1 : 0,
2736 'unfinished' => $unfinished_pass_data,
2737 'finished' => ($data["test_finished"] == 1) ? 1 : 0,
2738 'access' => $access,
2739 'maxpass' => $maxpass,
2740 'result' => $this->ctrl->getLinkTargetByClass('iltestevaluationgui', 'outParticipantsResultsOverview'),
2741 'finish_link' => $this->ctrl->getLinkTargetByClass('iltestevaluationgui', 'finishTestPassForSingleUser')
2742 ));
2743 }
2744 include_once "./Modules/Test/classes/tables/class.ilTestFixedParticipantsTableGUI.php";
2745 $table_gui = new ilTestFixedParticipantsTableGUI( $this, 'participants',
2746 $this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesBroken(),
2747 $this->object->getAnonymity(), count($rows)
2748 );
2749 $table_gui->setFilterCommand('fpSetFilter');
2750 $table_gui->setResetCommand('fpResetFiler');
2751 $rows = $this->applyFilterCriteria($rows);
2752 $table_gui->setData($rows);
2753 $this->tpl->setVariable('ADM_CONTENT', $table_gui->getHTML());
2754
2755 if(count($rows) > 0)
2756 {
2757 $ilToolbar->addSeparator();
2758 $delete_all_results_btn = ilLinkButton::getInstance();
2759 $delete_all_results_btn->setCaption('delete_all_user_data');
2760 $delete_all_results_btn->setUrl($this->ctrl->getLinkTarget($this, 'deleteAllUserResults'));
2761 $ilToolbar->addButtonInstance($delete_all_results_btn);
2762 }
2763 $this->addFinishAllPassesButton($unfinished_passes, $ilToolbar);
2764 }
2765 else
2766 {
2767 $participants =& $this->object->getTestParticipants();
2768 $rows = array();
2769 $unfinished_passes = false;
2770
2771 foreach ($participants as $data)
2772 {
2773 $maxpass = $this->object->_getMaxPass($data["active_id"]);
2774 if (!is_null($maxpass))
2775 {
2776 $maxpass += 1;
2777 }
2778 $access = "";
2779 if (strlen($data["active_id"]))
2780 {
2781 $last_access = $this->object->_getLastAccess($data["active_id"]);
2782 $access = $last_access;
2783 }
2784 $this->ctrl->setParameterByClass('iltestevaluationgui', 'active_id', $data['active_id']);
2785
2786 $unfinished_pass_data = 0;
2787 if($data["unfinished_passes"] == 1)
2788 {
2789 $unfinished_pass_data = 1;
2790 $unfinished_passes = true;
2791 }
2792
2793 include_once "./Modules/Test/classes/class.ilObjTestAccess.php";
2794 $fullname = ilObjTestAccess::_getParticipantData($data['active_id']);
2795 array_push($rows, array(
2796 'usr_id' => $data["active_id"],
2797 'active_id' => $data['active_id'],
2798 'login' => $data["login"],
2799 'name' => $fullname,
2800 'firstname' => $data["firstname"],
2801 'lastname' => $data["lastname"],
2802 'started' => ($data["active_id"] > 0) ? 1 : 0,
2803 'unfinished' => $unfinished_pass_data,
2804 'finished' => ($data["test_finished"] == 1) ? 1 : 0,
2805 'access' => $access,
2806 'maxpass' => $maxpass,
2807 'result' => $this->ctrl->getLinkTargetByClass('iltestevaluationgui', 'outParticipantsResultsOverview'),
2808 'finish_link' => $this->ctrl->getLinkTargetByClass('iltestevaluationgui', 'finishTestPassForSingleUser')
2809 ));
2810 }
2811 include_once "./Modules/Test/classes/tables/class.ilTestParticipantsTableGUI.php";
2812 $table_gui = new ilTestParticipantsTableGUI( $this, 'participants',
2813 $this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesBroken(),
2814 $this->object->getAnonymity(), count($rows)
2815 );
2816
2817 if(count($rows) > 0)
2818 {
2819 require_once 'Services/UIComponent/Button/classes/class.ilLinkButton.php';
2820 $delete_all_results_btn = ilLinkButton::getInstance();
2821 $delete_all_results_btn->setCaption('delete_all_user_data');
2822 $delete_all_results_btn->setUrl($this->ctrl->getLinkTarget($this, 'deleteAllUserResults'));
2823 $ilToolbar->addStickyItem($delete_all_results_btn);
2824 }
2825
2826 $this->addFinishAllPassesButton($unfinished_passes, $ilToolbar);
2827
2828 $table_gui->setFilterCommand('npSetFilter');
2829 $table_gui->setResetCommand('npResetFilter');
2830 $rows = $this->applyFilterCriteria($rows);
2831 $table_gui->setData($rows);
2832 $this->tpl->setVariable('ADM_CONTENT', $table_gui->getHTML());
2833 }
2834 }
static _getParticipantData($active_id)
Retrieves a participant name from active id.
applyFilterCriteria($in_rows)
addFinishAllPassesButton($unfinished_passes, $ilToolbar)
static fillAutoCompleteToolbar($parent_object, ilToolbarGUI $toolbar=null, $a_options=array(), $a_sticky=false)
fill toolbar with

References ilObjectGUI\$data, ilObjectGUI\$lng, ilObjTestAccess\_getParticipantData(), addFinishAllPassesButton(), applyFilterCriteria(), ilRepositorySearchGUI\fillAutoCompleteToolbar(), ilLinkButton\getInstance(), getParticipantsSubTabs(), ilUtil\sendFailure(), and ilUtil\sendInfo().

Referenced by fpResetFilterObject(), fpSetFilterObject(), npResetFilterObject(), and npSetFilterObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateQuestionBrowserToolbarButtons()

ilObjTestGUI::populateQuestionBrowserToolbarButtons ( ilToolbarGUI  $toolbar,
  $context 
)
private
Parameters
$ilToolbar
$context

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

2374 {
2375 require_once 'Modules/Test/classes/tables/class.ilTestQuestionBrowserTableGUI.php';
2376
2377 $this->ctrl->setParameterByClass('ilTestQuestionBrowserTableGUI', ilTestQuestionBrowserTableGUI::CONTEXT_PARAMETER, $context);
2378
2379 $this->ctrl->setParameterByClass('ilTestQuestionBrowserTableGUI', ilTestQuestionBrowserTableGUI::MODE_PARAMETER, ilTestQuestionBrowserTableGUI::MODE_BROWSE_POOLS);
2380
2381 $toolbar->addButton($this->lng->txt("tst_browse_for_qpl_questions"), $this->ctrl->getLinkTargetByClass('ilTestQuestionBrowserTableGUI', ilTestQuestionBrowserTableGUI::CMD_BROWSE_QUESTIONS));
2382
2383 $this->ctrl->setParameterByClass('ilTestQuestionBrowserTableGUI', ilTestQuestionBrowserTableGUI::MODE_PARAMETER, ilTestQuestionBrowserTableGUI::MODE_BROWSE_TESTS);
2384
2385 $toolbar->addButton($this->lng->txt("tst_browse_for_tst_questions"), $this->ctrl->getLinkTargetByClass('ilTestQuestionBrowserTableGUI', ilTestQuestionBrowserTableGUI::CMD_BROWSE_QUESTIONS));
2386 }
addButton($a_txt, $a_cmd, $a_target="", $a_acc_key="", $a_additional_attrs='', $a_id="", $a_class='submit')
Add button to toolbar.

References ilToolbarGUI\addButton(), ilTestQuestionBrowserTableGUI\CMD_BROWSE_QUESTIONS, ilTestQuestionBrowserTableGUI\CONTEXT_PARAMETER, ilTestQuestionBrowserTableGUI\MODE_BROWSE_POOLS, ilTestQuestionBrowserTableGUI\MODE_BROWSE_TESTS, and ilTestQuestionBrowserTableGUI\MODE_PARAMETER.

Referenced by buildPageViewToolbar(), and questionsObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ prepareSubGuiOutput()

ilObjTestGUI::prepareSubGuiOutput ( )
private

prepares ilias to get output rendered by sub gui class

@global ilLocator $ilLocator @global ilTemplate $tpl @global ilObjUser $ilUser

Returns
boolean

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

983 {
984 global $ilUser;
985
986 $this->tpl->getStandardTemplate();
987
988 // set locator
989 $this->setLocator();
990
991 // catch feedback message
993
994 // set title and description and title icon
995 $this->setTitleAndDescription();
996
997 // BEGIN WebDAV: Display Mount Webfolder icon.
998 if ($ilUser->getId() != ANONYMOUS_USER_ID)
999 {
1000 require_once ('Services/WebDAV/classes/class.ilDAVActivationChecker.php');
1002 {
1003 $this->showMountWebfolderIcon();
1004 }
1005 }
1006 // END WebDAV: Display Mount Webfolder icon.
1007 }
setLocator()
set Locator
setTitleAndDescription()
called by prepare output
static infoPanel($a_keep=true)

References $ilUser, ilDAVActivationChecker\_isActive(), ilUtil\infoPanel(), ilObjectGUI\setLocator(), ilObjectGUI\setTitleAndDescription(), and ilObjectGUI\showMountWebfolderIcon().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ printobject()

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

@access public

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

3201 {
3202 global $ilAccess, $ilias;
3203 if (!$ilAccess->checkAccess("write", "", $this->ref_id))
3204 {
3205 // allow only write access
3206 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
3207 $this->ctrl->redirect($this, "infoScreen");
3208 }
3209
3210 $isPdfDeliveryRequest = isset($_GET['pdf']) && $_GET['pdf'];
3211
3212 $this->getQuestionsSubTabs();
3213 $template = new ilTemplate("tpl.il_as_tst_print_test_confirm.html", TRUE, TRUE, "Modules/Test");
3214
3215 if(!$isPdfDeliveryRequest) // #15243
3216 {
3217 $this->ctrl->setParameter($this, "pdf", "1");
3218 $template->setCurrentBlock("pdf_export");
3219 $template->setVariable("PDF_URL", $this->ctrl->getLinkTarget($this, "print"));
3220 $this->ctrl->setParameter($this, "pdf", "");
3221 $template->setVariable("PDF_TEXT", $this->lng->txt("pdf_export"));
3222 $template->parseCurrentBlock();
3223
3224 $template->setCurrentBlock("navigation_buttons");
3225 $template->setVariable("BUTTON_PRINT", $this->lng->txt("print"));
3226 $template->parseCurrentBlock();
3227 }
3228 // prepare generation before contents are processed (for mathjax)
3229 else
3230 {
3231 require_once 'Services/PDFGeneration/classes/class.ilPDFGeneration.php';
3233 }
3234
3235 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print");
3236
3237 global $ilUser;
3238 $print_date = mktime(date("H"), date("i"), date("s"), date("m") , date("d"), date("Y"));
3239 $max_points= 0;
3240 $counter = 1;
3241
3242 require_once 'Modules/Test/classes/class.ilTestQuestionHeaderBlockBuilder.php';
3243 $questionHeaderBlockBuilder = new ilTestQuestionHeaderBlockBuilder($this->lng);
3244 $questionHeaderBlockBuilder->setHeaderMode($this->object->getTitleOutput());
3245
3246 if($isPdfDeliveryRequest)
3247 {
3248 require_once 'Services/WebAccessChecker/classes/class.ilWACSignedPath.php';
3250 }
3251
3252 foreach ($this->object->questions as $question)
3253 {
3254 $template->setCurrentBlock("question");
3255 $question_gui = $this->object->createQuestionGUI("", $question);
3256
3257 if( $isPdfDeliveryRequest )
3258 {
3259 $question_gui->setRenderPurpose(assQuestionGUI::RENDER_PURPOSE_PRINT_PDF);
3260 }
3261
3262 $questionHeaderBlockBuilder->setQuestionTitle($question_gui->object->getTitle());
3263 $questionHeaderBlockBuilder->setQuestionPoints($question_gui->object->getMaximumPoints());
3264 $questionHeaderBlockBuilder->setQuestionPosition($counter);
3265 $template->setVariable("QUESTION_HEADER", $questionHeaderBlockBuilder->getHTML());
3266
3267 $template->setVariable("TXT_QUESTION_ID", $this->lng->txt('question_id_short'));
3268 $template->setVariable("QUESTION_ID", $question_gui->object->getId());
3269 $result_output = $question_gui->getSolutionOutput("", NULL, FALSE, TRUE, FALSE, $this->object->getShowSolutionFeedback());
3270 $template->setVariable("SOLUTION_OUTPUT", $result_output);
3271 $template->parseCurrentBlock("question");
3272 $counter ++;
3273 $max_points += $question_gui->object->getMaximumPoints();
3274 }
3275
3276 $template->setVariable("TITLE", ilUtil::prepareFormOutput($this->object->getTitle()));
3277 $template->setVariable("PRINT_TEST", ilUtil::prepareFormOutput($this->lng->txt("tst_print")));
3278 $template->setVariable("TXT_PRINT_DATE", ilUtil::prepareFormOutput($this->lng->txt("date")));
3279 $template->setVariable("VALUE_PRINT_DATE", ilUtil::prepareFormOutput(strftime("%c",$print_date)));
3280 $template->setVariable("TXT_MAXIMUM_POINTS", ilUtil::prepareFormOutput($this->lng->txt("tst_maximum_points")));
3281 $template->setVariable("VALUE_MAXIMUM_POINTS", ilUtil::prepareFormOutput($max_points));
3282
3283 if( $isPdfDeliveryRequest )
3284 {
3285 require_once 'class.ilTestPDFGenerator.php';
3286 ilTestPDFGenerator::generatePDF($template->get(), ilTestPDFGenerator::PDF_OUTPUT_DOWNLOAD, $this->object->getTitleFilenameCompliant());
3287 }
3288 else
3289 {
3290 $this->tpl->setVariable("PRINT_CONTENT", $template->get());
3291 }
3292 }
date( 'd-M-Y', $objPHPExcel->getProperties() ->getCreated())
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms @access public
static setTokenMaxLifetimeInSeconds($token_max_lifetime_in_seconds)

References $_GET, $counter, ilObjectGUI\$ilias, $ilUser, date, ilTestPDFGenerator\generatePDF(), getQuestionsSubTabs(), ilUtil\getStyleSheetLocation(), ilTestPDFGenerator\PDF_OUTPUT_DOWNLOAD, ilUtil\prepareFormOutput(), ilPDFGeneration\prepareGeneration(), assQuestionGUI\RENDER_PURPOSE_PRINT_PDF, ilUtil\sendInfo(), and ilWACSignedPath\setTokenMaxLifetimeInSeconds().

+ Here is the call graph for this function:

◆ questionsObject()

ilObjTestGUI::questionsObject ( )

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

2214 {
2215 global $ilAccess, $ilTabs;
2216
2217 $ilTabs->activateTab('assQuestions');
2218
2219 // #12590
2220 $this->ctrl->setParameter($this, 'test_express_mode', '');
2221
2222 if (!$ilAccess->checkAccess("write", "", $this->ref_id))
2223 {
2224 // allow only write access
2225 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
2226 $this->ctrl->redirect($this, "infoScreen");
2227 }
2228
2229 if ($_GET['browse'])
2230 {
2231 return $this->questionbrowser();
2232 }
2233
2234 $this->getQuestionsSubTabs();
2235
2236 // #11631, #12994
2237 $this->ctrl->setParameter($this, 'q_id', '');
2238
2239 if ($_GET["eqid"] && $_GET["eqpl"])
2240 {
2241 ilUtil::redirect("ilias.php?baseClass=ilObjQuestionPoolGUI&ref_id=" . $_GET["eqpl"] . "&cmd=editQuestionForTest&calling_test=".$_GET["ref_id"]."&q_id=" . $_GET["eqid"]);
2242 }
2243
2244 if ($_GET["up"] > 0)
2245 {
2246 $this->object->questionMoveUp($_GET["up"]);
2247 }
2248 if ($_GET["down"] > 0)
2249 {
2250 $this->object->questionMoveDown($_GET["down"]);
2251 }
2252
2253 if ($_GET["add"])
2254 {
2255 $selected_array = array();
2256 array_push($selected_array, $_GET["add"]);
2257 $total = $this->object->evalTotalPersons();
2258 if ($total)
2259 {
2260 // the test was executed previously
2261 ilUtil::sendInfo(sprintf($this->lng->txt("tst_insert_questions_and_results"), $total));
2262 }
2263 else
2264 {
2265 ilUtil::sendInfo($this->lng->txt("tst_insert_questions"));
2266 }
2267 $this->insertQuestions($selected_array);
2268 return;
2269 }
2270
2271 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_questions.html", "Modules/Test");
2272
2273 $total = $this->object->evalTotalPersons();
2274 if ($ilAccess->checkAccess("write", "", $this->ref_id))
2275 {
2276 if($total != 0)
2277 {
2278 $link = $this->ctrl->getLinkTarget($this, "participants");
2279 $link = "<a href=\"".$link."\">".$this->lng->txt("test_has_datasets_warning_page_view_link")."</a>";
2280 ilUtil::sendInfo($this->lng->txt("test_has_datasets_warning_page_view")." ".$link);
2281 }
2282 else {
2283 global $ilToolbar;
2284
2285 $ilToolbar->addButton($this->lng->txt("ass_create_question"), $this->ctrl->getLinkTarget($this, "addQuestion"));
2286
2287 if( $this->object->getPoolUsage() )
2288 {
2289 $ilToolbar->addSeparator();
2290
2291 require_once 'Modules/Test/classes/tables/class.ilTestQuestionBrowserTableGUI.php';
2292
2294 }
2295
2296 $ilToolbar->addSeparator();
2297 $ilToolbar->addButton($this->lng->txt("random_selection"), $this->ctrl->getLinkTarget($this, "randomselect"));
2298
2299
2300 global $ilAccess, $ilUser, $lng, $ilCtrl;
2301 $online_access = false;
2302 if ($this->object->getFixedParticipants())
2303 {
2304 include_once "./Modules/Test/classes/class.ilObjTestAccess.php";
2305 $online_access_result = ilObjTestAccess::_lookupOnlineTestAccess($this->object->getId(), $ilUser->getId());
2306 if ($online_access_result === true)
2307 {
2308 $online_access = true;
2309 }
2310 }
2311
2312 if( $this->object->isOnline() && $this->object->isComplete( $this->testQuestionSetConfigFactory->getQuestionSetConfig() ) )
2313 {
2314 if ((!$this->object->getFixedParticipants() || $online_access) && $ilAccess->checkAccess("read", "", $this->ref_id))
2315 {
2316 $testSession = $this->testSessionFactory->getSession();
2317 $testSequence = $this->testSequenceFactory->getSequenceByTestSession($testSession);
2318
2319 $testPlayerGUI = $this->testPlayerFactory->getPlayerGUI();
2320
2321 $executable = $this->object->isExecutable($testSession, $ilUser->getId(), $allowPassIncrease = TRUE);
2322
2323 if ($executable["executable"])
2324 {
2325 if ($testSession->getActiveId() > 0)
2326 {
2327 // resume test
2328
2329 if ($testSequence->hasStarted($testSession))
2330 {
2331 $execTestLabel = $this->lng->txt("tst_resume_test");
2332 $execTestLink = $this->ctrl->getLinkTarget($testPlayerGUI, 'resumePlayer');
2333 }
2334 else
2335 {
2336 $execTestLabel = $this->object->getStartTestLabel($testSession->getActiveId());
2337 $execTestLink = $this->ctrl->getLinkTarget($testPlayerGUI, 'startPlayer');
2338 }
2339 }
2340 else
2341 {
2342 // start new test
2343
2344 $execTestLabel = $this->object->getStartTestLabel($testSession->getActiveId());
2345 $execTestLink = $this->ctrl->getLinkTarget($testPlayerGUI, 'startPlayer');
2346 }
2347
2348 $ilToolbar->addSeparator();
2349 $ilToolbar->addButton($execTestLabel, $execTestLink);
2350 }
2351 }
2352 }
2353
2354
2355 }
2356 }
2357
2358 $this->tpl->setCurrentBlock("adm_content");
2359 include_once "./Modules/Test/classes/tables/class.ilTestQuestionsTableGUI.php";
2360 $checked_move = is_array($_SESSION['tst_qst_move_' . $this->object->getTestId()]) && (count($_SESSION['tst_qst_move_' . $this->object->getTestId()]));
2361 $table_gui = new ilTestQuestionsTableGUI($this, 'questions', (($ilAccess->checkAccess("write", "", $this->ref_id) ? true : false)), $checked_move, $total);
2362 $data = $this->object->getTestQuestions();
2363 $table_gui->setData($data);
2364 $this->tpl->setVariable('QUESTIONBROWSER', $table_gui->getHTML());
2365 $this->tpl->setVariable("ACTION_QUESTION_FORM", $this->ctrl->getFormAction($this));
2366 $this->tpl->parseCurrentBlock();
2367 }

References $_GET, $_SESSION, ilObjectGUI\$data, $ilCtrl, $ilUser, ilObjectGUI\$lng, $total, ilObjTestAccess\_lookupOnlineTestAccess(), ilTestQuestionBrowserTableGUI\CONTEXT_LIST_VIEW, getQuestionsSubTabs(), populateQuestionBrowserToolbarButtons(), ilUtil\redirect(), ilUtil\sendInfo(), and sprintf.

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ questionsTabGatewayObject()

ilObjTestGUI::questionsTabGatewayObject ( )
private

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

787 {
788 switch( $this->object->getQuestionSetType() )
789 {
791 $this->ctrl->redirectByClass('ilTestExpressPageObjectGUI', 'showPage');
792
794 $this->ctrl->redirectByClass('ilTestRandomQuestionSetConfigGUI');
795
797 $this->ctrl->redirectByClass('ilObjTestDynamicQuestionSetConfigGUI');
798 }
799 }

References ilObjTest\QUESTION_SET_TYPE_DYNAMIC, ilObjTest\QUESTION_SET_TYPE_FIXED, and ilObjTest\QUESTION_SET_TYPE_RANDOM.

◆ randomselectObject()

ilObjTestGUI::randomselectObject ( )

Creates a form for random selection of questions.

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

1493 {
1494 global $ilUser;
1495 $this->getQuestionsSubTabs();
1496 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_random_select.html", "Modules/Test");
1497 $questionpools =& $this->object->getAvailableQuestionpools(FALSE, FALSE, FALSE, TRUE);
1498 $this->tpl->setCurrentBlock("option");
1499 $this->tpl->setVariable("VALUE_OPTION", "0");
1500 $this->tpl->setVariable("TEXT_OPTION", $this->lng->txt("all_available_question_pools"));
1501 $this->tpl->parseCurrentBlock();
1502 foreach ($questionpools as $key => $value)
1503 {
1504 $this->tpl->setCurrentBlock("option");
1505 $this->tpl->setVariable("VALUE_OPTION", $key);
1506 $this->tpl->setVariable("TEXT_OPTION", $value["title"]);
1507 $this->tpl->parseCurrentBlock();
1508 }
1509 $this->tpl->setCurrentBlock("hidden");
1510 $this->tpl->setVariable("HIDDEN_NAME", "sel_question_types");
1511 $this->tpl->setVariable("HIDDEN_VALUE", $_POST["sel_question_types"]);
1512 $this->tpl->parseCurrentBlock();
1513 $this->tpl->setCurrentBlock("adm_content");
1514 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
1515 $this->tpl->setVariable("TXT_QPL_SELECT", $this->lng->txt("tst_random_select_questionpool"));
1516 $this->tpl->setVariable("TXT_NR_OF_QUESTIONS", $this->lng->txt("tst_random_nr_of_questions"));
1517 $this->tpl->setVariable("BTN_SUBMIT", $this->lng->txt("submit"));
1518 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
1519 $this->tpl->parseCurrentBlock();
1520 }

References $_POST, $ilUser, and getQuestionsSubTabs().

+ Here is the call graph for this function:

◆ redirectTo_ilObjTestSettingsGeneralGUI_showForm_Object()

ilObjTestGUI::redirectTo_ilObjTestSettingsGeneralGUI_showForm_Object ( )
private

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

969 {
970 require_once 'Modules/Test/classes/class.ilObjTestSettingsGeneralGUI.php';
971 $this->ctrl->redirectByClass('ilObjTestSettingsGeneralGUI', ilObjTestSettingsGeneralGUI::CMD_SHOW_FORM);
972 }

References ilObjTestSettingsGeneralGUI\CMD_SHOW_FORM.

◆ redirectToInfoScreenObject()

ilObjTestGUI::redirectToInfoScreenObject ( )

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

3616 {
3617 $this->ctrl->setCmd("showSummary");
3618 $this->ctrl->setCmdClass("ilinfoscreengui");
3619 $this->infoScreen($_GET['lock']);
3620 }

References $_GET.

◆ removeImportFailsObject()

ilObjTestGUI::removeImportFailsObject ( )
protected

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

3810 {
3811 require_once 'Modules/TestQuestionPool/classes/questions/class.ilAssQuestionSkillAssignmentImportFails.php';
3812 $qsaImportFails = new ilAssQuestionSkillAssignmentImportFails($this->object->getId());
3813 $qsaImportFails->deleteRegisteredImportFails();
3814
3815 require_once 'Modules/Test/classes/class.ilTestSkillLevelThresholdImportFails.php';
3816 $sltImportFails = new ilTestSkillLevelThresholdImportFails($this->object->getId());
3817 $sltImportFails->deleteRegisteredImportFails();
3818
3819 $this->ctrl->redirect($this, 'infoScreen');
3820 }

◆ removeParticipantObject()

ilObjTestGUI::removeParticipantObject ( )

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

3162 {
3163 if (is_array($_POST["chbUser"]))
3164 {
3165 foreach ($_POST["chbUser"] as $user_id)
3166 {
3167 $this->object->disinviteUser($user_id);
3168 }
3169 }
3170 else
3171 {
3172 ilUtil::sendInfo($this->lng->txt("select_one_user"), true);
3173 }
3174 $this->ctrl->redirect($this, "participants");
3175 }

References $_POST, and ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ removeQuestionsForm()

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

@access public

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

1910 {
1911 $total = $this->object->evalTotalPersons();
1912 if ($total)
1913 {
1914 // the test was executed previously
1915 $question = sprintf($this->lng->txt("tst_remove_questions_and_results"), $total);
1916 }
1917 else
1918 {
1919 if (count($checked_questions) == 1)
1920 {
1921 $question = $this->lng->txt("tst_remove_question");
1922 }
1923 else
1924 {
1925 $question = $this->lng->txt("tst_remove_questions");
1926 }
1927 }
1928
1929 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
1930 $cgui = new ilConfirmationGUI();
1931 $cgui->setHeaderText($question);
1932
1933 $this->ctrl->saveParameter($this, 'test_express_mode');
1934 $this->ctrl->saveParameter($this, 'q_id');
1935
1936 $cgui->setFormAction($this->ctrl->getFormAction($this));
1937 $cgui->setCancel($this->lng->txt("cancel"), "cancelRemoveQuestions");
1938 $cgui->setConfirm($this->lng->txt("confirm"), "confirmRemoveQuestions");
1939
1940 include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
1941 $removablequestions =& $this->object->getTestQuestions();
1942 if (count($removablequestions))
1943 {
1944 foreach ($removablequestions as $data)
1945 {
1946 if (in_array($data["question_id"], $checked_questions))
1947 {
1948 $txt = $data["title"]." (".assQuestion::_getQuestionTypeName($data["type_tag"]).")";
1949 $txt .= ' ['. $this->lng->txt('question_id_short') . ': ' . $data['question_id'] . ']';
1950
1951 if($data["description"])
1952 {
1953 $txt .= "<div class=\"small\">".$data["description"]."</div>";
1954 }
1955
1956 $cgui->addItem("q_id[]", $data["question_id"], $txt);
1957 }
1958 }
1959 }
1960
1961 $this->tpl->setContent($cgui->getHTML());
1962 }
$txt
Definition: error.php:12

References ilObjectGUI\$data, $total, $txt, assQuestion\_getQuestionTypeName(), and sprintf.

Referenced by removeQuestionsObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ removeQuestionsObject()

ilObjTestGUI::removeQuestionsObject ( )

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

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

1968 {
1969 $this->getQuestionsSubTabs();
1970 $checked_questions = $_REQUEST["q_id"];
1971
1972 if (!is_array($checked_questions) && $checked_questions) {
1973 $checked_questions = array($checked_questions);
1974 }
1975
1976 if (!is_array($checked_questions)) {
1977 $checked_questions = [];
1978 }
1979
1980 if (count($checked_questions) > 0) {
1981 $this->removeQuestionsForm($checked_questions);
1982 } elseif (0 === count($checked_questions)) {
1983 ilUtil::sendFailure($this->lng->txt("tst_no_question_selected_for_removal"), true);
1984 $this->ctrl->redirect($this, "questions");
1985 }
1986 }
removeQuestionsForm($checked_questions)
Displays a form to confirm the removal of questions from the test.

References getQuestionsSubTabs(), removeQuestionsForm(), and ilUtil\sendFailure().

+ Here is the call graph for this function:

◆ resetFilterObject()

ilObjTestGUI::resetFilterObject ( )

Resets the filter for the question browser.

Resets the filter for the question browser

@access public

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

1447 {
1448 $this->questionBrowser();
1449 }

◆ reviewobject()

ilObjTestGUI::reviewobject ( )

Review tab to create a print of all questions without points and solutions.

Review tab to create a print of all questions without points and solutions

@access public

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

3302 {
3303 global $ilAccess, $ilias;
3304 if (!$ilAccess->checkAccess("write", "", $this->ref_id))
3305 {
3306 // allow only write access
3307 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
3308 $this->ctrl->redirect($this, "infoScreen");
3309 }
3310 $this->getQuestionsSubTabs();
3311 $template = new ilTemplate("tpl.il_as_tst_print_test_confirm.html", TRUE, TRUE, "Modules/Test");
3312
3313 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print");
3314
3315 $isPdfDeliveryRequest = isset($_GET['pdf']) && $_GET['pdf'];
3316
3317 global $ilUser;
3318 $print_date = mktime(date("H"), date("i"), date("s"), date("m") , date("d"), date("Y"));
3319 $max_points= 0;
3320 $counter = 1;
3321
3322 require_once 'Modules/Test/classes/class.ilTestQuestionHeaderBlockBuilder.php';
3323 $questionHeaderBlockBuilder = new ilTestQuestionHeaderBlockBuilder($this->lng);
3324 $questionHeaderBlockBuilder->setHeaderMode($this->object->getTitleOutput());
3325
3326 if($isPdfDeliveryRequest)
3327 {
3328 require_once 'Services/WebAccessChecker/classes/class.ilWACSignedPath.php';
3330
3331 // prepare generation before contents are processed (for mathjax)
3332 require_once 'Services/PDFGeneration/classes/class.ilPDFGeneration.php';
3334 }
3335
3336 foreach ($this->object->questions as $question)
3337 {
3338 $template->setCurrentBlock("question");
3339 $question_gui = $this->object->createQuestionGUI("", $question);
3340 $question_gui->setRenderPurpose(assQuestionGUI::RENDER_PURPOSE_PREVIEW);
3341
3342 $questionHeaderBlockBuilder->setQuestionTitle($question_gui->object->getTitle());
3343 $questionHeaderBlockBuilder->setQuestionPoints($question_gui->object->getMaximumPoints());
3344 $questionHeaderBlockBuilder->setQuestionPosition($counter);
3345 $template->setVariable("QUESTION_HEADER", $questionHeaderBlockBuilder->getHTML());
3346
3347 $template->setVariable("SOLUTION_OUTPUT", $question_gui->getPreview(false));
3348 $template->parseCurrentBlock("question");
3349 $counter ++;
3350 $max_points += $question_gui->object->getMaximumPoints();
3351 }
3352
3353
3354
3355 $template->setVariable("TITLE", ilUtil::prepareFormOutput($this->object->getTitle()));
3356 $template->setVariable("PRINT_TEST", ilUtil::prepareFormOutput($this->lng->txt("review_view")));
3357 $template->setVariable("TXT_PRINT_DATE", ilUtil::prepareFormOutput($this->lng->txt("date")));
3358 $template->setVariable("VALUE_PRINT_DATE", ilUtil::prepareFormOutput(strftime("%c",$print_date)));
3359 $template->setVariable("TXT_MAXIMUM_POINTS", ilUtil::prepareFormOutput($this->lng->txt("tst_maximum_points")));
3360 $template->setVariable("VALUE_MAXIMUM_POINTS", ilUtil::prepareFormOutput($max_points));
3361
3362 if($isPdfDeliveryRequest)
3363 {
3364 require_once 'class.ilTestPDFGenerator.php';
3365 ilTestPDFGenerator::generatePDF($template->get(), ilTestPDFGenerator::PDF_OUTPUT_DOWNLOAD, $this->object->getTitleFilenameCompliant());
3366 }
3367 else
3368 {
3369 $this->ctrl->setParameter($this, "pdf", "1");
3370 $template->setCurrentBlock("pdf_export");
3371 $template->setVariable("PDF_URL", $this->ctrl->getLinkTarget($this, "review"));
3372 $this->ctrl->setParameter($this, "pdf", "");
3373 $template->setVariable("PDF_TEXT", $this->lng->txt("pdf_export"));
3374 $template->parseCurrentBlock();
3375
3376 $template->setCurrentBlock("navigation_buttons");
3377 $template->setVariable("BUTTON_PRINT", $this->lng->txt("print"));
3378 $template->parseCurrentBlock();
3379
3380
3381 $this->tpl->setVariable("PRINT_CONTENT", $template->get());
3382 }
3383 }

References $_GET, $counter, ilObjectGUI\$ilias, $ilUser, date, ilTestPDFGenerator\generatePDF(), getQuestionsSubTabs(), ilUtil\getStyleSheetLocation(), ilTestPDFGenerator\PDF_OUTPUT_DOWNLOAD, ilUtil\prepareFormOutput(), ilPDFGeneration\prepareGeneration(), assQuestionGUI\RENDER_PURPOSE_PREVIEW, ilUtil\sendInfo(), and ilWACSignedPath\setTokenMaxLifetimeInSeconds().

+ Here is the call graph for this function:

◆ runObject()

ilObjTestGUI::runObject ( )

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

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

◆ saveClientIPObject()

ilObjTestGUI::saveClientIPObject ( )

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

3178 {
3179 if (is_array($_POST["chbUser"]))
3180 {
3181 foreach ($_POST["chbUser"] as $user_id)
3182 {
3183 $this->object->setClientIP($user_id, $_POST["clientip_".$user_id]);
3184 }
3185 }
3186 else
3187 {
3188 ilUtil::sendInfo($this->lng->txt("select_one_user"), true);
3189 }
3190 $this->ctrl->redirect($this, "participants");
3191 }

References $_POST, and ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ saveOrderAndObligationsObject()

ilObjTestGUI::saveOrderAndObligationsObject ( )

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

5086 {
5087 global $ilAccess;
5088 if (!$ilAccess->checkAccess("write", "", $this->ref_id))
5089 {
5090 // allow only write access
5091 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
5092 $this->ctrl->redirect($this, "infoScreen");
5093 }
5094
5095 global $ilCtrl;
5096
5097 $orders = $obligations = array();
5098
5099 foreach((array)$_REQUEST['order'] as $qId => $order)
5100 {
5101 $id = (int)str_replace('q_', '', $qId);
5102
5103 $orders[$id] = $order;
5104 }
5105
5106 if( $this->object->areObligationsEnabled() && isset($_REQUEST['obligatory']) && is_array($_REQUEST['obligatory']) )
5107 {
5108 foreach($_REQUEST['obligatory'] as $qId => $obligation)
5109 {
5110 $id = (int)str_replace('q_', '', $qId);
5111
5113 {
5114 $obligations[$id] = $obligation;
5115 }
5116 }
5117 }
5118
5119 $this->object->setQuestionOrderAndObligations(
5120 $orders, $obligations
5121 );
5122
5123 ilUtil::sendSuccess($this->lng->txt('saved_successfully'), true);
5124 $ilCtrl->redirect($this, 'questions');
5125 }
static isQuestionObligationPossible($questionId)
checks wether the obligation for question with given id is possible or not

References $ilCtrl, ilObjTest\isQuestionObligationPossible(), ilUtil\sendInfo(), and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ showDetailedResultsObject()

ilObjTestGUI::showDetailedResultsObject ( )

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

@access public

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

3096 {
3097 if (count($_POST))
3098 {
3099 $_SESSION["show_user_results"] = $_POST["chbUser"];
3100 }
3101 $this->showUserResults($show_pass_details = TRUE, $show_answers = TRUE, $show_reached_points = TRUE);
3102 }
showUserResults($show_pass_details, $show_answers, $show_reached_points=FALSE)
Shows the pass overview of the scored pass for one ore more users.

References $_POST, $_SESSION, and showUserResults().

+ Here is the call graph for this function:

◆ showPageObject()

ilObjTestGUI::showPageObject ( )

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

5186 {
5187 global $ilCtrl;
5188
5189 $ilCtrl->setParameterByClass('iltestexpresspageobjectgui', 'q_id', $_REQUEST['q_id']);
5190 $ilCtrl->redirectByClass('iltestexpresspageobjectgui', 'showPage');
5191 }

References $ilCtrl.

Referenced by movePageObject().

+ Here is the caller graph for this function:

◆ showPassOverviewObject()

ilObjTestGUI::showPassOverviewObject ( )

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

@access public

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

3124 {
3125 if (count($_POST))
3126 {
3127 $_SESSION["show_user_results"] = $_POST["chbUser"];
3128 }
3129 $this->showUserResults($show_pass_details = TRUE, $show_answers = FALSE);
3130 }

References $_POST, $_SESSION, and showUserResults().

+ Here is the call graph for this function:

◆ showTimingFormObject()

ilObjTestGUI::showTimingFormObject ( )

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

2998 {
2999 $form = $this->formTimingObject();
3000 $this->tpl->setContent($form->getHTML());
3001 }

References formTimingObject().

+ Here is the call graph for this function:

◆ showUserAnswersObject()

ilObjTestGUI::showUserAnswersObject ( )

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

@access public

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

3110 {
3111 if (count($_POST))
3112 {
3113 $_SESSION["show_user_results"] = $_POST["chbUser"];
3114 }
3115 $this->showUserResults($show_pass_details = FALSE, $show_answers = TRUE);
3116 }

References $_POST, $_SESSION, and showUserResults().

+ Here is the call graph for this function:

◆ showUserResults()

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

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

@access public

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

3138 {
3139 $show_user_results = $_SESSION["show_user_results"];
3140
3141 if (count($show_user_results) == 0)
3142 {
3143 ilUtil::sendInfo($this->lng->txt("select_one_user"), TRUE);
3144 $this->ctrl->redirect($this, "participants");
3145 }
3146
3147
3148 $template = $this->createUserResults( $show_pass_details, $show_answers, $show_reached_points, $show_user_results);
3149
3150 if($template instanceof ilTemplate)
3151 {
3152 $this->tpl->setVariable("ADM_CONTENT", $template->get());
3153 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print");
3154 if ($this->object->getShowSolutionAnswersOnly())
3155 {
3156 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print_hide_content.css", "Modules/Test"), "print");
3157 }
3158 }
3159 }
createUserResults($show_pass_details, $show_answers, $show_reached_points, $show_user_results)

References $_SESSION, createUserResults(), ilUtil\getStyleSheetLocation(), and ilUtil\sendInfo().

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

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ statisticsObject()

ilObjTestGUI::statisticsObject ( )

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

3906 {
3907 }

◆ takenObject()

ilObjTestGUI::takenObject ( )

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

2388 {
2389 }

◆ timingObject()

ilObjTestGUI::timingObject ( )

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

2903 {
2904 $this->getParticipantsSubTabs();
2905
2906 global $ilAccess;
2907
2908 if (!$ilAccess->checkAccess("write", "", $this->ref_id))
2909 {
2910 // allow only write access
2911 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
2912 $this->ctrl->redirect($this, "infoScreen");
2913 }
2914
2915 if ($this->object->getProcessingTimeInSeconds() > 0 && $this->object->getNrOfTries() == 1)
2916 {
2917 $form = $this->formTimingObject();
2918 if (count($_POST) && $form->checkInput())
2919 {
2920 $res = $this->object->addExtraTime($form->getInput('participant'), $form->getInput('extratime'));
2921 ilUtil::sendSuccess(sprintf($this->lng->txt('tst_extratime_added'), $form->getInput('extratime')), true);
2922 $this->ctrl->redirect($this, 'timingOverview');
2923 }
2924 else
2925 {
2926 return $this->tpl->setVariable("ADM_CONTENT", $form->getHTML());
2927 }
2928 }
2929 else
2930 {
2931 ilUtil::sendInfo($this->lng->txt("tst_extratime_notavailable"));
2932 }
2933 }

References $_POST, $res, formTimingObject(), getParticipantsSubTabs(), ilUtil\sendInfo(), ilUtil\sendSuccess(), and sprintf.

+ Here is the call graph for this function:

◆ timingOverviewObject()

ilObjTestGUI::timingOverviewObject ( )

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

2853 {
2854 $this->getParticipantsSubTabs();
2855
2856 include_once "./Modules/Test/classes/tables/class.ilTimingOverviewTableGUI.php";
2857 $table_gui = new ilTimingOverviewTableGUI($this, 'timingOverview');
2858
2859 $participants =& $this->object->getTestParticipants();#
2860 $times = $this->object->getStartingTimeOfParticipants();
2861 $addons = $this->object->getTimeExtensionsOfParticipants();
2862
2863 $tbl_data = array();
2864 foreach ($participants as $participant)
2865 {
2866 $tblRow = array();
2867
2868 $started = "";
2869 if ($times[$participant['active_id']])
2870 {
2871 $started = $this->lng->txt('tst_started').': '.ilDatePresentation::formatDate(new ilDateTime($times[$participant['active_id']], IL_CAL_DATETIME));
2872 $tblRow['started'] = $started;
2873 }
2874 else
2875 {
2876 $tblRow['started'] = '';
2877 }
2878
2879 if ($addons[$participant['active_id']] > 0)
2880 {
2881 $tblRow['extratime'] = $addons[$participant['active_id']];
2882 }
2883
2884 $tblRow['login'] = $participant['login'];
2885
2886 if ($this->object->getAnonymity())
2887 {
2888 $tblRow['name'] = $this->lng->txt("anonymous");
2889 }
2890 else
2891 {
2892 $tblRow['name'] = $participant['lastname'] . ', ' . $participant['firstname'];
2893 }
2894
2895 $tbl_data[] = $tblRow;
2896 }
2897 $table_gui->setData($tbl_data);
2898
2899 $this->tpl->setContent($table_gui->getHTML());
2900 }
Class ilTimingOverviewTableGUI.

References ilDatePresentation\formatDate(), getParticipantsSubTabs(), and IL_CAL_DATETIME.

+ Here is the call graph for this function:

◆ trackTestObjectReadEvent()

ilObjTestGUI::trackTestObjectReadEvent ( )
protected

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

736 {
737 /* @var ILIAS\DI\Container $DIC */ global $DIC;
738
739 require_once 'Services/Tracking/classes/class.ilChangeEvent.php';
740
742 $this->object->getType(), $this->object->getRefId(),
743 $this->object->getId(), $DIC->user()->getId()
744 );
745 }
static _recordReadEvent($a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.

References $DIC, and ilChangeEvent\_recordReadEvent().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ uploadObject()

ilObjTestGUI::uploadObject (   $redirect = true)

display status information or report errors messages in case of error

@access public

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

1389 {
1390 $this->uploadTstObject();
1391 }

References uploadTstObject().

+ Here is the call graph for this function:

◆ uploadTstObject()

ilObjTestGUI::uploadTstObject ( )

imports test and question(s)

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

1111 {
1112 if ($_FILES["xmldoc"]["error"] > UPLOAD_ERR_OK)
1113 {
1114 ilUtil::sendFailure($this->lng->txt("error_upload"));
1115 $this->createObject();
1116 return;
1117 }
1118 include_once("./Modules/Test/classes/class.ilObjTest.php");
1119 // create import directory
1121
1122 // copy uploaded file to import directory
1123 $file = pathinfo($_FILES["xmldoc"]["name"]);
1124 $full_path = $basedir."/".$_FILES["xmldoc"]["name"];
1125 ilUtil::moveUploadedFile($_FILES["xmldoc"]["tmp_name"], $_FILES["xmldoc"]["name"], $full_path);
1126
1127 // unzip file
1128 ilUtil::unzip($full_path);
1129
1130 // determine filenames of xml files
1131 $subdir = basename($file["basename"],".".$file["extension"]);
1133 $xml_file = ilObjTest::_getImportDirectory().'/'.$subdir.'/'.$subdir.".xml";
1134 $qti_file = ilObjTest::_getImportDirectory().'/'.$subdir.'/'. preg_replace("/test|tst/", "qti", $subdir).".xml";
1135 $results_file = ilObjTest::_getImportDirectory().'/'.$subdir.'/'. preg_replace("/test|tst/", "results", $subdir).".xml";
1136
1137 if(!is_file($qti_file))
1138 {
1139 ilUtil::delDir($basedir);
1140 ilUtil::sendFailure($this->lng->txt("tst_import_non_ilias_zip"));
1141 $this->createObject();
1142 return;
1143 }
1144
1145 // start verification of QTI files
1146 include_once "./Services/QTI/classes/class.ilQTIParser.php";
1147 $qtiParser = new ilQTIParser($qti_file, IL_MO_VERIFY_QTI, 0, "");
1148 $result = $qtiParser->startParsing();
1149 $founditems =& $qtiParser->getFoundItems();
1150
1151 $complete = 0;
1152 $incomplete = 0;
1153 foreach ($founditems as $item)
1154 {
1155 if (strlen($item["type"]))
1156 {
1157 $complete++;
1158 }
1159 else
1160 {
1161 $incomplete++;
1162 }
1163 }
1164
1165 if( count($founditems) && $complete == 0 )
1166 {
1167 // delete import directory
1168 ilUtil::delDir($basedir);
1169
1170 ilUtil::sendInfo($this->lng->txt("qpl_import_non_ilias_files"));
1171 $this->createObject();
1172 return;
1173 }
1174
1175 $_SESSION["tst_import_results_file"] = $results_file;
1176 $_SESSION["tst_import_xml_file"] = $xml_file;
1177 $_SESSION["tst_import_qti_file"] = $qti_file;
1178 $_SESSION["tst_import_subdir"] = $subdir;
1179
1180 if( $qtiParser->getQuestionSetType() != ilObjTest::QUESTION_SET_TYPE_FIXED )
1181 {
1182 $this->importVerifiedFileObject();
1183 return;
1184 }
1185
1186 // display of found questions
1187 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.tst_import_verification.html", "Modules/Test");
1188 $row_class = array("tblrow1", "tblrow2");
1189 $counter = 0;
1190 foreach ($founditems as $item)
1191 {
1192 $this->tpl->setCurrentBlock("verification_row");
1193 $this->tpl->setVariable("ROW_CLASS", $row_class[$counter++ % 2]);
1194 $this->tpl->setVariable("QUESTION_TITLE", $item["title"]);
1195 $this->tpl->setVariable("QUESTION_IDENT", $item["ident"]);
1196 include_once "./Services/QTI/classes/class.ilQTIItem.php";
1197 switch ($item["type"])
1198 {
1201 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assMultipleChoice"));
1202 break;
1205 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assSingleChoice"));
1206 break;
1208 case QT_KPRIM_CHOICE:
1209 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assKprimChoice"));
1210 break;
1212 case QT_LONG_MENU:
1213 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assLongMenu"));
1214 break;
1216 case QT_NUMERIC:
1217 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assNumeric"));
1218 break;
1220 case QT_FORMULA:
1221 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assFormulaQuestion"));
1222 break;
1224 case QT_TEXTSUBSET:
1225 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assTextSubset"));
1226 break;
1228 case QT_CLOZE:
1229 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assClozeTest"));
1230 break;
1232 case QT_ERRORTEXT:
1233 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assErrorText"));
1234 break;
1236 case QT_IMAGEMAP:
1237 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assImagemapQuestion"));
1238 break;
1240 case QT_JAVAAPPLET:
1241 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assJavaApplet"));
1242 break;
1244 case QT_FLASHAPPLET:
1245 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assFlashApplet"));
1246 break;
1248 case QT_MATCHING:
1249 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assMatchingQuestion"));
1250 break;
1252 case QT_ORDERING:
1253 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assOrderingQuestion"));
1254 break;
1257 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assOrderingHorizontal"));
1258 break;
1260 case QT_TEXT:
1261 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assTextQuestion"));
1262 break;
1264 case QT_FILEUPLOAD:
1265 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assFileUpload"));
1266 break;
1267 }
1268 $this->tpl->parseCurrentBlock();
1269 }
1270
1271 // on import creation screen the pool was chosen (-1 for no pool)
1272 // BUT when no pool is available the input on creation screen is missing, so the field value -1 for no pool is not submitted.
1273 $QplOrTstID = isset($_POST["qpl"]) && (int)$_POST["qpl"] != 0 ? $_POST["qpl"] : -1;
1274
1275 $this->tpl->setCurrentBlock("adm_content");
1276 $this->tpl->setVariable("TEXT_TYPE", $this->lng->txt("question_type"));
1277 $this->tpl->setVariable("TEXT_TITLE", $this->lng->txt("question_title"));
1278 $this->tpl->setVariable("FOUND_QUESTIONS_INTRODUCTION", $this->lng->txt("tst_import_verify_found_questions"));
1279 $this->tpl->setVariable("VERIFICATION_HEADING", $this->lng->txt("import_tst"));
1280 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
1281 $this->tpl->setVariable("ARROW", ilUtil::getImagePath("arrow_downright.svg"));
1282 $this->tpl->setVariable("QUESTIONPOOL_ID", $QplOrTstID);
1283 $this->tpl->setVariable("VALUE_IMPORT", $this->lng->txt("import"));
1284 $this->tpl->setVariable("VALUE_CANCEL", $this->lng->txt("cancel"));
1285 $this->tpl->parseCurrentBlock();
1286 }
const QT_CLOZE
const QT_IMAGEMAP
const QT_TEXTSUBSET
const QT_JAVAAPPLET
const QT_KPRIM_CHOICE
const QT_MULTIPLE_CHOICE_MR
const QT_MATCHING
const QT_ORDERING_HORIZONTAL
const QT_ORDERING
const QT_FILEUPLOAD
const QT_FORMULA
const QT_NUMERIC
const QT_MULTIPLE_CHOICE_SR
const QT_FLASHAPPLET
const QT_LONG_MENU
const QT_TEXT
const QT_ERRORTEXT
const IL_MO_VERIFY_QTI
importVerifiedFileObject()
imports question(s) into the questionpool (after verification)
static _setImportDirectory($a_import_dir=null)
set import directory
static _createImportDirectory()
creates data directory for import files (data_dir/tst_data/tst_<id>/import, depending on data directo...
createObject()
create new object form
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
static unzip($a_file, $overwrite=false, $a_flat=false)
unzip file
const CLOZE_TEST_IDENTIFIER
Question identifier constants.
const FLASHAPPLET_QUESTION_IDENTIFIER
const IMAGEMAP_QUESTION_IDENTIFIER
const SINGLE_CHOICE_QUESTION_IDENTIFIER
const FORMULA_QUESTION_IDENTIFIER
const ERROR_TEXT_IDENTIFIER
const TEXTSUBSET_QUESTION_IDENTIFIER
const NUMERIC_QUESTION_IDENTIFIER
const JAVAAPPLET_QUESTION_IDENTIFIER
const FILE_UPLOAD_IDENTIFIER
const TEXT_QUESTION_IDENTIFIER
const LONG_MENU_QUESTION_IDENTIFIER
const KPRIM_CHOICE_QUESTION_IDENTIFIER
const ORDERING_HORIZONTAL_IDENTIFIER
const MATCHING_QUESTION_IDENTIFIER
const MULTIPLE_CHOICE_QUESTION_IDENTIFIER
const ORDERING_QUESTION_IDENTIFIER

References $_POST, $_SESSION, $counter, $file, $result, ilObjTest\_createImportDirectory(), ilObjTest\_getImportDirectory(), ilObjTest\_setImportDirectory(), CLOZE_TEST_IDENTIFIER, ilObjectGUI\createObject(), ilUtil\delDir(), ERROR_TEXT_IDENTIFIER, FILE_UPLOAD_IDENTIFIER, FLASHAPPLET_QUESTION_IDENTIFIER, FORMULA_QUESTION_IDENTIFIER, ilUtil\getImagePath(), IL_MO_VERIFY_QTI, IMAGEMAP_QUESTION_IDENTIFIER, importVerifiedFileObject(), JAVAAPPLET_QUESTION_IDENTIFIER, KPRIM_CHOICE_QUESTION_IDENTIFIER, LONG_MENU_QUESTION_IDENTIFIER, MATCHING_QUESTION_IDENTIFIER, ilUtil\moveUploadedFile(), MULTIPLE_CHOICE_QUESTION_IDENTIFIER, NUMERIC_QUESTION_IDENTIFIER, ORDERING_HORIZONTAL_IDENTIFIER, ORDERING_QUESTION_IDENTIFIER, QT_CLOZE, QT_ERRORTEXT, QT_FILEUPLOAD, QT_FLASHAPPLET, QT_FORMULA, QT_IMAGEMAP, QT_JAVAAPPLET, QT_KPRIM_CHOICE, QT_LONG_MENU, QT_MATCHING, QT_MULTIPLE_CHOICE_MR, QT_MULTIPLE_CHOICE_SR, QT_NUMERIC, QT_ORDERING, QT_ORDERING_HORIZONTAL, QT_TEXT, QT_TEXTSUBSET, ilObjTest\QUESTION_SET_TYPE_FIXED, ilUtil\sendFailure(), ilUtil\sendInfo(), SINGLE_CHOICE_QUESTION_IDENTIFIER, TEXT_QUESTION_IDENTIFIER, TEXTSUBSET_QUESTION_IDENTIFIER, and ilUtil\unzip().

Referenced by importFileObject(), and uploadObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ userResultsGatewayObject()

ilObjTestGUI::userResultsGatewayObject ( )
private

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

802 {
803 $this->ctrl->setCmdClass('ilTestEvaluationGUI');
804 $this->ctrl->setCmd('outUserResultsOverview');
805 $this->tabs_gui->clearTargets();
806
807 $this->forwardToEvaluationGUI();
808 }

References forwardToEvaluationGUI().

+ Here is the call graph for this function:

Field Documentation

◆ $infoScreenChildClasses

ilObjTestGUI::$infoScreenChildClasses
staticprivate
Initial value:
= array(
'ilpublicuserprofilegui', 'ilobjportfoliogui'
)

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

◆ $object

ilObjTest ilObjTestGUI::$object = null

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

Referenced by applyTemplate(), and executeCommand().

◆ $objectiveOrientedContainer

ilObjTestGUI::$objectiveOrientedContainer
private

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

Referenced by getObjectiveOrientedContainer().

◆ $testPlayerFactory

ilObjTestGUI::$testPlayerFactory = null
private

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

◆ $testQuestionSetConfigFactory

ilObjTestGUI::$testQuestionSetConfigFactory = null
private

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

◆ $testSequenceFactory

ilObjTestGUI::$testSequenceFactory = null
private

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

◆ $testSessionFactory

ilObjTestGUI::$testSessionFactory = null
private

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

Referenced by executeCommand().


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