mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
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:
parent
f2f564066b
commit
d6bdd9d5e9
7 changed files with 48 additions and 17 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,6 +71,11 @@ 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) {
|
||||||
|
table_column("forum", "scale", "scale", "integer", "10", "", "0");
|
||||||
|
execute_sql("UPDATE {$CFG->prefix}forum SET scale = (- scale)");
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
|
@ -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 ";
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue