Forum grades can now be numerical as well (like the other modules).

If so, grades in the gradebook are printed as proper numbers and
contribute to the total of the course.
This commit is contained in:
moodler 2003-08-25 12:47:36 +00:00
parent f2f564066b
commit d6bdd9d5e9
7 changed files with 48 additions and 17 deletions

View file

@ -1383,7 +1383,7 @@ function print_time_selector($hour, $minute, $currenttime=0) {
choose_from_menu($minutes, $minute, $currentdate['minutes'], ""); choose_from_menu($minutes, $minute, $currentdate['minutes'], "");
} }
function print_grade_menu($courseid, $name, $current) { function print_grade_menu($courseid, $name, $current, $includenograde=true) {
/// Prints a grade menu (as part of an existing form) with help /// Prints a grade menu (as part of an existing form) with help
/// Showing all possible numerical grades and scales /// Showing all possible numerical grades and scales
@ -1396,7 +1396,9 @@ function print_grade_menu($courseid, $name, $current) {
foreach ($scales as $i => $scalename) { foreach ($scales as $i => $scalename) {
$grades[-$i] = "$strscale: $scalename"; $grades[-$i] = "$strscale: $scalename";
} }
$grades[0] = get_string("nograde"); if ($includenograde) {
$grades[0] = get_string("nograde");
}
for ($i=100; $i>=1; $i--) { for ($i=100; $i>=1; $i--) {
$grades[$i] = $i; $grades[$i] = $i;
} }

View file

@ -70,6 +70,11 @@ function forum_upgrade($oldversion) {
table_column("forum", "", "assesstimestart", "integer", "10", "unsigned", "0", "", "assessed"); table_column("forum", "", "assesstimestart", "integer", "10", "unsigned", "0", "", "assessed");
table_column("forum", "", "assesstimefinish", "integer", "10", "unsigned", "0", "", "assesstimestart"); table_column("forum", "", "assesstimefinish", "integer", "10", "unsigned", "0", "", "assesstimestart");
} }
if ($oldversion < 2003082502) {
table_column("forum", "scale", "scale", "integer", "10", "", "0");
execute_sql("UPDATE {$CFG->prefix}forum SET scale = (- scale)");
}
return true; return true;

View file

@ -12,7 +12,7 @@ CREATE TABLE prefix_forum (
assessed int(10) unsigned NOT NULL default '0', assessed int(10) unsigned NOT NULL default '0',
assesstimestart int(10) unsigned NOT NULL default '0', assesstimestart int(10) unsigned NOT NULL default '0',
assesstimefinish int(10) unsigned NOT NULL default '0', assesstimefinish int(10) unsigned NOT NULL default '0',
scale int(10) unsigned NOT NULL default '0', scale int(10) NOT NULL default '0',
forcesubscribe tinyint(1) unsigned NOT NULL default '0', forcesubscribe tinyint(1) unsigned NOT NULL default '0',
timemodified int(10) unsigned NOT NULL default '0', timemodified int(10) unsigned NOT NULL default '0',
PRIMARY KEY (id), PRIMARY KEY (id),

View file

@ -15,6 +15,10 @@ function forum_upgrade($oldversion) {
table_column("forum", "", "assesstimefinish", "integer", "10", "unsigned", "0", "", "assesstimestart"); table_column("forum", "", "assesstimefinish", "integer", "10", "unsigned", "0", "", "assesstimestart");
} }
if ($oldversion < 2003082502) {
execute_sql("UPDATE {$CFG->prefix}forum SET scale = (- scale)");
}
return true; return true;
} }

View file

