ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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...
 
 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...
 
 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
 
 $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...
 
 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
 $ilErr
 
 $locator
 
 $user
 
 $access
 
 $settings
 
 $rbacreview
 
 $toolbar
 
 $rbacsystem
 
 $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, ilLTIProviderObjectSettingGUI

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 require_once 'Modules/Test/classes/class.ilTestQuestionSetConfigFactory.php';
89 $this->testQuestionSetConfigFactory = new ilTestQuestionSetConfigFactory($tree, $ilDB, $ilPluginAdmin, $this->object);
90
91 require_once 'Modules/Test/classes/class.ilTestPlayerFactory.php';
92 $this->testPlayerFactory = new ilTestPlayerFactory($this->object);
93
94 require_once 'Modules/Test/classes/class.ilTestSessionFactory.php';
95 $this->testSessionFactory = new ilTestSessionFactory($this->object);
96
97 require_once 'Modules/Test/classes/class.ilTestSequenceFactory.php';
98 $this->testSequenceFactory = new ilTestSequenceFactory($ilDB, $lng, $ilPluginAdmin, $this->object);
99 }
100
101 require_once 'Modules/Test/classes/class.ilTestObjectiveOrientedContainer.php';
102 $this->objectiveOrientedContainer = new ilTestObjectiveOrientedContainer();
103 }
$_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 4276 of file class.ilObjTestGUI.php.

4277 {
4278 global $ilAccess, $ilErr, $lng;
4279
4280 if ($ilAccess->checkAccess("read", "", $a_target)) {
4281 //include_once "./Services/Utilities/classes/class.ilUtil.php";
4282 $_GET["baseClass"] = "ilObjTestGUI";
4283 $_GET["cmd"] = "infoScreen";
4284 $_GET["ref_id"] = $a_target;
4285 include_once("ilias.php");
4286 exit;
4287 //ilUtil::redirect("ilias.php?baseClass=ilObjTestGUI&cmd=infoScreen&ref_id=$a_target");
4288 } elseif ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID)) {
4290 $lng->txt("msg_no_perm_read_item"),
4292 ), true);
4294 }
4295
4296 $ilErr->raiseError($lng->txt("msg_no_perm_read_lm"), $ilErr->FATAL);
4297 }
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.

References $_GET, ilObjectGUI\$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 4260 of file class.ilObjTestGUI.php.

4261 {
4262 global $DIC; /* @var ILIAS\DI\Container $DIC */
4263
4264 ilUtil::sendInfo($DIC->language()->txt("no_permission"), true);
4265 $DIC->ctrl()->redirectByClass('ilObjTestGUI', "infoScreen");
4266 }
global $DIC
Definition: saml.php:7

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

3371 {
3372 if (strlen($_POST["name"]) > 0) {
3373 $this->object->addDefaults($_POST['name']);
3374 } else {
3375 ilUtil::sendInfo($this->lng->txt("tst_defaults_enter_name"));
3376 }
3377 $this->defaultsObject();
3378 }
$_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 1040 of file class.ilObjTestGUI.php.

1041 {
1042 include_once("./Modules/Test/classes/class.ilObjTest.php");
1043 $tst = new ilObjTest();
1044 $defaults = $tst->getAvailableDefaults();
1045 if (count($defaults)) {
1046 foreach ($defaults as $row) {
1047 $a_options["tstdef_" . $row["test_defaults_id"]] = array($row["name"],
1048 $this->lng->txt("tst_default_settings"));
1049 }
1050 }
1051
1052 // using template?
1053 include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
1055 if ($templates) {
1056 foreach ($templates as $item) {
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 2692 of file class.ilObjTestGUI.php.

2693 {
2694 if ($unfinished_passes) {
2695 $ilToolbar->addSeparator();
2696 $finish_all_user_passes_btn = ilLinkButton::getInstance();
2697 $finish_all_user_passes_btn->setCaption('finish_all_user_passes');
2698 $finish_all_user_passes_btn->setUrl($this->ctrl->getLinkTargetByClass('iltestevaluationgui', 'finishAllUserPasses'));
2699 $ilToolbar->addButtonInstance($finish_all_user_passes_btn);
2700 }
2701 }
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 3584 of file class.ilObjTestGUI.php.

3585 {
3586 global $ilLocator;
3587 switch ($this->ctrl->getCmd()) {
3588 case "run":
3589 case "infoScreen":
3590 case "redirectToInfoScreen":
3591 case "start":
3592 case "resume":
3593 case "previous":
3594 case "next":
3595 case "summary":
3596 case "finishTest":
3597 case "outCorrectSolution":
3598 case "passDetails":
3599 case "showAnswersOfUser":
3600 case "outUserResultsOverview":
3601 case "backFromSummary":
3602 case "show_answers":
3603 case "setsolved":
3604 case "resetsolved":
3605 case "outTestSummary":
3606 case "outQuestionSummary":
3607 case "gotoQuestion":
3608 case "selectImagemapRegion":
3609 case "confirmSubmitAnswers":
3610 case "finalSubmission":
3611 case "postpone":
3612 case "outUserPassDetails":
3613 case "checkPassword":
3614 $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "infoScreen"), "", $_GET["ref_id"]);
3615 break;
3616 case "eval_stat":
3617 case "evalAllUsers":
3618 case "evalUserDetail":
3619 $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "eval_stat"), "", $_GET["ref_id"]);
3620 break;
3621 case "create":
3622 case "save":
3623 case "cancel":
3624 case "importFile":
3625 case "cloneAll":
3626 case "importVerifiedFile":
3627 case "cancelImport":
3628 break;
3629 default:
3630 $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, ""), "", $_GET["ref_id"]);
3631 break;
3632 }
3633 }

References $_GET.

◆ addParticipantsObject()

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

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

3200 {
3201 $countusers = 0;
3202 // add users
3203 if (is_array($a_user_ids)) {
3204 $i = 0;
3205 foreach ($a_user_ids as $user_id) {
3206 $client_ip = $_POST["client_ip"][$i];
3207 $this->object->inviteUser($user_id, $client_ip);
3208 $countusers++;
3209 $i++;
3210 }
3211 }
3212 $message = "";
3213 if ($countusers) {
3214 $message = $this->lng->txt("tst_invited_selected_users");
3215 }
3216 if (strlen($message)) {
3218 } else {
3219 ilUtil::sendInfo($this->lng->txt("tst_invited_nobody"), true);
3220 return false;
3221 }
3222
3223 $this->ctrl->redirect($this, "participants");
3224 }
$i
Definition: disco.tpl.php:19
catch(Exception $e) $message

References $_POST, $i, $message, and ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ addQuestionObject()

ilObjTestGUI::addQuestionObject ( )

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

2010 {
2011 global $lng, $ilCtrl, $tpl;
2012 global $DIC; /* @var \ILIAS\DI\Container $DIC */
2013 $ilHelp = $DIC['ilHelp']; /* @var ilHelpGUI $ilHelp */
2014
2015 $subScreenId = array('createQuestion');
2016
2017 include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
2018
2019 $ilCtrl->setParameter($this, 'qtype', $_REQUEST['qtype']);
2020
2021 $form = new ilPropertyFormGUI();
2022
2023 $form->setFormAction($ilCtrl->getFormAction($this, "executeCreateQuestion"));
2024 $form->setTitle($lng->txt("ass_create_question"));
2025 include_once 'Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
2026
2027 $pool = new ilObjQuestionPool();
2028 $questionTypes = $pool->getQuestionTypes(false, true);
2029 $options = array();
2030
2031 // question type
2032 foreach ($questionTypes as $label => $data) {
2033 $options[$data['question_type_id']] = $label;
2034 }
2035
2036 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
2037 $si = new ilSelectInputGUI($lng->txt("question_type"), "qtype");
2038 $si->setOptions($options);
2039 $form->addItem($si, true);
2040
2041 // position
2042 $questions = $this->object->getQuestionTitlesAndIndexes();
2043 if ($questions) {
2044 $si = new ilSelectInputGUI($lng->txt("position"), "position");
2045 $options = array('0' => $lng->txt('first'));
2046 foreach ($questions as $key => $title) {
2047 $options[$key] = $lng->txt('behind') . ' ' . $title . ' [' . $this->lng->txt('question_id_short') . ': ' . $key . ']';
2048 }
2049 $si->setOptions($options);
2050 $si->setValue($_REQUEST['q_id']);
2051 $form->addItem($si, true);
2052 }
2053
2054 // content editing mode
2056 $subScreenId[] = 'editMode';
2057
2058 $ri = new ilRadioGroupInputGUI($lng->txt("tst_add_quest_cont_edit_mode"), "add_quest_cont_edit_mode");
2059
2060 $ri->addOption(new ilRadioOption(
2061 $lng->txt('tst_add_quest_cont_edit_mode_default'),
2063 ));
2064
2065 $ri->addOption(new ilRadioOption(
2066 $lng->txt('tst_add_quest_cont_edit_mode_page_object'),
2068 ));
2069
2071
2072 $form->addItem($ri, true);
2073 } else {
2074 $hi = new ilHiddenInputGUI("question_content_editing_type");
2076 $form->addItem($hi, true);
2077 }
2078
2079 if ($this->object->getPoolUsage()) {
2080 $subScreenId[] = 'poolSelect';
2081
2082 // use pool
2083 $usage = new ilRadioGroupInputGUI($this->lng->txt("assessment_pool_selection"), "usage");
2084 $usage->setRequired(true);
2085 $no_pool = new ilRadioOption($this->lng->txt("assessment_no_pool"), 1);
2086 $usage->addOption($no_pool);
2087 $existing_pool = new ilRadioOption($this->lng->txt("assessment_existing_pool"), 3);
2088 $usage->addOption($existing_pool);
2089 $new_pool = new ilRadioOption($this->lng->txt("assessment_new_pool"), 2);
2090 $usage->addOption($new_pool);
2091 $form->addItem($usage);
2092
2093 $usage->setValue(1);
2094
2095 $questionpools = ilObjQuestionPool::_getAvailableQuestionpools(false, false, true, false, false, "write");
2096 $pools_data = array();
2097 foreach ($questionpools as $key => $p) {
2098 $pools_data[$key] = $p['title'];
2099 }
2100 $pools = new ilSelectInputGUI($this->lng->txt("select_questionpool"), "sel_qpl");
2101 $pools->setOptions($pools_data);
2102 $existing_pool->addSubItem($pools);
2103
2104 $name = new ilTextInputGUI($this->lng->txt("name"), "txt_qpl");
2105 $name->setSize(50);
2106 $name->setMaxLength(50);
2107 $new_pool->addSubItem($name);
2108 }
2109
2110 $form->addCommandButton("executeCreateQuestion", $lng->txt("create"));
2111 $form->addCommandButton("questions", $lng->txt("cancel"));
2112
2113 $ilHelp->setScreenId('assQuestions');
2114 $ilHelp->setSubScreenId(implode('_', $subScreenId));
2115
2116 return $tpl->setContent($form->getHTML());
2117 }
if(!isset( $_REQUEST[ 'ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
Definition: as_login.php:20
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.
$key
Definition: croninfo.php:18
if($format !==null) $name
Definition: metadata.php:146
if(isset($_POST['submit'])) $form

References ilObjectGUI\$data, $DIC, $form, $ilCtrl, $key, ilObjectGUI\$lng, $name, $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 $testDefaultsId = $tstdef;
1072 $testDefaults = ilObjTest::_getTestDefaults($testDefaultsId);
1073 $a_new_object->applyDefaults($testDefaults);
1074 }
1075
1076 $template_id = $this->getDidacticTemplateVar("tsttpl");
1077 if ($template_id) {
1078 include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
1080
1081 $template_settings = $template->getSettings();
1082 if ($template_settings) {
1083 $this->applyTemplate($template_settings, $a_new_object);
1084 }
1085
1086 $a_new_object->setTemplate($template_id);
1087 }
1088
1089 $a_new_object->saveToDb();
1090
1091 // always send a message
1092 ilUtil::sendSuccess($this->lng->txt("object_added"), true);
1093 $this->ctrl->setParameter($this, 'ref_id', $a_new_object->getRefId());
1094 $this->ctrl->redirectByClass('ilObjTestSettingsGeneralGUI');
1095 }
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
$template_id

References $template, $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 3282 of file class.ilObjTestGUI.php.

3283 {
3284 if (!is_array($_POST["chb_defaults"]) || 1 !== count($_POST["chb_defaults"])) {
3286 $this->lng->txt("tst_defaults_apply_select_one")
3287 );
3288
3289 return $this->defaultsObject();
3290 }
3291
3292 // do not apply if user datasets exist
3293 if ($this->object->evalTotalPersons() > 0) {
3295 $this->lng->txt("tst_defaults_apply_not_possible")
3296 );
3297
3298 return $this->defaultsObject();
3299 }
3300
3301 $defaults =&$this->object->getTestDefaults($_POST["chb_defaults"][0]);
3302 $defaultSettings = unserialize($defaults["defaults"]);
3303
3304 if (isset($defaultSettings['isRandomTest'])) {
3305 if ($defaultSettings['isRandomTest']) {
3306 $newQuestionSetType = ilObjTest::QUESTION_SET_TYPE_RANDOM;
3307 $this->object->setQuestionSetType(ilObjTest::QUESTION_SET_TYPE_RANDOM);
3308 } else {
3309 $newQuestionSetType = ilObjTest::QUESTION_SET_TYPE_FIXED;
3310 $this->object->setQuestionSetType(ilObjTest::QUESTION_SET_TYPE_FIXED);
3311 }
3312 } elseif (isset($defaultSettings['questionSetType'])) {
3313 $newQuestionSetType = $defaultSettings['questionSetType'];
3314 }
3315 $oldQuestionSetType = $this->object->getQuestionSetType();
3316 $questionSetTypeSettingSwitched = ($oldQuestionSetType != $newQuestionSetType);
3317
3318 $oldQuestionSetConfig = $this->testQuestionSetConfigFactory->getQuestionSetConfigByType($oldQuestionSetType);
3319
3320 switch (true) {
3321 case !$questionSetTypeSettingSwitched:
3322 case !$oldQuestionSetConfig->doesQuestionSetRelatedDataExist():
3323 case $confirmed:
3324
3325 break;
3326
3327 default:
3328
3329 require_once 'Modules/Test/classes/confirmations/class.ilTestSettingsChangeConfirmationGUI.php';
3330 $confirmation = new ilTestSettingsChangeConfirmationGUI($this->lng, $this->object);
3331
3332 $confirmation->setFormAction($this->ctrl->getFormAction($this));
3333 $confirmation->setCancel($this->lng->txt('cancel'), 'defaults');
3334 $confirmation->setConfirm($this->lng->txt('confirm'), 'confirmedApplyDefaults');
3335
3336 $confirmation->setOldQuestionSetType($this->object->getQuestionSetType());
3337 $confirmation->setNewQuestionSetType($newQuestionSetType);
3338 $confirmation->setQuestionLossInfoEnabled(false);
3339 $confirmation->build();
3340
3341 $confirmation->populateParametersFromPost();
3342
3343 $this->tpl->setContent($this->ctrl->getHTML($confirmation));
3344
3345 return;
3346 }
3347
3348 if ($questionSetTypeSettingSwitched && $this->object->isOnline()) {
3349 $this->object->setOnline(false);
3350
3351 $info = $this->lng->txt("tst_set_offline_due_to_switched_question_set_type_setting");
3352
3353 ilUtil::sendInfo($info, true);
3354 }
3355
3356 $this->object->applyDefaults($defaults);
3357
3358 ilUtil::sendSuccess($this->lng->txt("tst_defaults_applied"), true);
3359
3360 if ($questionSetTypeSettingSwitched && $oldQuestionSetConfig->doesQuestionSetRelatedDataExist()) {
3361 $oldQuestionSetConfig->removeQuestionSetRelatedData();
3362 }
3363
3364 $this->ctrl->redirect($this, 'defaults');
3365 }
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: index.php:5

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

2841 {
2842 global $ilDB;
2843 $sess_filter = $_SESSION['form_tst_participants_' . $this->ref_id]['selection'];
2844 $sess_filter = str_replace('"', '', $sess_filter);
2845 $sess_filter = explode(':', $sess_filter);
2846 $filter = substr($sess_filter[2], 0, strlen($sess_filter[2])-1);
2847
2848 if ($filter == 'all' || $filter == false) {
2849 return $in_rows; #unchanged - no filter.
2850 }
2851
2852 $with_result = array();
2853 $without_result = array();
2854 foreach ($in_rows as $row) {
2855 $result = $ilDB->query(
2856 'SELECT count(solution_id) count
2857 FROM tst_solutions
2858 WHERE active_fi = ' . $ilDB->quote($row['active_id'])
2859 );
2860 $count = $ilDB->fetchAssoc($result);
2861 $count = $count['count'];
2862
2863 if ($count == 0) {
2864 $without_result[] = $row;
2865 } else {
2866 $with_result[] = $row;
2867 }
2868 }
2869
2870 if ($filter == 'withSolutions') {
2871 return $with_result;
2872 }
2873 return $without_result;
2874 }
$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 4715 of file class.ilObjTestGUI.php.

4717 {
4718 // map formFieldName => setterName
4719 $simpleSetters = array(
4720
4721 // general properties
4722 'use_pool' => 'setPoolUsage',
4723 'question_set_type' => 'setQuestionSetType',
4724
4725 // test intro properties
4726 'intro_enabled' => 'setIntroductionEnabled',
4727 'showinfo' => 'setShowInfo',
4728
4729 // test access properties
4730 'chb_starting_time' => 'setStartingTimeEnabled',
4731 'chb_ending_time' => 'setEndingTimeEnabled',
4732 'password_enabled' => 'setPasswordEnabled',
4733 'fixedparticipants' => 'setFixedParticipants',
4734 'limitUsers' => 'setLimitUsersEnabled',
4735
4736 // test run properties
4737 'nr_of_tries' => 'setNrOfTries',
4738 'chb_processing_time' => 'setEnableProcessingTime',
4739 'kiosk' => 'setKiosk',
4740 'examid_in_test_pass' => 'setShowExamIdInTestPassEnabled',
4741
4742 // question behavior properties
4743 'title_output' => 'setTitleOutput',
4744 'autosave' => null, // handled specially in loop below
4745 'chb_shuffle_questions' => 'setShuffleQuestions',
4746 'offer_hints' => 'setOfferingQuestionHintsEnabled',
4747 'instant_feedback' => 'setScoringFeedbackOptionsByArray',
4748 'obligations_enabled' => 'setObligationsEnabled',
4749
4750 // test sequence properties
4751 'chb_use_previous_answers' => 'setUsePreviousAnswers',
4752 'chb_show_cancel' => 'setShowCancel',
4753 'chb_postpone' => 'setPostponingEnabled',
4754 'list_of_questions' => 'setListOfQuestionsSettings',
4755 'chb_show_marker' => 'setShowMarker',
4756
4757 // test finish properties
4758 'enable_examview' => 'setEnableExamview',
4759 'showfinalstatement' => 'setShowFinalStatement',
4760 'redirection_enabled' => null, // handled specially in loop below
4761 'sign_submission' => 'setSignSubmission',
4762 'mailnotification' => 'setMailNotification',
4763
4764 // scoring options properties
4765 'count_system' => 'setCountSystem',
4766 'mc_scoring' => 'setMCScoring',
4767 'score_cutting' => 'setScoreCutting',
4768 'pass_scoring' => 'setPassScoring',
4769 'pass_deletion_allowed' => 'setPassDeletionAllowed',
4770
4771 // result summary properties
4772 'results_access_enabled' => 'setScoreReporting',
4773 'grading_status' => 'setShowGradingStatusEnabled',
4774 'grading_mark' => 'setShowGradingMarkEnabled',
4775
4776 // result details properties
4777 'solution_details' => 'setShowSolutionDetails',
4778 'solution_feedback' => 'setShowSolutionFeedback',
4779 'solution_suggested' => 'setShowSolutionSuggested',
4780 'solution_printview' => 'setShowSolutionPrintview',
4781 'highscore_enabled' => 'setHighscoreEnabled',
4782 'solution_signature' => 'setShowSolutionSignature',
4783 'examid_in_test_res' => 'setShowExamIdInTestResultsEnabled',
4784 'exp_sc_short' => 'setExportSettingsSingleChoiceShort',
4785
4786 // misc scoring & result properties
4787 'anonymity' => 'setAnonymity',
4788 'enable_archiving' => 'setEnableArchiving'
4789 );
4790
4791 if (!$templateData['results_presentation']['value']) {
4792 $templateData['results_presentation']['value'] = array();
4793 }
4794
4795 foreach ($simpleSetters as $field => $setter) {
4796 if ($templateData[$field] && strlen($setter)) {
4797 $object->$setter($templateData[$field]['value']);
4798 continue;
4799 }
4800
4801 switch ($field) {
4802 case 'autosave':
4803 if ($templateData[$field]['value'] > 0) {
4804 $object->setAutosave(true);
4805 $object->setAutosaveIval($templateData[$field]['value'] * 1000);
4806 } else {
4807 $object->setAutosave(false);
4808 }
4809 break;
4810
4811 case 'redirection_enabled':
4812 /* if( $templateData[$field]['value'] > REDIRECT_NONE )
4813 {
4814 $object->setRedirectionMode($templateData[$field]['value']);
4815 }
4816 else
4817 {
4818 $object->setRedirectionMode(REDIRECT_NONE);
4819 } */
4820 if (strlen($templateData[$field]['value'])) {
4821 $object->setRedirectionMode(REDIRECT_ALWAYS);
4822 $object->setRedirectionUrl($templateData[$field]['value']);
4823 } else {
4824 $object->setRedirectionMode(REDIRECT_NONE);
4825 $object->setRedirectionUrl('');
4826 }
4827 }
4828 }
4829 }
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 1435 of file class.ilObjTestGUI.php.

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

