48 $ilCtrl = $DIC[
'ilCtrl'];
51 $ilToolbar = $DIC[
'ilToolbar'];
53 $this->ctrl = $ilCtrl;
56 $this->toolbar = $ilToolbar;
70 $cmd = $this->ctrl->getCmd(
'showMarkSchema');
79 if (!$this->object->canEditMarks()) {
81 $this->ctrl->redirect($this,
'showMarkSchema');
90 if (!$this->object->canEditEctsGrades()) {
92 $this->ctrl->redirect($this,
'showMarkSchema');
104 $this->
object->getMarkSchema()->addMarkStep();
106 $this->tpl->setOnScreenMessage(
'failure', $this->lng->txt(
'mark_schema_invalid'),
true);
113 $no_save_error =
true;
114 $this->
object->getMarkSchema()->flush();
116 foreach ($postdata as $key => $value) {
117 if (preg_match(
'/mark_short_(\d+)/', $key, $matches)) {
119 if (isset($postdata[
"passed_$matches[1]"])) {
123 $percentage = str_replace(
',',
'.',
ilUtil::stripSlashes($postdata[
"mark_percentage_$matches[1]"]));
124 if (!is_numeric($percentage)
125 || (
float) $percentage < 0.0
126 || (
float) $percentage > 100.0) {
128 $no_save_error =
false;
131 $this->
object->getMarkSchema()->addMarkStep(
140 return $no_save_error;
150 $this->
object->getMarkSchema()->createSimpleSchema(
151 $this->lng->txt(
'failed_short'),
152 $this->lng->txt(
'failed_official'),
155 $this->lng->txt(
'passed_short'),
156 $this->lng->txt(
'passed_official'),
168 $delete_mark_steps =
$_POST[
'marks'];
170 if (!isset($delete_mark_steps) || !is_array($delete_mark_steps)) {
176 $schema = clone $this->
object->getMarkSchema();
177 $schema->deleteMarkSteps($delete_mark_steps);
178 $check_result = $schema->checkMarks();
179 if (is_string($check_result)) {
186 if (!empty($delete_mark_steps)) {
187 $this->
object->getMarkSchema()->deleteMarkSteps($delete_mark_steps);
189 $this->tpl->setOnScreenMessage(
'info', $this->lng->txt(
'tst_delete_missing_mark'));
191 $this->
object->getMarkSchema()->saveToDb($this->object->getTestId());
204 $result = $this->
object->checkMarks();
206 $result =
'mark_schema_invalid';
212 $this->
object->getMarkSchema()->saveToDb($this->object->getMarkSchemaForeignId());
213 $this->
object->onMarkSchemaSaved();
214 $this->tpl->setOnScreenMessage(
'success', $this->lng->txt(
'saved_successfully'),
true);
215 $this->
object->getMarkSchema()->flush();
216 $this->
object->getMarkSchema()->loadFromDb($this->object->getTestId());
227 require_once
'Modules/Test/interfaces/interface.ilEctsGradesEnabled.php';
237 if (!$this->object->canEditMarks()) {
241 $this->toolbar->setFormAction($this->ctrl->getFormAction($this,
'showMarkSchema'));
243 require_once
'Modules/Test/classes/tables/class.ilMarkSchemaTableGUI.php';
246 if ($this->object->canEditMarks()) {
247 require_once
'Services/UIComponent/Button/classes/class.ilSubmitButton.php';
249 $create_simple_mark_schema_button->setCaption($this->lng->txt(
'tst_mark_create_simple_mark_schema'),
false);
250 $create_simple_mark_schema_button->setCommand(
'addSimpleMarkSchema');
251 $this->toolbar->addButtonInstance($create_simple_mark_schema_button);
253 require_once
'Services/UIComponent/Button/classes/class.ilButton.php';
255 $create_new_mark_step_button->setCaption($this->lng->txt(
'tst_mark_create_new_mark_step'),
false);
257 $create_new_mark_step_button->setForm(
'form_' . $mark_schema_table->getId());
258 $create_new_mark_step_button->setName(
'addMarkStep');
259 $this->toolbar->addButtonInstance($create_new_mark_step_button);
263 $content_parts = array($mark_schema_table->getHTML());
270 $content_parts[] = $ects_form->getHTML();
273 $this->tpl->setContent(implode(
'<br />', $content_parts));
283 $data[
'ectcs_status'] = $this->
object->getECTSOutput();
284 $data[
'use_ects_fx'] = preg_match(
'/\d+/', $this->object->getECTSFX());
285 $data[
'ects_fx_threshold'] = $this->
object->getECTSFX();
287 $ects_grades = $this->
object->getECTSGrades();
288 for (
$i = ord(
'a');
$i <= ord(
'e');
$i++) {
290 $data[
'ects_grade_' . $mark] = $ects_grades[chr(
$i - 32)];
301 require_once
'Services/Form/classes/class.ilPropertyFormGUI.php';
303 $disabled = !$this->
object->canEditEctsGrades();
306 $form->setFormAction($this->ctrl->getFormAction($this,
'saveEctsForm'));
307 $form->setTitle($this->lng->txt(
'ects_output_of_ects_grades'));
309 $allow_ects_marks =
new ilCheckboxInputGUI($this->lng->txt(
'ects_allow_ects_grades'),
'ectcs_status');
311 for (
$i = ord(
'a');
$i <= ord(
'e');
$i++) {
316 $this->lng->txt(
'ects_grade_desc_prefix') .
' ' . $this->lng->txt(
'ects_grade_' . $mark .
'_desc')
318 $mark_step->setSize(5);
319 $mark_step->allowDecimals(
true);
320 $mark_step->setMinValue(0,
true);
321 $mark_step->setMaxValue(100,
true);
322 $mark_step->setSuffix($this->lng->txt(
'percentile'));
323 $mark_step->setRequired(
true);
324 $mark_step->setDisabled($disabled);
325 $allow_ects_marks->addSubItem($mark_step);
330 $this->lng->txt(
'ects_grade_desc_prefix') .
' ' . $this->lng->txt(
'ects_grade_f_desc')
332 $allow_ects_marks->addSubItem($mark_step);
336 $allow_ects_marks->addSubItem($use_ects_fx);
340 $this->lng->txt(
'ects_grade_desc_prefix') .
' ' . $this->lng->txt(
'ects_grade_fx_desc')
342 $use_ects_fx->addSubItem($mark_step);
344 $threshold =
new ilNumberInputGUI($this->lng->txt(
'ects_fx_threshold'),
'ects_fx_threshold');
345 $threshold->
setInfo($this->lng->txt(
'ects_fx_threshold_info'));
346 $threshold->setSuffix($this->lng->txt(
'percentile'));
347 $threshold->allowDecimals(
true);
348 $threshold->setSize(5);
349 $threshold->setRequired(
true);
350 $threshold->setDisabled($disabled);
351 $use_ects_fx->addSubItem($threshold);
354 $form->addItem($allow_ects_marks);
357 $form->addCommandButton(
'saveEctsForm', $this->lng->txt(
'save'));
371 if (!$ects_form->checkInput()) {
372 $ects_form->setValuesByPost();
378 for (
$i = ord(
'a');
$i <= ord(
'e');
$i++) {
380 $grades[chr(
$i - 32)] = $ects_form->getInput(
'ects_grade_' . $mark);
383 $this->
object->setECTSGrades($grades);
384 $this->
object->setECTSOutput((
int) $ects_form->getInput(
'ectcs_status'));
385 $this->
object->setECTSFX(
386 $ects_form->getInput(
'use_ects_fx') && preg_match(
'/\d+/', $ects_form->getInput(
'ects_fx_threshold')) ?
387 $ects_form->getInput(
'ects_fx_threshold'):
391 $this->
object->saveECTSStatus();
393 ilUtil::sendSuccess($this->lng->txt(
'saved_successfully'));
394 $ects_form->setValuesByPost();
ensureEctsGradesCanBeEdited()
executeCommand()
Controller method.
deleteMarkSteps()
Delete selected mark steps.
objectSupportsEctsGrades()
addMarkStep()
Add a new mark step to the tests marks.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
showMarkSchema(ilPropertyFormGUI $ects_form=null)
Display mark schema.
addSimpleMarkSchema()
Add a simple mark schema to the tests marks.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
saveMarks()
Save the mark schema.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
ensureMarkSchemaCanBeEdited()
populateEctsForm(ilPropertyFormGUI $form)
This class represents a non editable value in a property form.
__construct(Container $dic, ilPlugin $plugin)