$courseid = required_param('courseid', PARAM_INT);
$id = optional_param('id', 0, PARAM_INT);
-$action = optional_param('action', 0, PARAM_ALPHA);
+$action = optional_param('action', 'view', PARAM_ALPHA);
if (!$course = get_record('course', 'id', $courseid)) {
print_error('nocourseid');
require_login($course);
$context = get_context_instance(CONTEXT_COURSE, $course->id);
-//require_capability() here!!
+require_capability('gradereport/grader:manage', $context);
// default return url
-$returnurl = 'index.php?id='.$course->id;
+$returnurl = $CFG->wwwroot.'/grade/report.php?report=grader&id='.$course->id;
-
-$mform = new edit_feedback_form();
+$mform = new edit_feedback_form('edit_feedback.php', compact('course', 'id'));
if ($grade_text = get_record('grade_grades_text', 'gradeid', $id)) {
$mform->set_data($grade_text);
} else {
redirect($returnurl);
} else if ($data = $mform->get_data()) {
+ $data->gradeid = $data->id;
+ unset($data->id);
+
$grade_text = new grade_grades_text(array('gradeid'=>$id));
grade_grades_text::set_properties($grade_text, $data);
-
if (empty($grade_text->id)) {
$grade_text->insert();
$grade_text->update();
}
- redirect($returnurl);
+ redirect($returnurl, get_string('feedbacksaved', 'grades'), 1);
}
// Get extra data related to this feedback
$extra_info->grademin = round($extra_info->grademin);
$extra_info->grademax = round($extra_info->grademax);
$extra_info->finalgrade = round($extra_info->finalgrade);
-$extra_info->course_module = get_coursemodule_from_instance($extra_info->itemmodule, $extra_info->iteminstance, $courseid);
+
+if (!empty($extra_info->itemmodule) && !empty($extra_info->iteminstance)) {
+ $extra_info->course_module = get_coursemodule_from_instance($extra_info->itemmodule, $extra_info->iteminstance, $courseid);
+}
$stronascaleof = get_string('onascaleof', 'grades', $extra_info);
$strgrades = get_string('grades');
$feedback = null;
$heading = ${"strfeedback$action"};
-if (!empty($action) && $action == 'view') {
+if (!empty($action) && $action == 'view' && !empty($grade_text->feedback)) {
$feedback = "<p><strong>$strfeedback</strong>:</p><p>$grade_text->feedback</p>";
}
. $extra_info->userid . '">' . fullname($extra_info) . "</a></p>";
// Grade item name and link
-echo "<p><strong>$strgradeitem:</strong> <a href=\"" . $CFG->wwwroot . '/mod/' . $extra_info->itemmodule
- . '/view.php?id=' . $extra_info->course_module->id . "&courseid=$courseid\">$extra_info->itemname</a></p>";
+if (!empty($extra_info->course_module) && !empty($extra_info->itemmodule)) {
+ echo "<p><strong>$strgradeitem:</strong> <a href=\"" . $CFG->wwwroot . '/mod/' . $extra_info->itemmodule
+ . '/view.php?id=' . $extra_info->course_module->id . "&courseid=$courseid\">$extra_info->itemname</a></p>";
+}
// Final grade and link to scale if applicable
if (!empty($extra_info->finalgrade)) {
$mform =& $this->_form;
$feedbackformat = get_user_preferences('grade_report_feedbackformat', $CFG->grade_report_feedbackformat);
+ $course = $this->_customdata['course'];
+ $id = $this->_customdata['id'];
// visible elements
// User preference determines the format
//TODO: add other elements
// hidden params
- $mform->addElement('hidden', 'gradeid', 0);
+ $mform->addElement('hidden', 'id', 0);
$mform->setType('gradeid', PARAM_INT);
+ $mform->setDefault('id', $id);
$mform->addElement('hidden', 'courseid', 0);
$mform->setType('courseid', PARAM_INT);
+ $mform->setDefault('courseid', $course->id);
//-------------------------------------------------------------------------------
// buttons
// Get the user preferences
$perpage = get_user_preferences('grade_report_studentsperpage', $CFG->grade_report_studentsperpage); // number of users on a page
$decimals = get_user_preferences('grade_report_decimalpoints', $CFG->grade_report_decimalpoints); // decimals in grades
+$aggregation_position = get_user_preferences('grade_report_aggregationposition', $CFG->grade_report_aggregationposition);
// Override perpage if set in URL
if ($perpageurl = optional_param('perpage', 0, PARAM_INT)) {
$pbarurl = 'report.php?id='.$courseid.'&perpage='.$perpage.'&report=grader&';
// Grab the grade_tree for this course
-$gtree = new grade_tree($courseid);
+$gtree = new grade_tree($courseid, true, false, $aggregation_position);
// setting the sort order, this depends on last state
// all this should be in the new table class that we might need to use
* @param int $courseid
* @param boolean $fillers include fillers and colspans, make the levels var "rectabgular"
* @param boolean $include_grades
- * @param boolean $include_cagegory_items inclute the items for categories in the tree
* ¶m boolean $category_grade_last category grade item is the last child
*/
- function grade_tree($courseid, $fillers=true, $include_grades=false, $category_grade_last=false) {
+ function grade_tree($courseid, $fillers=true, $include_grades=false, $category_grade_last=true) {
global $USER;
$this->courseid = $courseid;