Diff for /loncom/interface/loncoursegroups.pm between versions 1.3 and 1.4

version 1.3, 2005/11/15 22:03:05 version 1.4, 2005/11/22 00:01:41
Line 123  sub display_groups { Line 123  sub display_groups {
   
     $r->print('<br /><br />');      $r->print('<br /><br />');
     if ($view_permission) {      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());              $r->print(&Apache::lonhtmlcommon::start_pick_box());
             if (keys(%curr_groups) > 0) {              $r->print(<<"END");
                 $r->print(<<"END");  
       <table border="0" cellpadding="4" cellspacing="1">        <table border="0" cellpadding="4" cellspacing="1">
        <tr bgcolor="$tabcol" align="center">         <tr bgcolor="$tabcol" align="center">
         <td><b>Action</b></td>          <td><b>Action</b></td>
Line 147  sub display_groups { Line 147  sub display_groups {
         <td><b><a href="javascript:changeSort('diskuse')">Disk use</a></b></td>          <td><b><a href="javascript:changeSort('diskuse')">Disk use</a></b></td>
        </tr>         </tr>
 END  END
                 my %Sortby = ();              my %Sortby = ();
                 foreach my $group (sort(keys(%curr_groups))) {              foreach my $group (sort(keys(%curr_groups))) {
                     %{$grp_info{$group}} =                   %{$grp_info{$group}} = 
                                       &Apache::loncommon::get_group_settings(                                    &Apache::loncommon::get_group_settings(
                                                          $curr_groups{$group});                                                           $curr_groups{$group});
                     my $members_result = &group_members($group,\%grp_info);                  my $members_result = &group_members($cdom,$cnum,$group,\%grp_info);
                     my $files_result = &group_files($group,\%grp_info);                   my $files_result = &group_files($group,\%grp_info); 
                     if ($env{'form.sortby'} eq 'groupname') {                  if ($env{'form.sortby'} eq 'groupname') {
                         push(@{$Sortby{$group}},$group);                      push(@{$Sortby{$group}},$group);
                     } elsif ($env{'form.sortby'} eq 'description') {                  } elsif ($env{'form.sortby'} eq 'description') {
                         push(@{$Sortby{$grp_info{$group}{'description'}}},                      push(@{$Sortby{$grp_info{$group}{'description'}}},
                                                                      $group);                                                                       $group);
                     } elsif ($env{'form.sortby'} eq 'creator') {                  } elsif ($env{'form.sortby'} eq 'creator') {
                         push(@{$Sortby{$grp_info{$group}{'creator'}}},$group);                      push(@{$Sortby{$grp_info{$group}{'creator'}}},$group);
                     } elsif ($env{'form.sortby'} eq 'creation') {                  } elsif ($env{'form.sortby'} eq 'creation') {
                         push(@{$Sortby{$grp_info{$group}{'creation'}}},$group);                      push(@{$Sortby{$grp_info{$group}{'creation'}}},$group);
                     } elsif ($env{'form.sortby'} eq 'modified') {                  } elsif ($env{'form.sortby'} eq 'modified') {
                         push(@{$Sortby{$grp_info{$group}{'modified'}}},$group);                      push(@{$Sortby{$grp_info{$group}{'modified'}}},$group);
                     } elsif ($env{'form.sortby'} eq 'quota') {                  } elsif ($env{'form.sortby'} eq 'quota') {
                         push(@{$Sortby{$grp_info{$group}{'quota'}}},$group);                      push(@{$Sortby{$grp_info{$group}{'quota'}}},$group);
                     } elsif ($env{'form.sortby'} eq 'totalmembers') {                  } elsif ($env{'form.sortby'} eq 'totalmembers') {
                         push(@{$Sortby{$grp_info{$group}{'totalmembers'}}},                      push(@{$Sortby{$grp_info{$group}{'totalmembers'}}},
                                                                        $group);                                                                         $group);
                     } elsif ($env{'form.sortby'} eq 'totalfiles') {                  } elsif ($env{'form.sortby'} eq 'totalfiles') {
                         push(@{$Sortby{$grp_info{$group}{'totalfiles'}}},                      push(@{$Sortby{$grp_info{$group}{'totalfiles'}}},
                                                                        $group);                                                                         $group);
                     } elsif ($env{'form.sortby'} eq 'boards') {                  } elsif ($env{'form.sortby'} eq 'boards') {
                         push(@{$Sortby{$grp_info{$group}{'boards'}}},$group);                      push(@{$Sortby{$grp_info{$group}{'boards'}}},$group);
                     } elsif ($env{'form.sortby'} eq 'diskuse') {                  } elsif ($env{'form.sortby'} eq 'diskuse') {
                         push(@{$Sortby{$grp_info{$group}{'diskuse'}}},$group);                      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 {                      } else {
                         push(@{$Sortby{$group}},$group);                          $rowColor = $rowColor2;
                     }                      }
                 }                      my $description = 
                 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 =   
                    &Apache::lonnet::unescape($grp_info{$group}{'description'});                     &Apache::lonnet::unescape($grp_info{$group}{'description'});
                         my $creator = $grp_info{$group}{'creator'};                      my $creator = $grp_info{$group}{'creator'};
                         my $creation = $grp_info{$group}{'creation'};                      my $creation = $grp_info{$group}{'creation'};
                         my $modified = $grp_info{$group}{'modified'};                       my $modified = $grp_info{$group}{'modified'}; 
                         my $quota = $grp_info{$group}{'quota'};                      my $quota = $grp_info{$group}{'quota'};
                         my $totalmembers = $grp_info{$group}{'totalmembers'};                      my $totalmembers = $grp_info{$group}{'totalmembers'};
                         my $totalfiles = $grp_info{$group}{'totalfiles'};                      my $totalfiles = $grp_info{$group}{'totalfiles'};
                         my $boards = $grp_info{$group}{'boards'};                      my $boards = $grp_info{$group}{'boards'};
                         my $diskuse = $grp_info{$group}{'diskuse'};                      my $diskuse = $grp_info{$group}{'diskuse'};
                         my $functionality;                      my $functionality;
                         foreach my $tool (sort keys(%{$functions})) {                      foreach my $tool (sort keys(%{$functions})) {
                             if (defined($grp_info{$group}{functions}{$tool})) {                          if (defined($grp_info{$group}{functions}{$tool})) {
                                 $functionality .= ' '.$tool;                              $functionality .= ' '.$tool;
                             }  
                         }                          }
                         if (!$functionality) {  
                             $functionality = 'None available';  
                         }  
                         $r->print('<tr bgcolor="'.$rowColor.'"><td align="right">  
    <a href="/adm/entergroup?group='.$group.'"/>View</a>&nbsp;<a href="/adm/coursegroups?action=modify&group='.$group.'">Modify</a></td><td><small>'.$group.'</small></td><td><small>'.$description.'</small></td><td><small>'.$creator.'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($creation).'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($modified).'</small></td><td><small>'.$functionality.'</small></td><td><small>'.$quota.'</small></td><td><small>'.$totalmembers.'</small></td><td><small>'.$totalfiles.'</small></td><td><small>'.$boards.'</small></td><td><small>'.$diskuse.'</small></td></tr>');  
                         $rowNum ++;  
                     }                      }
                       if (!$functionality) {
                           $functionality = 'None available';
                       }
                       $r->print('<tr bgcolor="'.$rowColor.'"><td align="right">
      <a href="/adm/'.$cdom.'/'.$cnum.'/'.$group.'/grppg?register=1"/>View</a>&nbsp;<a href="/adm/coursegroups?action=modify&group='.$group.'">Modify</a></td><td><small>'.$group.'</small></td><td><small>'.$description.'</small></td><td><small>'.$creator.'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($creation).'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($modified).'</small></td><td><small>'.$functionality.'</small></td><td><small>'.$quota.'</small></td><td><small>'.$totalmembers.'</small></td><td><small>'.$totalfiles.'</small></td><td><small>'.$boards.'</small></td><td><small>'.$diskuse.'</small></td></tr>');
                       $rowNum ++;
                 }                  }
                 $r->print('</table>');              }
                 $r->print(&Apache::lonhtmlcommon::end_pick_box());              $r->print('</table>');
             }                             $r->print(&Apache::lonhtmlcommon::end_pick_box());
         } else {          } else {
             $r->print('No groups exist');              $r->print('No groups exist');
         }          }
     } else {      } 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('<font size="+1"><a href="/adm/'.$udom.'/'.$uname.'/'.$group.'/grppg?register=1">'.$group,'</a><font><br /><small>'.$description.'</small><br /><br />');
                   }
               }
           } else {
               $r->print('You are not currently a member of any active groups in this course');
           }
     }      }
     return;      return;
 }  }
