]> git.mjollnir.org Git - moodle.git/commitdiff
grade edit form, and adding set_locktime for grade_grades and grade_item
authortoyomoyo <toyomoyo>
Thu, 12 Jul 2007 06:42:44 +0000 (06:42 +0000)
committertoyomoyo <toyomoyo>
Thu, 12 Jul 2007 06:42:44 +0000 (06:42 +0000)
grade/report/grader/edit_grade.php
grade/report/grader/edit_grade_form.php
lib/grade/grade_grades.php
lib/grade/grade_item.php

index 37d4a06755ad0af59d570b9c3ed3bd70fbb35eac..beef3575b6bb88dd89a7519650a7668f953a184e 100644 (file)
@@ -24,8 +24,9 @@ $mform = new edit_grade_form(qualified_me(), array('id'=>$id));
 if ($grade_grades = get_record('grade_grades', 'id', $id)) {
     if ($grade_text = get_record('grade_grades_text', 'gradeid', $id)) {
         $mform->set_data($grade_text); 
-    }
+    }  
     
+    $grade_grades->courseid = $courseid;
     $mform->set_data($grade_grades);
 } else {
     $mform->set_data(array('courseid'=>$course->id, 'id' => $id));
@@ -35,17 +36,18 @@ if ($mform->is_cancelled()) {
     redirect($returnurl);
 // form processing
 } 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();
-
-    } else {
-        $grade_text->update();
-    }
+    $grade_grades = new grade_grades(array('id'=>$id));
+    $grade_item = new grade_item(array('id'=>$grade_grades->itemid));
+    $grade_item->update_final_grade($grade_grades->userid, $data->finalgrade, NULL, NULL, $data->feedback);
+    
+    // set locked
+    $grade_grades->set_locked($data->locked);
+    // set hidden
+    $grade_grades->set_hidden($data->hidden);
+    
+    // set locktime
+    $grade_grades->set_locktime($data->locktime);
 
     redirect($returnurl, get_string('feedbacksaved', 'grades'), 1);
 }
@@ -112,30 +114,8 @@ if (!empty($extra_info->course_module) && !empty($extra_info->itemmodule)) {
          . '/view.php?id=' . $extra_info->course_module->id . "&amp;courseid=$courseid\">$extra_info->itemname</a></p>";
 }
 
-// Final grade and link to scale if applicable
-if (!empty($extra_info->finalgrade)) {
-    $openlink = '';
-    $closelink = '';
-
-    if (!empty($extra_info->scaleid)) {
-        $openlink = '<a href="' . $CFG->wwwroot . '/course/scales.php?id=' . $courseid . '&amp;scaleid='
-                  . $extra_info->scaleid . '">';
-        $closelink = '</a>';
-    }
-    echo "<p><strong>$strgrade:</strong> " . $extra_info->finalgrade . "$openlink $stronascaleof $closelink</p>";
-}
-
 // Form if in edit or add modes
 $mform->display();
-/*
-if ($action != 'view') {
-    $mform->display();
-} else { // Feedback string and Back button if in View mode
-    echo $feedback;
-    echo "<button onclick=\"window.location='" . $CFG->wwwroot . "/grade/report.php?report=grader&amp;id=$courseid';\">"
-         . get_string('back') . '</button>';
-}
-*/
 
 print_simple_box_end();
 
index a66d7019c09eaa6efadef597d4c40de716a5ebf4..31d2f637dd5da3a8c8e9f4a6dac1a238001bea61 100755 (executable)
@@ -19,9 +19,11 @@ class edit_grade_form extends moodleform {
             // scale grade
             $scaleopt[-1] = get_string('nograde');
             
+            $i = 1;
             if ($scale = get_record('scale', 'id', $gradeitem->scaleid)) {
                 foreach (split(",", $scale->scale) as $option) {
-                    $scaleopt[] = $option;
+                    $scaleopt[$i] = $option;
+                    $i++;
                 }
             }
             
index f205df3625a2e7d9c3d9216324d98e49ca1f49ac..e6db1f0603cbff168b790e6f35236547308b0c8a 100644 (file)
@@ -214,6 +214,45 @@ class grade_grades extends grade_object {
         }
     }
 
+
+    /**
+     * Set the locktime for this grade.
+     *
+     * @param int $locktime timestamp for lock to activate
+     * @return boolean true if sucessful, false if can not set new lock state for grade
+     */
+    function set_locktime($locktime) {
+
+        if ($locktime) {
+            // if current locktime is before, no need to reset
+            
+            if ($this->locktime && $this->locktime <= $locktime) {
+                return true;  
+            }
+
+            /*
+            if ($this->grade_item->needsupdate) {
+                //can not lock grade if final not calculated!
+                return false;
+            }
+            */
+
+            $this->locktime = $locktime;
+            $this->update();
+
+            return true;
+
+        } else {
+
+            // remove the locktime timestamp
+            $this->locktime = 0;
+
+            $this->update();
+
+            return true;
+        }
+    }
+
     /**
      * Check grade lock status. Uses both grade item lock and grade lock.
      * Internally any date in hidden field (including future ones) means hidden,
index 2c7ba0a667e5078661d0541bd1c3b119b9ff2143..737c2c97e6803932a3bc157cb6186a57eb4bb8f3 100644 (file)
@@ -457,6 +457,44 @@ class grade_item extends grade_object {
 
         }
     }
+    
+    /**
+     * Set the locktime for this grade.
+     *
+     * @param int $locktime timestamp for lock to activate
+     * @return boolean true if sucessful, false if can not set new lock state for grade
+     */
+    function set_locktime($locktime) {
+
+        if ($locktime) {
+            // if current locktime is before, no need to reset
+            
+            if ($this->locktime && $this->locktime <= $locktime) {
+                return true;  
+            }
+
+            /*
+            if ($this->grade_item->needsupdate) {
+                //can not lock grade if final not calculated!
+                return false;
+            }
+            */
+
+            $this->locktime = $locktime;
+            $this->update();
+
+            return true;
+
+        } else {
+
+            // remove the locktime timestamp
+            $this->locktime = 0;
+
+            $this->update();
+
+            return true;
+        }
+    }
 
     /**
      * Returns the hidden state of this grade_item (if the grade_item is hidden OR no specific