◆ backToRepositoryObject()

ilObjTestGUI::backToRepositoryObject ( )

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

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

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

+ Here is the call graph for this function:

◆ browseForQuestionsObject()

ilObjTestGUI::browseForQuestionsObject ( )

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

1595 {
1596 $this->questionBrowser();
1597 }

◆ buildPageViewToolbar()

ilObjTestGUI::buildPageViewToolbar (   $qid = 0)

Questions per page.

Parameters

return

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

4306 {
4307 if ($this->create_question_mode) {
4308 return;
4309 }
4310
4311 global $ilToolbar, $ilCtrl, $lng;
4312
4313 require_once 'Services/UIComponent/Button/classes/class.ilLinkButton.php';
4314
4315 $this->getQuestionsSubTabs();
4316
4317 $ilCtrl->saveParameter($this, 'q_mode');
4318
4319 $ilCtrl->setParameterByClass('iltestexpresspageobjectgui', 'test_express_mode', 1);
4320 $ilCtrl->setParameter($this, 'test_express_mode', 1);
4321 $ilCtrl->setParameterByClass('iltestexpresspageobjectgui', 'q_id', $_REQUEST['q_id']);
4322 $ilCtrl->setParameter($this, 'q_id', $_REQUEST['q_id']);
4323 $ilToolbar->setFormAction($ilCtrl->getFormActionByClass('iltestexpresspageobjectgui', 'edit'));
4324
4325 if ($this->object->evalTotalPersons() == 0) {
4326 /*
4327 include_once 'Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
4328 $pool = new ilObjQuestionPool();
4329 $questionTypes = $pool->getQuestionTypes();$options = array();
4330 foreach($questionTypes as $label => $data) {
4331 $options[$data['question_type_id']] = $label;
4332 }
4333
4334 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
4335 $si = new ilSelectInputGUI($lng->txt("test_add_new_question"), "qtype");
4336 $si->setOptions($options);
4337 $ilToolbar->addInputItem($si, true);
4338 /*
4339 // use pool
4340 if ($this->object->isExpressModeQuestionPoolAllowed()) {
4341 include_once("./Services/Form/classes/class.ilCheckboxInputGUI.php");
4342 $cb = new ilCheckboxInputGUI($lng->txt("test_use_pool"), "use_pool");
4343 $ilToolbar->addInputItem($cb, true);
4344 }
4345 */
4346 $ilToolbar->addFormButton($lng->txt("ass_create_question"), "addQuestion");
4347
4348 $ilToolbar->addSeparator();
4349
4350 if ($this->object->getPoolUsage()) {
4351 require_once 'Modules/Test/classes/tables/class.ilTestQuestionBrowserTableGUI.php';
4352
4354
4355 $show_separator = true;
4356 }
4357 }
4358
4359 $questions = $this->object->getQuestionTitlesAndIndexes();
4360
4361 // desc
4362 $options = array();
4363 foreach ($questions as $id => $label) {
4364 $options[$id] = $label . ' [' . $this->lng->txt('question_id_short') . ': ' . $id . ']';
4365 }
4366
4367 $optionKeys = array_keys($options);
4368
4369 if (!$options) {
4370 $options[] = $lng->txt('none');
4371 }
4372 //else if (count($options) > 1) {
4373// $addSeparator = false;
4374// if ($optionKeys[0] != $qid) {
4375// //$ilToolbar->addFormButton($lng->txt("test_prev_question"), "prevQuestion");
4376// $ilToolbar->addLink($lng->txt("test_prev_question"), $ilCtrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'prevQuestion'));
4377// $addSeparator = true;
4378// }
4379 // else {
4380 // $ilToolbar->addSpacer(45);
4381 // }
4382//
4383// if ($optionKeys[count($optionKeys)-1] != $qid) {
4384// //$ilToolbar->addFormButton($lng->txt("test_next_question"), "nextQuestion");
4385// $ilToolbar->addLink($lng->txt("test_next_question"), $ilCtrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'nextQuestion'));
4386 // $addSeparator = true;
4387// }
4388 // else {
4389 // $ilToolbar->addSpacer(45);
4390 // }
4391//
4392// //if ($addSeparator) {
4393// $ilToolbar->addSeparator();
4394// //}
4395
4396 if (count($questions)) {
4397 if (isset($show_separator) && $show_separator) {
4398 $ilToolbar->addSeparator();
4399 }
4400
4402 $btn->setCaption("test_prev_question");
4403 $btn->setUrl($ilCtrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'prevQuestion'));
4404 $ilToolbar->addButtonInstance($btn);
4405
4406 if (count($options) <= 1 || $optionKeys[0] == $qid) {
4407 $btn->setDisabled(true);
4408 }
4409
4411 $btn->setCaption("test_next_question");
4412 $btn->setUrl($ilCtrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'nextQuestion'));
4413 $ilToolbar->addButtonInstance($btn);
4414
4415 if (count($options) <= 1 || $optionKeys[count($optionKeys) - 1] == $qid) {
4416 $btn->setDisabled(true);
4417 }
4418 }
4419
4420 if (count($questions) > 1) {
4421 $ilToolbar->addSeparator();
4422
4423 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
4424 $si = new ilSelectInputGUI($lng->txt("test_jump_to"), "q_id");
4425 $si->addCustomAttribute("onChange=\"forms['ilToolbar'].submit();\"");
4426 $si->setOptions($options);
4427
4428 if ($qid) {
4429 $si->setValue($qid);
4430 }
4431
4432 $ilToolbar->addInputItem($si, true);
4433 }
4434
4435 $total = $this->object->evalTotalPersons();
4436
4437 /*if (count($options)) {
4438 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
4439 $si = new ilSelectInputGUI($lng->txt("test_jump_to"), "q_id");
4440 $si->addCustomAttribute("onChange=\"forms['ilToolbar'].submit();\"");
4441 $si->setOptions($options);
4442
4443 if ($qid) {
4444 $si->setValue($qid);
4445 }
4446
4447 $ilToolbar->addInputItem($si, true);
4448 }*/
4449
4450 if (count($questions) && !$total) {
4451 $ilCtrl->setParameter($this, 'q_id', $_REQUEST['q_id']);
4452 $ilToolbar->addSeparator();
4453 $ilToolbar->addButton($lng->txt("test_delete_page"), $ilCtrl->getLinkTarget($this, "removeQuestions"));
4454 }
4455
4456 if (count($questions) > 1 && !$total) {
4457 $ilToolbar->addSeparator();
4458 $ilToolbar->addButton($lng->txt("test_move_page"), $ilCtrl->getLinkTarget($this, "movePageForm"));
4459 }
4460
4461 global $ilAccess, $ilUser;
4462
4463 $online_access = false;
4464 if ($this->object->getFixedParticipants()) {
4465 include_once "./Modules/Test/classes/class.ilObjTestAccess.php";
4466 $online_access_result = ilObjTestAccess::_lookupOnlineTestAccess($this->object->getId(), $ilUser->getId());
4467 if ($online_access_result === true) {
4468 $online_access = true;
4469 }
4470 }
4471
4472 if ($this->object->isOnline() && $this->object->isComplete($this->testQuestionSetConfigFactory->getQuestionSetConfig())) {
4473 if ((!$this->object->getFixedParticipants() || $online_access) && $ilAccess->checkAccess("read", "", $this->ref_id)) {
4474 $testSession = $this->testSessionFactory->getSession();
4475
4476 $executable = $this->object->isExecutable($testSession, $ilUser->getId(), $allowPassIncrease = true);
4477
4478 if ($executable["executable"]) {
4479 $player_factory = new ilTestPlayerFactory($this->object);
4480 $player_instance = $player_factory->getPlayerGUI();
4481
4482 if ($testSession->getActiveId() > 0) {
4483 $ilToolbar->addSeparator();
4484 $ilToolbar->addButton($lng->txt('tst_resume_test'), $ilCtrl->getLinkTarget($player_instance, 'resumePlayer'));
4485 } else {
4486 $ilToolbar->addSeparator();
4487 $ilToolbar->addButton($lng->txt('tst_start_test'), $ilCtrl->getLinkTarget($player_instance, 'startTest'));
4488 }
4489 }
4490 }
4491 }
4492 }
$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)
if(!array_key_exists('StateId', $_REQUEST)) $id
$ilUser
Definition: imgupload.php:18

References $id, $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 1670 of file class.ilObjTestGUI.php.

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

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

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

◆ cancelRandomSelectObject()

ilObjTestGUI::cancelRandomSelectObject ( )

Cancels the form for random selection of questions.

Cancels the form for random selection of questions

@access public

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

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

◆ cancelRemoveQuestionsObject()

ilObjTestGUI::cancelRemoveQuestionsObject ( )

Cancels the removal of questions from the test.

Cancels the removal of questions from the test

@access public

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

1832 {
1833 if ($_REQUEST['test_express_mode']) {
1834 $this->ctrl->setParameter($this, 'q_id', $_REQUEST['q_id']);
1835 $this->ctrl->redirect($this, "showPage");
1836 } else {
1837 $this->ctrl->redirect($this, "questions");
1838 }
1839 }

◆ certificateObject()

ilObjTestGUI::certificateObject ( )

Shows the certificate editor.

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

3677 {
3678 include_once "./Services/Certificate/classes/class.ilCertificateGUI.php";
3679 include_once "./Modules/Test/classes/class.ilTestCertificateAdapter.php";
3680 $output_gui = new ilCertificateGUI(new ilTestCertificateAdapter($this->object));
3681 $output_gui->certificateEditor();
3682 }
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 2279 of file class.ilObjTestGUI.php.

2280 {
2281 global $ilDB, $lng;
2282
2283 require_once 'Modules/Test/classes/class.ilTestParticipantData.php';
2284
2285 $participantData = new ilTestParticipantData($ilDB, $lng);
2286 $participantData->load($this->object->getTestId());
2287
2288 $this->object->removeTestResults($participantData);
2289
2290 ilUtil::sendSuccess($this->lng->txt("tst_all_user_data_deleted"), true);
2291 $this->ctrl->redirect($this, "participants");
2292 }

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

2302 {
2303 global $ilDB, $lng;
2304
2305 require_once 'Modules/Test/classes/class.ilTestParticipantData.php';
2306 $participantData = new ilTestParticipantData($ilDB, $lng);
2307
2308 if ($this->object->getFixedParticipants()) {
2309 $participantData->setUserIds($_POST["chbUser"]);
2310 } else {
2311 $participantData->setActiveIds($_POST["chbUser"]);
2312 }
2313
2314 $participantData->load($this->object->getTestId());
2315
2316 $this->object->removeTestResults($participantData);
2317
2318 ilUtil::sendSuccess($this->lng->txt("tst_selected_user_data_deleted"), true);
2319 $this->ctrl->redirect($this, "participants");
2320 }

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

+ Here is the call graph for this function:

◆ confirmedApplyDefaultsObject()

ilObjTestGUI::confirmedApplyDefaultsObject ( )

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

3274 {
3275 $this->applyDefaultsObject(true);
3276 return;
3277 }
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 1773 of file class.ilObjTestGUI.php.

1774 {
1775 $removeQuestionIds = (array) $_POST["q_id"];
1776
1777 $questions = $this->object->getQuestionTitlesAndIndexes();
1778
1779 $this->object->removeQuestions($removeQuestionIds);
1780
1781 $this->object->saveCompleteStatus($this->testQuestionSetConfigFactory->getQuestionSetConfig());
1782
1783 ilUtil::sendSuccess($this->lng->txt("tst_questions_removed"));
1784
1785 if ($_REQUEST['test_express_mode']) {
1786 $prev = null;
1787 $return_to = null;
1788 $deleted_tmp = $removeQuestionIds;
1789 $first = array_shift($deleted_tmp);
1790 foreach ((array) $questions as $key => $value) {
1791 if (!in_array($key, $removeQuestionIds)) {
1792 $prev = $key;
1793 if (!$first) {
1794 $return_to = $prev;
1795 break;
1796 } else {
1797 continue;
1798 }
1799 } elseif ($key == $first) {
1800 if ($prev) {
1801 $return_to = $prev;
1802 break;
1803 }
1804 $first = array_shift($deleted_tmp);
1805 }
1806 }
1807
1808 if (
1809 count($questions) == count($removeQuestionIds) ||
1810 !$return_to
1811 ) {
1812 $this->ctrl->setParameter($this, 'q_id', '');
1813 $this->ctrl->redirect($this, 'showPage');
1814 }
1815
1816 $this->ctrl->setParameter($this, 'q_id', $return_to);
1817 $this->ctrl->redirect($this, "showPage");
1818 } else {
1819 $this->ctrl->setParameter($this, 'q_id', '');
1820 $this->ctrl->redirect($this, 'questions');
1821 }
1822 }

References $_POST, $key, and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ copyAndLinkQuestionsToPoolObject()

ilObjTestGUI::copyAndLinkQuestionsToPoolObject ( )

@global ilObjectDataCache $ilObjDataCache

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

4536 {
4537 global $ilObjDataCache;
4538
4539 $qplId = $ilObjDataCache->lookupObjId($_REQUEST['sel_qpl']);
4540 $result = $this->copyQuestionsToPool($_REQUEST['q_id'], $qplId);
4541
4542 foreach ($result->ids as $oldId => $newId) {
4543 $questionInstance = assQuestion::_instanciateQuestion($oldId);
4544
4545 if (assQuestion::originalQuestionExists($questionInstance->getOriginalId())) {
4546 $oldOriginal = assQuestion::_instanciateQuestion($questionInstance->getOriginalId());
4547 $oldOriginal->delete($oldOriginal->getId());
4548 }
4549
4550 $questionInstance->setNewOriginalId($newId);
4551 }
4552
4553 ilUtil::sendSuccess($this->lng->txt('tst_qst_added_to_pool_' . (count($result->ids) > 1 ? 'p' : 's')), true);
4554 $this->ctrl->redirect($this, 'questions');
4555 }
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 4588 of file class.ilObjTestGUI.php.

4589 {
4590 global $lng;
4591
4592 require_once 'Modules/TestQuestionPool/classes/class.assQuestion.php';
4593
4594 // #13761; All methods use for this request should be revised, thx japo ;-)
4595 if (
4596 'copyAndLinkToQuestionpool' == $this->ctrl->getCmd() &&
4597 (!isset($_REQUEST['q_id']) || !is_array($_REQUEST['q_id']))
4598 ) {
4599 ilUtil::sendFailure($this->lng->txt('tst_no_question_selected_for_moving_to_qpl'), true);
4600 $this->ctrl->redirect($this, 'questions');
4601 }
4602
4603 if (isset($_REQUEST['q_id']) && is_array($_REQUEST['q_id'])) {
4604 foreach ($_REQUEST['q_id'] as $q_id) {
4606 continue;
4607 }
4608
4610
4611 if ($type !== 'tst') {
4612 ilUtil::sendFailure($lng->txt('tst_link_only_unassigned'), true);
4613 $this->ctrl->redirect($this, 'questions');
4614 return;
4615 }
4616 }
4617 }
4618
4619 $this->createQuestionpoolTargetObject('copyAndLinkQuestionsToPool');
4620 }
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.
$type

References ilObjectGUI\$lng, $type, 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 4937 of file class.ilObjTestGUI.php.

4938 {
4939 global $ilAccess;
4940 if (!$ilAccess->checkAccess("write", "", $this->ref_id)) {
4941 // allow only write access
4942 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
4943 $this->ctrl->redirect($this, "infoScreen");
4944 }
4945
4946 if ($_REQUEST['q_id'] && !is_array($_REQUEST['q_id'])) {
4947 $ids = array($_REQUEST['q_id']);
4948 } elseif ($_REQUEST['q_id']) {
4949 $ids = $_REQUEST['q_id'];
4950 } else {
4951 ilUtil::sendFailure($this->lng->txt('copy_no_questions_selected'), true);
4952 $this->ctrl->redirect($this, 'questions');
4953 }
4954
4955 $copy_count = 0;
4956
4957 $questionTitles = $this->object->getQuestionTitles();
4958
4959 foreach ($ids as $id) {
4960 include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
4962 if ($question) {
4963 $title = $question->object->getTitle();
4964 $i = 2;
4965 while (in_array($title . ' (' . $i . ')', $questionTitles)) {
4966 $i++;
4967 }
4968
4969 $title .= ' (' . $i . ')';
4970
4971 $questionTitles[] = $title;
4972
4973 $new_id = $question->object->duplicate(false, $title);
4974
4975 $clone = assQuestion::_instanciateQuestionGUI($new_id);
4976 $clone->object->setObjId($this->object->getId());
4977 $clone->object->saveToDb();
4978
4979 $this->object->insertQuestion($this->testQuestionSetConfigFactory->getQuestionSetConfig(), $new_id, true);
4980
4981 $copy_count++;
4982 }
4983 }
4984
4985 ilUtil::sendSuccess($this->lng->txt('copy_questions_success'), true);
4986
4987 $this->ctrl->redirect($this, 'questions');
4988 }
static & _instanciateQuestionGUI($question_id)
Creates an instance of a question gui with a given question id.

References $i, $id, $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 4500 of file class.ilObjTestGUI.php.

4501 {
4502 $newIds = array();
4503 foreach ($questionIds as $q_id) {
4504 $newId = $this->copyQuestionToPool($q_id, $qplId);
4505 $newIds[$q_id] = $newId;
4506 }
4507
4508 $result = new stdClass();
4509 $result->ids = $newIds;
4510 $result->qpoolid = $qplId;
4511
4512 return $result;
4513 }
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 4494 of file class.ilObjTestGUI.php.

4495 {
4496 $this->copyQuestionsToPool($_REQUEST['q_id'], $_REQUEST['sel_qpl']);
4497 $this->ctrl->redirect($this, 'questions');
4498 }

References copyQuestionsToPool().

+ Here is the call graph for this function:

◆ copyQuestionToPool()

ilObjTestGUI::copyQuestionToPool (   $sourceQuestionId,
  $targetParentId 
)

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

