19 declare(strict_types=1);
81 private readonly \
ilTree $tree,
95 $this->object_properties = $this->test_gui->getTestObject()->getObjectProperties();
96 $this->main_settings = $this->test_gui->getTestObject()->getMainSettings();
97 $this->main_settings_repository = $this->test_gui->getTestObject()->getMainSettingsRepository();
98 $this->testQuestionSetConfigFactory = new \ilTestQuestionSetConfigFactory(
103 $this->component_repository,
104 $this->test_gui->getTestObject(),
105 $this->questionrepository
108 $this->
lng->loadLanguageModule(
'validation');
109 $this->
lng->loadLanguageModule(
'rep');
119 if (!$this->
access->checkAccess(
'write',
'', $this->test_gui->getRefId())) {
120 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'cannot_edit_test'),
true);
121 $this->
ctrl->redirectByClass([\ilRepositoryGUI::class, \ilObjTestGUI::class, \ilInfoScreenGUI::class]);
124 $cmd = $this->
ctrl->getCmd(self::CMD_SHOW_FORM);
127 $this->object_data_cache->deleteCachedEntry($this->test_object->getId());
133 $this->ui_factory->link()->standard(
134 $this->
lng->txt(
'back'),
135 $this->
ctrl->getLinkTargetByClass(self::class,
'showForm')
139 $this->tpl->setContent(
140 $this->main_settings->getIntroductionSettings()->getIntroductionText()
147 $this->ui_factory->link()->standard(
148 $this->
lng->txt(
'back'),
149 $this->
ctrl->getLinkTargetByClass(self::class,
'showForm')
153 $this->tpl->setContent(
154 $this->main_settings->getFinishingSettings()->getConcludingRemarksText()
160 if ($form ===
null) {
164 if ($this->main_settings->getIntroductionSettings()->getIntroductionText() !==
'') {
166 $this->ui_factory->link()->standard(
167 $this->
lng->txt(
'show_old_introduction'),
168 $this->
ctrl->getLinkTargetByClass(self::class,
'showOldIntroduction')
173 if ($this->main_settings->getFinishingSettings()->getConcludingRemarksText() !==
'') {
175 $this->ui_factory->link()->standard(
176 $this->
lng->txt(
'show_old_concluding_remarks'),
177 $this->
ctrl->getLinkTargetByClass(self::class,
'showOldConcludingRemarks')
182 $rendered_modal =
'';
183 if ($modal !==
null) {
184 $rendered_modal = $this->ui_renderer->render($modal);
187 $this->tpl->setContent($this->ui_renderer->render($form) . $rendered_modal);
192 $form = $this->
buildForm()->withRequest($this->request);
193 $data = $form->getData();
199 $current_question_set_type = $this->main_settings->getGeneralSettings()->getQuestionSetType();
200 $current_question_config = $this->testQuestionSetConfigFactory->getQuestionSetConfig();
201 $new_question_set_type =
$data[self::GENERAL_SETTINGS_SECTION_LABEL][
'question_set_type'];
203 if ($new_question_set_type !== $current_question_set_type
204 && $current_question_config->doesQuestionSetRelatedDataExist()) {
205 $data[self::AVAILABILITY_SETTINGS_SECTION_LABEL][
'is_online'] =
206 $this->test_object->getObjectProperties()->getPropertyIsOnline()->withOffline();
207 $this->testQuestionSetConfigFactory->getQuestionSetConfig()->removeQuestionSetRelatedData();
211 $this->
logger->deleteParticipantInteractionsForTest($this->test_object->getRefId());
220 $form = $this->
buildForm()->withRequest($this->request);
221 $data = $form->getData();
227 $current_question_set_type = $this->main_settings->getGeneralSettings()->getQuestionSetType();
228 $current_question_config = $this->testQuestionSetConfigFactory->getQuestionSetConfig();
229 $new_question_set_type =
$data[self::GENERAL_SETTINGS_SECTION_LABEL][
'question_set_type'];
231 $question_set_modal_required = $new_question_set_type !== $current_question_set_type
232 && $current_question_config->doesQuestionSetRelatedDataExist();
234 $data[self::GENERAL_SETTINGS_SECTION_LABEL][
'anonymity']
237 if ($question_set_modal_required || $anonymity_modal_required) {
239 $question_set_modal_required ? $current_question_set_type :
null,
240 $question_set_modal_required ? $new_question_set_type : null,
241 $anonymity_modal_required
254 + $this->main_settings->getArrayForLog($this->
logger->getAdditionalInformationGenerator());
255 if ($this->
logger->isLoggingEnabled()) {
256 $this->
logger->logTestAdministrationInteraction(
257 $this->
logger->getInteractionFactory()->buildTestAdministrationInteraction(
258 $this->test_object->getRefId(),
259 $this->active_user->getId(),
260 TestAdministrationInteractionTypes::MAIN_SETTINGS_MODIFIED,
261 $additional_information
266 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'msg_obj_modified'),
true);
272 return $this->main_settings->getGeneralSettings()->getAnonymity() ===
false 273 && $anonymity_form_data ===
true 274 && $this->
logger->testHasParticipantInteractions($this->test_object->getRefId());
279 $title_and_description = $this->object_properties->getPropertyTitleAndDescription();
284 ->getAdditionalInformationGenerator()->getTrueFalseTagForBool(
285 $this->object_properties->getPropertyIsOnline()->getIsOnline()
289 if (!$this->test_object->isActivationLimited()) {
291 ->getAdditionalInformationGenerator()->getEnabledDisabledTagForBool(
false);
295 $none_tag = $this->
logger->getAdditionalInformationGenerator()->getNoneTag();
296 $from = $this->test_object->getActivationStartingTime() ===
null 298 : \DateTimeImmutable::createFromFormat(
'U', (
string) $this->test_object->getActivationStartingTime())
300 $until = $this->test_object->getActivationEndingTime() ===
null 302 : \DateTimeImmutable::createFromFormat(
'U', (
string) $this->test_object->getActivationEndingTime())
310 ->getAdditionalInformationGenerator()->getEnabledDisabledTagForBool(
311 $this->test_object->getActivationVisibility()
319 $input_factory = $this->ui_factory->input();
322 $environment[
'participant_data_exists'] = $this->test_object->participantDataExist();
323 $environment[
'user_date_format'] = $this->active_user->getDateTimeFormat();
324 $environment[
'user_time_zone'] = $this->active_user->getTimeZone();
330 self::INTRODUCTION_SETTINGS_SECTION_LABEL => $this->main_settings->getIntroductionSettings()
332 self::ACCESS_SETTINGS_LABEL => $this->main_settings->getAccessSettings()
333 ->toForm(
$lng, $input_factory->field(),
$refinery, $environment),
334 self::TEST_BEHAVIOUR_SETTINGS_LABEL => $this->main_settings->getTestBehaviourSettings()
335 ->toForm(
$lng, $input_factory->field(),
$refinery, $environment),
336 self::QUESTION_BEHAVIOUR_SETTINGS_LABEL => $this->main_settings->getQuestionBehaviourSettings()
337 ->toForm(
$lng, $input_factory->field(),
$refinery, $environment),
338 self::PARTICIPANTS_FUNCTIONALITY_SETTINGS_LABEL => $this->main_settings->getParticipantFunctionalitySettings()
339 ->toForm(
$lng, $input_factory->field(),
$refinery, $environment),
340 self::FINISH_TEST_SETTINGS_LABEL => $this->main_settings->getFinishingSettings()
346 return $input_factory->container()->form()->standard(
347 $this->
ctrl->getFormActionByClass(self::class, self::CMD_SAVE_FORM),
354 return $this->
refinery->custom()->constraint(
355 function (array $vs):
bool {
356 if ($vs[self::PARTICIPANTS_FUNCTIONALITY_SETTINGS_LABEL][
'postponed_questions_behaviour'] ===
true 357 && $vs[self::QUESTION_BEHAVIOUR_SETTINGS_LABEL][
'lock_answers'][
'lock_answer_on_next_question']) {
362 $this->
lng->txt(
'tst_settings_conflict_postpone_and_lock')
367 ?
string $current_question_set_type,
368 ?
string $new_question_set_type,
369 bool $anonymity_modal_required
373 if ($current_question_set_type !==
null) {
375 $this->
lng->txt(
'tst_change_quest_set_type_from_old_to_new_with_conflict'),
376 $this->test_object->getQuestionSetTypeTranslation($this->
lng, $current_question_set_type),
377 $this->test_object->getQuestionSetTypeTranslation($this->
lng, $new_question_set_type)
382 && $this->test_object->hasQuestionsWithoutQuestionpool()) {
383 $message .=
'<br /><br />' . $this->
lng->txt(
'tst_nonpool_questions_get_lost_warning');
386 if ($anonymity_modal_required) {
390 $message .= $this->
lng->txt(
'log_participant_data_delete_warning');
393 $this->tpl->addJavaScript(
'assets/js/settings_confirmation.js');
394 $on_load_code =
static function (
string $id):
string {
395 return 'il.test.confirmSettings.init(' .
$id .
')';
398 $modal = $this->ui_factory->modal()->interruptive(
399 $this->
lng->txt(
'confirm'),
401 $this->
ctrl->getFormActionByClass(self::class, self::CMD_CONFIRMED_SAVE_FORM)
402 )->withActionButtonLabel($this->
lng->txt(
'confirm'))
405 return $modal->withOnLoad($modal->getShowSignal());
410 $old_online_status = $this->test_object->getObjectProperties()->getPropertyIsOnline()->getIsOnline();
411 $this->test_object->getObjectProperties()->storePropertyTitleAndDescription(
412 $data[self::GENERAL_SETTINGS_SECTION_LABEL][
'title_and_description']
420 $data[self::INTRODUCTION_SETTINGS_SECTION_LABEL]
423 $data[self::ACCESS_SETTINGS_LABEL]
426 $data[self::TEST_BEHAVIOUR_SETTINGS_LABEL]
429 $data[self::QUESTION_BEHAVIOUR_SETTINGS_LABEL]
432 $data[self::PARTICIPANTS_FUNCTIONALITY_SETTINGS_LABEL]
437 if (array_key_exists(self::ADDITIONAL_FUNCTIONALITY_SETTINGS_LABEL, $data)
438 || array_key_exists(self::ECS_FUNCTIONALITY_SETTINGS_LABEL, $data)) {
443 $data[self::ADDITIONAL_FUNCTIONALITY_SETTINGS_LABEL] ?? []
447 $this->test_object->getTestId(),
448 $this->test_object->getId(),
450 $introduction_settings,
452 $test_behaviour_settings,
453 $question_behaviour_settings,
454 $participant_functionality_settings,
458 $this->main_settings_repository->store($settings);
459 $this->main_settings = $this->main_settings_repository->getFor($this->test_object->getTestId());
460 $this->test_object->read();
461 $this->test_object->addToNewsOnOnline(
463 $this->test_object->getObjectProperties()->getPropertyIsOnline()->getIsOnline()
469 $field_factory = $this->ui_factory->input()->field();
471 $inputs[
'title_and_description'] = $this->test_object->getObjectProperties()->getPropertyTitleAndDescription()
472 ->toForm($this->
lng, $field_factory, $this->
refinery);
473 $inputs += $this->main_settings->getGeneralSettings()
474 ->toForm($this->
lng, $field_factory, $this->
refinery, $environment);
476 return $field_factory->section(
478 $this->
lng->txt(
'tst_general_properties')
487 if ($this->test_object->participantDataExist()) {
488 return $this->main_settings->getGeneralSettings();
491 return $this->main_settings->getGeneralSettings()
493 ->withAnonymity($section[
'anonymity']);
498 $input_factory = $this->ui_factory->input();
503 return $input_factory->field()->section(
505 $this->
lng->txt(
'rep_activation_availability')
511 $field_factory = $this->ui_factory->input()->field();
513 $question_set_config_complete = $this->test_object->isComplete(
514 $this->testQuestionSetConfigFactory->getQuestionSetConfig()
517 $is_online = $this->test_object->getObjectProperties()->getPropertyIsOnline()
518 ->toForm($this->
lng, $field_factory, $this->
refinery);
522 $is_online->getByline() .
' ' . $this->
lng->txt(
'rep_activation_online_object_info')
526 if (!$question_set_config_complete) {
527 $is_online = $is_online
528 ->withByline($this->
lng->txt(
'cannot_switch_to_online_no_questions_andor_no_mark_steps'))
529 ->withDisabled(
true);
537 $field_factory = $this->ui_factory->input()->field();
542 $inputs[
'time_span'] = $field_factory->duration($this->
lng->txt(
'rep_time_period'))
543 ->withTimezone($this->active_user->getTimeZone())
544 ->withFormat($this->active_user->getDateTimeFormat())
546 ->withRequired(
true);
547 $inputs[
'activation_visibility'] = $field_factory->checkbox(
548 $this->
lng->txt(
'rep_activation_limited_visibility'),
549 $this->
lng->txt(
'tst_activation_limited_visibility_info')
552 return $field_factory->optionalGroup(
554 $this->
lng->txt(
'rep_time_based_availability')
561 return $this->
refinery->custom()->transformation(
562 static function (?array $vs): array {
565 'is_activation_limited' =>
false,
566 'activation_starting_time' =>
null,
567 'activation_ending_time' =>
null,
568 'activation_visibility' => false
572 $start = $vs[
'time_span'][
'start']->getTimestamp();
573 $end = $vs[
'time_span'][
'end']->getTimestamp();
576 'is_activation_limited' =>
true,
577 'activation_starting_time' => $start,
578 'activation_ending_time' => $end,
579 'activation_visibility' => $vs[
'activation_visibility']
588 if ($this->test_object->isActivationLimited()) {
591 \DateTimeImmutable::createFromFormat(
593 (
string) $this->test_object->getActivationStartingTime()
594 )->setTimezone(
new \
DateTimeZone($this->active_user->getTimeZone())),
595 \DateTimeImmutable::createFromFormat(
597 (
string) $this->test_object->getActivationEndingTime()
598 )->setTimezone(
new \
DateTimeZone($this->active_user->getTimeZone())),
600 'activation_visibility' => $this->test_object->getActivationVisibility()
608 $time_based_availability = $section[
'timebased_availability'];
610 $participant_data_exists = $this->test_object->participantDataExist();
611 $this->test_object->storeActivationSettings(
612 $participant_data_exists
613 ? $this->test_object->isActivationLimited()
614 : $time_based_availability[
'is_activation_limited'],
615 $participant_data_exists
616 ? $this->test_object->getActivationStartingTime()
617 : $time_based_availability[
'activation_starting_time'],
618 $time_based_availability[
'activation_ending_time'],
619 $time_based_availability[
'activation_visibility']
621 $this->test_object->getObjectProperties()->storePropertyIsOnline($section[
'is_online']);
626 $input_factory = $this->ui_factory->input();
628 $custom_icon_input = $this->test_object->getObjectProperties()->getPropertyIcon()
631 if ($custom_icon_input !==
null) {
632 $inputs[
'custom_icon'] = $custom_icon_input;
634 $inputs[
'tile_image'] = $this->test_object->getObjectProperties()->getPropertyTileImage()
637 return $input_factory->field()->section(
639 $this->
lng->txt(
'tst_presentation_settings_section')
645 if (array_key_exists(
'custom_icon', $section)) {
646 $this->test_object->getObjectProperties()->storePropertyIcon($section[
'custom_icon']);
648 $this->test_object->getObjectProperties()->storePropertyTileImage($section[
'tile_image']);
653 return $this->main_settings->getIntroductionSettings()
655 ->withExamConditionsCheckboxEnabled($section[
'conditions_checkbox_enabled']);
660 $access_settings = $this->main_settings->getAccessSettings()
662 ->withStartTime($section[
'access_window'][
'start_time'])
663 ->withEndTimeEnabled($section[
'access_window'][
'end_time_enabled'])
664 ->withEndTime($section[
'access_window'][
'end_time'])
665 ->withPasswordEnabled($section[
'test_password'][
'password_enabled'])
666 ->withPassword($section[
'test_password'][
'password_value'])
667 ->withIpRangeFrom($section[
'ip_range'][
'ip_range_from'])
668 ->withIpRangeTo($section[
'ip_range'][
'ip_range_to'])
669 ->withFixedParticipants($section[
'fixed_participants_enabled']);
671 if ($this->test_object->participantDataExist()) {
672 return $access_settings;
675 return $access_settings->withStartTimeEnabled($section[
'access_window'][
'start_time_enabled'])
676 ->withStartTime($section[
'access_window'][
'start_time']);
681 $test_behaviour_settings = $this->main_settings->getTestBehaviourSettings()
683 ->withExamIdInTestAttemptEnabled($section[
'show_exam_id']);
685 if ($this->test_object->participantDataExist()) {
686 return $test_behaviour_settings;
689 return $test_behaviour_settings
690 ->withNumberOfTries($section[
'limit_attempts'][
'number_of_available_attempts'])
691 ->withBlockAfterPassedEnabled($section[
'limit_attempts'][
'block_after_passed'])
692 ->withPassWaiting($section[
'force_waiting_between_attempts'])
693 ->withProcessingTimeEnabled($section[
'time_limit_for_completion'][
'processing_time_limit'])
694 ->withProcessingTime($section[
'time_limit_for_completion'][
'time_limit_for_completion_value'])
695 ->withResetProcessingTime($section[
'time_limit_for_completion'][
'reset_time_limit_for_completion_by_attempt']);
700 $question_behaviour_settings = $this->main_settings->getQuestionBehaviourSettings()
702 ->withAutosaveEnabled($section[
'autosave'][
'autosave_enabled'])
703 ->withAutosaveInterval($section[
'autosave'][
'autosave_interval'])
704 ->withShuffleQuestions($section[
'shuffle_questions']);
706 if ($this->test_object->participantDataExist()) {
707 return $question_behaviour_settings;
710 return $question_behaviour_settings
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)
Skill management settings.
__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)
populateConfirmationModal(?string $current_question_set_type, ?string $new_question_set_type, bool $anonymity_modal_required)
const CMD_CONFIRMED_SAVE_FORM
ObjectProperties $object_properties
finalizeSave(array $data)
anonymityChanged(bool $anonymity_form_data)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
const PRESENTATION_SETTINGS_SECTION_LABEL
saveAvailabilitySettingsSection(array $section)
showForm(?StandardForm $form=null, ?InterruptiveModal $modal=null)
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
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()