From: moodler Date: Thu, 17 Oct 2002 07:23:12 +0000 (+0000) Subject: Added a new grading tool for teachers to see all grades on one page. X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=3486b7bee5de8213ded8caea64e88a0318fa0d2f;p=moodle.git Added a new grading tool for teachers to see all grades on one page. Grades are collected from each module using the module_grades function in each mod/*/lib.php. --- diff --git a/course/grades.php b/course/grades.php new file mode 100644 index 0000000000..6d80221182 --- /dev/null +++ b/course/grades.php @@ -0,0 +1,100 @@ +id); + + if (!isteacher($course->id)) { + error("Only teachers can use this page!"); + } + + $strgrades = get_string("grades"); + $strgrade = get_string("grade"); + + +/// Otherwise fill and print the form. + + print_header("$course->shortname: $strgrades", "$course->fullname", + "wwwroot/course/view.php?id=$course->id\">$course->shortname + -> $strgrades"); + + print_heading($strgrades); + + if (!$students = get_course_students($course->id)) { + print_heading(get_string("nostudentsyet")); + print_footer($course); + exit; + } + + foreach ($students as $student) { + $grades[$student->id] = array(); // Collect all grades in this array + } + $columns = array(); // Accumulate column names in this array. + + // Collect module data + get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused, $modsectioncounts); + + $sections = get_all_sections($course->id); // Sort everything the same as the course + for ($i=0; $i<=$course->numsections; $i++) { + if (isset($sections[$i])) { // should always be true + $section = $sections[$i]; + if ($section->sequence) { + $sectionmods = explode(",", $section->sequence); + foreach ($sectionmods as $sectionmod) { + $mod = $mods[$sectionmod]; + $instance = get_record("$mod->modname", "id", "$mod->instance"); + $libfile = "$CFG->dirroot/mod/$mod->modname/lib.php"; + if (file_exists($libfile)) { + require_once($libfile); + $gradefunction = $mod->modname."_grades"; + if (function_exists($gradefunction)) { // Skip modules without grade function + $image = "wwwroot/mod/$mod->modname/view.php?id=$mod->id\"". + " TITLE=\"$mod->modfullname\">". + "modname/icon.gif\" ". + "HEIGHT=16 WIDTH=16 ALT=\"$mod->modfullname\">"; + $columns[] = "$image ". + "wwwroot/mod/$mod->modname/view.php?id=$mod->id\">". + "$instance->name". + ""; + + $modgrades = $gradefunction($mod->instance); + + foreach ($students as $student) { + $grades[$student->id][] = $modgrades[$student->id]->grade; // may be empty, that's ok + } + } + } + } + } + } + } // a new Moodle nesting record? ;-) + + $table->head = array ("", get_string("name")); + $table->head = array_merge($table->head, $columns); + $table->width = array(35, ""); + $table->align = array("LEFT", "LEFT"); + foreach ($columns as $column) { + $table->width[] = ""; + $table->align[] = "CENTER"; + } + + foreach ($grades as $studentid => $gradelist) { + $student = $students[$studentid]; + $picture = print_user_picture($student->id, $course->id, $student->picture, false, true); + $name = array ("$picture", "$student->firstname $student->lastname"); + $table->data[] = array_merge($name, $gradelist); + } + + print_table($table); + + print_footer($course); + +?> diff --git a/course/lib.php b/course/lib.php index 874849cb42..00cd86132b 100644 --- a/course/lib.php +++ b/course/lib.php @@ -534,6 +534,9 @@ function print_course_admin_links($course, $width=180) { $admindata[]="id\">$course->teachers..."; $adminicon[]="wwwroot/pix/i/settings.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">"; + $admindata[]="id\">".get_string("grades")."..."; + $adminicon[]="wwwroot/pix/i/grades.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">"; + $admindata[]="id\">".get_string("logs")."..."; $adminicon[]="wwwroot/pix/i/log.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">"; $admindata[]="wwwroot/files/index.php?id=$course->id\">".get_string("files")."..."; diff --git a/pix/i/grades.gif b/pix/i/grades.gif new file mode 100755 index 0000000000..355e734586 Binary files /dev/null and b/pix/i/grades.gif differ