4516 {
4517 require_once 'Modules/TestQuestionPool/classes/class.assQuestion.php';
4518 $question_gui = assQuestion::instantiateQuestionGUI($sourceQuestionId);
4519
4520 $newtitle = $question_gui->object->getTitle();
4521 if ($question_gui->object->questionTitleExists($targetParentId, $question_gui->object->getTitle())) {
4522 $counter = 2;
4523 while ($question_gui->object->questionTitleExists($targetParentId, $question_gui->object->getTitle() . " ($counter)")) {
4524 $counter++;
4525 }
4526 $newtitle = $question_gui->object->getTitle() . " ($counter)";
4527 }
4528
4529 return $question_gui->object->createNewOriginalFromThisDuplicate($targetParentId, $newtitle);
4530 }
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 4583 of file class.ilObjTestGUI.php.

4584 {
4585 $this->createQuestionpoolTargetObject('copyQuestionsToPool');
4586 }

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

1683 {
1684 global $ilUser;
1685 $this->getQuestionsSubTabs();
1686 //$this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_qpl_select.html", "Modules/Test");
1687 $questionpools =&$this->object->getAvailableQuestionpools(false, false, false, true, false, "write");
1688
1689 if ($this->object->getPoolUsage()) {
1690 global $lng, $ilCtrl, $tpl;
1691
1692 include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
1693
1694 $form = new ilPropertyFormGUI();
1695 $form->setFormAction($ilCtrl->getFormAction($this, "executeCreateQuestion"));
1696 $form->setTitle($lng->txt("ass_create_question"));
1697 include_once 'Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
1698
1699
1700 $hidden = new ilHiddenInputGUI('sel_question_types');
1701 $hidden->setValue($_REQUEST["sel_question_types"]);
1702 $form->addItem($hidden);
1703
1704 // content editing mode
1706 $ri = new ilRadioGroupInputGUI($lng->txt("tst_add_quest_cont_edit_mode"), "add_quest_cont_edit_mode");
1707
1708 $ri->addOption(new ilRadioOption(
1709 $lng->txt('tst_add_quest_cont_edit_mode_default'),
1711 ));
1712
1713 $ri->addOption(new ilRadioOption(
1714 $lng->txt('tst_add_quest_cont_edit_mode_page_object'),
1716 ));
1717
1719
1720 $form->addItem($ri, true);
1721 } else {
1722 $hi = new ilHiddenInputGUI("question_content_editing_type");
1724 $form->addItem($hi, true);
1725 }
1726
1727 // use pool
1728 $usage = new ilRadioGroupInputGUI($this->lng->txt("assessment_pool_selection"), "usage");
1729 $usage->setRequired(true);
1730 $no_pool = new ilRadioOption($this->lng->txt("assessment_no_pool"), 1);
1731 $usage->addOption($no_pool);
1732 $existing_pool = new ilRadioOption($this->lng->txt("assessment_existing_pool"), 3);
1733 $usage->addOption($existing_pool);
1734 $new_pool = new ilRadioOption($this->lng->txt("assessment_new_pool"), 2);
1735 $usage->addOption($new_pool);
1736 $form->addItem($usage);
1737
1738 $usage->setValue(1);
1739
1740 $questionpools = ilObjQuestionPool::_getAvailableQuestionpools(false, false, true, false, false, "write");
1741 $pools_data = array();
1742 foreach ($questionpools as $key => $p) {
1743 $pools_data[$key] = $p['title'];
1744 }
1745 $pools = new ilSelectInputGUI($this->lng->txt("select_questionpool"), "sel_qpl");
1746 $pools->setOptions($pools_data);
1747 $existing_pool->addSubItem($pools);
1748
1749
1750 $this->lng->loadLanguageModule('rbac');
1751 $name = new ilTextInputGUI($this->lng->txt("rbac_create_qpl"), "txt_qpl");
1752 $name->setSize(50);
1753 $name->setMaxLength(50);
1754 $new_pool->addSubItem($name);
1755
1756 $form->addCommandButton("executeCreateQuestion", $lng->txt("submit"));
1757 $form->addCommandButton("cancelCreateQuestion", $lng->txt("cancel"));
1758
1759 return $this->tpl->setVariable('ADM_CONTENT', $form->getHTML());
1760 } else {
1761 global $ilCtrl;
1762
1763 $ilCtrl->setParameterByClass('iltestexpresspageobjectgui', 'sel_question_types', $_REQUEST["sel_question_types"]);
1764 $ilCtrl->setParameterByClass('iltestexpresspageobjectgui', 'add_quest_cont_edit_mode', $_REQUEST["add_quest_cont_edit_mode"]);
1765 $link = $ilCtrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'handleToolbarCommand', '', false, false);
1766 ilUtil::redirect($link);
1767 }
1768 }

References $form, $ilCtrl, $ilUser, $key, ilObjectGUI\$lng, $name, 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 1448 of file class.ilObjTestGUI.php.

1449 {
1450 global $tree;
1451 $parent_ref = $tree->getParentId($this->object->getRefId());
1452 include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php";
1453 $qpl = new ilObjQuestionPool();
1454 $qpl->setType("qpl");
1455 $qpl->setTitle($name);
1456 $qpl->setDescription($description);
1457 $qpl->create();
1458 $qpl->createReference();
1459 $qpl->putInTree($parent_ref);
1460 $qpl->setPermissions($parent_ref);
1461 $qpl->setOnline(1); // must be online to be available
1462 $qpl->saveToDb();
1463 return $qpl->getRefId();
1464 }

References $description, $name, and ilObjectGUI\$tree.

Referenced by createQuestionPoolAndCopyObject(), and executeCreateQuestionObject().

+ Here is the caller graph for this function:

◆ createQuestionPoolAndCopyObject()

ilObjTestGUI::createQuestionPoolAndCopyObject ( )

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

4623 {
4625
4626 if ($_REQUEST['title']) {
4627 $title = $_REQUEST['title'];
4628 } else {
4629 $title = $_REQUEST['txt_qpl'];
4630 }
4631
4632 if (!$title) {
4633 ilUtil::sendInfo($this->lng->txt("questionpool_not_entered"));
4634 return $this->copyAndLinkToQuestionpoolObject();
4635 }
4636
4637 $ref_id = $this->createQuestionPool($title, $_REQUEST['description']);
4638 $_REQUEST['sel_qpl'] = $ref_id;
4639
4640 //if ($_REQUEST['link'])
4641 //{
4643 //}
4644 //else
4645 //{
4646 // $this->copyQuestionsToPoolObject();
4647 //}
4648 }
createQuestionPool($name="dummy", $description="")
Creates a new questionpool and returns the reference id.
copyAndLinkQuestionsToPoolObject()
@global ilObjectDataCache $ilObjDataCache

References $form, 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 4656 of file class.ilObjTestGUI.php.

4657 {
4658 global $ilUser, $ilTabs;
4659 $this->getQuestionsSubTabs();
4660 $ilTabs->activateSubTab('edit_test_questions');
4661
4662 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_qpl_select_copy.html", "Modules/Test");
4663 $questionpools =&$this->object->getAvailableQuestionpools(false, false, false, true, false, "write");
4664 if (count($questionpools) == 0) {
4665 $this->tpl->setCurrentBlock("option");
4666 $this->tpl->setVariable("VALUE_QPL", "");
4667 $this->tpl->parseCurrentBlock();
4668 } else {
4669 foreach ($questionpools as $key => $value) {
4670 $this->tpl->setCurrentBlock("option");
4671 $this->tpl->setVariable("VALUE_OPTION", $key);
4672 $this->tpl->setVariable("TEXT_OPTION", $value["title"]);
4673 $this->tpl->parseCurrentBlock();
4674 }
4675 }
4676
4677 if (isset($_REQUEST['q_id']) && is_array($_REQUEST['q_id'])) {
4678 foreach ($_REQUEST['q_id'] as $id) {
4679 $this->tpl->setCurrentBlock("hidden");
4680 $this->tpl->setVariable("HIDDEN_NAME", "q_id[]");
4681 $this->tpl->setVariable("HIDDEN_VALUE", $id);
4682 $this->tpl->parseCurrentBlock();
4683 $this->tpl->setCurrentBlock("adm_content");
4684 }
4685 }
4686 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
4687
4688 if (count($questionpools) == 0) {
4689 $this->tpl->setVariable("TXT_QPL_SELECT", $this->lng->txt("tst_enter_questionpool"));
4690 $cmd = 'createQuestionPoolAndCopy';
4691 } else {
4692 $this->tpl->setVariable("TXT_QPL_SELECT", $this->lng->txt("tst_select_questionpool"));
4693 }
4694
4695 $this->tpl->setVariable("CMD_SUBMIT", $cmd);
4696 $this->tpl->setVariable("BTN_SUBMIT", $this->lng->txt("submit"));
4697 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
4698
4699 $createForm = $this->getQuestionpoolCreationForm();
4700 switch ($cmd) {
4701 case 'copyAndLinkQuestionsToPool':
4702 $hidden = new ilHiddenInputGUI('link');
4703 $hidden->setValue(1);
4704 $createForm->addItem($hidden);
4705 break;
4706 case 'copyQuestionsToPool':
4707 break;
4708 }
4709 $createForm->setFormAction($this->ctrl->getFormAction($this));
4710
4711 $this->tpl->parseCurrentBlock();
4712 }

References $id, $ilUser, $key, 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 1517 of file class.ilObjTestGUI.php.

1518 {
1519 $this->getQuestionsSubTabs();
1520 $question_array = $this->object->randomSelectQuestions($_POST["nr_of_questions"], $_POST["sel_qpl"]);
1521 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_random_question_offer.html", "Modules/Test");
1522 $color_class = array("tblrow1", "tblrow2");
1523 $counter = 0;
1524 $questionpools =&$this->object->getAvailableQuestionpools(true);
1525 include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
1526 foreach ($question_array as $question_id) {
1527 $dataset = $this->object->getQuestionDataset($question_id);
1528 $this->tpl->setCurrentBlock("QTab");
1529 $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
1530 $this->tpl->setVariable("QUESTION_TITLE", $dataset->title);
1531 $this->tpl->setVariable("QUESTION_COMMENT", $dataset->description);
1532 $this->tpl->setVariable("QUESTION_TYPE", assQuestion::_getQuestionTypeName($dataset->type_tag));
1533 $this->tpl->setVariable("QUESTION_AUTHOR", $dataset->author);
1534 $this->tpl->setVariable("QUESTION_POOL", $questionpools[$dataset->obj_fi]["title"]);
1535 $this->tpl->parseCurrentBlock();
1536 $counter++;
1537 }
1538 if (count($question_array) == 0) {
1539 $this->tpl->setCurrentBlock("Emptytable");
1540 $this->tpl->setVariable("TEXT_NO_QUESTIONS_AVAILABLE", $this->lng->txt("no_questions_available"));
1541 $this->tpl->parseCurrentBlock();
1542 } else {
1543 $this->tpl->setCurrentBlock("Selectionbuttons");
1544 $this->tpl->setVariable("BTN_YES", $this->lng->txt("random_accept_sample"));
1545 $this->tpl->setVariable("BTN_NO", $this->lng->txt("random_another_sample"));
1546 $this->tpl->parseCurrentBlock();
1547 }
1548 $chosen_questions = join($question_array, ",");
1549 $this->tpl->setCurrentBlock("adm_content");
1550 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
1551 $this->tpl->setVariable("QUESTION_TITLE", $this->lng->txt("tst_question_title"));
1552 $this->tpl->setVariable("QUESTION_COMMENT", $this->lng->txt("description"));
1553 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("tst_question_type"));
1554 $this->tpl->setVariable("QUESTION_AUTHOR", $this->lng->txt("author"));
1555 $this->tpl->setVariable("QUESTION_POOL", $this->lng->txt("qpl"));
1556 $this->tpl->setVariable("VALUE_CHOSEN_QUESTIONS", $chosen_questions);
1557 $this->tpl->setVariable("VALUE_QUESTIONPOOL_SELECTION", $_POST["sel_qpl"]);
1558 $this->tpl->setVariable("VALUE_NR_OF_QUESTIONS", $_POST["nr_of_questions"]);
1559 $this->tpl->setVariable("TEXT_QUESTION_OFFER", $this->lng->txt("tst_question_offer"));
1560 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
1561 $this->tpl->parseCurrentBlock();
1562 }
static _getQuestionTypeName($type_tag)
Return the translation for a given question type tag.
$dataset
Definition: showstats.php:45

References $_POST, $counter, $dataset, 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 866 of file class.ilObjTestGUI.php.

867 {
868 global $ilTabs, $ilDB;
869
870 // prepare generation before contents are processed (needed for mathjax)
871 if ($this->isPdfDeliveryRequest()) {
872 require_once 'Services/PDFGeneration/classes/class.ilPDFGeneration.php';
874 }
875
876 $ilTabs->setBackTarget(
877 $this->lng->txt('back'),
878 $this->ctrl->getLinkTarget($this, 'participants')
879 );
880
881 if ($this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired()) {
882 require_once 'Services/Link/classes/class.ilLink.php';
883 $courseLink = ilLink::_getLink($this->getObjectiveOrientedContainer()->getRefId());
884 $ilTabs->setBack2Target($this->lng->txt('back_to_objective_container'), $courseLink);
885 }
886
887 $template = new ilTemplate("tpl.il_as_tst_participants_result_output.html", true, true, "Modules/Test");
888
889 require_once 'Modules/Test/classes/toolbars/class.ilTestResultsToolbarGUI.php';
890 $toolbar = new ilTestResultsToolbarGUI($this->ctrl, $this->tpl, $this->lng);
891
892 $this->ctrl->setParameter($this, 'pdf', '1');
893 $toolbar->setPdfExportLinkTarget($this->ctrl->getLinkTarget($this, $this->ctrl->getCmd()));
894 $this->ctrl->setParameter($this, 'pdf', '');
895
896 if ($show_answers) {
897 if (isset($_GET['show_best_solutions'])) {
898 $_SESSION['tst_results_show_best_solutions'] = true;
899 } elseif (isset($_GET['hide_best_solutions'])) {
900 $_SESSION['tst_results_show_best_solutions'] = false;
901 } elseif (!isset($_SESSION['tst_results_show_best_solutions'])) {
902 $_SESSION['tst_results_show_best_solutions'] = false;
903 }
904
905 if ($_SESSION['tst_results_show_best_solutions']) {
906 $this->ctrl->setParameter($this, 'hide_best_solutions', '1');
907 $toolbar->setHideBestSolutionsLinkTarget($this->ctrl->getLinkTarget($this, $this->ctrl->getCmd()));
908 $this->ctrl->setParameter($this, 'hide_best_solutions', '');
909 } else {
910 $this->ctrl->setParameter($this, 'show_best_solutions', '1');
911 $toolbar->setShowBestSolutionsLinkTarget($this->ctrl->getLinkTarget($this, $this->ctrl->getCmd()));
912 $this->ctrl->setParameterByClass('', 'show_best_solutions', '');
913 }
914 }
915
916 require_once 'Modules/Test/classes/class.ilTestParticipantData.php';
917 $participantData = new ilTestParticipantData($ilDB, $this->lng);
918 if ($this->object->getFixedParticipants()) {
919 $participantData->setUserIds($show_user_results);
920 } else {
921 $participantData->setActiveIds($show_user_results);
922 }
923 $participantData->load($this->object->getTestId());
924 $toolbar->setParticipantSelectorOptions($participantData->getOptionArray($show_user_results));
925
926 $toolbar->build();
927 $template->setVariable('RESULTS_TOOLBAR', $this->ctrl->getHTML($toolbar));
928
929 include_once "./Modules/Test/classes/class.ilTestServiceGUI.php";
930 $serviceGUI = new ilTestServiceGUI($this->object);
931 $serviceGUI->setObjectiveOrientedContainer($this->getObjectiveOrientedContainer());
932 $serviceGUI->setParticipantData($participantData);
933
934 $count = 0;
935 foreach ($show_user_results as $key => $active_id) {
936 $count++;
937 $results = "";
938 if ($this->object->getFixedParticipants()) {
939 $active_id = $this->object->getActiveIdOfUser($active_id);
940 }
941 if ($active_id > 0) {
942 $results = $serviceGUI->getResultsOfUserOutput(
943 $this->testSessionFactory->getSession($active_id),
944 $active_id,
945 $this->object->_getResultPass($active_id),
946 $this,
947 $show_pass_details,
948 $show_answers,
949 false,
950 $show_reached_points
951 );
952 }
953 if ($count < count($show_user_results)) {
954 $template->touchBlock("break");
955 }
956 $template->setCurrentBlock("user_result");
957 $template->setVariable("USER_RESULT", $results);
958 $template->parseCurrentBlock();
959 }
960
961 if ($this->isPdfDeliveryRequest()) {
962 require_once 'Modules/Test/classes/class.ilTestPDFGenerator.php';
963
965 $template->get(),
967 $this->object->getTitle(),
969 );
970 } else {
971 return $template;
972 }
973 }
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, $purpose=null)
Service GUI class for tests.
const PDF_USER_RESULT
PDF Purposes.
$results
Definition: svg-scanner.php:47

References $_GET, $_SESSION, $ilDB, $key, $results, $template, ilObjectGUI\$toolbar, ilLink\_getLink(), ilTestPDFGenerator\generatePDF(), getObjectiveOrientedContainer(), isPdfDeliveryRequest(), ilTestPDFGenerator\PDF_OUTPUT_DOWNLOAD, PDF_USER_RESULT, 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 2343 of file class.ilObjTestGUI.php.

2344 {
2345 ilUtil::sendQuestion($this->lng->txt("confirm_delete_all_user_data"));
2346 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_maintenance.html", "Modules/Test");
2347
2348 $this->tpl->setCurrentBlock("confirm_delete");
2349 $this->tpl->setVariable("BTN_CONFIRM_DELETE_ALL", $this->lng->txt("confirm"));
2350 $this->tpl->setVariable("BTN_CANCEL_DELETE_ALL", $this->lng->txt("cancel"));
2351 $this->tpl->parseCurrentBlock();
2352
2353 $this->tpl->setCurrentBlock("adm_content");
2354 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
2355 $this->tpl->parseCurrentBlock();
2356 }
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 2361 of file class.ilObjTestGUI.php.

2362 {
2363 // display confirmation message
2364 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
2365 $cgui = new ilConfirmationGUI();
2366 $cgui->setFormAction($this->ctrl->getFormAction($this, "participants"));
2367 $cgui->setHeaderText($this->lng->txt("delete_all_user_data_confirmation"));
2368 $cgui->setCancel($this->lng->txt("cancel"), "participants");
2369 $cgui->setConfirm($this->lng->txt("proceed"), "confirmDeleteAllUserResults");
2370
2371 $this->tpl->setContent($cgui->getHTML());
2372 }
Confirmation screen class.

◆ deleteDefaultsObject()

ilObjTestGUI::deleteDefaultsObject ( )

Deletes selected test defaults.

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

3259 {
3260 if (isset($_POST['chb_defaults']) && is_array($_POST['chb_defaults']) && count($_POST['chb_defaults'])) {
3261 foreach ($_POST['chb_defaults'] as $test_default_id) {
3262 $this->object->deleteDefaults($test_default_id);
3263 }
3264 } else {
3265 ilUtil::sendInfo($this->lng->txt('select_one'));
3266 }
3267 $this->defaultsObject();
3268 }

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

