19 declare(strict_types=1);
80 private readonly \
ilTree $tree,
94 $this->object_properties = $this->test_gui->getTestObject()->getObjectProperties();
95 $this->main_settings = $this->test_gui->getTestObject()->getMainSettings();
96 $this->main_settings_repository = $this->test_gui->getTestObject()->getMainSettingsRepository();
97 $this->testQuestionSetConfigFactory = new \ilTestQuestionSetConfigFactory(
102 $this->component_repository,
103 $this->test_gui->getTestObject(),
104 $this->questionrepository
107 $this->
lng->loadLanguageModule(
'validation');
108 $this->
lng->loadLanguageModule(
'rep');
118 if (!$this->
access->checkAccess(
'write',
'', $this->test_gui->getRefId())) {
119 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'cannot_edit_test'),
true);
120 $this->
ctrl->redirectByClass([\ilRepositoryGUI::class, \ilObjTestGUI::class, \ilInfoScreenGUI::class]);
123 $cmd = $this->
ctrl->getCmd(self::CMD_SHOW_FORM);
126 $this->object_data_cache->deleteCachedEntry($this->test_object->getId());
132 $this->ui_factory->link()->standard(
133 $this->
lng->txt(
'back'),
134 $this->
ctrl->getLinkTargetByClass(self::class,
'showForm')
138 $this->tpl->setContent(
139 $this->main_settings->getIntroductionSettings()->getIntroductionText()
146 $this->ui_factory->link()->standard(
147 $this->
lng->txt(
'back'),
148 $this->
ctrl->getLinkTargetByClass(self::class,
'showForm')
152 $this->tpl->setContent(
153 $this->main_settings->getFinishingSettings()->getConcludingRemarksText()
159 if ($form === null) {
163 if ($this->main_settings->getIntroductionSettings()->getIntroductionText() !==
'') {
165 $this->ui_factory->link()->standard(
166 $this->
lng->txt(
'show_old_introduction'),
167 $this->
ctrl->getLinkTargetByClass(self::class,
'showOldIntroduction')
172 if ($this->main_settings->getFinishingSettings()->getConcludingRemarksText() !==
'') {
174 $this->ui_factory->link()->standard(
175 $this->
lng->txt(
'show_old_concluding_remarks'),
176 $this->
ctrl->getLinkTargetByClass(self::class,
'showOldConcludingRemarks')
181 $rendered_modal =
'';
182 if ($modal !== null) {
183 $rendered_modal = $this->ui_renderer->render($modal);
186 $this->tpl->setContent($this->ui_renderer->render($form) . $rendered_modal);
191 $form = $this->
buildForm()->withRequest($this->request);
192 $data = $form->getData();
193 if (
$data === null) {
198 $current_question_set_type = $this->main_settings->getGeneralSettings()->getQuestionSetType();
199 $current_question_config = $this->testQuestionSetConfigFactory->getQuestionSetConfig();
200 $new_question_set_type =
$data[self::GENERAL_SETTINGS_SECTION_LABEL][
'question_set_type'];
202 if ($new_question_set_type !== $current_question_set_type
203 && $current_question_config->doesQuestionSetRelatedDataExist()) {
204 $data[self::AVAILABILITY_SETTINGS_SECTION_LABEL][
'is_online'] =
205 $this->test_object->getObjectProperties()->getPropertyIsOnline()->withOffline();
206 $this->testQuestionSetConfigFactory->getQuestionSetConfig()->removeQuestionSetRelatedData();
210 $this->
logger->deleteParticipantInteractionsForTest($this->test_object->getRefId());
219 $form = $this->
buildForm()->withRequest($this->request);
220 $data = $form->getData();
221 if (
$data === null) {
226 $current_question_set_type = $this->main_settings->getGeneralSettings()->getQuestionSetType();
227 $current_question_config = $this->testQuestionSetConfigFactory->getQuestionSetConfig();
228 $new_question_set_type =
$data[self::GENERAL_SETTINGS_SECTION_LABEL][
'question_set_type'];
230 $question_set_modal_required = $new_question_set_type !== $current_question_set_type
231 && $current_question_config->doesQuestionSetRelatedDataExist();
233 $data[self::GENERAL_SETTINGS_SECTION_LABEL][
'anonymity']
236 if ($question_set_modal_required || $anonymity_modal_required) {
238 $question_set_modal_required ? $current_question_set_type : null,
239 $question_set_modal_required ? $new_question_set_type : null,
240 $anonymity_modal_required
253 + $this->main_settings->getArrayForLog($this->
logger->getAdditionalInformationGenerator());
254 if ($this->
logger->isLoggingEnabled()) {
255 $this->
logger->logTestAdministrationInteraction(
256 $this->
logger->getInteractionFactory()->buildTestAdministrationInteraction(
257 $this->test_object->getRefId(),
258 $this->active_user->getId(),
259 TestAdministrationInteractionTypes::MAIN_SETTINGS_MODIFIED,
260 $additional_information
265 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'msg_obj_modified'),
true);
271 return $this->main_settings->getGeneralSettings()->getAnonymity() ===
false 272 && $anonymity_form_data ===
true 273 && $this->
logger->testHasParticipantInteractions($this->test_object->getRefId());
278 $title_and_description = $this->object_properties->getPropertyTitleAndDescription();
283 ->getAdditionalInformationGenerator()->getTrueFalseTagForBool(
284 $this->object_properties->getPropertyIsOnline()->getIsOnline()
288 if (!$this->test_object->isActivationLimited()) {
290 ->getAdditionalInformationGenerator()->getEnabledDisabledTagForBool(
false);
294 $none_tag = $this->
logger->getAdditionalInformationGenerator()->getNoneTag();
295 $from = $this->test_object->getActivationStartingTime() === null
297 : \DateTimeImmutable::createFromFormat(
'U', (
string) $this->test_object->getActivationStartingTime())
299 $until = $this->test_object->getActivationEndingTime() === null
301 : \DateTimeImmutable::createFromFormat(
'U', (
string) $this->test_object->getActivationEndingTime())
309 ->getAdditionalInformationGenerator()->getEnabledDisabledTagForBool(
310 $this->test_object->getActivationVisibility()
318 $input_factory = $this->ui_factory->input();
321 $environment[
'participant_data_exists'] = $this->test_object->participantDataExist();
322 $environment[
'user_date_format'] = $this->active_user->getDateTimeFormat();
323 $environment[
'user_time_zone'] = $this->active_user->getTimeZone();
329 self::INTRODUCTION_SETTINGS_SECTION_LABEL => $this->main_settings->getIntroductionSettings()
331 self::ACCESS_SETTINGS_LABEL => $this->main_settings->getAccessSettings()
332 ->toForm(
$lng, $input_factory->field(),
$refinery, $environment),
333 self::TEST_BEHAVIOUR_SETTINGS_LABEL => $this->main_settings->getTestBehaviourSettings()
334 ->toForm(
$lng, $input_factory->field(),
$refinery, $environment),
335 self::QUESTION_BEHAVIOUR_SETTINGS_LABEL => $this->main_settings->getQuestionBehaviourSettings()
336 ->toForm(
$lng, $input_factory->field(),
$refinery, $environment),
337 self::PARTICIPANTS_FUNCTIONALITY_SETTINGS_LABEL => $this->main_settings->getParticipantFunctionalitySettings()
338 ->toForm(
$lng, $input_factory->field(),
$refinery, $environment),
339 self::FINISH_TEST_SETTINGS_LABEL => $this->main_settings->getFinishingSettings()
345 return $input_factory->container()->form()->standard(
346 $this->
ctrl->getFormActionByClass(self::class, self::CMD_SAVE_FORM),
353 return $this->
refinery->custom()->constraint(
354 function (array $vs):
bool {
355 if ($vs[self::PARTICIPANTS_FUNCTIONALITY_SETTINGS_LABEL][
'postponed_questions_behaviour'] ===
true 356 && $vs[self::QUESTION_BEHAVIOUR_SETTINGS_LABEL][
'lock_answers'][
'lock_answer_on_next_question']) {
361 $this->
lng->txt(
'tst_settings_conflict_postpone_and_lock')
366 ?
string $current_question_set_type,
367 ?
string $new_question_set_type,
368 bool $anonymity_modal_required
372 if ($current_question_set_type !== null) {
374 $this->
lng->txt(
'tst_change_quest_set_type_from_old_to_new_with_conflict'),
375 $this->test_object->getQuestionSetTypeTranslation($this->
lng, $current_question_set_type),
376 $this->test_object->getQuestionSetTypeTranslation($this->
lng, $new_question_set_type)
381 && $this->test_object->hasQuestionsWithoutQuestionpool()) {
382 $message .=
'<br /><br />' . $this->
lng->txt(
'tst_nonpool_questions_get_lost_warning');
385 if ($anonymity_modal_required) {
386 if ($message !==
'') {
387 $message .=
'<br /><br />';
389 $message .= $this->
lng->txt(
'log_participant_data_delete_warning');
392 $this->tpl->addJavaScript(
'assets/js/settings_confirmation.js');
393 $on_load_code =
static function (
string $id):
string {
394 return 'il.test.confirmSettings.init(' .
$id .
')';
397 $modal = $this->ui_factory->modal()->interruptive(
398 $this->
lng->txt(
'confirm'),
400 $this->
ctrl->getFormActionByClass(self::class, self::CMD_CONFIRMED_SAVE_FORM)
401 )->withActionButtonLabel($this->
lng->txt(
'confirm'))
404 return $modal->withOnLoad($modal->getShowSignal());
409 $old_online_status = $this->test_object->getObjectProperties()->getPropertyIsOnline()->getIsOnline();
410 $this->test_object->getObjectProperties()->storePropertyTitleAndDescription(
411 $data[self::GENERAL_SETTINGS_SECTION_LABEL][
'title_and_description']
419 $data[self::INTRODUCTION_SETTINGS_SECTION_LABEL]
422 $data[self::ACCESS_SETTINGS_LABEL]
425 $data[self::TEST_BEHAVIOUR_SETTINGS_LABEL]
428 $data[self::QUESTION_BEHAVIOUR_SETTINGS_LABEL]
431 $data[self::PARTICIPANTS_FUNCTIONALITY_SETTINGS_LABEL]
436 if (array_key_exists(self::ADDITIONAL_FUNCTIONALITY_SETTINGS_LABEL, $data)
437 || array_key_exists(self::ECS_FUNCTIONALITY_SETTINGS_LABEL, $data)) {
442 $data[self::ADDITIONAL_FUNCTIONALITY_SETTINGS_LABEL] ?? []
446 $this->test_object->getTestId(),
447 $this->test_object->getId(),
449 $introduction_settings,
451 $test_behaviour_settings,
452 $question_behaviour_settings,
453 $participant_functionality_settings,
457 $this->main_settings_repository->store($settings);
458 $this->main_settings = $this->main_settings_repository->getFor($this->test_object->getTestId());
459 $this->test_object->read();
460 $this->test_object->addToNewsOnOnline(
462 $this->test_object->getObjectProperties()->getPropertyIsOnline()->getIsOnline()
468 $field_factory = $this->ui_factory->input()->field();
470 $inputs[
'title_and_description'] = $this->test_object->getObjectProperties()->getPropertyTitleAndDescription()
471 ->toForm($this->
lng, $field_factory, $this->
refinery);
472 $inputs += $this->main_settings->getGeneralSettings()
473 ->toForm($this->
lng, $field_factory, $this->
refinery, $environment);
475 return $field_factory->section(
477 $this->
lng->txt(
'tst_general_properties')
486 if ($this->test_object->participantDataExist()) {
487 return $this->main_settings->getGeneralSettings();
490 return $this->main_settings->getGeneralSettings()
492 ->withAnonymity($section[
'anonymity']);
497 $input_factory = $this->ui_factory->input();
502 return $input_factory->field()->section(
504 $this->
lng->txt(
'rep_activation_availability')
510 $field_factory = $this->ui_factory->input()->field();
512 $question_set_config_complete = $this->test_object->isComplete(
513 $this->testQuestionSetConfigFactory->getQuestionSetConfig()
516 $is_online = $this->test_object->getObjectProperties()->getPropertyIsOnline()
517 ->toForm($this->
lng, $field_factory, $this->
refinery);
521 $is_online->getByline() .
' ' . $this->
lng->txt(
'rep_activation_online_object_info')
525 if (!$question_set_config_complete) {
526 $is_online = $is_online
527 ->withByline($this->
lng->txt(
'cannot_switch_to_online_no_questions_andor_no_mark_steps'))
528 ->withDisabled(
true);
536 $field_factory = $this->ui_factory->input()->field();
541 $inputs[
'time_span'] = $field_factory->duration($this->
lng->txt(
'rep_time_period'))
542 ->withTimezone($this->active_user->getTimeZone())
543 ->withFormat($this->active_user->getDateTimeFormat())
545 ->withRequired(
true);
546 $inputs[
'activation_visibility'] = $field_factory->checkbox(
547 $this->
lng->txt(
'rep_activation_limited_visibility'),
548 $this->
lng->txt(
'tst_activation_limited_visibility_info')
551 return $field_factory->optionalGroup(
553 $this->
lng->txt(
'rep_time_based_availability')
560 return $this->
refinery->custom()->transformation(
561 static function (?array $vs): array {
564 'is_activation_limited' =>
false,
565 'activation_starting_time' => null,
566 'activation_ending_time' => null,
567 'activation_visibility' => false
571 $start = $vs[
'time_span'][
'start']->getTimestamp();
572 $end = $vs[
'time_span'][
'end']->getTimestamp();
575 'is_activation_limited' =>
true,
576 'activation_starting_time' => $start,
577 'activation_ending_time' => $end,
578 'activation_visibility' => $vs[
'activation_visibility']
587 if ($this->test_object->isActivationLimited()) {
590 \DateTimeImmutable::createFromFormat(
592 (
string) $this->test_object->getActivationStartingTime()
593 )->setTimezone(
new \
DateTimeZone($this->active_user->getTimeZone())),
594 \DateTimeImmutable::createFromFormat(
596 (
string) $this->test_object->getActivationEndingTime()
597 )->setTimezone(
new \
DateTimeZone($this->active_user->getTimeZone())),
599 'activation_visibility' => $this->test_object->getActivationVisibility()
607 $time_based_availability = $section[
'timebased_availability'];
609 $participant_data_exists = $this->test_object->participantDataExist();
610 $this->test_object->storeActivationSettings(
611 $participant_data_exists
612 ? $this->test_object->isActivationLimited()
613 : $time_based_availability[
'is_activation_limited'],
614 $participant_data_exists
615 ? $this->test_object->getActivationStartingTime()
616 : $time_based_availability[
'activation_starting_time'],
617 $time_based_availability[
'activation_ending_time'],
618 $time_based_availability[
'activation_visibility']
620 $this->test_object->getObjectProperties()->storePropertyIsOnline($section[
'is_online']);
625 $input_factory = $this->ui_factory->input();
627 $custom_icon_input = $this->test_object->getObjectProperties()->getPropertyIcon()
630 if ($custom_icon_input !== null) {
631 $inputs[
'custom_icon'] = $custom_icon_input;
633 $inputs[
'tile_image'] = $this->test_object->getObjectProperties()->getPropertyTileImage()
636 return $input_factory->field()->section(
638 $this->
lng->txt(
'tst_presentation_settings_section')
644 if (array_key_exists(
'custom_icon', $section)) {
645 $this->test_object->getObjectProperties()->storePropertyIcon($section[
'custom_icon']);
647 $this->test_object->getObjectProperties()->storePropertyTileImage($section[
'tile_image']);
652 return $this->main_settings->getIntroductionSettings()
654 ->withExamConditionsCheckboxEnabled($section[
'conditions_checkbox_enabled']);
659 $access_settings = $this->main_settings->getAccessSettings()
661 ->withStartTime($section[
'access_window'][
'start_time'])
662 ->withEndTimeEnabled($section[
'access_window'][
'end_time_enabled'])
663 ->withEndTime($section[
'access_window'][
'end_time'])
664 ->withPasswordEnabled($section[
'test_password'][
'password_enabled'])
665 ->withPassword($section[
'test_password'][
'password_value'])
666 ->withIpRangeFrom($section[
'ip_range'][
'ip_range_from'])
667 ->withIpRangeTo($section[
'ip_range'][
'ip_range_to'])
668 ->withFixedParticipants($section[
'fixed_participants_enabled']);
670 if ($this->test_object->participantDataExist()) {
671 return $access_settings;
674 return $access_settings->withStartTimeEnabled($section[
'access_window'][
'start_time_enabled'])
675 ->withStartTime($section[
'access_window'][
'start_time']);
680 $test_behaviour_settings = $this->main_settings->getTestBehaviourSettings()
682 ->withExamIdInTestAttemptEnabled($section[
'show_exam_id']);
684 if ($this->test_object->participantDataExist()) {
685 return $test_behaviour_settings;
688 return $test_behaviour_settings
689 ->withNumberOfTries($section[
'limit_attempts'][
'number_of_available_attempts'])
690 ->withBlockAfterPassedEnabled($section[
'limit_attempts'][
'block_after_passed'])
691 ->withPassWaiting($section[
'force_waiting_between_attempts'])
692 ->withProcessingTimeEnabled($section[
'time_limit_for_completion'][
'processing_time_limit'])
693 ->withProcessingTime($section[
'time_limit_for_completion'][
'time_limit_for_completion_value'])
694 ->withResetProcessingTime($section[
'time_limit_for_completion'][
'reset_time_limit_for_completion_by_attempt']);
699 $question_behaviour_settings = $this->main_settings->getQuestionBehaviourSettings()
701 ->withAutosaveEnabled($section[
'autosave'][
'autosave_enabled'])
702 ->withAutosaveInterval($section[
'autosave'][
'autosave_interval'])
703 ->withShuffleQuestions($section[
'shuffle_questions']);
705 if ($this->test_object->participantDataExist()) {
706 return $question_behaviour_settings;
709 return $question_behaviour_settings
710 ->withQuestionHintsEnabled($section[
'offer_hints'])
711 ->withInstantFeedbackPointsEnabled($section[
'instant_feedback'][
'enabled_feedback_types'][
'instant_feedback_points'])
712 ->withInstantFeedbackGenericEnabled($section[
'instant_feedback'][
'enabled_feedback_types'][
'instant_feedback_generic'])
713 ->withInstantFeedbackSpecificEnabled($section[
'instant_feedback'][
'enabled_feedback_types'][
'instant_feedback_specific'])
714 ->withInstantFeedbackSolutionEnabled($section[
'instant_feedback'][
'enabled_feedback_types'][
'instant_feedback_solution'])
715 ->withForceInstantFeedbackOnNextQuestion($section[
'instant_feedback'][
'feedback_on_next_question'])
716 ->withLockAnswerOnInstantFeedbackEnabled($section[
'lock_answers'][
'lock_answer_on_instant_feedback'])
717 ->withLockAnswerOnNextQuestionEnabled($section[
'lock_answers'][
'lock_answer_on_next_question']);
723 return $this->main_settings->getParticipantFunctionalitySettings()
725 ->withSuspendTestAllowed($section[
'allow_suspend_test'])
726 ->withPostponedQuestionsMoveToEnd($section[
'postponed_questions_behaviour'])
727 ->withUsrPassOverviewMode($section[
'usr_pass_overview'])
728 ->withQuestionMarkingEnabled($section[
'enable_question_marking'])
729 ->withQuestionListEnabled($section[
'enable_question_list']);
734 $redirect_after_finish = $section[
'redirect_after_finish'];
735 $finish_notification = $section[
'finish_notification'];
736 return $this->main_settings->getFinishingSettings()
738 ->withConcludingRemarksEnabled($section[
'show_concluding_remarks'])
739 ->withRedirectionMode($redirect_after_finish[
'redirect_mode'])
740 ->withRedirectionUrl($redirect_after_finish[
'redirect_url'])
741 ->withMailNotificationContentType($finish_notification[
'notification_content_type'])
742 ->withAlwaysSendMailNotification($finish_notification[
'always_notify']);
749 $ecs = new \ilECSTestSettings($this->test_object);
750 $ecs_section = $ecs->getSettingsSection(
751 $this->ui_factory->input()->field(),
755 if ($ecs_section !== null) {
756 $sections[self::ECS_FUNCTIONALITY_SETTINGS_LABEL] = $ecs_section;
761 $inputs += $this->main_settings->getAdditionalSettings()->toForm(
763 $this->ui_factory->input()->field(),
771 $sections[self::ADDITIONAL_FUNCTIONALITY_SETTINGS_LABEL] = $this->ui_factory->input()->field()
772 ->section(
$inputs, $this->
lng->txt(
'obj_features'));
781 $this->test_object->getType()
783 if (!$position_settings->isActive()) {
787 $enable_organisational_units_access = $this->ui_factory->input()->field()
789 $this->
lng->txt(
'obj_orgunit_positions'),
790 $this->
lng->txt(
'obj_orgunit_positions_info')
795 if (!$position_settings->isChangeableForObject()) {
796 return $enable_organisational_units_access->withDisabled(
true);
798 return $enable_organisational_units_access;
803 if (array_key_exists(self::ECS_FUNCTIONALITY_SETTINGS_LABEL, $sections)) {
804 $ecs = new \ilECSTestSettings($this->test_object);
805 $ecs->saveSettingsSection($sections[self::ECS_FUNCTIONALITY_SETTINGS_LABEL]);
808 if (!array_key_exists(self::ADDITIONAL_FUNCTIONALITY_SETTINGS_LABEL, $sections)) {
812 $additional_settings_section = $sections[self::ADDITIONAL_FUNCTIONALITY_SETTINGS_LABEL];
813 if (array_key_exists(
'organisational_units_activation', $additional_settings_section)) {
821 $this->test_object->getType()
824 if ($position_settings->isActive() && $position_settings->isChangeableForObject()) {
825 $orgu_object_settings = new \ilOrgUnitObjectPositionSetting($this->test_object->getId());
826 $orgu_object_settings->setActive(
829 $orgu_object_settings->update();
835 $additional_settings = $this->main_settings->getAdditionalSettings()->
withHideInfoTab($section[
'hide_info_tab']);
837 if ($this->test_object->participantDataExist()) {
838 return $additional_settings;
842 return $additional_settings->withSkillsServiceEnabled(
false);
845 return $additional_settings->withSkillsServiceEnabled($section[
'skills_service_activation']);
saveOrganisationalUnitsActivation(bool $activation)
withShowAnswerOverview(bool $show_answer_overview)
executeCommand()
Command Execution.
getObjectDataArrayForLog()
Readable part of repository interface to ilComponentDataDB.
MainSettingsRepository $main_settings_repository
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
TestAdministrationInteractionTypes
saveAdditionalFunctionalitySettingsSection(array $sections)
getTestBehaviourSettingsForStorage(array $section)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(private readonly \ilGlobalTemplateInterface $tpl, private readonly \ilToolbarGUI $toolbar, private readonly \ilCtrlInterface $ctrl, private readonly \ilAccessHandler $access, private readonly \ilLanguage $lng, private readonly \ilTree $tree, private readonly \ilDBInterface $db, private readonly \ilObjectDataCache $object_data_cache, private readonly \ilSetting $settings, private readonly UIFactory $ui_factory, private readonly UIRenderer $ui_renderer, private readonly Refinery $refinery, private readonly ServerRequestInterface $request, private readonly \ilComponentRepository $component_repository, private readonly \ilObjUser $active_user, private readonly \ilObjTestGUI $test_gui, private readonly TestLogger $logger, private readonly GeneralQuestionPropertiesRepository $questionrepository)
withKioskMode(int $kiosk_mode)
const FINISH_TEST_SETTINGS_LABEL
getAvailabilitySettingsSection()
getTimebasedAvailabilityInputs()
static _getAllReferences(int $id)
get all reference ids for object ID
getParticipantsFunctionalitySettingsForStorage(array $section)
MainSettings $main_settings
A constraint encodes some resrtictions on values.
performSaveForm(array $data)
withAdditionalOnLoadCode(Closure $binder)
getAccessSettingsForStorage(array $section)
ilObjectProperties $object_properties
populateConfirmationModal(?string $current_question_set_type, ?string $new_question_set_type, bool $anonymity_modal_required)
const CMD_CONFIRMED_SAVE_FORM
finalizeSave(array $data)
anonymityChanged(bool $anonymity_form_data)
const PRESENTATION_SETTINGS_SECTION_LABEL
saveAvailabilitySettingsSection(array $section)
getAdditionalFunctionalitySettingsSections(array $environment)
getPresentationSettingsSection()
getTransformationForActivationLimitedOptionalGroup()
const INTRODUCTION_SETTINGS_SECTION_LABEL
const AVAILABILITY_SETTINGS_SECTION_LABEL
withQuestionTitleOutputMode(int $question_title_output_mode)
withQuestionSetType(string $question_set_type)
const ECS_FUNCTIONALITY_SETTINGS_LABEL
withIntroductionEnabled(bool $introduction_enabled)
getQuestionBehaviourSettingsForStorage(array $section)
const ADDITIONAL_FUNCTIONALITY_SETTINGS_LABEL
withStartTimeEnabled(bool $start_time_enabled)
getIntroductionSettingsForStorage(array $section)
getGeneralSettingsForStorage(array $section)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
savePresentationSettingsSection(array $section)
const CMD_SHOW_RESET_TPL_CONFIRM
const CMD_CONFIRMED_RESET_TPL
const GENERAL_SETTINGS_SECTION_LABEL
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
__construct(Container $dic, ilPlugin $plugin)
getAdditionalFunctionalitySettingsForStorage(array $section)
getIsOnlineSettingInput()
const QUESTION_BEHAVIOUR_SETTINGS_LABEL
const PARTICIPANTS_FUNCTIONALITY_SETTINGS_LABEL
const QUESTION_SET_TYPE_FIXED
showForm(StandardForm $form=null, InterruptiveModal $modal=null)
getGeneralSettingsSection(array $environment)
withUsePreviousAnswerAllowed(bool $use_previous_answers_allowed)
withHideInfoTab(bool $hide_info_tab)
ilTestQuestionSetConfigFactory $testQuestionSetConfigFactory
const ACCESS_SETTINGS_LABEL
ILIAS: ilPropertyFormGUI ILIAS: ilConfirmationGUI ILIAS: ilTestSettingsChangeConfirmationGUI ...
const TEST_BEHAVIOUR_SETTINGS_LABEL
getOrganisationalUnitsActivationInput()
getValueForActivationLimitedOptionalGroup()
getFinishingSettingsForStorage(array $section)
showOldConcludingRemarks()