1 | <?php |
||
2 | |||
3 | /* For licensing terms, see /license.txt */ |
||
4 | |||
5 | use ChamiloSession as Session; |
||
6 | |||
7 | /** |
||
8 | * Exercise administration |
||
9 | * This script allows to manage an exercise. It is included from |
||
10 | * the script admin.php. |
||
11 | * |
||
12 | * @author Olivier Brouckaert, Julio Montoya |
||
13 | */ |
||
14 | require_once __DIR__.'/../inc/global.inc.php'; |
||
15 | $this_section = SECTION_COURSES; |
||
16 | |||
17 | api_protect_course_script(true); |
||
18 | |||
19 | if (!api_is_allowed_to_edit(null, true)) { |
||
20 | api_not_allowed(true); |
||
21 | } |
||
22 | |||
23 | $htmlHeadXtra[] = '<script> |
||
24 | function activate_start_date() { |
||
25 | if(document.getElementById(\'start_date_div\').style.display == \'none\') { |
||
26 | document.getElementById(\'start_date_div\').style.display = \'block\'; |
||
27 | } else { |
||
28 | document.getElementById(\'start_date_div\').style.display = \'none\'; |
||
29 | } |
||
30 | } |
||
31 | |||
32 | function activate_end_date() { |
||
33 | if(document.getElementById(\'end_date_div\').style.display == \'none\') { |
||
34 | document.getElementById(\'end_date_div\').style.display = \'block\'; |
||
35 | } else { |
||
36 | document.getElementById(\'end_date_div\').style.display = \'none\'; |
||
37 | } |
||
38 | } |
||
39 | |||
40 | function feedbackselection() { |
||
41 | var index = document.exercise_admin.exerciseFeedbackType.selectedIndex; |
||
42 | |||
43 | if (index == \'1\') { |
||
44 | document.exercise_admin.exerciseType[1].checked=true; |
||
45 | document.exercise_admin.exerciseType[0].disabled=true; |
||
46 | } else { |
||
47 | document.exercise_admin.exerciseType[0].disabled=false; |
||
48 | } |
||
49 | } |
||
50 | |||
51 | function option_time_expired() { |
||
52 | if(document.getElementById(\'timercontrol\').style.display == \'none\') { |
||
53 | document.getElementById(\'timercontrol\').style.display = \'block\'; |
||
54 | } else { |
||
55 | document.getElementById(\'timercontrol\').style.display = \'none\'; |
||
56 | } |
||
57 | } |
||
58 | |||
59 | function check_per_page_one() { |
||
60 | //document.getElementById(\'exerciseType_0\').checked=true; |
||
61 | } |
||
62 | |||
63 | function check_per_page_all() { |
||
64 | if (document.getElementById(\'exerciseType_1\') && document.getElementById(\'exerciseType_1\').checked) { |
||
65 | document.getElementById(\'exerciseType_0\').checked = true; |
||
66 | } |
||
67 | } |
||
68 | |||
69 | function check_feedback() { |
||
70 | if (document.getElementById(\'result_disabled_1\').checked == true) { |
||
71 | document.getElementById(\'result_disabled_0\').checked = true; |
||
72 | } |
||
73 | |||
74 | if (document.getElementById(\'exerciseType_0\').checked == true) { |
||
75 | document.getElementById(\'result_disabled_0\').checked = true; |
||
76 | } |
||
77 | } |
||
78 | |||
79 | function check_direct_feedback() { |
||
80 | document.getElementById(\'option_page_one\').checked = true; |
||
81 | document.getElementById(\'result_disabled_0\').checked = true; |
||
82 | } |
||
83 | |||
84 | function check_results_disabled() { |
||
85 | document.getElementById(\'exerciseType_2\').checked = true; |
||
86 | } |
||
87 | |||
88 | function disabledHideRandom() { |
||
89 | $("#hidden_random option:eq(0)").prop("selected", true); |
||
90 | $("#hidden_random").hide(); |
||
91 | } |
||
92 | |||
93 | function checkQuestionSelection() { |
||
94 | var selection = $("#questionSelection option:selected").val(); |
||
95 | switch (selection) { |
||
96 | case "'.EX_Q_SELECTION_ORDERED.'": |
||
97 | disabledHideRandom(); |
||
98 | $("#hidden_matrix").hide(); |
||
99 | break; |
||
100 | case "'.EX_Q_SELECTION_RANDOM.'": |
||
101 | $("#hidden_random").show(); |
||
102 | $("#hidden_matrix").hide(); |
||
103 | break; |
||
104 | case "'.EX_Q_SELECTION_CATEGORIES_ORDERED_QUESTIONS_ORDERED.'": |
||
105 | disabledHideRandom(); |
||
106 | $("#hidden_matrix").show(); |
||
107 | break; |
||
108 | case "per_categories": |
||
109 | $("#questionSelection option:eq('.EX_Q_SELECTION_CATEGORIES_ORDERED_QUESTIONS_ORDERED.')").prop("selected", true); |
||
110 | disabledHideRandom(); |
||
111 | $("#hidden_matrix").show(); |
||
112 | break; |
||
113 | default: |
||
114 | disabledHideRandom(); |
||
115 | $("#hidden_matrix").show(); |
||
116 | break; |
||
117 | } |
||
118 | } |
||
119 | |||
120 | function setFocus(){ |
||
121 | $("#exercise_title").focus(); |
||
122 | } |
||
123 | |||
124 | // to correct #4029 Random and number of attempt menu empty added window.onload=advanced_parameters; |
||
125 | $(function() { |
||
126 | setFocus(); |
||
127 | }); |
||
128 | </script>'; |
||
129 | |||
130 | $objExercise = new Exercise(); |
||
131 | $course_id = api_get_course_int_id(); |
||
132 | |||
133 | if (isset($_GET['exerciseId'])) { |
||
134 | $form = new FormValidator( |
||
135 | 'exercise_admin', |
||
136 | 'post', |
||
137 | api_get_self().'?'.api_get_cidreq().'&exerciseId='.intval($_GET['exerciseId']) |
||
138 | ); |
||
139 | $objExercise->read($_GET['exerciseId'], false); |
||
140 | $form->addElement('hidden', 'edit', 'true'); |
||
141 | } else { |
||
142 | $form = new FormValidator( |
||
143 | 'exercise_admin', |
||
144 | 'post', |
||
145 | api_get_self().'?'.api_get_cidreq() |
||
146 | ); |
||
147 | $form->addElement('hidden', 'edit', 'false'); |
||
148 | } |
||
149 | |||
150 | $objExercise->createForm($form); |
||
151 | |||
152 | if ($form->validate()) { |
||
153 | $objExercise->processCreation($form); |
||
154 | if ($form->getSubmitValue('edit') === 'true') { |
||
155 | Display::addFlash( |
||
156 | Display::return_message(get_lang('ExerciseEdited'), 'success') |
||
157 | ); |
||
158 | } else { |
||
159 | Display::addFlash( |
||
160 | Display::return_message(get_lang('ExerciseAdded'), 'success') |
||
161 | ); |
||
162 | } |
||
163 | $exercise_id = $objExercise->iid; |
||
164 | Session::erase('objExercise'); |
||
165 | header('Location:admin.php?exerciseId='.$exercise_id.'&'.api_get_cidreq()); |
||
0 ignored issues
–
show
Bug
introduced
by
Loading history...
|
|||
166 | exit; |
||
167 | } else { |
||
168 | if (api_is_in_gradebook()) { |
||
169 | $interbreadcrumb[] = [ |
||
170 | 'url' => Category::getUrl(), |
||
171 | 'name' => get_lang('ToolGradebook'), |
||
172 | ]; |
||
173 | } |
||
174 | $nameTools = get_lang('ExerciseManagement'); |
||
175 | $interbreadcrumb[] = [ |
||
176 | 'url' => 'exercise.php?'.api_get_cidreq(), |
||
177 | 'name' => get_lang('Exercises'), |
||
178 | ]; |
||
179 | $interbreadcrumb[] = [ |
||
180 | 'url' => 'admin.php?exerciseId='.$objExercise->iid.'&'.api_get_cidreq(), |
||
181 | 'name' => $objExercise->selectTitle(true), |
||
182 | ]; |
||
183 | |||
184 | Display::display_header($nameTools, get_lang('Exercise')); |
||
185 | |||
186 | echo '<div class="actions">'; |
||
187 | if ($objExercise->iid != 0) { |
||
188 | echo '<a href="admin.php?'.api_get_cidreq().'&exerciseId='.$objExercise->iid.'">'. |
||
189 | Display::return_icon('back.png', get_lang('GoBackToQuestionList'), '', ICON_SIZE_MEDIUM).'</a>'; |
||
190 | } else { |
||
191 | if (!empty($_GET['lp_id']) || !empty($_POST['lp_id'])) { |
||
192 | if (!empty($_POST['lp_id'])) { |
||
193 | $lp_id = $_POST['lp_id']; |
||
194 | //TODO:this remains to be implemented after press the first post |
||
195 | } else { |
||
196 | $lp_id = $_GET['lp_id']; |
||
197 | } |
||
198 | $lp_id = (int) $lp_id; |
||
199 | echo "<a |
||
200 | href=\"../lp/lp_controller.php?".api_get_cidreq()."&gradebook=&action=add_item&type=step&lp_id=".$lp_id."#resource_tab-2\">". |
||
201 | Display::return_icon('back.png', get_lang("BackTo").' '.get_lang('LearningPaths'), '', ICON_SIZE_MEDIUM)."</a>"; |
||
202 | } else { |
||
203 | echo '<a href="exercise.php?'.api_get_cidreq().'">'. |
||
204 | Display::return_icon('back.png', get_lang('BackToExercisesList'), '', ICON_SIZE_MEDIUM). |
||
205 | '</a>'; |
||
206 | } |
||
207 | } |
||
208 | echo '</div>'; |
||
209 | |||
210 | if (in_array($objExercise->getFeedbackType(), [EXERCISE_FEEDBACK_TYPE_DIRECT, EXERCISE_FEEDBACK_TYPE_POPUP])) { |
||
211 | echo Display::return_message(get_lang('DirectFeedbackCantModifyTypeQuestion')); |
||
212 | } |
||
213 | |||
214 | if (api_get_setting('search_enabled') === 'true' && |
||
215 | !extension_loaded('xapian') |
||
216 | ) { |
||
217 | echo Display::return_message(get_lang('SearchXapianModuleNotInstalled'), 'error'); |
||
218 | } |
||
219 | |||
220 | // to hide the exercise description |
||
221 | echo '<style> .media { display:none;}</style>'; |
||
222 | $form->display(); |
||
223 | } |
||
224 | Display::display_footer(); |
||
225 |