2382 {
2383 if (count($_POST["chbUser"]) == 0) {
2384 ilUtil::sendInfo($this->lng->txt("select_one_user"), true);
2385 $this->ctrl->redirect($this, "participants");
2386 }
2387
2388 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
2389 $cgui = new ilConfirmationGUI();
2390 $cgui->setHeaderText($this->lng->txt("confirm_delete_single_user_data"));
2391
2392 $cgui->setFormAction($this->ctrl->getFormAction($this));
2393 $cgui->setCancel($this->lng->txt("cancel"), "cancelDeleteSelectedUserData");
2394 $cgui->setConfirm($this->lng->txt("confirm"), "confirmDeleteSelectedUserData");
2395
2396 include_once './Services/User/classes/class.ilObjUser.php';
2397 foreach ($_POST["chbUser"] as $key => $active_id) {
2398 if ($this->object->getFixedParticipants()) {
2399 $user_id = $active_id;
2400 } else {
2401 $user_id = $this->object->_getUserIdFromActiveId($active_id);
2402 }
2403 $user = ilObjUser::_lookupName($user_id);
2404
2405 if ($this->object->getAnonymity()) {
2406 $name = $this->lng->txt("anonymous");
2407 } elseif ($user["lastname"]) {
2408 $name = $user["lastname"] . ", " . $user["firstname"] . " (" .
2409 $user["login"] . ")";
2410 } else {
2411 $name = $this->lng->txt("deleted_user");
2412 }
2413
2414 $cgui->addItem(
2415 "chbUser[]",
2416 $active_id,
2417 $name,
2418 ilUtil::getImagePath("icon_usr.svg"),
2419 $this->lng->txt("usr")
2420 );
2421 }
2422
2423 $this->tpl->setContent($cgui->getHTML());
2424 }
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, $key, $name, ilObjectGUI\$user, ilObjUser\_lookupName(), ilUtil\getImagePath(), and ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ determineObjectiveOrientedContainer()

ilObjTestGUI::determineObjectiveOrientedContainer ( )
protected

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

5007 {
5008 require_once 'Modules/Course/classes/Objectives/class.ilLOSettings.php';
5009 $containerObjId = (int) ilLOSettings::isObjectiveTest($this->ref_id);
5010
5011 $containerRefId = current(ilObject::_getAllReferences($containerObjId));
5012
5013 $this->objectiveOrientedContainer->setObjId($containerObjId);
5014 $this->objectiveOrientedContainer->setRefId($containerRefId);
5015 }
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 1396 of file class.ilObjTestGUI.php.

1397 {
1398 include_once("./Modules/TestQuestionPool/classes/class.ilAssQuestionPage.php");
1399 $pg_obj = new ilAssQuestionPage($_GET["pg_id"]);
1400 $pg_obj->send_paragraph($_GET["par_id"], $_GET["downloadtitle"]);
1401 exit;
1402 }
Question page object.

References $_GET, and exit.

◆ downloadFileObject()

ilObjTestGUI::downloadFileObject ( )

download file

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

1375 {
1376 $file = explode("_", $_GET["file_id"]);
1377 include_once("./Modules/File/classes/class.ilObjFile.php");
1378 $fileObj = new ilObjFile($file[count($file) - 1], false);
1379 $fileObj->sendFile();
1380 exit;
1381 }
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 108 of file class.ilObjTestGUI.php.

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

References $_GET, $DIC, $GLOBALS, $ilCtrl, $ilDB, ilObjectGUI\$ilErr, $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 1606 of file class.ilObjTestGUI.php.

1607 {
1608 $qpl_ref_id = $_REQUEST["sel_qpl"];
1609
1610 $qpl_mode = $_REQUEST['usage'];
1611
1612 if (isset($_REQUEST['qtype'])) {
1613 include_once 'Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
1614 $sel_question_types = ilObjQuestionPool::getQuestionTypeByTypeId($_REQUEST["qtype"]);
1615 } elseif (isset($_REQUEST['sel_question_types'])) {
1616 $sel_question_types = $_REQUEST["sel_question_types"];
1617 }
1618
1619 if (!$qpl_mode || ($qpl_mode == 2 && strcmp($_REQUEST["txt_qpl"], "") == 0) || ($qpl_mode == 3 && strcmp($qpl_ref_id, "") == 0)) {
1620 //if ((strcmp($_REQUEST["txt_qpl"], "") == 0) && (strcmp($qpl_ref_id, "") == 0))
1621 // Mantis #14890
1622 $_REQUEST['sel_question_types'] = $sel_question_types;
1623 ilUtil::sendInfo($this->lng->txt("questionpool_not_entered"));
1624 $this->createQuestionObject();
1625 return;
1626 } else {
1627 $_SESSION["test_id"] = $this->object->getRefId();
1628 if ($qpl_mode == 2 && strcmp($_REQUEST["txt_qpl"], "") != 0) {
1629 // create a new question pool and return the reference id
1630 $qpl_ref_id = $this->createQuestionPool($_REQUEST["txt_qpl"]);
1631 } elseif ($qpl_mode == 1) {
1632 $qpl_ref_id = $_GET["ref_id"];
1633 }
1634
1635 include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPoolGUI.php";
1636 $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;
1637
1638 if (isset($_REQUEST['prev_qid'])) {
1639 $baselink .= '&prev_qid=' . $_REQUEST['prev_qid'];
1640 } elseif (isset($_REQUEST['position'])) {
1641 $baselink .= '&prev_qid=' . $_REQUEST['position'];
1642 }
1643
1644 if ($_REQUEST['test_express_mode']) {
1645 $baselink .= '&test_express_mode=1';
1646 }
1647
1648 if (isset($_REQUEST['add_quest_cont_edit_mode'])) {
1650 $baselink,
1651 "add_quest_cont_edit_mode={$_REQUEST['add_quest_cont_edit_mode']}",
1652 false
1653 );
1654 }
1655
1656 #var_dump($_REQUEST['prev_qid']);
1657 ilUtil::redirect($baselink);
1658
1659 exit();
1660 }
1661 }
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 775 of file class.ilObjTestGUI.php.

776 {
777 global $DIC; /* @var ILIAS\DI\Container $DIC */
778 $DIC->ctrl()->redirectByClass('ilTestExportGUI');
779 }

References $DIC.

◆ fetchAuthoringQuestionIdParameter()

ilObjTestGUI::fetchAuthoringQuestionIdParameter ( )
protected
Returns
mixed

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

785 {
786 $qid = $_REQUEST['q_id'];
787
788 if (!$qid || $qid == 'Array') {
789 $questions = $this->object->getQuestionTitlesAndIndexes();
790 if (!is_array($questions)) {
791 $questions = array();
792 }
793
794 $keys = array_keys($questions);
795 $qid = $keys[0];
796
797 $_REQUEST['q_id'] = $qid;
798 $_GET['q_id'] = $qid;
799 $_POST['q_id'] = $qid;
800 }
801
802 if ($this->object->checkQuestionParent($qid)) {
803 return $qid;
804 }
805
806 throw new ilTestException('question id does not relate to parent object!');
807 }
$keys

References $_GET, $_POST, and $keys.

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

1412 {
1413 $this->questionBrowser();
1414 }

◆ formTimingObject()

ilObjTestGUI::formTimingObject ( )
private

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

2772 {
2773 global $ilAccess;
2774
2775 include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
2776 $form = new ilPropertyFormGUI();
2777 $form->setFormAction($this->ctrl->getFormAction($this));
2778 $form->setTableWidth("100%");
2779 $form->setId("tst_change_workingtime");
2780 $form->setTitle($this->lng->txt("tst_change_workingtime"));
2781
2782 // test users
2783 $participantslist = new ilSelectInputGUI($this->lng->txt('participants'), "participant");
2784 $participants =&$this->object->getTestParticipants();
2785 $times = $this->object->getStartingTimeOfParticipants();
2786 $addons = $this->object->getTimeExtensionsOfParticipants();
2787 $options = array(
2788 '' => $this->lng->txt('please_select'),
2789 '0' => $this->lng->txt('all_participants')
2790 );
2791 foreach ($participants as $participant) {
2792 $started = "";
2793
2794 if ($this->object->getAnonymity()) {
2795 $name = $this->lng->txt("anonymous");
2796 } else {
2797 $name = $participant['lastname'] . ', ' . $participant['firstname'];
2798 }
2799
2800
2801 if ($times[$participant['active_id']]) {
2802 $started = ", " . $this->lng->txt('tst_started') . ': ' . ilDatePresentation::formatDate(new ilDateTime($times[$participant['active_id']], IL_CAL_DATETIME));
2803 }
2804 if ($addons[$participant['active_id']] > 0) {
2805 $started .= ", " . $this->lng->txt('extratime') . ': ' . $addons[$participant['active_id']] . ' ' . $this->lng->txt('minutes');
2806 }
2807 $options[$participant['active_id']] = $participant['login'] . ' (' . $name . ')' . $started;
2808 }
2809 $participantslist->setRequired(true);
2810 $participantslist->setOptions($options);
2811 $form->addItem($participantslist);
2812
2813 // extra time
2814 $extratime = new ilNumberInputGUI($this->lng->txt("extratime"), "extratime");
2815 $extratime->setInfo($this->lng->txt('tst_extratime_info'));
2816 $extratime->setRequired(true);
2817 $extratime->setMinValue(0);
2818 $extratime->setMinvalueShouldBeGreater(false);
2819 $extratime->setSuffix($this->lng->txt('minutes'));
2820 $extratime->setSize(5);
2821 $form->addItem($extratime);
2822
2823 if (is_array($_POST) && strlen($_POST['cmd']['timing'])) {
2824 $form->setValuesByArray($_POST);
2825 }
2826
2827 if ($ilAccess->checkAccess("write", "", $_GET["ref_id"])) {
2828 $form->addCommandButton("timing", $this->lng->txt("save"));
2829 }
2830 $form->addCommandButton('timingOverview', $this->lng->txt("cancel"));
2831 return $form;
2832 }
const IL_CAL_DATETIME
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false)
Format a date @access public.
@classDescription Date and time handling
This class represents a number property in a property form.

References $_GET, $_POST, $form, $name, $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 846 of file class.ilObjTestGUI.php.

847 {
848 $this->prepareOutput();
849 $this->addHeaderAction();
850
851 require_once 'Modules/Test/classes/class.ilTestEvalObjectiveOrientedGUI.php';
852 $gui = new ilTestEvalObjectiveOrientedGUI($this->object);
853 $gui->setObjectiveOrientedContainer($this->getObjectiveOrientedContainer());
854
855 $this->ctrl->forwardCommand($gui);
856 }

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

835 {
836 $this->prepareOutput();
837 $this->addHeaderAction();
838
839 require_once 'Modules/Test/classes/class.ilTestEvaluationGUI.php';
840 $gui = new ilTestEvaluationGUI($this->object);
841 $gui->setObjectiveOrientedContainer($this->getObjectiveOrientedContainer());
842
843 $this->ctrl->forwardCommand($gui);
844 }
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 2885 of file class.ilObjTestGUI.php.

2886 {
2887 include_once("./Modules/Test/classes/tables/class.ilTestFixedParticipantsTableGUI.php");
2888 $table_gui = new ilTestFixedParticipantsTableGUI(
2889 $this,
2890 "participants",
2891 false,
2892 $this->object->getAnonymity(),
2893 0
2894 );
2895 $table_gui->resetFilter(); // writes filter to session
2896 $table_gui->resetOffset(); // sets record offest to 0 (first page)
2897 $this->participantsObject();
2898 }
participantsObject()
Creates the output of the test participants.

References participantsObject().

+ Here is the call graph for this function:

◆ fpSetFilterObject()

ilObjTestGUI::fpSetFilterObject ( )

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

2877 {
2878 include_once("./Modules/Test/classes/tables/class.ilTestFixedParticipantsTableGUI.php");
2879 $table_gui = new ilTestFixedParticipantsTableGUI($this, "participants", false, $this->object->getAnonymity(), 0);
2880 $table_gui->writeFilterToSession(); // writes filter to session
2881 $table_gui->resetOffset(); // sets record offest to 0 (first page)
2882 $this->participantsObject();
2883 }

References participantsObject().

+ Here is the call graph for this function:

◆ fullscreenObject()

ilObjTestGUI::fullscreenObject ( )

show fullscreen view

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

1387 {
1388 include_once("./Modules/TestQuestionPool/classes/class.ilAssQuestionPageGUI.php");
1389 $page_gui = new ilAssQuestionPageGUI($_GET["pg_id"]);
1390 $page_gui->showMediaFullscreen();
1391 }

References $_GET.

◆ getBrowseForQuestionsTab()

ilObjTestGUI::getBrowseForQuestionsTab ( $tabs_gui)

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

3636 {
3637 global $ilAccess;
3638 if ($ilAccess->checkAccess("write", "", $this->ref_id)) {
3639 $this->ctrl->saveParameterByClass($this->ctrl->getCmdClass(), 'q_id');
3640 // edit page
3641 $tabs_gui->setBackTarget($this->lng->txt("backtocallingtest"), $this->ctrl->getLinkTargetByClass($this->ctrl->getCmdClass(), "questions"));
3642 $tabs_gui->addTarget(
3643 "tst_browse_for_questions",
3644 $this->ctrl->getLinkTarget($this, "browseForQuestions"),
3645 array("browseForQuestions", "filter", "resetFilter", "resetTextFilter", "insertQuestions"),
3646 "",
3647 "",
3648 true
3649 );
3650 }
3651 }

References ilObjectGUI\$tabs_gui.

Referenced by getTabs().

+ Here is the caller graph for this function:

◆ getObjectiveOrientedContainer()

ilObjTestGUI::getObjectiveOrientedContainer ( )
protected

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

5018 {
5020 }

References $objectiveOrientedContainer.

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

+ Here is the caller graph for this function:

◆ getParticipantsSubTabs()

ilObjTestGUI::getParticipantsSubTabs ( )

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

3847 {
3848 global $ilTabs;
3849
3850 // participants subtab
3851 $ilTabs->addSubTabTarget(
3852 "participants",
3853 $this->ctrl->getLinkTarget($this, 'participants'),
3854 array(
3855 "participants", "saveClientIP",
3856 "removeParticipant",
3857 "showParticipantAnswersForAuthor",
3858 "deleteAllUserResults",
3859 "cancelDeleteAllUserData", "deleteSingleUserResults",
3860 "outParticipantsResultsOverview", "outParticipantsPassDetails",
3861 "showPassOverview", "showUserAnswers", "participantsAction",
3862 "showDetailedResults",
3863 'npResetFilter', 'npSetFilter'
3864 ),
3865 ""
3866 );
3867
3868 if (!$this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesBroken()) {
3869 if ($this->object->getProcessingTimeInSeconds() > 0 && $this->object->getNrOfTries() == 1) {
3870 // extratime subtab
3871 $ilTabs->addSubTabTarget(
3872 "timing",
3873 $this->ctrl->getLinkTarget($this, 'timingOverview'),
3874 array("timing", "timingOverview"),
3875 "",
3876 ""
3877 );
3878 }
3879 }
3880 }

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

+ Here is the caller graph for this function:

◆ getQuestionpoolCreationForm()

ilObjTestGUI::getQuestionpoolCreationForm ( )
private

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

4558 {
4559 global $lng;
4560 include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
4561 $form = new ilPropertyFormGUI();
4562
4563 $title = new ilTextInputGUI($lng->txt('title'), 'title');
4564 $title->setRequired(true);
4565 $form->addItem($title);
4566
4567 $description = new ilTextAreaInputGUI($lng->txt('description'), 'description');
4568 $form->addItem($description);
4569
4570 $form->addCommandButton('createQuestionPoolAndCopy', $lng->txt('create'));
4571
4572 if (isset($_REQUEST['q_id']) && is_array($_REQUEST['q_id'])) {
4573 foreach ($_REQUEST['q_id'] as $id) {
4574 $hidden = new ilHiddenInputGUI('q_id[]');
4575 $hidden->setValue($id);
4576 $form->addItem($hidden);
4577 }
4578 }
4579
4580 return $form;
4581 }
This class represents a text area property in a property form.

References $description, $form, $id, ilObjectGUI\$lng, and $title.

Referenced by createQuestionPoolAndCopyObject(), and createQuestionpoolTargetObject().

+ Here is the caller graph for this function:

◆ getQuestionsSubTabs()

ilObjTestGUI::getQuestionsSubTabs ( )

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

3685 {
3686 global $ilTabs, $ilCtrl;
3687 $ilTabs->activateTab('assQuestions');
3688 $a_cmd = $ilCtrl->getCmd();
3689
3690 if (!$this->object->isRandomTest()) {
3691 #if (in_array($this->object->getEnabledViewMode(), array('both', 'express'))) {
3692 $questions_per_page = ($a_cmd == 'questions_per_page' || ($a_cmd == 'removeQuestions' && $_REQUEST['test_express_mode'])) ? true : false;
3693
3694 $this->tabs_gui->addSubTabTarget(
3695 "questions_per_page_view",
3696 $this->ctrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'showPage'),
3697 "",
3698 "",
3699 "",
3700 $questions_per_page
3701 );
3702 #}
3703 }
3704 include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
3706
3707 if (!in_array('questions', $template->getHiddenTabs())) {
3708 // questions subtab
3709 $ilTabs->addSubTabTarget(
3710 "edit_test_questions",
3711 $this->ctrl->getLinkTarget($this, 'questions'),
3712 array("questions", "browseForQuestions", "questionBrowser", "createQuestion",
3713 "randomselect", "filter", "resetFilter", "insertQuestions",
3714 "back", "createRandomSelection", "cancelRandomSelect",
3715 "insertRandomSelection", "removeQuestions", "moveQuestions",
3716 "insertQuestionsBefore", "insertQuestionsAfter", "confirmRemoveQuestions",
3717 "cancelRemoveQuestions", "executeCreateQuestion", "cancelCreateQuestion",
3718 "addQuestionpool", "saveRandomQuestions", "saveQuestionSelectionMode"),
3719 ""
3720 );
3721
3722 if (in_array($a_cmd, array('questions', 'createQuestion')) || ($a_cmd == 'removeQuestions' && !$_REQUEST['test_express_mode'])) {
3723 $this->tabs_gui->activateSubTab('edit_test_questions');
3724 }
3725 }
3726 #}
3727
3728 // print view subtab
3729 if (!$this->object->isRandomTest()) {
3730 $ilTabs->addSubTabTarget(
3731 "print_view",
3732 $this->ctrl->getLinkTarget($this, 'print'),
3733 "print",
3734 "",
3735 "",
3736 $this->ctrl->getCmd() == 'print'
3737 );
3738 $ilTabs->addSubTabTarget(
3739 'review_view',
3740 $this->ctrl->getLinkTarget($this, 'review'),
3741 'review',
3742 '',
3743 '',
3744 $this->ctrl->getCmd() == 'review'
3745 );
3746 }
3747 }

References $ilCtrl, $template, 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 3653 of file class.ilObjTestGUI.php.

3654 {
3655 global $ilAccess;
3656 if ($ilAccess->checkAccess("write", "", $this->ref_id)) {
3657 // edit page
3658 $tabs_gui->setBackTarget($this->lng->txt("backtocallingtest"), $this->ctrl->getLinkTarget($this, "questions"));
3659 $tabs_gui->addTarget(
3660 "random_selection",
3661 $this->ctrl->getLinkTarget($this, "randomQuestions"),
3662 array("randomQuestions"),
3663 "",
3664 ""
3665 );
3666 }
3667 }

References ilObjectGUI\$tabs_gui.

◆ getStatisticsSubTabs()

ilObjTestGUI::getStatisticsSubTabs ( )

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

3750 {
3751 global $ilTabs;
3752
3753 // user results subtab
3754 $ilTabs->addSubTabTarget(
3755 "eval_all_users",
3756 $this->ctrl->getLinkTargetByClass("iltestevaluationgui", "outEvaluation"),
3757 array("outEvaluation", "detailedEvaluation", "exportEvaluation", "evalUserDetail", "passDetails",
3758 "outStatisticsResultsOverview", "statisticsPassDetails"),
3759 ""
3760 );
3761
3762 // aggregated results subtab
3763 $ilTabs->addSubTabTarget(
3764 "tst_results_aggregated",
3765 $this->ctrl->getLinkTargetByClass("iltestevaluationgui", "eval_a"),
3766 array("eval_a"),
3767 "",
3768 ""
3769 );
3770
3771 // question export
3772 $ilTabs->addSubTabTarget(
3773 "tst_single_results",
3774 $this->ctrl->getLinkTargetByClass("iltestevaluationgui", "singleResults"),
3775 array("singleResults"),
3776 "",
3777 ""
3778 );
3779 }

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

