]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-13375 Applied Dan's patch, and patched up assignment/lib.php accordingly. Multipl...
authornicolasconnault <nicolasconnault>
Wed, 13 Feb 2008 08:51:24 +0000 (08:51 +0000)
committernicolasconnault <nicolasconnault>
Wed, 13 Feb 2008 08:51:24 +0000 (08:51 +0000)
lib/gradelib.php
mod/assignment/lib.php

index 53a3a31f0e7fc0721371f699187562c76826599c..a74201172cfbec8c8984ab984cefeefd1fdbc3bb 100644 (file)
@@ -26,7 +26,6 @@
  * Library of functions for gradebook - both public and internal
  *
  * @author Moodle HQ developers
- * @version  $Id$
  * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
  * @package moodlecore
  */
@@ -245,15 +244,15 @@ function grade_update($source, $courseid, $itemtype, $itemmodule, $iteminstance,
  * @param string $itemmodule 'forum, 'quiz', etc.
  * @param int $iteminstance id of the item module
  * @param int $userid ID of the graded user
- * @param array $data array itemnumber=>outcomegrade
+ * @param array $data array itemnumber=>grade_item_id=>outcomegrade
  */
 function grade_update_outcomes($source, $courseid, $itemtype, $itemmodule, $iteminstance, $userid, $data) {
     if ($items = grade_item::fetch_all(array('itemtype'=>$itemtype, 'itemmodule'=>$itemmodule, 'iteminstance'=>$iteminstance, 'courseid'=>$courseid))) {
         foreach ($items as $item) {
-            if (!array_key_exists($item->itemnumber, $data)) {
+            if (!array_key_exists($item->itemnumber, $data) || !array_key_exists($item->id, $data[$item->itemnumber])) {
                 continue;
             }
-            $grade = $data[$item->itemnumber] < 1 ? null : $data[$item->itemnumber];
+            $grade = $data[$item->itemnumber][$item->id] < 1 ? null : $data[$item->itemnumber][$item->id];
             $item->update_final_grade($userid, $grade, $source);
         }
     }
@@ -439,7 +438,7 @@ function grade_get_grades($courseid, $itemtype, $itemmodule, $iteminstance, $use
                         $outcome->grades[$userid] = $grade;
                     }
                 }
-                $return->outcomes[$grade_item->itemnumber] = $outcome;
+                $return->outcomes[$grade_item->itemnumber][$grade_item->id] = $outcome;
 
             }
         }