@ -442,10 +442,7 @@ function forum_grades($forumid) {
if (!$forum->assessed) { if (!$forum->assessed) {
return false; return false;
} }
if (!$scale = get_record("scale", "id", $forum->scale)) { $scalemenu = make_grades_menu($forum->scale);
return false;
}
$scalemenu = make_menu_from_list($scale->scale);
$currentuser = 0; $currentuser = 0;
$ratingsuser = array(); $ratingsuser = array();
@ -454,8 +451,18 @@ function forum_grades($forumid) {
foreach ($ratings as $rating) { // Ordered by user foreach ($ratings as $rating) { // Ordered by user
if ($currentuser and $rating->userid != $currentuser) { if ($currentuser and $rating->userid != $currentuser) {
if (!empty($ratingsuser)) { if (!empty($ratingsuser)) {
$return->grades[$currentuser] = forum_get_ratings_mean(0, $scalemenu, $ratingsuser); if ($forum->scale < 0) {
$return->grades[$currentuser] .= "<br />".forum_get_ratings_summary(0, $scalemenu, $ratingsuser); $return->grades[$currentuser] = forum_get_ratings_mean(0, $scalemenu, $ratingsuser);
$return->grades[$currentuser] .= "<br />".forum_get_ratings_summary(0, $scalemenu, $ratingsuser);
} else {
$total = 0;
$count = 0;
foreach ($ratingsuser as $ra) {
$total += $ra;
$count ++;
}
$return->grades[$currentuser] = format_float($total/$count, 2);
}
} else { } else {
$return->grades[$currentuser] = ""; $return->grades[$currentuser] = "";
} }
@ -465,8 +472,18 @@ function forum_grades($forumid) {
$currentuser = $rating->userid; $currentuser = $rating->userid;
} }
if (!empty($ratingsuser)) { if (!empty($ratingsuser)) {
$return->grades[$currentuser] = forum_get_ratings_mean(0, $scalemenu, $ratingsuser); if ($forum->scale < 0) {
$return->grades[$currentuser] .= "<br />".forum_get_ratings_summary(0, $scalemenu, $ratingsuser); $return->grades[$currentuser] = forum_get_ratings_mean(0, $scalemenu, $ratingsuser);
$return->grades[$currentuser] .= "<br />".forum_get_ratings_summary(0, $scalemenu, $ratingsuser);
} else {
$total = 0;
$count = 0;
foreach ($ratingsuser as $ra) {
$total += $ra;
$count ++;
}
$return->grades[$currentuser] = format_float((float)$total/(float)$count, 2);
}
} else { } else {
$return->grades[$currentuser] = ""; $return->grades[$currentuser] = "";
} }
@ -474,7 +491,11 @@ function forum_grades($forumid) {
$return->grades = array(); $return->grades = array();
} }
$return->maxgrade = ""; if ($forum->scale < 0) {
$return->maxgrade = "";
} else {
$return->maxgrade = $forum->scale;
}
return $return; return $return;
} }
@ -1947,8 +1968,7 @@ function forum_print_discussion($course, $forum, $discussion, $post, $mode) {
$ratings = NULL; $ratings = NULL;
if ($forum->assessed and !empty($USER->id)) { if ($forum->assessed and !empty($USER->id)) {
if ($scale = get_record("scale", "id", $forum->scale)) { if ($ratings->scale = make_grades_menu($forum->scale)) {
$ratings->scale = make_menu_from_list($scale->scale);
$ratings->assesstimestart = $forum->assesstimestart; $ratings->assesstimestart = $forum->assesstimestart;
$ratings->assesstimefinish = $forum->assesstimefinish; $ratings->assesstimefinish = $forum->assesstimefinish;
if ($forum->assessed == 2 and !isteacher($course->id)) { if ($forum->assessed == 2 and !isteacher($course->id)) {

View file

@ -109,8 +109,8 @@
helpbutton("ratings", get_string("allowratings", "forum"), "forum"); helpbutton("ratings", get_string("allowratings", "forum"), "forum");
echo "<br />"; echo "<br />";
echo get_string("scale").":"; echo get_string("grade").":";
print_scale_menu($course->id, "scale", $form->scale); print_grade_menu($course->id, "scale", $form->scale, false);
echo "<br />"; echo "<br />";
echo "<input name=\"ratingtime\" type=checkbox value=1 "; echo "<input name=\"ratingtime\" type=checkbox value=1 ";

View file

@ -5,7 +5,7 @@
// This fragment is called by /admin/index.php // This fragment is called by /admin/index.php
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
$module->version = 2003082500; $module->version = 2003082502;
$module->cron = 60; $module->cron = 60;
?> ?>