3888 {
3889 global $ilAccess, $ilHelp;
3890
3891 if (preg_match('/^ass(.*?)gui$/i', $this->ctrl->getNextClass($this))) {
3892 return;
3893 } elseif ($this->ctrl->getNextClass($this) == 'ilassquestionpagegui') {
3894 return;
3895 }
3896
3897 $ilHelp->setScreenIdComponent("tst");
3898
3899 $hidden_tabs = array();
3900
3901 $template = $this->object->getTemplate();
3902 if ($template) {
3903 include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
3905
3906 $hidden_tabs = $template->getHiddenTabs();
3907 }
3908
3909 // for local use in this fucking sledge hammer method
3910 $curUserHasWriteAccess = $ilAccess->checkAccess("write", "", $this->ref_id);
3911
3912 switch ($this->ctrl->getCmdClass()) {
3913 // no tabs .. no subtabs .. during test pass
3914 case 'iltestoutputgui':
3915
3916 // tab handling happens within GUIs
3917 case 'iltestevaluationgui':
3918 $nonSelfTabbingCommands = array(
3919 'outParticipantsResultsOverview', 'outEvaluation',
3920 'eval_a', 'singleResults', 'detailedEvaluation'
3921 );
3922 if (in_array($this->ctrl->getCmd(), $nonSelfTabbingCommands)) {
3923 break;
3924 }
3925 // no break
3926 case 'iltestevalobjectiveorientedgui':
3927 return;
3928
3929 case 'ilmarkschemagui':
3930 case 'ilobjtestsettingsgeneralgui':
3931 case 'ilobjtestsettingsscoringresultsgui':
3932
3933 if ($curUserHasWriteAccess) {
3934 $this->getSettingsSubTabs($hidden_tabs);
3935 }
3936
3937 break;
3938 }
3939
3940 if ($this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired()) {
3941 require_once 'Services/Link/classes/class.ilLink.php';
3942 $courseLink = ilLink::_getLink($this->getObjectiveOrientedContainer()->getRefId());
3943 $this->tabs_gui->setBack2Target($this->lng->txt('back_to_objective_container'), $courseLink);
3944 }
3945
3946 switch ($this->ctrl->getCmd()) {
3947 case "resume":
3948 case "previous":
3949 case "next":
3950 case "summary":
3951 case "directfeedback":
3952 case "finishTest":
3953 case "outCorrectSolution":
3954 case "passDetails":
3955 case "showAnswersOfUser":
3956 case "outUserResultsOverview":
3957 case "backFromSummary":
3958 case "show_answers":
3959 case "setsolved":
3960 case "resetsolved":
3961 case "confirmFinish":
3962 case "outTestSummary":
3963 case "outQuestionSummary":
3964 case "gotoQuestion":
3965 case "selectImagemapRegion":
3966 case "confirmSubmitAnswers":
3967 case "finalSubmission":
3968 case "postpone":
3969 case "outUserPassDetails":
3970 case "checkPassword":
3971 case "exportCertificate":
3972 case "finishListOfAnswers":
3973 case "backConfirmFinish":
3974 case "showFinalStatement":
3975 return;
3976 break;
3977 case "browseForQuestions":
3978 case "filter":
3979 case "resetFilter":
3980 case "resetTextFilter":
3981 case "insertQuestions":
3982 // #8497: resetfilter is also used in lp
3983 if ($this->ctrl->getNextClass($this) != "illearningprogressgui") {
3984 return $this->getBrowseForQuestionsTab($this->tabs_gui);
3985 }
3986 break;
3987 case "scoring":
3988 case "certificate":
3989 case "certificateservice":
3990 case "certificateImport":
3991 case "certificateUpload":
3992 case "certificateEditor":
3993 case "certificateDelete":
3994 case "certificateSave":
3995 case "defaults":
3996 case "deleteDefaults":
3997 case "addDefaults":
3998 case "applyDefaults":
3999 case "inviteParticipants":
4000 case "searchParticipants":
4001 if ($curUserHasWriteAccess && in_array($this->ctrl->getCmdClass(), array('ilobjtestgui', 'ilcertificategui'))) {
4002 $this->getSettingsSubTabs($hidden_tabs);
4003 }
4004 break;
4005 case "export":
4006 case "print":
4007 break;
4008 case "statistics":
4009 case "eval_a":
4010 case "detailedEvaluation":
4011 case "outEvaluation":
4012 case "singleResults":
4013 case "exportEvaluation":
4014 case "evalUserDetail":
4015 case "outStatisticsResultsOverview":
4016 case "statisticsPassDetails":
4017 $this->getStatisticsSubTabs();
4018 break;
4019 }
4020
4021 if (strcmp(strtolower(get_class($this->object)), "ilobjtest") == 0) {
4022 // questions tab
4023 if ($ilAccess->checkAccess("write", "", $this->ref_id) && !in_array('assQuestions', $hidden_tabs)) {
4024 $force_active = ($_GET["up"] != "" || $_GET["down"] != "")
4025 ? true
4026 : false;
4027 if (!$force_active) {
4028 if ($_GET["browse"] == 1) {
4029 $force_active = true;
4030 }
4031 }
4032
4033 switch ($this->object->getQuestionSetType()) {
4035 $target = $this->ctrl->getLinkTargetByClass('iltestexpresspageobjectgui', 'showPage');
4036 break;
4037
4039 $target = $this->ctrl->getLinkTargetByClass('ilTestRandomQuestionSetConfigGUI');
4040 break;
4041
4043 $target = $this->ctrl->getLinkTargetByClass('ilObjTestDynamicQuestionSetConfigGUI');
4044 break;
4045 }
4046
4047 $this->tabs_gui->addTarget(
4048 "assQuestions",
4049 //$this->ctrl->getLinkTarget($this,'questions'),
4050 $target,
4051 array("questions", "browseForQuestions", "questionBrowser", "createQuestion",
4052 "randomselect", "filter", "resetFilter", "insertQuestions",
4053 "back", "createRandomSelection", "cancelRandomSelect",
4054 "insertRandomSelection", "removeQuestions", "moveQuestions",
4055 "insertQuestionsBefore", "insertQuestionsAfter", "confirmRemoveQuestions",
4056 "cancelRemoveQuestions", "executeCreateQuestion", "cancelCreateQuestion",
4057 "addQuestionpool", "saveRandomQuestions", "saveQuestionSelectionMode", "print",
4058 "addsource", "removesource", "randomQuestions"),
4059 "",
4060 "",
4061 $force_active
4062 );
4063 }
4064
4065 // info tab
4066 if ($ilAccess->checkAccess("read", "", $this->ref_id) && !in_array('info_short', $hidden_tabs)) {
4067 $this->tabs_gui->addTarget(
4068 "info_short",
4069 $this->ctrl->getLinkTarget($this, 'infoScreen'),
4070 array("infoScreen", "outIntroductionPage", "showSummary",
4071 "setAnonymousId", "outUserListOfAnswerPasses", "redirectToInfoScreen")
4072 );
4073 }
4074
4075 // settings tab
4076 if ($ilAccess->checkAccess("write", "", $this->ref_id)) {
4077 if (!in_array('settings', $hidden_tabs)) {
4078 $settingsCommands = array(
4079 "marks", "showMarkSchema","addMarkStep", "deleteMarkSteps", "addSimpleMarkSchema", "saveMarks",
4080 "certificate", "certificateEditor", "certificateRemoveBackground", "certificateSave",
4081 "certificatePreview", "certificateDelete", "certificateUpload", "certificateImport",
4082 "scoring", "defaults", "addDefaults", "deleteDefaults", "applyDefaults",
4083 "inviteParticipants", "saveFixedParticipantsStatus", "searchParticipants", "addParticipants" // ARE THEY RIGHT HERE
4084 );
4085
4086 require_once 'Modules/Test/classes/class.ilObjTestSettingsGeneralGUI.php';
4087 $reflection = new ReflectionClass('ilObjTestSettingsGeneralGUI');
4088 foreach ($reflection->getConstants() as $name => $value) {
4089 if (substr($name, 0, 4) == 'CMD_') {
4090 $settingsCommands[] = $value;
4091 }
4092 }
4093
4094 require_once 'Modules/Test/classes/class.ilObjTestSettingsScoringResultsGUI.php';
4095 $reflection = new ReflectionClass('ilObjTestSettingsScoringResultsGUI');
4096 foreach ($reflection->getConstants() as $name => $value) {
4097 if (substr($name, 0, 4) == 'CMD_') {
4098 $settingsCommands[] = $value;
4099 }
4100 }
4101
4102 $settingsCommands[] = ""; // DO NOT KNOW WHAT THIS IS DOING, BUT IT'S REQUIRED
4103
4104 $this->tabs_gui->addTarget(
4105 "settings",
4106 $this->ctrl->getLinkTargetByClass('ilObjTestSettingsGeneralGUI'),
4107 $settingsCommands,
4108 array("ilmarkschemagui", "ilobjtestsettingsgeneralgui", "ilobjtestsettingsscoringresultsgui", "ilobjtestgui", "ilcertificategui")
4109 );
4110 }
4111
4112 // skill service
4113 if ($this->object->isSkillServiceEnabled() && ilObjTest::isSkillManagementGloballyActivated()) {
4114 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionSkillAssignmentsGUI.php';
4115
4116 $link = $this->ctrl->getLinkTargetByClass(
4117 array('ilTestSkillAdministrationGUI', 'ilAssQuestionSkillAssignmentsGUI'),
4119 );
4120
4121 $this->tabs_gui->addTarget('tst_tab_competences', $link, array(), array());
4122 }
4123
4124 if (!in_array('participants', $hidden_tabs)) {
4125 // participants
4126 $this->tabs_gui->addTarget(
4127 "participants",
4128 $this->ctrl->getLinkTarget($this, 'participants'),
4129 array(
4130 "participants", "saveClientIP",
4131 "removeParticipant",
4132 "showParticipantAnswersForAuthor",
4133 "deleteAllUserResults",
4134 "cancelDeleteAllUserData", "deleteSingleUserResults",
4135 "outParticipantsResultsOverview", "outParticipantsPassDetails",
4136 "showPassOverview", "showUserAnswers", "participantsAction",
4137 "showDetailedResults",
4138 'timing', 'timingOverview', 'npResetFilter', 'npSetFilter', 'showTimingForm'
4139 ),
4140 ""
4141 );
4142 }
4143 }
4144
4145 include_once './Services/Tracking/classes/class.ilLearningProgressAccess.php';
4146 if (ilLearningProgressAccess::checkAccess($this->object->getRefId()) && !in_array('learning_progress', $hidden_tabs)) {
4147 $this->tabs_gui->addTarget(
4148 'learning_progress',
4149 $this->ctrl->getLinkTargetByClass(array('illearningprogressgui'), ''),
4150 '',
4151 array('illplistofobjectsgui','illplistofsettingsgui','illearningprogressgui','illplistofprogressgui')
4152 );
4153 }
4154
4155 if ($ilAccess->checkAccess("write", "", $this->ref_id) && !in_array('manscoring', $hidden_tabs)) {
4156 include_once "./Modules/Test/classes/class.ilObjAssessmentFolder.php";
4158 if (count($scoring)) {
4159 // scoring tab
4160 $this->tabs_gui->addTarget(
4161 "manscoring",
4162 $this->ctrl->getLinkTargetByClass('ilTestScoringByQuestionsGUI', 'showManScoringByQuestionParticipantsTable'),
4163 array(
4164 'showManScoringParticipantsTable', 'applyManScoringParticipantsFilter', 'resetManScoringParticipantsFilter', 'showManScoringParticipantScreen',
4165 'showManScoringByQuestionParticipantsTable', 'applyManScoringByQuestionFilter', 'resetManScoringByQuestionFilter', 'saveManScoringByQuestion'
4166
4167 ),
4168 ''
4169 );
4170 }
4171 }
4172
4173 // Scoring Adjustment
4174 $setting = new ilSetting('assessment');
4175 $scoring_adjust_active = (bool) $setting->get('assessment_adjustments_enabled', false);
4176 if ($ilAccess->checkAccess("write", "", $this->ref_id) && $scoring_adjust_active && !in_array('scoringadjust', $hidden_tabs)) {
4177 // scoring tab
4178 $this->tabs_gui->addTarget(
4179 "scoringadjust",
4180 $this->ctrl->getLinkTargetByClass('ilScoringAdjustmentGUI', 'showquestionlist'),
4181 array(
4182 'showquestionlist',
4183 'savescoringfortest',
4184 'adjustscoringfortest'
4185 ),
4186 ''
4187 );
4188 }
4189
4190 if ((($ilAccess->checkAccess("tst_statistics", "", $this->ref_id)) || ($ilAccess->checkAccess("write", "", $this->ref_id))) && !in_array('statistics', $hidden_tabs)) {
4191 // statistics tab
4192 $this->tabs_gui->addTarget(
4193 "statistics",
4194 $this->ctrl->getLinkTargetByClass("iltestevaluationgui", "outEvaluation"),
4195 array(
4196 "statistics", "outEvaluation", "exportEvaluation", "detailedEvaluation", "eval_a", "evalUserDetail",
4197 "passDetails", "outStatisticsResultsOverview", "statisticsPassDetails", "singleResults"
4198 ),
4199 ""
4200 );
4201 }
4202
4203 if ($ilAccess->checkAccess("write", "", $this->ref_id)) {
4204 if (!in_array('history', $hidden_tabs)) {
4205
4206 // history
4207 $this->tabs_gui->addTarget(
4208 "history",
4209 $this->ctrl->getLinkTarget($this, 'history'),
4210 "history",
4211 ""
4212 );
4213 }
4214
4215 if (!in_array('meta_data', $hidden_tabs)) {
4216 // meta data
4217 include_once "Services/Object/classes/class.ilObjectMetaDataGUI.php";
4218 $mdgui = new ilObjectMetaDataGUI($this->object);
4219 $mdtab = $mdgui->getTab();
4220 if ($mdtab) {
4221 $this->tabs_gui->addTarget(
4222 "meta_data",
4223 $mdtab,
4224 "",
4225 "ilmdeditorgui"
4226 );
4227 }
4228 }
4229
4230 if (!in_array('export', $hidden_tabs)) {
4231 // export tab
4232 $this->tabs_gui->addTarget(
4233 "export",
4234 $this->ctrl->getLinkTargetByClass('iltestexportgui', ''),
4235 '',
4236 array('iltestexportgui')
4237 );
4238 }
4239 }
4240
4241 if ($ilAccess->checkAccess("edit_permission", "", $this->ref_id)&& !in_array('permissions', $hidden_tabs)) {
4242 $this->tabs_gui->addTarget(
4243 "perm_settings",
4244 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"),
4245 array("perm","info","owner"),
4246 'ilpermissiongui'
4247 );
4248 }
4249 }
4250
4251 if ($this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesBroken()) {
4252 $hideTabs = $this->testQuestionSetConfigFactory->getQuestionSetConfig()->getHiddenTabsOnBrokenDepencies();
4253
4254 foreach ($hideTabs as $tabId) {
4255 $this->tabs_gui->removeTab($tabId);
4256 }
4257 }
4258 }
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, $name, $target, $template, 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 2433 of file class.ilObjTestGUI.php.

2434 {
2435 include_once "./Modules/Test/classes/tables/class.ilTestHistoryTableGUI.php";
2436 $table_gui = new ilTestHistoryTableGUI($this, 'history');
2437 $table_gui->setTestObject($this->object);
2438 include_once "./Modules/Test/classes/class.ilObjAssessmentFolder.php";
2439 $log =&ilObjAssessmentFolder::_getLog(0, time(), $this->object->getId(), true);
2440 $table_gui->setData($log);
2441 $this->tpl->setVariable('ADM_CONTENT', $table_gui->getHTML());
2442 }
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 1027 of file class.ilObjTestGUI.php.

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

References $form, 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 1278 of file class.ilObjTestGUI.php.

1279 {
1280 include_once "./Modules/Test/classes/class.ilObjTest.php";
1281 // create new questionpool object
1282 $newObj = new ilObjTest(0, true);
1283 // set type of questionpool object
1284 $newObj->setType($_GET["new_type"]);
1285 // set title of questionpool object to "dummy"
1286 $newObj->setTitle("dummy");
1287 // set description of questionpool object
1288 $newObj->setDescription("test import");
1289 // create the questionpool class in the ILIAS database (object_data table)
1290 $newObj->create(true);
1291 // create a reference for the questionpool object in the ILIAS database (object_reference table)
1292 $newObj->createReference();
1293 // put the questionpool object in the administration tree
1294 $newObj->putInTree($_GET["ref_id"]);
1295 // get default permissions and set the permissions for the questionpool object
1296 $newObj->setPermissions($_GET["ref_id"]);
1297 // empty mark schema
1298 $newObj->mark_schema->flush();
1299
1300 // start parsing of QTI files
1301 include_once "./Services/QTI/classes/class.ilQTIParser.php";
1302
1303 // Handle selection of "no questionpool" as qpl_id = -1 -> use test object id instead.
1304 // possible hint: chek if empty strings in $_POST["qpl_id"] relates to a bug or not
1305 if (!isset($_POST["qpl"]) || "-1" === (string) $_POST["qpl"]) {
1306 $questionParentObjId = $newObj->getId();
1307 } else {
1308 $questionParentObjId = $_POST["qpl"];
1309 }
1310
1311 if (is_file($_SESSION["tst_import_dir"] . '/' . $_SESSION["tst_import_subdir"] . "/manifest.xml")) {
1312 $newObj->saveToDb();
1313
1314 $_SESSION['tst_import_idents'] = $_POST['ident'];
1315 $_SESSION['tst_import_qst_parent'] = $questionParentObjId;
1316
1317 $fileName = $_SESSION['tst_import_subdir'] . '.zip';
1318 $fullPath = $_SESSION['tst_import_dir'] . '/' . $fileName;
1319
1320 include_once("./Services/Export/classes/class.ilImport.php");
1321 $imp = new ilImport((int) $_GET["ref_id"]);
1322 $map = $imp->getMapping();
1323 $map->addMapping('Modules/Test', 'tst', 'new_id', $newObj->getId());
1324 $imp->importObject($newObj, $fullPath, $fileName, 'tst', 'Modules/Test', true);
1325 } else {
1326 $qtiParser = new ilQTIParser($_SESSION["tst_import_qti_file"], IL_MO_PARSE_QTI, $questionParentObjId, $_POST["ident"]);
1327 if (!isset($_POST["ident"]) || !is_array($_POST["ident"]) || !count($_POST["ident"])) {
1328 $qtiParser->setIgnoreItemsEnabled(true);
1329 }
1330 $qtiParser->setTestObject($newObj);
1331 $result = $qtiParser->startParsing();
1332 $newObj->saveToDb();
1333
1334 // import page data
1335 include_once("./Modules/LearningModule/classes/class.ilContObjParser.php");
1336 $contParser = new ilContObjParser($newObj, $_SESSION["tst_import_xml_file"], $_SESSION["tst_import_subdir"]);
1337 $contParser->setQuestionMapping($qtiParser->getImportMapping());
1338 $contParser->startParsing();
1339
1340 if (isset($_POST["ident"]) && is_array($_POST["ident"]) && count($_POST["ident"]) == $qtiParser->getNumImportedItems()) {
1341 // import test results
1342 if (@file_exists($_SESSION["tst_import_results_file"])) {
1343 include_once("./Modules/Test/classes/class.ilTestResultsImportParser.php");
1344 $results = new ilTestResultsImportParser($_SESSION["tst_import_results_file"], $newObj);
1345 $results->setQuestionIdMapping($qtiParser->getQuestionIdMapping());
1346 $results->startParsing();
1347 }
1348 }
1349 $newObj->update();
1350 }
1351
1352
1353 // delete import directory
1355
1356 ilUtil::sendSuccess($this->lng->txt("object_imported"), true);
1357 ilUtil::redirect("ilias.php?ref_id=" . $newObj->getRefId() . "&baseClass=ilObjTestGUI");
1358 }
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 3394 of file class.ilObjTestGUI.php.

