--- loncom/interface/loncoursegroups.pm 2005/11/15 22:03:05 1.3 +++ loncom/interface/loncoursegroups.pm 2005/11/22 00:01:41 1.4 @@ -123,10 +123,10 @@ sub display_groups { $r->print('

'); if ($view_permission) { - if (&Apache::lonnet::get_coursegroups($cdom,$cnum,\%curr_groups) > 0) { + my %curr_groups; + if (&Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum)) { $r->print(&Apache::lonhtmlcommon::start_pick_box()); - if (keys(%curr_groups) > 0) { - $r->print(<<"END"); + $r->print(<<"END"); @@ -147,81 +147,95 @@ sub display_groups { END - my %Sortby = (); - foreach my $group (sort(keys(%curr_groups))) { - %{$grp_info{$group}} = - &Apache::loncommon::get_group_settings( + my %Sortby = (); + foreach my $group (sort(keys(%curr_groups))) { + %{$grp_info{$group}} = + &Apache::loncommon::get_group_settings( $curr_groups{$group}); - my $members_result = &group_members($group,\%grp_info); - my $files_result = &group_files($group,\%grp_info); - if ($env{'form.sortby'} eq 'groupname') { - push(@{$Sortby{$group}},$group); - } elsif ($env{'form.sortby'} eq 'description') { - push(@{$Sortby{$grp_info{$group}{'description'}}}, + my $members_result = &group_members($cdom,$cnum,$group,\%grp_info); + my $files_result = &group_files($group,\%grp_info); + if ($env{'form.sortby'} eq 'groupname') { + push(@{$Sortby{$group}},$group); + } elsif ($env{'form.sortby'} eq 'description') { + push(@{$Sortby{$grp_info{$group}{'description'}}}, $group); - } elsif ($env{'form.sortby'} eq 'creator') { - push(@{$Sortby{$grp_info{$group}{'creator'}}},$group); - } elsif ($env{'form.sortby'} eq 'creation') { - push(@{$Sortby{$grp_info{$group}{'creation'}}},$group); - } elsif ($env{'form.sortby'} eq 'modified') { - push(@{$Sortby{$grp_info{$group}{'modified'}}},$group); - } elsif ($env{'form.sortby'} eq 'quota') { - push(@{$Sortby{$grp_info{$group}{'quota'}}},$group); - } elsif ($env{'form.sortby'} eq 'totalmembers') { - push(@{$Sortby{$grp_info{$group}{'totalmembers'}}}, + } elsif ($env{'form.sortby'} eq 'creator') { + push(@{$Sortby{$grp_info{$group}{'creator'}}},$group); + } elsif ($env{'form.sortby'} eq 'creation') { + push(@{$Sortby{$grp_info{$group}{'creation'}}},$group); + } elsif ($env{'form.sortby'} eq 'modified') { + push(@{$Sortby{$grp_info{$group}{'modified'}}},$group); + } elsif ($env{'form.sortby'} eq 'quota') { + push(@{$Sortby{$grp_info{$group}{'quota'}}},$group); + } elsif ($env{'form.sortby'} eq 'totalmembers') { + push(@{$Sortby{$grp_info{$group}{'totalmembers'}}}, $group); - } elsif ($env{'form.sortby'} eq 'totalfiles') { - push(@{$Sortby{$grp_info{$group}{'totalfiles'}}}, + } elsif ($env{'form.sortby'} eq 'totalfiles') { + push(@{$Sortby{$grp_info{$group}{'totalfiles'}}}, $group); - } elsif ($env{'form.sortby'} eq 'boards') { - push(@{$Sortby{$grp_info{$group}{'boards'}}},$group); - } elsif ($env{'form.sortby'} eq 'diskuse') { - push(@{$Sortby{$grp_info{$group}{'diskuse'}}},$group); + } elsif ($env{'form.sortby'} eq 'boards') { + push(@{$Sortby{$grp_info{$group}{'boards'}}},$group); + } elsif ($env{'form.sortby'} eq 'diskuse') { + push(@{$Sortby{$grp_info{$group}{'diskuse'}}},$group); + } else { + push(@{$Sortby{$group}},$group); + } + } + my $rowNum = 0; + my $rowColor; + foreach my $key (sort(keys(%Sortby))) { + foreach my $group (@{$Sortby{$key}}) { + if ($rowNum %2 == 1) { + $rowColor = $rowColor1; } else { - push(@{$Sortby{$group}},$group); + $rowColor = $rowColor2; } - } - my $rowNum = 0; - my $rowColor; - foreach my $key (sort(keys(%Sortby))) { - foreach my $group (@{$Sortby{$key}}) { - if ($rowNum %2 == 1) { - $rowColor = $rowColor1; - } else { - $rowColor = $rowColor2; - } - my $description = + my $description = &Apache::lonnet::unescape($grp_info{$group}{'description'}); - my $creator = $grp_info{$group}{'creator'}; - my $creation = $grp_info{$group}{'creation'}; - my $modified = $grp_info{$group}{'modified'}; - my $quota = $grp_info{$group}{'quota'}; - my $totalmembers = $grp_info{$group}{'totalmembers'}; - my $totalfiles = $grp_info{$group}{'totalfiles'}; - my $boards = $grp_info{$group}{'boards'}; - my $diskuse = $grp_info{$group}{'diskuse'}; - my $functionality; - foreach my $tool (sort keys(%{$functions})) { - if (defined($grp_info{$group}{functions}{$tool})) { - $functionality .= ' '.$tool; - } + my $creator = $grp_info{$group}{'creator'}; + my $creation = $grp_info{$group}{'creation'}; + my $modified = $grp_info{$group}{'modified'}; + my $quota = $grp_info{$group}{'quota'}; + my $totalmembers = $grp_info{$group}{'totalmembers'}; + my $totalfiles = $grp_info{$group}{'totalfiles'}; + my $boards = $grp_info{$group}{'boards'}; + my $diskuse = $grp_info{$group}{'diskuse'}; + my $functionality; + foreach my $tool (sort keys(%{$functions})) { + if (defined($grp_info{$group}{functions}{$tool})) { + $functionality .= ' '.$tool; } - if (!$functionality) { - $functionality = 'None available'; - } - $r->print(''); - $rowNum ++; } + if (!$functionality) { + $functionality = 'None available'; + } + $r->print(''); + $rowNum ++; } - $r->print('
ActionDisk use
- View Modify'.$group.''.$description.''.$creator.''. &Apache::lonnavmaps::timeToHumanString($creation).''. &Apache::lonnavmaps::timeToHumanString($modified).''.$functionality.''.$quota.''.$totalmembers.''.$totalfiles.''.$boards.''.$diskuse.'
+ View Modify'.$group.''.$description.''.$creator.''. &Apache::lonnavmaps::timeToHumanString($creation).''. &Apache::lonnavmaps::timeToHumanString($modified).''.$functionality.''.$quota.''.$totalmembers.''.$totalfiles.''.$boards.''.$diskuse.'
'); - $r->print(&Apache::lonhtmlcommon::end_pick_box()); - } + } + $r->print(''); + $r->print(&Apache::lonhtmlcommon::end_pick_box()); } else { $r->print('No groups exist'); } } else { - $r->print('You do not have sufficient privileges to allow you to display course groups'); + my @coursegroups = split(/:/,$env{'request.course.groups'}); + if (@coursegroups > 0) { + my %curr_groups; + if (&Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum)) { + foreach my $group (@coursegroups) { + my %group_info = &Apache::loncommon::get_group_settings( + $curr_groups{$group}); + my $description = &Apache::lonnet::unescape( + $group_info{description}); + my ($uname,$udom) = split(/:/,$group_info{creator}); + $r->print(''.$group,'
'.$description.'

'); + } + } + } else { + $r->print('You are not currently a member of any active groups in this course'); + } } return; } @@ -563,7 +577,36 @@ sub group_files { } sub group_members { - return; + my ($cdom,$cnum,$group,$group_info) = @_; + my %memberhash = &Apache::lonnet::get_group_membership($cdom,$cnum,$group); + my $now = time; + my ($tmp)=keys(%memberhash); + if ($tmp=~/^error:/) { + $$group_info{'totalmembers'} = 'Unknown - an error occurred'; + return $tmp; + } + my $now = time; + my $totalmembers = 0; + my $active = 0; + my $previous = 0; + my $future = 0; + foreach my $member (keys %memberhash) { + $totalmembers ++; + my ($end,$start) = split(/:/,$memberhash{$member}); + if (($end!=0) && ($end<$now)) { + $previous ++; + } elsif (($start!=0) && ($start>$now)) { + $future ++; + } else { + $active ++; + } + } + if ($totalmembers == 0) { + $$group_info{$group}{'totalmembers'} = 'None'; + } else { + $$group_info{$group}{'totalmembers'} = $active.' - active
'.$previous.' -previous
'.$future.' -future'; + } + return 'ok'; } @@ -789,9 +832,9 @@ sub second_creation_form { ['origin','action','state','member','specificity'],\@regexps)); my %sectioncount = (); my $numsec = &Apache::loncommon::get_sections($cdom,$cnum,\%sectioncount); - my %curr_groups = (); - my $numgroups = &Apache::lonnet::get_coursegroups($cdom,$cnum,\%curr_groups); - my $earlyout = ''; + my %curr_groups; + my $numgroups = &Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum); + my $earlyout; my $exitmsg = 'Invalid group name

The group name entered "'. $groupname.'" '; my $dupmsg = 'Group names and section names used in a course must be unique.'; @@ -800,8 +843,8 @@ sub second_creation_form { } if ($numsec) { if (exists($sectioncount{$groupname})) { - $earlyout = $exitmsg.'can not be used as it is the name of a section - in this course.
'.$dupmsg; + $earlyout = $exitmsg.'can not be used as it is the name of a '. + 'section in this course.
'.$dupmsg; } } if ($numgroups) { @@ -1346,9 +1389,9 @@ $startdate,$enddate,$tools,$functions,$t my %curr_groups = (); my %groupsettings = (); my %usersettings = (); - if (&Apache::lonnet::get_coursegroups($cdom,$cnum,\%curr_groups) > 0) { + if (&Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum,$groupname)) { if (exists($curr_groups{$groupname})) { - $r->print('Non-unique name -please choose another'); + $r->print('Non-unique name - please choose another'); return; } }