index 70d58f1207e49aa95406ae0cc944cc6e501b764b..e10f327b60d49b8ee007961bb831a7eea9586ad4 100644 (file)
@@ -692,21 +692,23 @@ class assignment_base {
         if (!empty($CFG->enableoutcomes) and empty($SESSION->flextable['mod-assignment-submissions']->collapse['outcome'])) {
 
             if (!empty($grading_info->outcomes)) {
-                foreach($grading_info->outcomes as $n=>$outcome) {
-                    if ($outcome->grades[$submission->userid]->locked) {
-                        continue;
-                    }
+                foreach($grading_info->outcomes as $itemnumber=>$grade_items) {
+                    foreach ($grade_items as $grade_item_id => $outcome) {
+                        if ($outcome->grades[$submission->userid]->locked) {
+                            continue;
+                        }
 
-                    if ($quickgrade){
-                        $output.= 'opener.document.getElementById("outcome_'.$n.'_'.$submission->userid.
-                        '").selectedIndex="'.$outcome->grades[$submission->userid]->grade.'";'."\n";
-
-                    } else {
-                        $options = make_grades_menu(-$outcome->scaleid);
-                        $options[0] = get_string('nooutcome', 'grades');
-                        $output.= 'opener.document.getElementById("outcome_'.$n.'_'.$submission->userid.'").innerHTML="'.$options[$outcome->grades[$submission->userid]->grade]."\";\n";
-                    }
+                        if ($quickgrade){
+                            $output.= 'opener.document.getElementById("outcome_'.$itemnumber.'_'.$grade_item_id .'_'.$submission->userid.
+                            '").selectedIndex="'.$outcome->grades[$submission->userid]->grade.'";'."\n";
 
+                        } else {
+                            $options = make_grades_menu(-$outcome->scaleid);
+                            $options[0] = get_string('nooutcome', 'grades');
+                            $output.= 'opener.document.getElementById("outcome_'.$itemnumber.'_'.$grade_item_id .'_'.$submission->userid.'")
+                                        .innerHTML="'.$options[$outcome->grades[$submission->userid]->grade]."\";\n";
+                        }
+                    } 
                 }
             }
         }
@@ -889,17 +891,19 @@ class assignment_base {
         echo '<div class="clearer"></div>';
 
         if (!empty($CFG->enableoutcomes)) {
-            foreach($grading_info->outcomes as $n=>$outcome) {
-                echo '<div class="outcome"><label for="menuoutcome_'.$n.'">'.$outcome->name.'</label> ';
-                $options = make_grades_menu(-$outcome->scaleid);
-                if ($outcome->grades[$submission->userid]->locked) {
-                    $options[0] = get_string('nooutcome', 'grades');
-                    echo $options[$outcome->grades[$submission->userid]->grade];
-                } else {
-                    choose_from_menu($options, 'outcome_'.$n.'['.$userid.']', $outcome->grades[$submission->userid]->grade, get_string('nooutcome', 'grades'), '', 0, false, false, 0, 'menuoutcome_'.$n);
+            foreach($grading_info->outcomes as $itemnumber=>$grade_items) {
+                foreach ($grade_items as $grade_item_id => $outcome) {
+                    echo '<div class="outcome"><label for="menuoutcome_'.$itemnumber.'_'.$grade_item_id .'">'.$outcome->name.'</label> ';
+                    $options = make_grades_menu(-$outcome->scaleid);
+                    if ($outcome->grades[$submission->userid]->locked) {
+                        $options[0] = get_string('nooutcome', 'grades');
+                        echo $options[$outcome->grades[$submission->userid]->grade];
+                    } else {
+                        choose_from_menu($options, 'outcome_'.$itemnumber.'_'.$grade_item_id .'['.$userid.']', $outcome->grades[$submission->userid]->grade, get_string('nooutcome', 'grades'), '', 0, false, false, 0, 'menuoutcome_'.$itemnumber.'_'.$grade_item_id);
+                    }
+                    echo '</div>';
+                    echo '<div class="clearer"></div>';
                 }
-                echo '</div>';
-                echo '<div class="clearer"></div>';
             }
         }
 
@@ -1257,19 +1261,22 @@ class assignment_base {
 
                 if ($uses_outcomes) {
 
-                    foreach($grading_info->outcomes as $n=>$outcome) {
-                        $outcomes .= '<div class="outcome"><label>'.$outcome->name.'</label>';
-                        $options = make_grades_menu(-$outcome->scaleid);
-
-                        if ($outcome->grades[$auser->id]->locked or !$quickgrade) {
-                            $options[0] = get_string('nooutcome', 'grades');
-                            $outcomes .= ': <span id="outcome_'.$n.'_'.$auser->id.'">'.$options[$outcome->grades[$auser->id]->grade].'</span>';
-                        } else {
-                            $outcomes .= ' ';
-                            $outcomes .= choose_from_menu($options, 'outcome_'.$n.'['.$auser->id.']',
-                                        $outcome->grades[$auser->id]->grade, get_string('nooutcome', 'grades'), '', 0, true, false, 0, 'outcome_'.$n.'_'.$auser->id);
+                    foreach($grading_info->outcomes as $itemnumber=>$grade_items) {
+                        foreach ($grade_items as $grade_item_id => $outcome) {
+                            $outcomes .= '<div class="outcome"><label>'.$outcome->name.'</label>';
+                            $options = make_grades_menu(-$outcome->scaleid);
+
+                            if ($outcome->grades[$auser->id]->locked or !$quickgrade) {
+                                $options[0] = get_string('nooutcome', 'grades');
+                                $outcomes .= ': <span id="outcome_'.$itemnumber.'_'.$grade_item_id . '_'.$auser->id.'">'.$options[$outcome->grades[$auser->id]->grade].'</span>';
+                            } else {
+                                $outcomes .= ' ';
+                                $outcomes .= choose_from_menu($options, 'outcome_'.$itemnumber.'_'.$grade_item_id . '['.$auser->id.']',
+                                            $outcome->grades[$auser->id]->grade, get_string('nooutcome', 'grades'), '', 0, true, false, 0, 
+                                            'outcome_'.$itemnumber.'_'.$grade_item_id .'_'.$auser->id);
+                            }
+                            $outcomes .= '</div>';
                         }
-                        $outcomes .= '</div>';
                     }
                 }
 
@@ -1419,10 +1426,12 @@ class assignment_base {
         $grading_info = grade_get_grades($this->course->id, 'mod', 'assignment', $this->assignment->id, $userid);
 
         if (!empty($grading_info->outcomes)) {
-            foreach($grading_info->outcomes as $n=>$old) {
-                $name = 'outcome_'.$n;
-                if (isset($formdata->{$name}[$userid]) and $old->grades[$userid]->grade != $formdata->{$name}[$userid]) {
-                    $data[$n] = $formdata->{$name}[$userid];
+            foreach($grading_info->outcomes as $itemnumber=>$grade_items) {
+                foreach ($grade_items as $grade_item_id => $old) {
+                    $name = 'outcome_' . $itemnumber . '_' . $grade_item_id;
+                    if (isset($formdata->{$name}[$userid]) and $old->grades[$userid]->grade != $formdata->{$name}[$userid]) {
+                        $data[$itemnumber][$grade_item_id] = $formdata->{$name}[$userid];
+                    }
                 }
             }
         }