3395 {
3396 #if( !include 'competenzenRocker.php' ) exit;
3397
3398 $this->ctrl->setCmd("showSummary");
3399 $this->ctrl->setCmdClass("ilinfoscreengui");
3400 $this->infoScreen();
3401 }

◆ initImportForm()

ilObjTestGUI::initImportForm (   $a_new_type)

Init object import form.

Parameters
stringnew type
Returns
ilPropertyFormGUI

Reimplemented from ilObjectGUI.

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

2445 {
2446 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
2447 $form = new ilPropertyFormGUI();
2448 $form->setTarget("_top");
2449 $new_type = $_POST["new_type"] ? $_POST["new_type"] : $_GET["new_type"];
2450 $this->ctrl->setParameter($this, "new_type", $new_type);
2451 $form->setFormAction($this->ctrl->getFormAction($this));
2452 $form->setTitle($this->lng->txt("import_tst"));
2453
2454 // file
2455 include_once("./Services/Form/classes/class.ilFileInputGUI.php");
2456 $fi = new ilFileInputGUI($this->lng->txt("import_file"), "xmldoc");
2457 $fi->setSuffixes(array("zip"));
2458 $fi->setRequired(true);
2459 $form->addItem($fi);
2460
2461 // question pool
2462 include_once("./Modules/Test/classes/class.ilObjTest.php");
2463 $tst = new ilObjTest();
2464 $questionpools = $tst->getAvailableQuestionpools(true, false, true, true);
2465 if (count($questionpools)) {
2466 $options = array("-1" => $this->lng->txt("dont_use_questionpool"));
2467 foreach ($questionpools as $key => $value) {
2468 $options[$key] = $value["title"];
2469 }
2470
2471 $pool = new ilSelectInputGUI($this->lng->txt("select_questionpool"), "qpl");
2472 $pool->setInfo($this->lng->txt('select_question_pool_info'));
2473 $pool->setOptions($options);
2474 $form->addItem($pool);
2475 }
2476
2477 $form->addCommandButton("importFile", $this->lng->txt("import"));
2478 $form->addCommandButton("cancel", $this->lng->txt("cancel"));
2479
2480 return $form;
2481 }
This class represents a file property in a property form.

References $_GET, $_POST, $form, $key, 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 1959 of file class.ilObjTestGUI.php.

1960 {
1961 // get all questions to move
1962 $move_questions = $_SESSION['tst_qst_move_' . $this->object->getTestId()];
1963 if (!is_array($_POST['q_id']) || 0 === count($_POST['q_id'])) {
1964 ilUtil::sendFailure($this->lng->txt("no_target_selected_for_move"), true);
1965 $this->ctrl->redirect($this, 'questions');
1966 }
1967 if (count($_POST['q_id']) > 1) {
1968 ilUtil::sendFailure($this->lng->txt("too_many_targets_selected_for_move"), true);
1969 $this->ctrl->redirect($this, 'questions');
1970 }
1971 $insert_mode = 1;
1972 $this->object->moveQuestions($_SESSION['tst_qst_move_' . $this->object->getTestId()], $_POST['q_id'][0], $insert_mode);
1973 ilUtil::sendSuccess($this->lng->txt("msg_questions_moved"), true);
1974 unset($_SESSION['tst_qst_move_' . $this->object->getTestId()]);
1975 $this->ctrl->redirect($this, "questions");
1976 }

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

1937 {
1938 // get all questions to move
1939 $move_questions = $_SESSION['tst_qst_move_' . $this->object->getTestId()];
1940
1941 if (!is_array($_POST['q_id']) || 0 === count($_POST['q_id'])) {
1942 ilUtil::sendFailure($this->lng->txt("no_target_selected_for_move"), true);
1943 $this->ctrl->redirect($this, 'questions');
1944 }
1945 if (count($_POST['q_id']) > 1) {
1946 ilUtil::sendFailure($this->lng->txt("too_many_targets_selected_for_move"), true);
1947 $this->ctrl->redirect($this, 'questions');
1948 }
1949 $insert_mode = 0;
1950 $this->object->moveQuestions($_SESSION['tst_qst_move_' . $this->object->getTestId()], $_POST['q_id'][0], $insert_mode);
1951 ilUtil::sendSuccess($this->lng->txt("msg_questions_moved"), true);
1952 unset($_SESSION['tst_qst_move_' . $this->object->getTestId()]);
1953 $this->ctrl->redirect($this, "questions");
1954 }

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

1984 {
1985 $selected_array = (is_array($_POST['q_id'])) ? $_POST['q_id'] : array();
1986 if (!count($selected_array)) {
1987 ilUtil::sendInfo($this->lng->txt("tst_insert_missing_question"), true);
1988 $this->ctrl->redirect($this, "browseForQuestions");
1989 } else {
1990 include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
1991 $manscoring = false;
1992 foreach ($selected_array as $key => $value) {
1993 $this->object->insertQuestion($this->testQuestionSetConfigFactory->getQuestionSetConfig(), $value);
1994 if (!$manscoring) {
1995 $manscoring = $manscoring | assQuestion::_needsManualScoring($value);
1996 }
1997 }
1998 $this->object->saveCompleteStatus($this->testQuestionSetConfigFactory->getQuestionSetConfig());
1999 if ($manscoring) {
2000 ilUtil::sendInfo($this->lng->txt("manscoring_hint"), true);
2001 } else {
2002 ilUtil::sendSuccess($this->lng->txt("tst_questions_inserted"), true);
2003 }
2004 $this->ctrl->redirect($this, "questions");
2005 return;
2006 }
2007 }
static _needsManualScoring($question_id)

References $_POST, $key, 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 1571 of file class.ilObjTestGUI.php.

1572 {
1573 $selected_array = explode(",", $_POST["chosen_questions"]);
1574 if (!count($selected_array)) {
1575 ilUtil::sendInfo($this->lng->txt("tst_insert_missing_question"));
1576 } else {
1577 $total = $this->object->evalTotalPersons();
1578 if ($total) {
1579 // the test was executed previously
1580 ilUtil::sendInfo(sprintf($this->lng->txt("tst_insert_questions_and_results"), $total));
1581 } else {
1582 ilUtil::sendInfo($this->lng->txt("tst_insert_questions"));
1583 }
1584 foreach ($selected_array as $key => $value) {
1585 $this->object->insertQuestion($this->testQuestionSetConfigFactory->getQuestionSetConfig(), $value);
1586 }
1587 $this->object->saveCompleteStatus($this->testQuestionSetConfigFactory->getQuestionSetConfig());
1588 ilUtil::sendSuccess($this->lng->txt("tst_questions_inserted"), true);
1589 $this->ctrl->redirect($this, "questions");
1590 return;
1591 }
1592 }

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

+ Here is the call graph for this function:

◆ isCommandClassAnyInfoScreenChild()

ilObjTestGUI::isCommandClassAnyInfoScreenChild ( )
private

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

3381 {
3382 if (in_array($this->ctrl->getCmdClass(), self::$infoScreenChildClasses)) {
3383 return true;
3384 }
3385
3386 return false;
3387 }

◆ isPdfDeliveryRequest()

ilObjTestGUI::isPdfDeliveryRequest ( )
private
Returns
bool

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

4994 {
4995 if (!isset($_GET['pdf'])) {
4996 return false;
4997 }
4998
4999 if (!(bool) $_GET['pdf']) {
5000 return false;
5001 }
5002
5003 return true;
5004 }

References $_GET.

Referenced by createUserResults().

+ Here is the caller graph for this function:

◆ movePageFormObject()

ilObjTestGUI::movePageFormObject ( )
protected

Move current page.

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

4873 {
4874 global $lng, $ilCtrl, $tpl;
4875
4876 include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
4877 $form = new ilPropertyFormGUI();
4878 $form->setFormAction($ilCtrl->getFormAction($this, "movePage"));
4879 $form->setTitle($lng->txt("test_move_page"));
4880
4881 $old_pos = new ilHiddenInputGUI("q_id");
4882 $old_pos->setValue($_REQUEST['q_id']);
4883 $form->addItem($old_pos);
4884
4885 $questions = $this->object->getQuestionTitlesAndIndexes();
4886 if (!is_array($questions)) {
4887 $questions = array();
4888 }
4889
4890 foreach ($questions as $k => $q) {
4891 if ($k == $_REQUEST['q_id']) {
4892 unset($questions[$k]);
4893 continue;
4894 }
4895 $questions[$k] = $lng->txt('behind') . ' ' . $q;
4896 }
4897 #$questions['0'] = $lng->txt('first');
4898
4899 $options = array(
4900 0 => $lng->txt('first')
4901 );
4902 foreach ($questions as $k => $q) {
4903 $options[$k] = $q . ' [' . $this->lng->txt('question_id_short') . ': ' . $k . ']';
4904 }
4905
4906 $pos = new ilSelectInputGUI($lng->txt("position"), "position_after");
4907 $pos->setOptions($options);
4908 $form->addItem($pos);
4909
4910 $form->addCommandButton("movePage", $lng->txt("submit"));
4911 $form->addCommandButton("showPage", $lng->txt("cancel"));
4912
4913 return $tpl->setContent($form->getHTML());
4914 }

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

◆ movePageObject()

ilObjTestGUI::movePageObject ( )

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

4917 {
4918 global $ilAccess;
4919 if (!$ilAccess->checkAccess("write", "", $this->ref_id)) {
4920 // allow only write access
4921 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
4922 $this->ctrl->redirect($this, "infoScreen");
4923 }
4924
4925 $this->object->moveQuestionAfter($_REQUEST['q_id'], $_REQUEST['position_after']);
4926 $this->showPageObject();
4927 }

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

+ Here is the call graph for this function:

◆ moveQuestionsObject()

ilObjTestGUI::moveQuestionsObject ( )

Marks selected questions for moving.

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

1921 {
1922 $selected_questions = null;
1923 $selected_questions = $_POST['q_id'];
1924 if (is_array($selected_questions)) {
1925 $_SESSION['tst_qst_move_' . $this->object->getTestId()] = $_POST['q_id'];
1926 ilUtil::sendSuccess($this->lng->txt("msg_selected_for_move"), true);
1927 } else {
1928 ilUtil::sendFailure($this->lng->txt('no_selection_for_move'), true);
1929 }
1930 $this->ctrl->redirect($this, 'questions');
1931 }

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

+ Here is the call graph for this function:

◆ npResetFilterObject()

ilObjTestGUI::npResetFilterObject ( )

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

2916 {
2917 include_once("./Modules/Test/classes/tables/class.ilTestParticipantsTableGUI.php");
2918 $table_gui = new ilTestParticipantsTableGUI(
2919 $this,
2920 "participants",
2921 false,
2922 $this->object->getAnonymity(),
2923 0
2924 );
2925 $table_gui->resetFilter(); // writes filter to session
2926 $table_gui->resetOffset(); // sets record offest to 0 (first page)
2927 $this->participantsObject();
2928 }

References participantsObject().

+ Here is the call graph for this function:

◆ npSetFilterObject()

ilObjTestGUI::npSetFilterObject ( )

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

2901 {
2902 include_once("./Modules/Test/classes/tables/class.ilTestParticipantsTableGUI.php");
2903 $table_gui = new ilTestParticipantsTableGUI(
2904 $this,
2905 "participants",
2906 false,
2907 $this->object->getAnonymity(),
2908 0
2909 );
2910 $table_gui->writeFilterToSession(); // writes filter to session
2911 $table_gui->resetOffset(); // sets record offest to 0 (first page)
2912 $this->participantsObject();
2913 }

References participantsObject().

+ Here is the call graph for this function:

◆ outEvaluationObject()

ilObjTestGUI::outEvaluationObject ( )

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

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

◆ participantsActionObject()

ilObjTestGUI::participantsActionObject ( )

Evaluates the actions on the participants page.

@access public

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

2489 {
2490 $command = $_POST["command"];
2491 if (strlen($command)) {
2492 $method = $command . "Object";
2493 if (method_exists($this, $method)) {
2494 $this->$method();
2495 return;
2496 }
2497 }
2498 $this->ctrl->redirect($this, "participants");
2499 }

References $_POST.

◆ participantsObject()

ilObjTestGUI::participantsObject ( )

Creates the output of the test participants.

@access public

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

2507 {
2508 global $ilAccess, $ilToolbar, $lng;
2509
2510 $this->getParticipantsSubTabs();
2511
2512 if (!$ilAccess->checkAccess("write", "", $this->ref_id)) {
2513 // allow only write access
2514 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
2515 $this->ctrl->redirect($this, "infoScreen");
2516 }
2517
2518 if ($this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesBroken()) {
2520 $this->testQuestionSetConfigFactory->getQuestionSetConfig()->getDepenciesBrokenMessage($this->lng)
2521 );
2522 } elseif ($this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesInVulnerableState()) {
2524 $this->testQuestionSetConfigFactory->getQuestionSetConfig()->getDepenciesInVulnerableStateMessage($this->lng)
2525 );
2526 }
2527
2528 if ($this->object->getFixedParticipants()) {
2529 // search button
2530 include_once './Services/Search/classes/class.ilRepositorySearchGUI.php';
2532 $this,
2533 $ilToolbar,
2534 array(
2535 'auto_complete_name' => $lng->txt('user'),
2536 'submit_name' => $lng->txt('add')
2537 )
2538 );
2539
2540 $ilToolbar->addSeparator();
2541 $search_btn = ilLinkButton::getInstance();
2542 $search_btn->setCaption('tst_search_users');
2543 $search_btn->setUrl($this->ctrl->getLinkTargetByClass('ilRepositorySearchGUI', 'start'));
2544 $ilToolbar->addButtonInstance($search_btn);
2545 require_once 'Services/UIComponent/Button/classes/class.ilLinkButton.php';
2546
2547 $participants =&$this->object->getInvitedUsers();
2548 $rows = array();
2549 $unfinished_passes = false;
2550 foreach ($participants as $data) {
2551 $maxpass = $this->object->_getMaxPass($data["active_id"]);
2552 if (!is_null($maxpass)) {
2553 $maxpass += 1;
2554 }
2555 $access = "";
2556 if (strlen($data["active_id"])) {
2557 $last_access = $this->object->_getLastAccess($data["active_id"]);
2558 $access = $last_access;
2559 }
2560 $this->ctrl->setParameterByClass('iltestevaluationgui', 'active_id', $data['active_id']);
2561
2562 if ($data['active_id'] == null) { // if no active id is set, user is invitee not participant...
2563 if (strlen($data["firstname"] . $data["lastname"]) == 0) {
2564 $fullname = $lng->txt("deleted_user");
2565 } elseif ($this->object->getAnonymity()) {
2566 $fullname = $lng->txt('anonymous');
2567 } else {
2568 $fullname = trim($data["lastname"] . ", " . $data["firstname"] . " " . $data["title"]);
2569 }
2570 } else {
2571 include_once "./Modules/Test/classes/class.ilObjTestAccess.php";
2572 $fullname = ilObjTestAccess::_getParticipantData($data['active_id']);
2573 }
2574
2575 $unfinished_pass_data = 0;
2576 if ($data["unfinished_passes"] == 1) {
2577 $unfinished_pass_data = 1;
2578 $unfinished_passes = true;
2579 }
2580
2581 array_push($rows, array(
2582 'usr_id' => $data["usr_id"],
2583 'active_id' => $data['active_id'],
2584 'login' => $data["login"],
2585 'clientip' => $data["clientip"],
2586 'firstname' => $data["firstname"],
2587 'lastname' => $data["lastname"],
2588 'name' => $fullname,
2589 'started' => ($data["active_id"] > 0) ? 1 : 0,
2590 'unfinished' => $unfinished_pass_data,
2591 'finished' => ($data["test_finished"] == 1) ? 1 : 0,
2592 'access' => $access,
2593 'maxpass' => $maxpass,
2594 'result' => $this->ctrl->getLinkTargetByClass('iltestevaluationgui', 'outParticipantsResultsOverview'),
2595 'finish_link' => $this->ctrl->getLinkTargetByClass('iltestevaluationgui', 'finishTestPassForSingleUser')
2596 ));
2597 }
2598 include_once "./Modules/Test/classes/tables/class.ilTestFixedParticipantsTableGUI.php";
2599 $table_gui = new ilTestFixedParticipantsTableGUI(
2600 $this,
2601 'participants',
2602 $this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesBroken(),
2603 $this->object->getAnonymity(),
2604 count($rows)
2605 );
2606 $table_gui->setFilterCommand('fpSetFilter');
2607 $table_gui->setResetCommand('fpResetFiler');
2609 $table_gui->setData($rows);
2610 $this->tpl->setVariable('ADM_CONTENT', $table_gui->getHTML());
2611
2612 if (count($rows) > 0) {
2613 $ilToolbar->addSeparator();
2614 $delete_all_results_btn = ilLinkButton::getInstance();
2615 $delete_all_results_btn->setCaption('delete_all_user_data');
2616 $delete_all_results_btn->setUrl($this->ctrl->getLinkTarget($this, 'deleteAllUserResults'));
2617 $ilToolbar->addButtonInstance($delete_all_results_btn);
2618 }
2619 $this->addFinishAllPassesButton($unfinished_passes, $ilToolbar);
2620 } else {
2621 $participants =&$this->object->getTestParticipants();
2622 $rows = array();
2623 $unfinished_passes = false;
2624
2625 foreach ($participants as $data) {
2626 $maxpass = $this->object->_getMaxPass($data["active_id"]);
2627 if (!is_null($maxpass)) {
2628 $maxpass += 1;
2629 }
2630 $access = "";
2631 if (strlen($data["active_id"])) {
2632 $last_access = $this->object->_getLastAccess($data["active_id"]);
2633 $access = $last_access;
2634 }
2635 $this->ctrl->setParameterByClass('iltestevaluationgui', 'active_id', $data['active_id']);
2636
2637 $unfinished_pass_data = 0;
2638 if ($data["unfinished_passes"] == 1) {
2639 $unfinished_pass_data = 1;
2640 $unfinished_passes = true;
2641 }
2642
2643 include_once "./Modules/Test/classes/class.ilObjTestAccess.php";
2644 $fullname = ilObjTestAccess::_getParticipantData($data['active_id']);
2645 array_push($rows, array(
2646 'usr_id' => $data["active_id"],
2647 'active_id' => $data['active_id'],
2648 'login' => $data["login"],
2649 'name' => $fullname,
2650 'firstname' => $data["firstname"],
2651 'lastname' => $data["lastname"],
2652 'started' => ($data["active_id"] > 0) ? 1 : 0,
2653 'unfinished' => $unfinished_pass_data,
2654 'finished' => ($data["test_finished"] == 1) ? 1 : 0,
2655 'access' => $access,
2656 'maxpass' => $maxpass,
2657 'result' => $this->ctrl->getLinkTargetByClass('iltestevaluationgui', 'outParticipantsResultsOverview'),
2658 'finish_link' => $this->ctrl->getLinkTargetByClass('iltestevaluationgui', 'finishTestPassForSingleUser')
2659 ));
2660 }
2661 include_once "./Modules/Test/classes/tables/class.ilTestParticipantsTableGUI.php";
2662 $table_gui = new ilTestParticipantsTableGUI(
2663 $this,
2664 'participants',
2665 $this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesBroken(),
2666 $this->object->getAnonymity(),
2667 count($rows)
2668 );
2669
2670 if (count($rows) > 0) {
2671 require_once 'Services/UIComponent/Button/classes/class.ilLinkButton.php';
2672 $delete_all_results_btn = ilLinkButton::getInstance();
2673 $delete_all_results_btn->setCaption('delete_all_user_data');
2674 $delete_all_results_btn->setUrl($this->ctrl->getLinkTarget($this, 'deleteAllUserResults'));
2675 $ilToolbar->addStickyItem($delete_all_results_btn);
2676 }
2677
2678 $this->addFinishAllPassesButton($unfinished_passes, $ilToolbar);
2679
2680 $table_gui->setFilterCommand('npSetFilter');
2681 $table_gui->setResetCommand('npResetFilter');
2683 $table_gui->setData($rows);
2684 $this->tpl->setVariable('ADM_CONTENT', $table_gui->getHTML());
2685 }
2686 }
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
$rows
Definition: xhr_table.php:10

