Diff for /loncom/interface/grouproster.pm between versions 1.1 and 1.9

version 1.1, 2006/07/02 18:01:47 version 1.9, 2010/03/22 20:11:22
Line 1 Line 1
 # The LearningOnline Network with CAPA  # The LearningOnline Network with CAPA
 #  #
   # $Id$
   #
 # Copyright Michigan State University Board of Trustees  # Copyright Michigan State University Board of Trustees
 #  #
 # This file is part of the LearningOnline Network with CAPA (LON-CAPA).  # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
Line 31  use Apache::loncommon; Line 33  use Apache::loncommon;
 use Apache::lonhtmlcommon;  use Apache::lonhtmlcommon;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::longroup;  use Apache::longroup;
   use LONCAPA;
 use Apache::Constants qw(:common :http);  use Apache::Constants qw(:common :http);
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
   
Line 51  sub handler { Line 54  sub handler {
         return HTTP_NOT_ACCEPTABLE;          return HTTP_NOT_ACCEPTABLE;
     }      }
   
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['group']);       &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                               ['group','ref','status']); 
   
     my $gpterm  = &Apache::loncommon::group_term();      my $gpterm  = &Apache::loncommon::group_term();
     my $ucgpterm = $gpterm;      my $ucgpterm = $gpterm;
     $ucgpterm =~ s/^(\w)/uc($1)/e;        $ucgpterm =~ s/^(\w)/uc($1)/e;  
     my $crstype = &Apache::loncommon::course_type();      my $crstype = &Apache::loncommon::course_type();
     my $group;      my $group;
       my %curr_groups;
   
       # Validating group input.
       my $badinput; 
     if ((!defined($env{'form.group'})) || ($env{'form.group'} eq '')) {      if ((!defined($env{'form.group'})) || ($env{'form.group'} eq '')) {
         $r->print(&mt('No [_1] name provided',$gpterm));          $r->print(&mt('No group name provided.').'<br />');
                                                                                              $badinput = 1;
     } else {      } else {
         $group = $env{'form.group'};          $group = $env{'form.group'};
         $group =~ s/\W//g;          $group =~ s/\W//g;
     }      }
     if ($group eq '') {      if (!$badinput && $group eq '') {
         $r->print(&mt('Invalid [_1] name provided',$gpterm));          $r->print(&mt('Invalid group name provided.').'<br />');
           $badinput = 1;
     }      }
   
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};      my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
   
     if ($cdom eq '' || $cnum eq '') {      if ($cdom eq '' || $cnum eq '') {
         $r->print(&mt('Invalid [_1]',$crstype));          $r->print(&mt('Invalid [_1]',$crstype).'<br />');
           $badinput = 1;
     }      }
   
     my @coursegroups = split(/:/,$env{'request.course.groups'});      if (!$badinput) {
     if ((@coursegroups == 0) || ((@coursegroups > 0) &&           %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);
                                  (!(grep/^\Q$group\E$/,@coursegroups)))) {          if (!defined($curr_groups{$group})) {
         $r->print(&mt('[_1] is not the name of a valid [_2] in this [_3].',              $r->print(&mt('"[_1]" is not the name of a valid group in this [_2].',
                       $group,$gpterm,lc($crstype)));                            $group,lc($crstype)));
     }               $badinput = 1;
           }
       }
       if ($badinput) {
           return OK;
       }
   
     &Apache::lonhtmlcommon::clear_breadcrumbs();      &Apache::lonhtmlcommon::clear_breadcrumbs();
   