Line 563  sub group_files { Line 577  sub group_files {
 }  }
   
 sub group_members {  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<br />'.$previous.' -previous<br />'.$future.' -future';
       }
       return 'ok';
 }  }
   
   
Line 789  sub second_creation_form { Line 832  sub second_creation_form {
                 ['origin','action','state','member','specificity'],\@regexps));                  ['origin','action','state','member','specificity'],\@regexps));
     my %sectioncount = ();      my %sectioncount = ();
     my $numsec = &Apache::loncommon::get_sections($cdom,$cnum,\%sectioncount);      my $numsec = &Apache::loncommon::get_sections($cdom,$cnum,\%sectioncount);
     my %curr_groups = ();      my %curr_groups;
     my $numgroups = &Apache::lonnet::get_coursegroups($cdom,$cnum,\%curr_groups);      my $numgroups =  &Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum);
     my $earlyout = '';      my $earlyout;
     my $exitmsg = '<b>Invalid group name</b><br /><br />The group name entered "'.      my $exitmsg = '<b>Invalid group name</b><br /><br />The group name entered "'.
                   $groupname.'" ';                    $groupname.'" ';
     my $dupmsg = 'Group names and section names used in a course must be unique.';       my $dupmsg = 'Group names and section names used in a course must be unique.'; 
Line 800  sub second_creation_form { Line 843  sub second_creation_form {
     }      }
     if ($numsec) {      if ($numsec) {
         if (exists($sectioncount{$groupname})) {          if (exists($sectioncount{$groupname})) {
             $earlyout = $exitmsg.'can not be used as it is the name of a section               $earlyout = $exitmsg.'can not be used as it is the name of a '.
                                                 in this course.<br />'.$dupmsg;                                   'section in this course.<br />'.$dupmsg;
         }          }
     }      }
     if ($numgroups) {      if ($numgroups) {
Line 1346  $startdate,$enddate,$tools,$functions,$t Line 1389  $startdate,$enddate,$tools,$functions,$t
     my %curr_groups = ();      my %curr_groups = ();
     my %groupsettings = ();      my %groupsettings = ();
     my %usersettings = ();      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})) {          if (exists($curr_groups{$groupname})) {
             $r->print('Non-unique name -please choose another');              $r->print('Non-unique name - please choose another');
             return;               return; 
         }          }
     }      }

Removed from v.1.3  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>