References ilObjectGUI\$access, ilObjectGUI\$data, ilObjectGUI\$lng, $rows, 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 2253 of file class.ilObjTestGUI.php.

2254 {
2255 require_once 'Modules/Test/classes/tables/class.ilTestQuestionBrowserTableGUI.php';
2256
2257 $this->ctrl->setParameterByClass('ilTestQuestionBrowserTableGUI', ilTestQuestionBrowserTableGUI::CONTEXT_PARAMETER, $context);
2258
2259 $this->ctrl->setParameterByClass('ilTestQuestionBrowserTableGUI', ilTestQuestionBrowserTableGUI::MODE_PARAMETER, ilTestQuestionBrowserTableGUI::MODE_BROWSE_POOLS);
2260
2261 $toolbar->addButton($this->lng->txt("tst_browse_for_qpl_questions"), $this->ctrl->getLinkTargetByClass('ilTestQuestionBrowserTableGUI', ilTestQuestionBrowserTableGUI::CMD_BROWSE_QUESTIONS));
2262
2263 $this->ctrl->setParameterByClass('ilTestQuestionBrowserTableGUI', ilTestQuestionBrowserTableGUI::MODE_PARAMETER, ilTestQuestionBrowserTableGUI::MODE_BROWSE_TESTS);
2264
2265 $toolbar->addButton($this->lng->txt("tst_browse_for_tst_questions"), $this->ctrl->getLinkTargetByClass('ilTestQuestionBrowserTableGUI', ilTestQuestionBrowserTableGUI::CMD_BROWSE_QUESTIONS));
2266 }

References ilObjectGUI\$toolbar, 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 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 989 of file class.ilObjTestGUI.php.

990 {
991 global $ilUser;
992
993 $this->tpl->getStandardTemplate();
994
995 // set locator
996 $this->setLocator();
997
998 // catch feedback message
1000
1001 // set title and description and title icon
1002 $this->setTitleAndDescription();
1003
1004 // BEGIN WebDAV: Display Mount Webfolder icon.
1005 if ($ilUser->getId() != ANONYMOUS_USER_ID) {
1006 require_once('Services/WebDAV/classes/class.ilDAVActivationChecker.php');
1008 $this->showMountWebfolderIcon();
1009 }
1010 }
1011 // END WebDAV: Display Mount Webfolder icon.
1012 }
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 3026 of file class.ilObjTestGUI.php.

3027 {
3028 global $ilAccess, $ilias;
3029 if (!$ilAccess->checkAccess("write", "", $this->ref_id)) {
3030 // allow only write access
3031 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
3032 $this->ctrl->redirect($this, "infoScreen");
3033 }
3034
3035 $isPdfDeliveryRequest = isset($_GET['pdf']) && $_GET['pdf'];
3036
3037 $this->getQuestionsSubTabs();
3038 $template = new ilTemplate("tpl.il_as_tst_print_test_confirm.html", true, true, "Modules/Test");
3039
3040 if (!$isPdfDeliveryRequest) { // #15243
3041 $this->ctrl->setParameter($this, "pdf", "1");
3042 $template->setCurrentBlock("pdf_export");
3043 $template->setVariable("PDF_URL", $this->ctrl->getLinkTarget($this, "print"));
3044 $this->ctrl->setParameter($this, "pdf", "");
3045 $template->setVariable("PDF_TEXT", $this->lng->txt("pdf_export"));
3046 $template->parseCurrentBlock();
3047
3048 $template->setCurrentBlock("navigation_buttons");
3049 $template->setVariable("BUTTON_PRINT", $this->lng->txt("print"));
3050 $template->parseCurrentBlock();
3051 }
3052 // prepare generation before contents are processed (for mathjax)
3053 else {
3054 require_once 'Services/PDFGeneration/classes/class.ilPDFGeneration.php';
3056 }
3057
3058 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print");
3059
3060 global $ilUser;
3061 $print_date = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y"));
3062 $max_points= 0;
3063 $counter = 1;
3064
3065 require_once 'Modules/Test/classes/class.ilTestQuestionHeaderBlockBuilder.php';
3066 $questionHeaderBlockBuilder = new ilTestQuestionHeaderBlockBuilder($this->lng);
3067 $questionHeaderBlockBuilder->setHeaderMode($this->object->getTitleOutput());
3068
3069 if ($isPdfDeliveryRequest) {
3070 require_once 'Services/WebAccessChecker/classes/class.ilWACSignedPath.php';
3072 }
3073
3074 foreach ($this->object->questions as $question) {
3075 $template->setCurrentBlock("question");
3076 $question_gui = $this->object->createQuestionGUI("", $question);
3077
3078 if ($isPdfDeliveryRequest) {
3079 $question_gui->setRenderPurpose(assQuestionGUI::RENDER_PURPOSE_PRINT_PDF);
3080 }
3081
3082 $questionHeaderBlockBuilder->setQuestionTitle($question_gui->object->getTitle());
3083 $questionHeaderBlockBuilder->setQuestionPoints($question_gui->object->getMaximumPoints());
3084 $questionHeaderBlockBuilder->setQuestionPosition($counter);
3085 $template->setVariable("QUESTION_HEADER", $questionHeaderBlockBuilder->getHTML());
3086
3087 $template->setVariable("TXT_QUESTION_ID", $this->lng->txt('question_id_short'));
3088 $template->setVariable("QUESTION_ID", $question_gui->object->getId());
3089 $result_output = $question_gui->getSolutionOutput("", null, false, true, false, $this->object->getShowSolutionFeedback());
3090 $template->setVariable("SOLUTION_OUTPUT", $result_output);
3091 $template->parseCurrentBlock("question");
3092 $counter++;
3093 $max_points += $question_gui->object->getMaximumPoints();
3094 }
3095
3096 $template->setVariable("TITLE", ilUtil::prepareFormOutput($this->object->getTitle()));
3097 $template->setVariable("PRINT_TEST", ilUtil::prepareFormOutput($this->lng->txt("tst_print")));
3098 $template->setVariable("TXT_PRINT_DATE", ilUtil::prepareFormOutput($this->lng->txt("date")));
3099 $template->setVariable("VALUE_PRINT_DATE", ilUtil::prepareFormOutput(strftime("%c", $print_date)));
3100 $template->setVariable("TXT_MAXIMUM_POINTS", ilUtil::prepareFormOutput($this->lng->txt("tst_maximum_points")));
3101 $template->setVariable("VALUE_MAXIMUM_POINTS", ilUtil::prepareFormOutput($max_points));
3102
3103 if ($isPdfDeliveryRequest) {
3104 require_once 'Modules/Test/classes/class.ilTestPDFGenerator.php';
3106 } else {
3107 $this->tpl->setVariable("PRINT_CONTENT", $template->get());
3108 }
3109 }
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)
const PDF_PRINT_VIEW_QUESTIONS

References $_GET, $counter, $ilUser, $template, date, ilTestPDFGenerator\generatePDF(), getQuestionsSubTabs(), ilUtil\getStyleSheetLocation(), ilTestPDFGenerator\PDF_OUTPUT_DOWNLOAD, PDF_PRINT_VIEW_QUESTIONS, 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 2119 of file class.ilObjTestGUI.php.

2120 {
2121 global $ilAccess, $ilTabs;
2122
2123 $ilTabs->activateTab('assQuestions');
2124
2125 // #12590
2126 $this->ctrl->setParameter($this, 'test_express_mode', '');
2127
2128 if (!$ilAccess->checkAccess("write", "", $this->ref_id)) {
2129 // allow only write access
2130 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
2131 $this->ctrl->redirect($this, "infoScreen");
2132 }
2133
2134 if ($_GET['browse']) {
2135 return $this->questionbrowser();
2136 }
2137
2138 $this->getQuestionsSubTabs();
2139
2140 // #11631, #12994
2141 $this->ctrl->setParameter($this, 'q_id', '');
2142
2143 if ($_GET["eqid"] && $_GET["eqpl"]) {
2144 ilUtil::redirect("ilias.php?baseClass=ilObjQuestionPoolGUI&ref_id=" . $_GET["eqpl"] . "&cmd=editQuestionForTest&calling_test=" . $_GET["ref_id"] . "&q_id=" . $_GET["eqid"]);
2145 }
2146
2147 if ($_GET["up"] > 0) {
2148 $this->object->questionMoveUp($_GET["up"]);
2149 }
2150 if ($_GET["down"] > 0) {
2151 $this->object->questionMoveDown($_GET["down"]);
2152 }
2153
2154 if ($_GET["add"]) {
2155 $selected_array = array();
2156 array_push($selected_array, $_GET["add"]);
2157 $total = $this->object->evalTotalPersons();
2158 if ($total) {
2159 // the test was executed previously
2160 ilUtil::sendInfo(sprintf($this->lng->txt("tst_insert_questions_and_results"), $total));
2161 } else {
2162 ilUtil::sendInfo($this->lng->txt("tst_insert_questions"));
2163 }
2164 $this->insertQuestions($selected_array);
2165 return;
2166 }
2167
2168 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_questions.html", "Modules/Test");
2169
2170 $total = $this->object->evalTotalPersons();
2171 if ($ilAccess->checkAccess("write", "", $this->ref_id)) {
2172 if ($total != 0) {
2173 $link = $this->ctrl->getLinkTarget($this, "participants");
2174 $link = "<a href=\"" . $link . "\">" . $this->lng->txt("test_has_datasets_warning_page_view_link") . "</a>";
2175 ilUtil::sendInfo($this->lng->txt("test_has_datasets_warning_page_view") . " " . $link);
2176 } else {
2177 global $ilToolbar;
2178
2179 $ilToolbar->addButton($this->lng->txt("ass_create_question"), $this->ctrl->getLinkTarget($this, "addQuestion"));
2180
2181 if ($this->object->getPoolUsage()) {
2182 $ilToolbar->addSeparator();
2183
2184 require_once 'Modules/Test/classes/tables/class.ilTestQuestionBrowserTableGUI.php';
2185
2187 }
2188
2189 $ilToolbar->addSeparator();
2190 $ilToolbar->addButton($this->lng->txt("random_selection"), $this->ctrl->getLinkTarget($this, "randomselect"));
2191
2192
2193 global $ilAccess, $ilUser, $lng, $ilCtrl;
2194 $online_access = false;
2195 if ($this->object->getFixedParticipants()) {
2196 include_once "./Modules/Test/classes/class.ilObjTestAccess.php";
2197 $online_access_result = ilObjTestAccess::_lookupOnlineTestAccess($this->object->getId(), $ilUser->getId());
2198 if ($online_access_result === true) {
2199 $online_access = true;
2200 }
2201 }
2202
2203 if ($this->object->isOnline() && $this->object->isComplete($this->testQuestionSetConfigFactory->getQuestionSetConfig())) {
2204 if ((!$this->object->getFixedParticipants() || $online_access) && $ilAccess->checkAccess("read", "", $this->ref_id)) {
2205 $testSession = $this->testSessionFactory->getSession();
2206 $testSequence = $this->testSequenceFactory->getSequenceByTestSession($testSession);
2207
2208 $testPlayerGUI = $this->testPlayerFactory->getPlayerGUI();
2209
2210 $executable = $this->object->isExecutable($testSession, $ilUser->getId(), $allowPassIncrease = true);
2211
2212 if ($executable["executable"]) {
2213 if ($testSession->getActiveId() > 0) {
2214 // resume test
2215
2216 if ($testSequence->hasStarted($testSession)) {
2217 $execTestLabel = $this->lng->txt("tst_resume_test");
2218 $execTestLink = $this->ctrl->getLinkTarget($testPlayerGUI, 'resumePlayer');
2219 } else {
2220 $execTestLabel = $this->object->getStartTestLabel($testSession->getActiveId());
2221 $execTestLink = $this->ctrl->getLinkTarget($testPlayerGUI, 'startPlayer');
2222 }
2223 } else {
2224 // start new test
2225
2226 $execTestLabel = $this->object->getStartTestLabel($testSession->getActiveId());
2227 $execTestLink = $this->ctrl->getLinkTarget($testPlayerGUI, 'startPlayer');
2228 }
2229
2230 $ilToolbar->addSeparator();
2231 $ilToolbar->addButton($execTestLabel, $execTestLink);
2232 }
2233 }
2234 }
2235 }
2236 }
2237
2238 $this->tpl->setCurrentBlock("adm_content");
2239 include_once "./Modules/Test/classes/tables/class.ilTestQuestionsTableGUI.php";
2240 $checked_move = is_array($_SESSION['tst_qst_move_' . $this->object->getTestId()]) && (count($_SESSION['tst_qst_move_' . $this->object->getTestId()]));
2241 $table_gui = new ilTestQuestionsTableGUI($this, 'questions', (($ilAccess->checkAccess("write", "", $this->ref_id) ? true : false)), $checked_move, $total);
2242 $data = $this->object->getTestQuestions();
2243 $table_gui->setData($data);
2244 $this->tpl->setVariable('QUESTIONBROWSER', $table_gui->getHTML());
2245 $this->tpl->setVariable("ACTION_QUESTION_FORM", $this->ctrl->getFormAction($this));
2246 $this->tpl->parseCurrentBlock();
2247 }

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

810 {
811 switch ($this->object->getQuestionSetType()) {
813 $this->ctrl->redirectByClass('ilTestExpressPageObjectGUI', 'showPage');
814
815 // no break
817 $this->ctrl->redirectByClass('ilTestRandomQuestionSetConfigGUI');
818
819 // no break
821 $this->ctrl->redirectByClass('ilObjTestDynamicQuestionSetConfigGUI');
822 }
823 }

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

1470 {
1471 global $ilUser;
1472 $this->getQuestionsSubTabs();
1473 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_random_select.html", "Modules/Test");
1474 $questionpools =&$this->object->getAvailableQuestionpools(false, false, false, true);
1475 $this->tpl->setCurrentBlock("option");
1476 $this->tpl->setVariable("VALUE_OPTION", "0");
1477 $this->tpl->setVariable("TEXT_OPTION", $this->lng->txt("all_available_question_pools"));
1478 $this->tpl->parseCurrentBlock();
1479 foreach ($questionpools as $key => $value) {
1480 $this->tpl->setCurrentBlock("option");
1481 $this->tpl->setVariable("VALUE_OPTION", $key);
1482 $this->tpl->setVariable("TEXT_OPTION", $value["title"]);
1483 $this->tpl->parseCurrentBlock();
1484 }
1485 $this->tpl->setCurrentBlock("hidden");
1486 $this->tpl->setVariable("HIDDEN_NAME", "sel_question_types");
1487 $this->tpl->setVariable("HIDDEN_VALUE", $_POST["sel_question_types"]);
1488 $this->tpl->parseCurrentBlock();
1489 $this->tpl->setCurrentBlock("adm_content");
1490 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
1491 $this->tpl->setVariable("TXT_QPL_SELECT", $this->lng->txt("tst_random_select_questionpool"));
1492 $this->tpl->setVariable("TXT_NR_OF_QUESTIONS", $this->lng->txt("tst_random_nr_of_questions"));
1493 $this->tpl->setVariable("BTN_SUBMIT", $this->lng->txt("submit"));
1494 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
1495 $this->tpl->parseCurrentBlock();
1496 }

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

+ Here is the call graph for this function:

◆ redirectTo_ilObjTestSettingsGeneralGUI_showForm_Object()

ilObjTestGUI::redirectTo_ilObjTestSettingsGeneralGUI_showForm_Object ( )
private

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

976 {
977 require_once 'Modules/Test/classes/class.ilObjTestSettingsGeneralGUI.php';
978 $this->ctrl->redirectByClass('ilObjTestSettingsGeneralGUI', ilObjTestSettingsGeneralGUI::CMD_SHOW_FORM);
979 }

References ilObjTestSettingsGeneralGUI\CMD_SHOW_FORM.

◆ redirectToInfoScreenObject()

ilObjTestGUI::redirectToInfoScreenObject ( )

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

3404 {
3405 $this->ctrl->setCmd("showSummary");
3406 $this->ctrl->setCmdClass("ilinfoscreengui");
3407 $this->infoScreen($_GET['lock']);
3408 }

References $_GET.

◆ removeImportFailsObject()

ilObjTestGUI::removeImportFailsObject ( )
protected

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

3572 {
3573 require_once 'Modules/TestQuestionPool/classes/questions/class.ilAssQuestionSkillAssignmentImportFails.php';
3574 $qsaImportFails = new ilAssQuestionSkillAssignmentImportFails($this->object->getId());
3575 $qsaImportFails->deleteRegisteredImportFails();
3576
3577 require_once 'Modules/Test/classes/class.ilTestSkillLevelThresholdImportFails.php';
3578 $sltImportFails = new ilTestSkillLevelThresholdImportFails($this->object->getId());
3579 $sltImportFails->deleteRegisteredImportFails();
3580
3581 $this->ctrl->redirect($this, 'infoScreen');
3582 }

◆ removeParticipantObject()

ilObjTestGUI::removeParticipantObject ( )

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

2996 {
2997 if (is_array($_POST["chbUser"])) {
2998 foreach ($_POST["chbUser"] as $user_id) {
2999 $this->object->disinviteUser($user_id);
3000 }
3001 } else {
3002 ilUtil::sendInfo($this->lng->txt("select_one_user"), true);
3003 }
3004 $this->ctrl->redirect($this, "participants");
3005 }

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

1849 {
1850 $total = $this->object->evalTotalPersons();
1851 if ($total) {
1852 // the test was executed previously
1853 $question = sprintf($this->lng->txt("tst_remove_questions_and_results"), $total);
1854 } else {
1855 if (count($checked_questions) == 1) {
1856 $question = $this->lng->txt("tst_remove_question");
1857 } else {
1858 $question = $this->lng->txt("tst_remove_questions");
1859 }
1860 }
1861
1862 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
1863 $cgui = new ilConfirmationGUI();
1864 $cgui->setHeaderText($question);
1865
1866 $this->ctrl->saveParameter($this, 'test_express_mode');
1867 $this->ctrl->saveParameter($this, 'q_id');
1868
1869 $cgui->setFormAction($this->ctrl->getFormAction($this));
1870 $cgui->setCancel($this->lng->txt("cancel"), "cancelRemoveQuestions");
1871 $cgui->setConfirm($this->lng->txt("confirm"), "confirmRemoveQuestions");
1872
1873 include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
1874 $removablequestions =&$this->object->getTestQuestions();
1875 if (count($removablequestions)) {
1876 foreach ($removablequestions as $data) {
1877 if (in_array($data["question_id"], $checked_questions)) {
1878 $txt = $data["title"] . " (" . assQuestion::_getQuestionTypeName($data["type_tag"]) . ")";
1879 $txt .= ' [' . $this->lng->txt('question_id_short') . ': ' . $data['question_id'] . ']';
1880
1881 if ($data["description"]) {
1882 $txt .= "<div class=\"small\">" . $data["description"] . "</div>";
1883 }
1884
1885 $cgui->addItem("q_id[]", $data["question_id"], $txt);
1886 }
1887 }
1888 }
1889
1890 $this->tpl->setContent($cgui->getHTML());
1891 }
$txt
Definition: error.php:11

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

