--- 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");
Action |
@@ -147,81 +147,95 @@ sub display_groups {
Disk use |
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('
- View Modify | '.$group.' | '.$description.' | '.$creator.' | '. &Apache::lonnavmaps::timeToHumanString($creation).' | '. &Apache::lonnavmaps::timeToHumanString($modified).' | '.$functionality.' | '.$quota.' | '.$totalmembers.' | '.$totalfiles.' | '.$boards.' | '.$diskuse.' |
');
- $rowNum ++;
}
+ if (!$functionality) {
+ $functionality = 'None available';
+ }
+ $r->print('
+ View Modify | '.$group.' | '.$description.' | '.$creator.' | '. &Apache::lonnavmaps::timeToHumanString($creation).' | '. &Apache::lonnavmaps::timeToHumanString($modified).' | '.$functionality.' | '.$quota.' | '.$totalmembers.' | '.$totalfiles.' | '.$boards.' | '.$diskuse.' |
');
+ $rowNum ++;
}
- $r->print('
');
- $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;
}
}