|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
declare(strict_types=1); |
|
4
|
|
|
|
|
5
|
|
|
/* For licensing terms, see /license.txt */ |
|
6
|
|
|
|
|
7
|
|
|
namespace Chamilo\CoreBundle\Settings; |
|
8
|
|
|
|
|
9
|
|
|
use Chamilo\CoreBundle\Form\Type\YesNoType; |
|
10
|
|
|
use Sylius\Bundle\SettingsBundle\Schema\AbstractSettingsBuilder; |
|
11
|
|
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType; |
|
12
|
|
|
use Symfony\Component\Form\Extension\Core\Type\TextareaType; |
|
13
|
|
|
use Symfony\Component\Form\Extension\Core\Type\TextType; |
|
14
|
|
|
use Symfony\Component\Form\FormBuilderInterface; |
|
15
|
|
|
|
|
16
|
|
|
class ExerciseSettingsSchema extends AbstractSettingsSchema |
|
17
|
|
|
{ |
|
18
|
|
|
public function buildSettings(AbstractSettingsBuilder $builder): void |
|
19
|
|
|
{ |
|
20
|
|
|
$builder->setDefaults([ |
|
21
|
|
|
'exercise_min_score' => '0', |
|
22
|
|
|
'exercise_max_score' => '20', |
|
23
|
|
|
'enable_quiz_scenario' => 'true', |
|
24
|
|
|
'allow_coach_feedback_exercises' => 'true', |
|
25
|
|
|
'show_official_code_exercise_result_list' => 'false', |
|
26
|
|
|
'email_alert_manager_on_new_quiz' => 'true', |
|
27
|
|
|
'exercise_max_ckeditors_in_page' => '0', |
|
28
|
|
|
'configure_exercise_visibility_in_course' => 'false', |
|
29
|
|
|
'exercise_invisible_in_session' => 'false', |
|
30
|
|
|
'exercise_hide_label' => 'false', |
|
31
|
|
|
'block_quiz_mail_notification_general_coach' => 'false', |
|
32
|
|
|
'allow_quiz_question_feedback' => 'false', |
|
33
|
|
|
'allow_quiz_show_previous_button_setting' => 'false', |
|
34
|
|
|
'allow_teacher_comment_audio' => 'true', |
|
35
|
|
|
'quiz_prevent_copy_paste' => 'false', |
|
36
|
|
|
'quiz_show_description_on_results_page' => 'false', |
|
37
|
|
|
'quiz_generate_certificate_ending' => 'false', |
|
38
|
|
|
'quiz_open_question_decimal_score' => 'false', |
|
39
|
|
|
'quiz_check_button_enable' => 'false', |
|
40
|
|
|
'allow_notification_setting_per_exercise' => 'false', |
|
41
|
|
|
'hide_free_question_score' => 'false', |
|
42
|
|
|
'hide_user_info_in_quiz_result' => 'false', |
|
43
|
|
|
'exercise_attempts_report_show_username' => 'false', |
|
44
|
|
|
'disable_clean_exercise_results_for_teachers' => 'true', |
|
45
|
|
|
'show_exercise_question_certainty_ribbon_result' => 'false', |
|
46
|
|
|
'quiz_results_answers_report' => 'false', |
|
47
|
|
|
'send_score_in_exam_notification_mail_to_manager' => 'false', |
|
48
|
|
|
'show_exercise_expected_choice' => 'false', |
|
49
|
|
|
'exercise_category_round_score_in_export' => 'false', |
|
50
|
|
|
'exercises_disable_new_attempts' => 'false', |
|
51
|
|
|
'show_question_id' => 'false', |
|
52
|
|
|
'show_question_pagination' => '100', |
|
53
|
|
|
'question_pagination_length' => '20', |
|
54
|
|
|
'limit_exercise_teacher_access' => 'false', |
|
55
|
|
|
'block_category_questions' => 'false', |
|
56
|
|
|
'exercise_score_format' => '0', |
|
57
|
|
|
'exercise_additional_teacher_modify_actions' => '', |
|
58
|
|
|
'quiz_confirm_saved_answers' => 'false', |
|
59
|
|
|
'allow_exercise_categories' => 'false', |
|
60
|
|
|
'allow_quiz_results_page_config' => 'false', |
|
61
|
|
|
'quiz_image_zoom' => '', |
|
62
|
|
|
'quiz_answer_extra_recording' => 'false', |
|
63
|
|
|
'allow_mandatory_question_in_category' => 'false', |
|
64
|
|
|
'add_exercise_best_attempt_in_report' => '', |
|
65
|
|
|
'exercise_category_report_user_extra_fields' => '', |
|
66
|
|
|
'score_grade_model' => '', |
|
67
|
|
|
'allow_time_per_question' => 'false', |
|
68
|
|
|
'my_courses_show_pending_exercise_attempts' => 'false', |
|
69
|
|
|
'allow_quick_question_description_popup' => 'false', |
|
70
|
|
|
'exercise_hide_ip' => 'false', |
|
71
|
|
|
'tracking_my_progress_show_deleted_exercises' => 'false', |
|
72
|
|
|
'show_exercise_attempts_in_all_user_sessions' => 'false', |
|
73
|
|
|
'show_exercise_session_attempts_in_base_course' => 'false', |
|
74
|
|
|
'quiz_check_all_answers_before_end_test' => 'false', |
|
75
|
|
|
'quiz_discard_orphan_in_course_export' => 'false', |
|
76
|
|
|
'exercise_result_end_text_html_strict_filtering' => 'false', |
|
77
|
|
|
'question_exercise_html_strict_filtering' => 'false', |
|
78
|
|
|
'quiz_question_delete_automatically_when_deleting_exercise' => 'false', |
|
79
|
|
|
'quiz_hide_attempts_table_on_start_page' => 'false', |
|
80
|
|
|
'quiz_hide_question_number' => 'false', |
|
81
|
|
|
'quiz_keep_alive_ping_interval' => '0', |
|
82
|
|
|
'exercise_embeddable_extra_types' => '', |
|
83
|
|
|
]); |
|
84
|
|
|
|
|
85
|
|
|
$allowedTypes = [ |
|
86
|
|
|
'exercise_min_score' => ['string', 'null'], |
|
87
|
|
|
'exercise_max_score' => ['string', 'null'], |
|
88
|
|
|
'enable_quiz_scenario' => ['string'], |
|
89
|
|
|
]; |
|
90
|
|
|
|
|
91
|
|
|
$this->setMultipleAllowedTypes($allowedTypes, $builder); |
|
92
|
|
|
} |
|
93
|
|
|
|
|
94
|
|
|
public function buildForm(FormBuilderInterface $builder): void |
|
95
|
|
|
{ |
|
96
|
|
|
$builder |
|
97
|
|
|
->add('exercise_min_score') |
|
98
|
|
|
->add('exercise_max_score') |
|
99
|
|
|
->add('enable_quiz_scenario', YesNoType::class) |
|
100
|
|
|
->add('allow_coach_feedback_exercises', YesNoType::class) |
|
101
|
|
|
->add('show_official_code_exercise_result_list', YesNoType::class) |
|
102
|
|
|
->add('email_alert_manager_on_new_quiz', YesNoType::class) |
|
103
|
|
|
->add('exercise_max_ckeditors_in_page') |
|
104
|
|
|
->add('configure_exercise_visibility_in_course', YesNoType::class) |
|
105
|
|
|
->add('exercise_invisible_in_session', YesNoType::class) |
|
106
|
|
|
->add('exercise_hide_label', YesNoType::class) |
|
107
|
|
|
->add('block_quiz_mail_notification_general_coach', YesNoType::class) |
|
108
|
|
|
->add('allow_quiz_question_feedback', YesNoType::class) |
|
109
|
|
|
->add('allow_quiz_show_previous_button_setting', YesNoType::class) |
|
110
|
|
|
->add('allow_teacher_comment_audio', YesNoType::class) |
|
111
|
|
|
->add('quiz_prevent_copy_paste', YesNoType::class) |
|
112
|
|
|
->add('quiz_show_description_on_results_page', YesNoType::class) |
|
113
|
|
|
->add('quiz_generate_certificate_ending', YesNoType::class) |
|
114
|
|
|
->add('quiz_open_question_decimal_score', YesNoType::class) |
|
115
|
|
|
->add('quiz_check_button_enable', YesNoType::class) |
|
116
|
|
|
->add('allow_notification_setting_per_exercise', YesNoType::class) |
|
117
|
|
|
->add('hide_free_question_score', YesNoType::class) |
|
118
|
|
|
->add('hide_user_info_in_quiz_result', YesNoType::class) |
|
119
|
|
|
->add('exercise_attempts_report_show_username', YesNoType::class) |
|
120
|
|
|
->add('disable_clean_exercise_results_for_teachers', YesNoType::class) |
|
121
|
|
|
->add('show_exercise_question_certainty_ribbon_result', YesNoType::class) |
|
122
|
|
|
->add('quiz_results_answers_report', YesNoType::class) |
|
123
|
|
|
->add('send_score_in_exam_notification_mail_to_manager', YesNoType::class) |
|
124
|
|
|
->add('show_exercise_expected_choice', YesNoType::class) |
|
125
|
|
|
->add('exercise_category_round_score_in_export', YesNoType::class) |
|
126
|
|
|
->add('exercises_disable_new_attempts', YesNoType::class) |
|
127
|
|
|
->add('show_question_id', YesNoType::class) |
|
128
|
|
|
->add('show_question_pagination', TextType::class) |
|
129
|
|
|
->add('question_pagination_length', TextType::class) |
|
130
|
|
|
->add('limit_exercise_teacher_access', YesNoType::class) |
|
131
|
|
|
->add('block_category_questions', YesNoType::class) |
|
132
|
|
|
->add('exercise_score_format', ChoiceType::class, [ |
|
133
|
|
|
'choices' => [ |
|
134
|
|
|
'None' => '0', |
|
135
|
|
|
'Score average' => '1', |
|
136
|
|
|
'Score percent' => '2', |
|
137
|
|
|
'Score div percent' => '3', |
|
138
|
|
|
], |
|
139
|
|
|
]) |
|
140
|
|
|
->add('exercise_additional_teacher_modify_actions', TextareaType::class) |
|
141
|
|
|
->add('quiz_confirm_saved_answers', YesNoType::class) |
|
142
|
|
|
->add('allow_exercise_categories', YesNoType::class) |
|
143
|
|
|
->add('allow_quiz_results_page_config', YesNoType::class) |
|
144
|
|
|
->add('quiz_image_zoom', TextareaType::class) |
|
145
|
|
|
->add('quiz_answer_extra_recording', YesNoType::class) |
|
146
|
|
|
->add('allow_mandatory_question_in_category', YesNoType::class) |
|
147
|
|
|
->add('add_exercise_best_attempt_in_report', TextareaType::class) |
|
148
|
|
|
->add('exercise_category_report_user_extra_fields', TextareaType::class) |
|
149
|
|
|
->add('score_grade_model', TextareaType::class) |
|
150
|
|
|
->add('allow_time_per_question', YesNoType::class) |
|
151
|
|
|
->add('my_courses_show_pending_exercise_attempts', YesNoType::class) |
|
152
|
|
|
->add('allow_quick_question_description_popup', YesNoType::class) |
|
153
|
|
|
->add('exercise_hide_ip', YesNoType::class) |
|
154
|
|
|
->add('tracking_my_progress_show_deleted_exercises', YesNoType::class) |
|
155
|
|
|
->add('show_exercise_attempts_in_all_user_sessions', YesNoType::class) |
|
156
|
|
|
->add('show_exercise_session_attempts_in_base_course', YesNoType::class) |
|
157
|
|
|
->add('quiz_check_all_answers_before_end_test', YesNoType::class) |
|
158
|
|
|
->add('quiz_discard_orphan_in_course_export', YesNoType::class) |
|
159
|
|
|
->add('exercise_result_end_text_html_strict_filtering', YesNoType::class) |
|
160
|
|
|
->add('question_exercise_html_strict_filtering', YesNoType::class) |
|
161
|
|
|
->add('quiz_question_delete_automatically_when_deleting_exercise', YesNoType::class) |
|
162
|
|
|
->add('quiz_hide_attempts_table_on_start_page', YesNoType::class) |
|
163
|
|
|
->add('quiz_hide_question_number', YesNoType::class) |
|
164
|
|
|
->add('quiz_keep_alive_ping_interval', TextType::class) |
|
165
|
|
|
->add('exercise_embeddable_extra_types', TextareaType::class); |
|
166
|
|
|
|
|
167
|
|
|
$this->updateFormFieldsFromSettingsInfo($builder); |
|
168
|
|
|
} |
|
169
|
|
|
} |
|
170
|
|
|
|