1897 {
1898 $this->getQuestionsSubTabs();
1899 $checked_questions = $_REQUEST["q_id"];
1900
1901 if (!is_array($checked_questions) && $checked_questions) {
1902 $checked_questions = array($checked_questions);
1903 }
1904
1905 if (!is_array($checked_questions)) {
1906 $checked_questions = [];
1907 }
1908
1909 if (count($checked_questions) > 0) {
1910 $this->removeQuestionsForm($checked_questions);
1911 } elseif (0 === count($checked_questions)) {
1912 ilUtil::sendFailure($this->lng->txt("tst_no_question_selected_for_removal"), true);
1913 $this->ctrl->redirect($this, "questions");
1914 }
1915 }
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 1423 of file class.ilObjTestGUI.php.

1424 {
1425 $this->questionBrowser();
1426 }

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

3119 {
3120 global $ilAccess;
3121
3122 if (!$ilAccess->checkAccess("write", "", $this->ref_id)) {
3123 // allow only write access
3124 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
3125 $this->ctrl->redirect($this, "infoScreen");
3126 }
3127 $this->getQuestionsSubTabs();
3128 $template = new ilTemplate("tpl.il_as_tst_print_test_confirm.html", true, true, "Modules/Test");
3129
3130 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print");
3131
3132 $isPdfDeliveryRequest = isset($_GET['pdf']) && $_GET['pdf'];
3133
3134 $max_points= 0;
3135 $counter = 1;
3136
3137 require_once 'Modules/Test/classes/class.ilTestQuestionHeaderBlockBuilder.php';
3138 $questionHeaderBlockBuilder = new ilTestQuestionHeaderBlockBuilder($this->lng);
3139 $questionHeaderBlockBuilder->setHeaderMode($this->object->getTitleOutput());
3140
3141 if ($isPdfDeliveryRequest) {
3142 require_once 'Services/WebAccessChecker/classes/class.ilWACSignedPath.php';
3144
3145 // prepare generation before contents are processed (for mathjax)
3146 require_once 'Services/PDFGeneration/classes/class.ilPDFGeneration.php';
3148 }
3149
3150 foreach ($this->object->questions as $question) {
3151 $template->setCurrentBlock("question");
3152 $question_gui = $this->object->createQuestionGUI("", $question);
3153 $question_gui->setRenderPurpose(assQuestionGUI::RENDER_PURPOSE_PREVIEW);
3154
3155 $questionHeaderBlockBuilder->setQuestionTitle($question_gui->object->getTitle());
3156 $questionHeaderBlockBuilder->setQuestionPoints($question_gui->object->getMaximumPoints());
3157 $questionHeaderBlockBuilder->setQuestionPosition($counter);
3158 $template->setVariable("QUESTION_HEADER", $questionHeaderBlockBuilder->getHTML());
3159
3160 $template->setVariable("SOLUTION_OUTPUT", $question_gui->getPreview(false));
3161 $template->parseCurrentBlock("question");
3162 $counter++;
3163 $max_points += $question_gui->object->getMaximumPoints();
3164 }
3165
3166 $template->setVariable("TITLE", ilUtil::prepareFormOutput($this->object->getTitle()));
3167 $template->setVariable("PRINT_TEST", ilUtil::prepareFormOutput($this->lng->txt("review_view")));
3168 $template->setVariable("TXT_PRINT_DATE", ilUtil::prepareFormOutput($this->lng->txt("date")));
3169 $usedRelativeDates = ilDatePresentation::useRelativeDates();
3171 $template->setVariable(
3172 "VALUE_PRINT_DATE",
3174 );
3175 ilDatePresentation::setUseRelativeDates($usedRelativeDates);
3176 $template->setVariable("TXT_MAXIMUM_POINTS", ilUtil::prepareFormOutput($this->lng->txt("tst_maximum_points")));
3177 $template->setVariable("VALUE_MAXIMUM_POINTS", ilUtil::prepareFormOutput($max_points));
3178
3179 if ($isPdfDeliveryRequest) {
3180 require_once 'Modules/Test/classes/class.ilTestPDFGenerator.php';
3182 } else {
3183 $this->ctrl->setParameter($this, "pdf", "1");
3184 $template->setCurrentBlock("pdf_export");
3185 $template->setVariable("PDF_URL", $this->ctrl->getLinkTarget($this, "review"));
3186 $this->ctrl->setParameter($this, "pdf", "");
3187 $template->setVariable("PDF_TEXT", $this->lng->txt("pdf_export"));
3188 $template->parseCurrentBlock();
3189
3190 $template->setCurrentBlock("navigation_buttons");
3191 $template->setVariable("BUTTON_PRINT", $this->lng->txt("print"));
3192 $template->parseCurrentBlock();
3193
3194
3195 $this->tpl->setVariable("PRINT_CONTENT", $template->get());
3196 }
3197 }
const IL_CAL_UNIX
static setUseRelativeDates($a_status)
set use relative dates
static useRelativeDates()
check if relative dates are used

References $_GET, $counter, $template, ilDatePresentation\formatDate(), ilTestPDFGenerator\generatePDF(), getQuestionsSubTabs(), ilUtil\getStyleSheetLocation(), IL_CAL_UNIX, ilTestPDFGenerator\PDF_OUTPUT_DOWNLOAD, PDF_PRINT_VIEW_QUESTIONS, ilUtil\prepareFormOutput(), ilPDFGeneration\prepareGeneration(), assQuestionGUI\RENDER_PURPOSE_PREVIEW, ilUtil\sendInfo(), ilWACSignedPath\setTokenMaxLifetimeInSeconds(), ilDatePresentation\setUseRelativeDates(), and ilDatePresentation\useRelativeDates().

+ Here is the call graph for this function:

◆ runObject()

ilObjTestGUI::runObject ( )

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

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

◆ saveClientIPObject()

ilObjTestGUI::saveClientIPObject ( )

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

3008 {
3009 if (is_array($_POST["chbUser"])) {
3010 foreach ($_POST["chbUser"] as $user_id) {
3011 $this->object->setClientIP($user_id, $_POST["clientip_" . $user_id]);
3012 }
3013 } else {
3014 ilUtil::sendInfo($this->lng->txt("select_one_user"), true);
3015 }
3016 $this->ctrl->redirect($this, "participants");
3017 }

References $_POST, and ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ saveOrderAndObligationsObject()

ilObjTestGUI::saveOrderAndObligationsObject ( )

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

4832 {
4833 global $ilAccess;
4834 if (!$ilAccess->checkAccess("write", "", $this->ref_id)) {
4835 // allow only write access
4836 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
4837 $this->ctrl->redirect($this, "infoScreen");
4838 }
4839
4840 global $ilCtrl;
4841
4842 $orders = $obligations = array();
4843
4844 foreach ((array) $_REQUEST['order'] as $qId => $order) {
4845 $id = (int) str_replace('q_', '', $qId);
4846
4847 $orders[$id] = $order;
4848 }
4849
4850 if ($this->object->areObligationsEnabled() && isset($_REQUEST['obligatory']) && is_array($_REQUEST['obligatory'])) {
4851 foreach ($_REQUEST['obligatory'] as $qId => $obligation) {
4852 $id = (int) str_replace('q_', '', $qId);
4853
4855 $obligations[$id] = $obligation;
4856 }
4857 }
4858 }
4859
4860 $this->object->setQuestionOrderAndObligations(
4861 $orders,
4862 $obligations
4863 );
4864
4865 ilUtil::sendSuccess($this->lng->txt('saved_successfully'), true);
4866 $ilCtrl->redirect($this, 'questions');
4867 }
static isQuestionObligationPossible($questionId)
checks wether the obligation for question with given id is possible or not

References $id, $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 2935 of file class.ilObjTestGUI.php.

2936 {
2937 if (count($_POST)) {
2938 $_SESSION["show_user_results"] = $_POST["chbUser"];
2939 }
2940 $this->showUserResults($show_pass_details = true, $show_answers = true, $show_reached_points = true);
2941 }
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 4929 of file class.ilObjTestGUI.php.

4930 {
4931 global $ilCtrl;
4932
4933 $ilCtrl->setParameterByClass('iltestexpresspageobjectgui', 'q_id', $_REQUEST['q_id']);
4934 $ilCtrl->redirectByClass('iltestexpresspageobjectgui', 'showPage');
4935 }

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

2962 {
2963 if (count($_POST)) {
2964 $_SESSION["show_user_results"] = $_POST["chbUser"];
2965 }
2966 $this->showUserResults($show_pass_details = true, $show_answers = false);
2967 }

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

+ Here is the call graph for this function:

◆ showTimingFormObject()

ilObjTestGUI::showTimingFormObject ( )

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

2835 {
2836 $form = $this->formTimingObject();
2837 $this->tpl->setContent($form->getHTML());
2838 }

References $form, and 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 2948 of file class.ilObjTestGUI.php.

2949 {
2950 if (count($_POST)) {
2951 $_SESSION["show_user_results"] = $_POST["chbUser"];
2952 }
2953 $this->showUserResults($show_pass_details = false, $show_answers = true);
2954 }

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

2975 {
2976 $show_user_results = $_SESSION["show_user_results"];
2977
2978 if (count($show_user_results) == 0) {
2979 ilUtil::sendInfo($this->lng->txt("select_one_user"), true);
2980 $this->ctrl->redirect($this, "participants");
2981 }
2982
2983
2984 $template = $this->createUserResults($show_pass_details, $show_answers, $show_reached_points, $show_user_results);
2985
2986 if ($template instanceof ilTemplate) {
2987 $this->tpl->setVariable("ADM_CONTENT", $template->get());
2988 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print");
2989 if ($this->object->getShowSolutionAnswersOnly()) {
2990 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print_hide_content.css", "Modules/Test"), "print");
2991 }
2992 }
2993 }
createUserResults($show_pass_details, $show_answers, $show_reached_points, $show_user_results)

References $_SESSION, $template, 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 3669 of file class.ilObjTestGUI.php.

3670 {
3671 }

◆ takenObject()

ilObjTestGUI::takenObject ( )

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

2269 {
2270 }

◆ timingObject()

ilObjTestGUI::timingObject ( )

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

2746 {
2747 $this->getParticipantsSubTabs();
2748
2749 global $ilAccess;
2750
2751 if (!$ilAccess->checkAccess("write", "", $this->ref_id)) {
2752 // allow only write access
2753 ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true);
2754 $this->ctrl->redirect($this, "infoScreen");
2755 }
2756
2757 if ($this->object->getProcessingTimeInSeconds() > 0 && $this->object->getNrOfTries() == 1) {
2758 $form = $this->formTimingObject();
2759 if (count($_POST) && $form->checkInput()) {
2760 $res = $this->object->addExtraTime($form->getInput('participant'), $form->getInput('extratime'));
2761 ilUtil::sendSuccess(sprintf($this->lng->txt('tst_extratime_added'), $form->getInput('extratime')), true);
2762 $this->ctrl->redirect($this, 'timingOverview');
2763 } else {
2764 return $this->tpl->setVariable("ADM_CONTENT", $form->getHTML());
2765 }
2766 } else {
2767 ilUtil::sendInfo($this->lng->txt("tst_extratime_notavailable"));
2768 }
2769 }
foreach($_POST as $key=> $value) $res

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

+ Here is the call graph for this function:

◆ timingOverviewObject()

ilObjTestGUI::timingOverviewObject ( )

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

2704 {
2705 $this->getParticipantsSubTabs();
2706
2707 include_once "./Modules/Test/classes/tables/class.ilTimingOverviewTableGUI.php";
2708 $table_gui = new ilTimingOverviewTableGUI($this, 'timingOverview');
2709
2710 $participants =&$this->object->getTestParticipants();#
2711 $times = $this->object->getStartingTimeOfParticipants();
2712 $addons = $this->object->getTimeExtensionsOfParticipants();
2713
2714 $tbl_data = array();
2715 foreach ($participants as $participant) {
2716 $tblRow = array();
2717
2718 $started = "";
2719 if ($times[$participant['active_id']]) {
2720 $started = $this->lng->txt('tst_started') . ': ' . ilDatePresentation::formatDate(new ilDateTime($times[$participant['active_id']], IL_CAL_DATETIME));
2721 $tblRow['started'] = $started;
2722 } else {
2723 $tblRow['started'] = '';
2724 }
2725
2726 if ($addons[$participant['active_id']] > 0) {
2727 $tblRow['extratime'] = $addons[$participant['active_id']];
2728 }
2729
2730 $tblRow['login'] = $participant['login'];
2731
2732 if ($this->object->getAnonymity()) {
2733 $tblRow['name'] = $this->lng->txt("anonymous");
2734 } else {
2735 $tblRow['name'] = $participant['lastname'] . ', ' . $participant['firstname'];
2736 }
2737
2738 $tbl_data[] = $tblRow;
2739 }
2740 $table_gui->setData($tbl_data);
2741
2742 $this->tpl->setContent($table_gui->getHTML());
2743 }
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 757 of file class.ilObjTestGUI.php.

758 {
759 /* @var ILIAS\DI\Container $DIC */ global $DIC;
760
761 require_once 'Services/Tracking/classes/class.ilChangeEvent.php';
762
764 $this->object->getType(),
765 $this->object->getRefId(),
766 $this->object->getId(),
767 $DIC->user()->getId()
768 );
769 }
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 1366 of file class.ilObjTestGUI.php.

1367 {
1368 $this->uploadTstObject();
1369 }

References uploadTstObject().

+ Here is the call graph for this function:

◆ uploadTstObject()

ilObjTestGUI::uploadTstObject ( )

imports test and question(s)

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

1108 {
1109 if ($_FILES["xmldoc"]["error"] > UPLOAD_ERR_OK) {
1110 ilUtil::sendFailure($this->lng->txt("error_upload"));
1111 $this->createObject();
1112 return;
1113 }
1114 include_once("./Modules/Test/classes/class.ilObjTest.php");
1115 // create import directory
1117
1118 // copy uploaded file to import directory
1119 $file = pathinfo($_FILES["xmldoc"]["name"]);
1120 $full_path = $basedir . "/" . $_FILES["xmldoc"]["name"];
1121 ilUtil::moveUploadedFile($_FILES["xmldoc"]["tmp_name"], $_FILES["xmldoc"]["name"], $full_path);
1122
1123 // unzip file
1124 ilUtil::unzip($full_path);
1125
1126 // determine filenames of xml files
1127 $subdir = basename($file["basename"], "." . $file["extension"]);
1129 $xml_file = ilObjTest::_getImportDirectory() . '/' . $subdir . '/' . $subdir . ".xml";
1130 $qti_file = ilObjTest::_getImportDirectory() . '/' . $subdir . '/' . preg_replace("/test|tst/", "qti", $subdir) . ".xml";
1131 $results_file = ilObjTest::_getImportDirectory() . '/' . $subdir . '/' . preg_replace("/test|tst/", "results", $subdir) . ".xml";
1132
1133 if (!is_file($qti_file)) {
1134 ilUtil::delDir($basedir);
1135 ilUtil::sendFailure($this->lng->txt("tst_import_non_ilias_zip"));
1136 $this->createObject();
1137 return;
1138 }
1139
1140 // start verification of QTI files
1141 include_once "./Services/QTI/classes/class.ilQTIParser.php";
1142 $qtiParser = new ilQTIParser($qti_file, IL_MO_VERIFY_QTI, 0, "");
1143 $result = $qtiParser->startParsing();
1144 $founditems =&$qtiParser->getFoundItems();
1145
1146 $complete = 0;
1147 $incomplete = 0;
1148 foreach ($founditems as $item) {
1149 if (strlen($item["type"])) {
1150 $complete++;
1151 } else {
1152 $incomplete++;
1153 }
1154 }
1155
1156 if (count($founditems) && $complete == 0) {
1157 // delete import directory
1158 ilUtil::delDir($basedir);
1159
1160 ilUtil::sendInfo($this->lng->txt("qpl_import_non_ilias_files"));
1161 $this->createObject();
1162 return;
1163 }
1164
1165 $_SESSION["tst_import_results_file"] = $results_file;
1166 $_SESSION["tst_import_xml_file"] = $xml_file;
1167 $_SESSION["tst_import_qti_file"] = $qti_file;
1168 $_SESSION["tst_import_subdir"] = $subdir;
1169
1170 if ($qtiParser->getQuestionSetType() != ilObjTest::QUESTION_SET_TYPE_FIXED) {
1171 $this->importVerifiedFileObject();
1172 return;
1173 }
1174
1175 // display of found questions
1176 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.tst_import_verification.html", "Modules/Test");
1177 $row_class = array("tblrow1", "tblrow2");
1178 $counter = 0;
1179 foreach ($founditems as $item) {
1180 $this->tpl->setCurrentBlock("verification_row");
1181 $this->tpl->setVariable("ROW_CLASS", $row_class[$counter++ % 2]);
1182 $this->tpl->setVariable("QUESTION_TITLE", $item["title"]);
1183 $this->tpl->setVariable("QUESTION_IDENT", $item["ident"]);
1184 include_once "./Services/QTI/classes/class.ilQTIItem.php";
1185 switch ($item["type"]) {
1188 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assMultipleChoice"));
1189 break;
1192 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assSingleChoice"));
1193 break;
1195 case QT_KPRIM_CHOICE:
1196 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assKprimChoice"));
1197 break;
1199 case QT_LONG_MENU:
1200 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assLongMenu"));
1201 break;
1203 case QT_NUMERIC:
1204 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assNumeric"));
1205 break;
1207 case QT_FORMULA:
1208 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assFormulaQuestion"));
1209 break;
1211 case QT_TEXTSUBSET:
1212 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assTextSubset"));
1213 break;
1215 case QT_CLOZE:
1216 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assClozeTest"));
1217 break;
1219 case QT_ERRORTEXT:
1220 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assErrorText"));
1221 break;
1223 case QT_IMAGEMAP:
1224 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assImagemapQuestion"));
1225 break;
1227 case QT_JAVAAPPLET:
1228 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assJavaApplet"));
1229 break;
1231 case QT_FLASHAPPLET:
1232 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assFlashApplet"));
1233 break;
1235 case QT_MATCHING:
1236 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assMatchingQuestion"));
1237 break;
1239 case QT_ORDERING:
1240 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assOrderingQuestion"));
1241 break;
1244 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assOrderingHorizontal"));
1245 break;
1247 case QT_TEXT:
1248 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assTextQuestion"));
1249 break;
1251 case QT_FILEUPLOAD:
1252 $this->tpl->setVariable("QUESTION_TYPE", $this->lng->txt("assFileUpload"));
1253 break;
1254 }
1255 $this->tpl->parseCurrentBlock();
1256 }
1257
1258 // on import creation screen the pool was chosen (-1 for no pool)
1259 // BUT when no pool is available the input on creation screen is missing, so the field value -1 for no pool is not submitted.
1260 $QplOrTstID = isset($_POST["qpl"]) && (int) $_POST["qpl"] != 0 ? $_POST["qpl"] : -1;
1261
1262 $this->tpl->setCurrentBlock("adm_content");
1263 $this->tpl->setVariable("TEXT_TYPE", $this->lng->txt("question_type"));
1264 $this->tpl->setVariable("TEXT_TITLE", $this->lng->txt("question_title"));
1265 $this->tpl->setVariable("FOUND_QUESTIONS_INTRODUCTION", $this->lng->txt("tst_import_verify_found_questions"));
1266 $this->tpl->setVariable("VERIFICATION_HEADING", $this->lng->txt("import_tst"));
1267 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
1268 $this->tpl->setVariable("ARROW", ilUtil::getImagePath("arrow_downright.svg"));
1269 $this->tpl->setVariable("QUESTIONPOOL_ID", $QplOrTstID);
1270 $this->tpl->setVariable("VALUE_IMPORT", $this->lng->txt("import"));
1271 $this->tpl->setVariable("VALUE_CANCEL", $this->lng->txt("cancel"));
1272 $this->tpl->parseCurrentBlock();
1273 }
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 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, 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 825 of file class.ilObjTestGUI.php.

826 {
827 $this->ctrl->setCmdClass('ilTestEvaluationGUI');
828 $this->ctrl->setCmd('outUserResultsOverview');
829 $this->tabs_gui->clearTargets();
830
831 $this->forwardToEvaluationGUI();
832 }

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: