MDL-10888: groupings - mod/workshop - add grouping support

This commit is contained in:
mattc-catalyst
2007-09-06 01:35:37 +00:00
parent f12d645a8d
commit 263017bbdd
6 changed files with 90 additions and 8 deletions
+44 -1
View File
@@ -2430,11 +2430,14 @@ function course_in_meta ($course) {
/**
* Print standard form elements on module setup forms in mod/.../mod.html
*/
function print_standard_coursemodule_settings($form) {
function print_standard_coursemodule_settings($form, $features=null) {
if (! $course = get_record('course', 'id', $form->course)) {
error("This course doesn't exist");
}
print_groupmode_setting($form, $course);
if (!empty($features->groupings)) {
print_grouping_settings($form, $course);
}
print_visible_setting($form, $course);
}
@@ -2470,6 +2473,46 @@ function print_groupmode_setting($form, $course=NULL) {
}
}
/**
* Print groupmode form element on module setup forms in mod/.../mod.html
*/
function print_grouping_settings($form, $course=NULL) {
if (empty($course)) {
if (! $course = get_record('course', 'id', $form->course)) {
error("This course doesn't exist");
}
}
if ($form->coursemodule) {
if (! $cm = get_record('course_modules', 'id', $form->coursemodule)) {
error("This course module doesn't exist");
}
} else {
$cm = null;
}
$groupings = get_records_menu('groupings', 'courseid', $course->id, 'name', 'id, name');
if (!empty($groupings)) {
echo '<tr valign="top">';
echo '<td align="right"><b>'.get_string('grouping', 'group').':</b></td>';
echo '<td align="left">';
$groupings;
$groupingid = isset($cm->groupingid) ? $cm->groupingid : 0;
choose_from_menu($groupings, 'groupingid', $groupingid, get_string('none'), '', 0, false);
echo '</td></tr>';
$checked = empty($cm->groupmembersonly) ? '':'checked="checked"';
echo '<tr valign="top">';
echo '<td align="right"><b>'.get_string('groupmembersonly', 'group').':</b></td>';
echo '<td align="left">';
echo "<input type=\"checkbox\" name=\"groupmembersonly\" value=\"1\" $checked />";
echo '</td></tr>';
}
}
/**
* Print visibility setting form element on module setup forms in mod/.../mod.html
*/
+16 -1
View File
@@ -135,6 +135,14 @@
if (isset($mod->groupmode)) {
set_coursemodule_groupmode($mod->coursemodule, $mod->groupmode);
}
if (isset($mod->groupingid)) {
set_coursemodule_groupingid($mod->coursemodule, $mod->groupingid);
}
if (isset($mod->groupmembersonly)) {
set_coursemodule_groupmembersonly($mod->coursemodule, $mod->groupmembersonly);
}
if (isset($mod->redirect)) {
$SESSION->returnpage = $mod->redirecturl;
@@ -176,7 +184,14 @@
if (!isset($mod->groupmode)) { // to deal with pre-1.5 modules
$mod->groupmode = $course->groupmode; /// Default groupmode the same as course
}
if (isset($mod->groupingid)) {
set_coursemodule_groupingid($mod->coursemodule, $mod->groupingid);
}
if (isset($mod->groupmembersonly)) {
set_coursemodule_groupmembersonly($mod->coursemodule, $mod->groupmembersonly);
}
$mod->instance = $return;
// course_modules and course_sections each contain a reference
+2
View File
@@ -93,6 +93,8 @@
$assessment->timegraded = 0;
$assessment->timeagreed = 0;
$assessment->resubmission = 0;
$assessment->generalcomment = '';
$assessment->teachercomment = '';
if (!$assessment->id = insert_record("workshop_assessments", $assessment)) {
error("Could not insert workshop assessment!");
}
+3 -3
View File
@@ -1121,7 +1121,8 @@ function workshop_get_recent_mod_activity(&$activities, &$index, $sincetime, $co
}
$posts = get_records_sql("SELECT s.*, u.firstname, u.lastname,
u.picture, cm.instance, w.name, cm.section
u.picture, cm.instance, w.name, cm.section, cm.groupmode,
cm.course, cm.groupingid, cm.groupmembersonly
FROM {$CFG->prefix}workshop_submissions s,
{$CFG->prefix}user u,
{$CFG->prefix}course_modules cm,
@@ -1140,8 +1141,7 @@ function workshop_get_recent_mod_activity(&$activities, &$index, $sincetime, $co
}
foreach ($posts as $post) {
if (empty($groupid) || groups_is_member($groupid, $post->userid)) {
if ((empty($groupid) || groups_is_member($groupid, $post->userid)) && groups_course_module_visible($post)) {
$tmpactivity = new Object;
+5 -1
View File
@@ -403,7 +403,11 @@
helpbutton("releasegrades", get_string("releaseteachergrades", "workshop"), "workshop");
?></td>
</tr>
<?php print_standard_coursemodule_settings($form); ?>
<?php
$features = new stdClass;
$features->groupings = true;
print_standard_coursemodule_settings($form, $features);
?>
</table>
<br />
<div class="boxaligncenter">
+20 -2
View File
@@ -309,8 +309,9 @@
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
/// find out current groups mode
$groupmode = groupmode($course, $cm);
$currentgroup = setup_and_print_groups($course, $groupmode, "view.php?id=$cm->id");
$groupmode = groups_get_activity_groupmode($cm);
$currentgroup = groups_get_activity_group($cm, true);
groups_print_activity_menu($cm, "view.php?id=$cm->id");
/// Print admin links
echo "<table width=\"100%\"><tr><td>";
@@ -368,6 +369,15 @@
print_footer($course);
exit;
}
if (!empty($CFG->enablegroupings) && !empty($cm->groupingid) && !empty($users)) {
$groupingusers = groups_get_grouping_members($cm->groupingid, 'u.id', 'u.id');
foreach($users as $key => $user) {
if (!isset($groupingusers[$user->id])) {
unset($users[$key]);
}
}
}
/// Now prepare table with student assessments and submissions
$tablesort->data = array();
@@ -506,6 +516,14 @@
FROM {$CFG->prefix}groups_members g, {$CFG->prefix}workshop_assessments a
WHERE g.groupid = $currentgroup AND a.userid = g.userid AND a.timegraded > 0
AND a.workshopid = $workshop->id");
} elseif (!empty($cm->groupingid) && !empty($CFG->enablegroupings)) {
$stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean,
STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max
FROM {$CFG->prefix}workshop_assessments a
INNER JOIN {$CFG->prefix}groups_members g ON a.userid = g.userid
INNER JOIN {$CFG->prefix}groupings_groups gg ON g.groupid = gg.groupid
WHERE gg.groupingid = {$cm->groupingid} AND a.timegraded > 0
AND a.workshopid = $workshop->id");
} else { // no group/all participants
$stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean,
STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max