MDL-11433 Implemented grade_items.decimals instead of user preference in grader report.
[moodle-pu.git] / grade / edit / gradedisplay / gradedisplay_form.php
blob5c4f04a7db0848252ef857ce97aa2770c2fccc8b
1 <?php //$Id$
3 require_once $CFG->libdir.'/formslib.php';
5 class edit_grade_display_form extends moodleform {
7 function definition() {
8 global $CFG, $COURSE;
10 $mform =& $this->_form;
11 $context = get_context_instance(CONTEXT_COURSE, $COURSE->id);
12 $course_has_letters = $this->_customdata['course_has_letters'];
13 $coursegradedisplaytype = get_field('grade_items', 'display', 'courseid', $COURSE->id, 'itemtype', 'course');
14 $coursegradedecimals = get_field('grade_items', 'decimals', 'courseid', $COURSE->id, 'itemtype', 'course');
16 $mform->addElement('header', 'coursesettings', get_string('coursesettings', 'grades'));
18 $gradedisplaytypes = array(GRADE_DISPLAY_TYPE_DEFAULT => get_string('default'),
19 GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
20 GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
21 GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades'));
22 $label = get_string('coursegradedisplaytype', 'grades') . ' (' . get_string('default', 'grades') . ': '
23 . $gradedisplaytypes[$CFG->grade_report_gradedisplaytype] . ')';
24 $mform->addElement('select', 'display', $label, $gradedisplaytypes);
25 $mform->setHelpButton('display', array(false, get_string('coursegradedisplaytype', 'grades'),
26 false, true, false, get_string('configcoursegradedisplaytype', 'grades')));
27 $mform->setDefault('display', $coursegradedisplaytype);
28 $mform->setType($coursegradedisplaytype, PARAM_INT);
30 $options = array(GRADE_DECIMALS_DEFAULT => get_string('default', 'grades'), 0, 1, 2, 3, 4, 5);
31 $label = get_string('decimalpoints', 'grades') . ' (' . get_string('default', 'grades') . ': ' . $options[$CFG->grade_report_decimalpoints] . ')';
32 $mform->addElement('select', 'decimals', $label, $options);
33 $mform->setHelpButton('decimals', array(false, get_string('decimalpoints', 'grades'), false, true, false, get_string("configdecimalpoints", 'grades')));
34 $mform->setDefault('decimals', $coursegradedecimals);
36 // Disable decimals if displaytype is not REAL or PERCENTAGE
37 $mform->disabledIf('decimals', 'display', "eq", GRADE_DISPLAY_TYPE_LETTER);
39 $course_set_to_letters = $coursegradedisplaytype == GRADE_DISPLAY_TYPE_LETTER;
40 $course_set_to_default = $coursegradedisplaytype == GRADE_DISPLAY_TYPE_DEFAULT;
41 $site_set_to_letters = $CFG->grade_report_gradedisplaytype == GRADE_DISPLAY_TYPE_LETTER;
43 // Disable decimals if course displaytype is DEFAULT and site displaytype is LETTER
44 if ($site_set_to_letters) {
45 $mform->disabledIf('decimals', 'display', "eq", GRADE_DISPLAY_TYPE_DEFAULT);
48 if ($course_set_to_letters || ($course_set_to_default && $site_set_to_letters)) {
50 $mform->addElement('header', 'gradeletters', get_string('gradeletters', 'grades'));
51 $percentages = array(null => get_string('unused', 'grades'));
53 $mform->addElement('checkbox', 'override', get_string('overridesitedefaultgradedisplaytype', 'grades'));
54 $mform->setHelpButton('override', array(false, get_string('overridesitedefaultgradedisplaytype', 'grades'),
55 false, true, false, get_string('overridesitedefaultgradedisplaytypehelp', 'grades')));
56 $mform->setDefault('override', $course_has_letters);
58 for ($i=100; $i > -1; $i--) {
59 $percentages[$i] = "$i%";
62 $elementsarray = array();
64 // Get course letters if they exist
65 if ($letters = get_records('grade_letters', 'contextid', $context->id, 'lowerboundary DESC')) {
66 $i = 1;
67 foreach ($letters as $letter) {
68 $elementsarray[$i]['letter'] = $letter->letter;
69 $elementsarray[$i]['boundary'] = $letter->lowerboundary;
70 $i++;
72 } else { // Get site default for each letter
73 for ($i = 1; $i <= 10; $i++) {
74 $elementsarray[$i]['letter'] = $CFG->{'grade_report_gradeletter'.$i};
75 $elementsarray[$i]['boundary'] = $CFG->{'grade_report_gradeboundary'.$i};
79 foreach ($elementsarray as $i => $element) {
80 $letter = $element['letter'];
81 $boundary = $element['boundary'];
83 $gradelettername = 'gradeletter' . $i;
84 $gradeletterstring = get_string('gradeletter', 'grades') . " $i";
85 $gradeletterhelp = get_string('configgradeletter', 'grades');
87 $gradeboundaryname = 'gradeboundary' . $i;
88 $gradeboundarystring = get_string('gradeboundary', 'grades') . " $i";
89 $gradeboundaryhelp = get_string('configgradeboundary', 'grades');
91 $mform->addElement('text', $gradelettername, $gradeletterstring);
92 $mform->setHelpButton($gradelettername, array(false, $gradeletterstring, false, true, false, $gradeletterhelp));
93 $mform->setDefault($gradelettername, $letter);
94 $mform->setType($gradelettername, PARAM_RAW);
95 $mform->disabledIf($gradelettername, 'override');
97 $mform->addElement('select', $gradeboundaryname, $gradeboundarystring, $percentages);
98 $mform->setHelpButton($gradeboundaryname, array(false, $gradeboundarystring, false, true, false, $gradeboundaryhelp));
99 $mform->setDefault($gradeboundaryname, $boundary);
100 $mform->setType($gradeboundaryname, PARAM_ALPHANUM);
101 $mform->disabledIf($gradeboundaryname, 'override');
104 $mform->addElement('submit', 'addgradeletter', get_string('addgradeletter', 'grades'));
105 $mform->disabledIf('addgradeletter', 'override');
108 // hidden params
109 $mform->addElement('hidden', 'id', $COURSE->id);
110 $mform->setType('id', PARAM_INT);
112 /// add return tracking info
113 $gpr = $this->_customdata['gpr'];
114 $gpr->add_mform_elements($mform);
116 //-------------------------------------------------------------------------------
117 // buttons
118 $this->add_action_buttons();
121 function definition_after_data() {
122 global $CFG, $COURSE;
124 $context = get_context_instance(CONTEXT_COURSE, $COURSE->id);