--- lib.revBASE.php 2010-01-05 13:07:26.000000000 -0600 +++ lib.php 2010-10-11 14:01:39.000000000 -0500 @@ -41,6 +42,29 @@ */ function assignment_base($cmid='staticonly', $assignment=NULL, $cm=NULL, $course=NULL) { global $COURSE; + echo ''; if ($cmid == 'staticonly') { //use static functions only! @@ -473,7 +499,9 @@ * Update grade item for this submission. */ function update_grade($submission) { - assignment_update_grades($this->assignment, $submission->userid); + // MDL-9085 BOBPUFFER 2010-10-07 HACK TO ALLOW SAVING OF FLOATING POINT GRADE INPUT FROM TEXT FIELD IN ASSIGNMENT INTERFACE +// assignment_update_grades($this->assignment, $submission->userid); + assignment_update_grades($this->assignment, $submission->userid, $submission); // END OF HACK BOBPUFFER } /** @@ -502,12 +530,18 @@ switch ($mode) { case 'grade': // We are in a popup window grading - if ($submission = $this->process_feedback()) { + // MDL-9085 BOBPUFFER 2010-10-07 HACK TO ALLOW TEXT INPUT OF GRADE +// if ($submission = $this->process_feedback()) { + $submission = $this->process_feedback(); + if ((is_numeric($submission->grade) && !(floatval($submission->grade) > floatval($this->assignment->grade))) || trim($submission->grade) == null) { //IE needs proper header with encoding print_header(get_string('feedback', 'assignment').':'.format_string($this->assignment->name)); print_heading(get_string('changessaved')); print $this->update_main_listing($submission); - } + } else { + echo ''; + } // END OF HACK BOBPUFFER close_window(); break; @@ -585,20 +619,28 @@ //this will also not write into database if no submissioncomment and grade is entered. if ($updatedb){ - if ($newsubmission) { - if (!isset($submission->submissioncomment)) { - $submission->submissioncomment = ''; + // MDL-9085 BOBPUFFER 2010-10-07 HACK TO PROCESS TEXT INPUT FIELDS +// if ($newsubmission) { + if ((is_numeric($submission->grade) && !(floatval($submission->grade) > floatval($this->assignment->grade))) || trim($submission->grade) == "") { + if ($newsubmission) { // END OF HACK BOBPUFFER + if (!isset($submission->submissioncomment)) { + $submission->submissioncomment = ''; + } + if (!$sid = insert_record('assignment_submissions', $submission)) { + return false; + } + $submission->id = $sid; + } else { + if (!update_record('assignment_submissions', $submission)) { + return false; + } } - if (!$sid = insert_record('assignment_submissions', $submission)) { - return false; - } - $submission->id = $sid; } else { - if (!update_record('assignment_submissions', $submission)) { - return false; - } - } - + echo ''; + continue; + } // END OF HACK BOBPUFFER + // triger grade event $this->update_grade($submission); @@ -671,8 +713,11 @@ if (empty($SESSION->flextable['mod-assignment-submissions']->collapse['grade'])) { //echo optional_param('menuindex'); if ($quickgrade){ - $output.= 'opener.document.getElementById("menumenu'.$submission->userid. - '").selectedIndex="'.optional_param('menuindex', 0, PARAM_INT).'";'."\n"; + // MDL-9085 BOBPUFFER 2010-10-07 HACK to allow text input for assignment grades +// $output.= 'opener.document.getElementById("menumenu'.$submission->userid. +// '").selectedIndex="'.optional_param('menuindex', 0, PARAM_INT).'";'."\n"; + $output.= 'opener.document.getElementById("ginput'.$submission->userid. + '").value="' . $submission->grade . '";'."\n"; // END OF HACK BOBPUFFER } else { $output.= 'opener.document.getElementById("g'.$submission->userid.'").innerHTML="'. $this->display_grade($submission->grade)."\";\n"; @@ -800,6 +845,11 @@ $grading_info = grade_get_grades($this->course->id, 'mod', 'assignment', $this->assignment->id, array($user->id)); $disabled = $grading_info->items[0]->grades[$userid]->locked || $grading_info->items[0]->grades[$userid]->overridden; + // MDL-9085 BOBPUFFER 2010-10-07 HACK TO ALLOW RETRIEVING OF FLOATING POINT GRADES FROM GRADEBOOK TO BE DISPLAYED AND EDITED IN ASSIGNMENT INTERFACE + if ($grading_info->items[0]->grades[$user->id]->str_grade <> null and floatval($grading_info->items[0]->grades[$user->id]->str_grade) <> floatval($submission->grade)) { + $submission->grade = s($grading_info->items[0]->grades[$user->id]->str_grade); + } // END OF HACK BOBPUFFER + /// construct SQL, using current offset to find the data of the next student $course = $this->course; $assignment = $this->assignment; @@ -899,7 +949,14 @@ echo ''; } echo '
'; - choose_from_menu(make_grades_menu($this->assignment->grade), 'grade', $submission->grade, get_string('nograde'), '', -1, false, $disabled); + // MDL-9085 BOBPUFFER 2010-10-07 HACK to allow manual input of grades rather than dropdown + if ($disabled) { + echo $submission->grade; + } else { + echo ''; + } +// choose_from_menu(make_grades_menu($this->assignment->grade), 'grade', $submission->grade, get_string('nograde'), '', -1, false, $disabled); + // END OF HACK BOBPUFFER echo '
'; echo '
'; @@ -945,7 +1002,10 @@ echo ''; echo ''; echo '
'; - echo ''; + // MDL-9085 BOBPUFFER 2010-10-07 HACK to allow saving of text input field +// echo ''; + echo ''; + // END OF HACK BOBPUFFER echo ''; //if there are more to be graded. if ($nextid) { @@ -1167,7 +1227,20 @@ $strgrade = get_string('grade'); $grademenu = make_grades_menu($this->assignment->grade); + if (($ausers = get_records_sql($select.$sql.$sort, $table->get_page_start(), $table->get_page_size())) !== false) { + // MDL-9085 BOBPUFFER 2010-10-07 HACK TO ALLOW EDITING OF FLOATING POINT NUMBERS IN ASSIGNMENT INTERFACE + // phony up the grade_item object for the grade_grade class call + if ($CFG->wipeassignmentoverrides) { + $grade_item = get_record('grade_items','itemmodule','assignment','iteminstance',$this->assignment->id,'courseid',$course->id); + $grades_override = grade_grade::fetch_users_grades($grade_item, array_keys($ausers), true); + foreach ($grades_override as $used_grade) { + if ($used_grade->overridden <> 0) { + $used_grade->overridden = 0; + update_record('grade_grades', $used_grade); + } + } + } // END OF HACK BOBPUFFER $grading_info = grade_get_grades($this->course->id, 'mod', 'assignment', $this->assignment->id, array_keys($ausers)); foreach ($ausers as $auser) { $final_grade = $grading_info->items[0]->grades[$auser->id]; @@ -1177,6 +1250,9 @@ if ($final_grade->overridden) { $locked_overridden = 'overridden'; } + if ($final_grade->grade <> null and floatval($final_grade->grade) <> floatval($auser->grade)) { + $auser->grade = s($final_grade->grade); + } /// Calculate user status $auser->status = ($auser->timemarked > 0) && ($auser->timemarked >= $auser->timemodified); @@ -1203,9 +1279,12 @@ if ($final_grade->locked or $final_grade->overridden) { $grade = '
'.$final_grade->formatted_grade.'
'; } else if ($quickgrade) { - $menu = choose_from_menu(make_grades_menu($this->assignment->grade), - 'menu['.$auser->id.']', $auser->grade, - get_string('nograde'),'',-1,true,false,$tabindex++); + // MDL-9085 BOBPUFFER 2010-10-07 HACK to allow text input field instead of dropdown + $menu = ''; +// $menu = choose_from_menu(make_grades_menu($this->assignment->grade), +// 'menu['.$auser->id.']', $auser->grade, +// get_string('nograde'),'',-1,true,false,$tabindex++); + // END OF HACK BOBPUFFER $grade = '
'. $menu .'
'; } else { $grade = '
'.$this->display_grade($auser->grade).'
'; @@ -1216,9 +1295,12 @@ if ($final_grade->locked or $final_grade->overridden) { $grade = '
'.$final_grade->formatted_grade.'
'; } else if ($quickgrade) { - $menu = choose_from_menu(make_grades_menu($this->assignment->grade), - 'menu['.$auser->id.']', $auser->grade, - get_string('nograde'),'',-1,true,false,$tabindex++); + // MDL-9085 BOBPUFFER 2010-10-07 HACK to allow text input field instead of dropdown + $menu = ''; +// $menu = choose_from_menu(make_grades_menu($this->assignment->grade), +// 'menu['.$auser->id.']', $auser->grade, +// get_string('nograde'),'',-1,true,false,$tabindex++); + // END OF HACK BOBPUFFER $grade = '
'.$menu.'
'; } else { $grade = '
'.$this->display_grade($auser->grade).'
'; @@ -1243,9 +1325,12 @@ if ($final_grade->locked or $final_grade->overridden) { $grade = '
'.$final_grade->formatted_grade . '
'; } else if ($quickgrade) { // allow editing - $menu = choose_from_menu(make_grades_menu($this->assignment->grade), - 'menu['.$auser->id.']', $auser->grade, - get_string('nograde'),'',-1,true,false,$tabindex++); + // MDL-9085 BOBPUFFER 2010-10-07 HACK to allow text input field instead of dropdown + $menu = ''; +// $menu = choose_from_menu(make_grades_menu($this->assignment->grade), +// 'menu['.$auser->id.']', $auser->grade, +// get_string('nograde'),'',-1,true,false,$tabindex++); + // END OF HACK BOBPUFFER $grade = '
'.$menu.'
'; } else { $grade = '
-
'; @@ -2245,7 +2331,9 @@ * @param object $assignment null means all assignments * @param int $userid specific user only, 0 mean all */ -function assignment_update_grades($assignment=null, $userid=0, $nullifnone=true) { +// MDL-9085 BOBPUFFER 2010-10-07 HACK TO ALLOW SAVING OF FLOATING POINT GRADE INPUT FROM TEXT FIELD IN ASSIGNMENT INTERFACE +// function assignment_update_grades($assignment=null, $userid=0, $nullifnone=true) +function assignment_update_grades($assignment=null, $userid=0, $submission=null) { global $CFG; if (!function_exists('grade_update')) { //workaround for buggy PHP versions require_once($CFG->libdir.'/gradelib.php'); @@ -2256,6 +2344,8 @@ foreach($grades as $k=>$v) { if ($v->rawgrade == -1) { $grades[$k]->rawgrade = null; + } elseif ($submission->grade <> null && $v->rawgrade <> $submission) { + $grades[$k]->rawgrade = $submission->grade; // END OF HACK BOBPUFFER } } assignment_grade_item_update($assignment, $grades);