Line 90  sub handler { Line 104  sub handler {
                                             '/'.$group);                                              '/'.$group);
     my $view_details = &Apache::lonnet::allowed('vmd',$env{'request.course.id'}.'/'.$group);      my $view_details = &Apache::lonnet::allowed('vmd',$env{'request.course.id'}.'/'.$group);
   
     my $viewgrps = &Apache::lonnet::allowed('vcg',$env{'request.course.id'});      my $viewgrps = &Apache::lonnet::allowed('vcg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
     my $editgrps = &Apache::lonnet::allowed('mdg',$env{'request.course.id'});      my $editgrps = &Apache::lonnet::allowed('mdg',$env{'request.course.id'});
   
     if ((!$can_view) && (!$view_details) && (!$viewgrps) && (!$editgrps)) {      if ((!$can_view) && (!$view_details) && (!$viewgrps) && (!$editgrps)) {
         $r->print(&mt('You do not have privileges to view the membership roster in this [_1]',$gpterm));          $r->print(&mt('You do not have privileges to view the membership roster in this '.$gpterm.'.'));
         return OK;          return OK;
     }      }
     my %coursegroups = &Apache::longroup::coursegroups($cdom,$cnum,$group);      my %content = &Apache::longroup::get_group_settings($curr_groups{$group});
     my %content = &Apache::longroup::get_group_settings($coursegroups{$group});  
     my $description = &unescape($content{'description'});      my $description = &unescape($content{'description'});
     $r->print(&roster_header($cdom,$cnum,$group,$description,$gpterm,$ucgpterm));      $r->print(&roster_header($cdom,$cnum,$group,$description,$gpterm,$ucgpterm));
   
Line 118  sub handler { Line 131  sub handler {
   
 sub roster_header {  sub roster_header {
     my ($cdom,$cnum,$group,$description,$gpterm,$ucgpterm) = @_;      my ($cdom,$cnum,$group,$description,$gpterm,$ucgpterm) = @_;
       my $refarg;
       if (exists($env{'form.ref'}) && $env{'form.ref'} ne 'popup') {
           $refarg = 'ref='.$env{'form.ref'};
           &Apache::lonhtmlcommon::add_breadcrumb
               ({href=>"/adm/coursegroups",
                 text=>"Groups",
                 title=>"View course groups"});
       }
       my $args;
       if ($env{'form.ref'} eq 'popup') {
           $args = { 'no_nav_bar'    => 1, };
       }
     my $jscript = qq|      my $jscript = qq|
 function changeSort(caller) {  function changeSort(caller) {
     document.grouproster.sortby.value = caller;      document.grouproster.sortby.value = caller;
     document.grouproster.submit();      document.grouproster.submit();
 }\n|;  }\n|;
       my $itemtitle = &mt('Group membership status - [_1]',$description);
     my $output =      my $output =
         &Apache::loncommon::start_page(&mt('[_1] Membership ',$ucgpterm),          &Apache::loncommon::start_page('Group Membership',
                                        '<script type="text/javascript">'.                                         '<script type="text/javascript">'.
                                        $jscript.'</script>');                                         $jscript.'</script>',$args);
     &Apache::lonhtmlcommon::add_breadcrumb      if ($env{'form.ref'} eq 'popup') {
         ({href=>"/adm/$cdom/$cnum/$group/grppg",          $output .= '<h3>'.&mt('Group membership status - [_1]',$description).
           text=>"$ucgpterm: $description",                     '</h3>';
           title=>"Go to group's home page"},      } else {
          {href=>"/adm/grouproster?group=$group",          &Apache::lonhtmlcommon::add_breadcrumb
           text=>"Membership roster",              ({href=>"/adm/$cdom/$cnum/$group/smppg?$refarg",
           title=>"Display group membership"},);                text=>"$ucgpterm: $description",
     $output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('[_1] membership status - [_2]',$gpterm,$description));                title=>"Go to group's home page"},
                {href=>'/adm/grouproster?group='.$group.'&amp;'.$refarg,
                 text=>"Membership Roster",
                 title=>"Display group membership"},);
           $output .= &Apache::lonhtmlcommon::breadcrumbs(&mt($gpterm.' membership status - [_1]',$description));
       }
     return $output;      return $output;
 }  }
   
Line 144  sub roster_table { Line 175  sub roster_table {
   
     my $fixedprivs = &Apache::longroup::get_fixed_privs();      my $fixedprivs = &Apache::longroup::get_fixed_privs();
   
     my ($memberinfo,$hastools,$addtools,$numitems) =       my ($memberinfo,$numitems,$hastools,$addtools) = 
         &Apache::longroup::group_memberlist($cdom,$cnum,$group,$fixedprivs,          &Apache::longroup::group_memberlist($cdom,$cnum,$group,$fixedprivs,
                                             $available);                                              $available);
     my (%tooltype,$toolprivs);      my (%tooltype,$toolprivs);
Line 180  sub roster_table { Line 211  sub roster_table {
     if (($viewgrps) || ($editgrps) ||       if (($viewgrps) || ($editgrps) || 
         (&Apache::lonnet::allowed('vmd',$env{'request.course.id'}.'/'.$group))) {          (&Apache::lonnet::allowed('vmd',$env{'request.course.id'}.'/'.$group))) {
         if (keys(%{$memberinfo}) == 0) {          if (keys(%{$memberinfo}) == 0) {
             $r->print(&mt('There are no membership data to display for this [_1]',              $r->print(&mt('There are no membership data to display for this '.$gpterm.'.'));  
                       $gpterm));    
             return;                return;  
         }            }  
         $r->print('<br /><form name="rosterstatus" method="post" action="/adm/grouproster">'.&mt('Membership status: ').'<select name="status">');          $r->print('<br /><form name="rosterstatus" method="post" action="/adm/grouproster">'.&mt('Membership status: ').'<select name="status">');
Line 196  sub roster_table { Line 226  sub roster_table {
                   '<input type="submit" name="statusbutton" value="'.                    '<input type="submit" name="statusbutton" value="'.
                   $lt{'updi'}.'"><input type="hidden" name="sortby" value="'.                    $lt{'updi'}.'"><input type="hidden" name="sortby" value="'.
                   $env{'form.sortby'}.'"/>'.                    $env{'form.sortby'}.'"/>'.
                   '<input type="hidden" name="group" value="'.$group.                    '<input type="hidden" name="group" value="'.$group.'"/>');
                   '"/></form><br /><br />');          if (exists($env{'form.ref'})) {
               $r->print('<input type="hidden" name="ref" value="'.$env{'form.ref'}.
                         '" />');
           }
           $r->print('</form><br />');
   
     }      }
       $r->print('<br />');
     if (ref($numitems) eq 'HASH') {      if (ref($numitems) eq 'HASH') {
         foreach my $key (keys(%{$numitems})) {          foreach my $key (keys(%{$numitems})) {
             if ($status eq $key && !$$numitems{$key}) {              if ($status eq $key && !$$numitems{$key}) {
                 $r->print(&mt('There are no [_1] members to display in this [_2]',                  $r->print(&mt('There are no '.$gpterm.'s to display in this [_1].',
                               $key,$gpterm));                                lc($lt{$key})));
                 return;                  return;
             }              }
         }          }
Line 213  sub roster_table { Line 248  sub roster_table {
 <form name="grouproster" action="/adm/grouproster" method="post">  <form name="grouproster" action="/adm/grouproster" method="post">
  <input type="hidden" name="group" value="'.$group.'" />   <input type="hidden" name="group" value="'.$group.'" />
  <input type="hidden" name="sortby" value="'.$env{'form.sortby'}.'" />   <input type="hidden" name="sortby" value="'.$env{'form.sortby'}.'" />
    <input type="hidden" name="status" value="'.$status.'" />
 ');  ');
       if (exists($env{'form.ref'})) {
           $r->print('<input type="hidden" name="ref" value="'.$env{'form.ref'}.
                     '" />');
       }
     my %Sortby = ();      my %Sortby = ();
     my $usercount = 0;      my $usercount = 0;
     foreach my $user (sort(keys(%{$memberinfo}))) {      foreach my $user (sort(keys(%{$memberinfo}))) {
Line 296  sub members_table_row { Line 336  sub members_table_row {
             my $curr_tool;              my $curr_tool;
             my $privlist;              my $privlist;
             foreach my $priv (@{$$userinfo{'privs'}}) {              foreach my $priv (@{$$userinfo{'privs'}}) {
                 unless ($curr_tool eq $$tooltype{$priv}) {                  if (defined($$tooltype{$priv})) {
                     $curr_tool = $$tooltype{$priv};                      if ($curr_tool ne $$tooltype{$priv}) {
                     $privlist .= '<b>'.$curr_tool.'</b>: ';                          $curr_tool = $$tooltype{$priv};
                           $privlist .= '<b>'.$curr_tool.'</b>: ';
                       }
                       $privlist .= $$toolprivs{$curr_tool}{$priv}.', ';
                 }                  }
                 $privlist .= $$toolprivs{$curr_tool}{$priv}.', ';  
             }              }
             $privlist =~ s/, $//;              $privlist =~ s/, $//;
             $output .= '<td>'.$privlist.'</td>';              $output .= '<td>'.$privlist.'</td>';
         } elsif ($view_details) {          } elsif ($view_details) {
             $output .= '<td><nobr>'.join('&nbsp;&nbsp;&nbsp;',              $output .= '<td><span class="LC_nobreak">'.join('&nbsp;&nbsp;&nbsp;',
                       @{$$userinfo{'currtools'}}).'</nobr></td>';                        @{$$userinfo{'currtools'}}).'</span></td>';
         }          }
     }      }
     $output .= &Apache::loncommon::end_data_table_row();      $output .= &Apache::loncommon::end_data_table_row();

Removed from v.1.1  
changed lines
  Added in v.1.9


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