]> git.mjollnir.org Git - moodle.git/commitdiff
Added a new grading tool for teachers to see all grades on one page.
authormoodler <moodler>
Thu, 17 Oct 2002 07:23:12 +0000 (07:23 +0000)
committermoodler <moodler>
Thu, 17 Oct 2002 07:23:12 +0000 (07:23 +0000)
Grades are collected from each module using the module_grades function in
each mod/*/lib.php.

course/grades.php [new file with mode: 0644]
course/lib.php
pix/i/grades.gif [new file with mode: 0755]

diff --git a/course/grades.php b/course/grades.php
new file mode 100644 (file)
index 0000000..6d80221
--- /dev/null
@@ -0,0 +1,100 @@
+<?PHP // $Id$
+      // Displays all grades for a course
+
+       require("../config.php");
+       require("lib.php");
+
+    require_variable($id);   // course id
+
+    if (! $course = get_record("course", "id", $id)) {
+        error("Course ID was incorrect");
+    }
+
+       require_login($course->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", 
+                 "<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A> 
+                  -> $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 = "<A HREF=\"$CFG->wwwroot/mod/$mod->modname/view.php?id=$mod->id\"".
+                                     "   TITLE=\"$mod->modfullname\">".
+                                     "<IMG BORDER=0 VALIGN=absmiddle SRC=\"../mod/$mod->modname/icon.gif\" ".
+                                     "HEIGHT=16 WIDTH=16 ALT=\"$mod->modfullname\"></A>";
+                            $columns[] = "$image ".
+                                         "<A HREF=\"$CFG->wwwroot/mod/$mod->modname/view.php?id=$mod->id\">".
+                                         "$instance->name".
+                                         "</A>";
+                            
+                            $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&nbsp;$student->lastname");
+        $table->data[] = array_merge($name, $gradelist);
+    }
+
+    print_table($table);
+
+    print_footer($course);
+
+?>
index 874849cb42f101ec223243a97856475fa46388c0..00cd86132bd56d3026714a1846f5c1bc511e7b58 100644 (file)
@@ -534,6 +534,9 @@ function print_course_admin_links($course, $width=180) {
     $admindata[]="<A HREF=\"teachers.php?id=$course->id\">$course->teachers...</A>";
     $adminicon[]="<IMG SRC=\"$CFG->wwwroot/pix/i/settings.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
 
+    $admindata[]="<A HREF=\"grades.php?id=$course->id\">".get_string("grades")."...</A>";
+    $adminicon[]="<IMG SRC=\"$CFG->wwwroot/pix/i/grades.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
+
     $admindata[]="<A HREF=\"log.php?id=$course->id\">".get_string("logs")."...</A>";
     $adminicon[]="<IMG SRC=\"$CFG->wwwroot/pix/i/log.gif\" HEIGHT=16 WIDTH=16 ALT=\"\">";
     $admindata[]="<A HREF=\"$CFG->wwwroot/files/index.php?id=$course->id\">".get_string("files")."...</A>";
diff --git a/pix/i/grades.gif b/pix/i/grades.gif
new file mode 100755 (executable)
index 0000000..355e734
Binary files /dev/null and b/pix/i/grades.gif differ