Diff for /loncom/auth/lonroles.pm between versions 1.150 and 1.166

version 1.150, 2006/05/30 17:15:00 version 1.166, 2006/10/10 20:16:19
Line 39  use Apache::loncommon; Line 39  use Apache::loncommon;
 use Apache::lonhtmlcommon;  use Apache::lonhtmlcommon;
 use Apache::lonannounce;  use Apache::lonannounce;
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::lonpageflip();
 use GDBM_File;  use GDBM_File;
 use lib '/home/httpd/lib/perl/';  
 use LONCAPA;  use LONCAPA;
     
   
Line 53  sub redirect_user { Line 53  sub redirect_user {
     my $swinfo=&Apache::lonmenu::rawconfig();      my $swinfo=&Apache::lonmenu::rawconfig();
     my $navwindow;      my $navwindow;
     if ($launch_nav eq 'on') {      if ($launch_nav eq 'on') {
  $navwindow.=&Apache::lonnavmaps::launch_win('now',undef,undef,   $navwindow.=&Apache::lonnavdisplay::launch_win('now',undef,undef,
   ($url =~ m-^/adm/whatsnew-));         ($url =~ m-^/adm/whatsnew-));
     } else {      } else {
  $navwindow.=&Apache::lonnavmaps::close();   $navwindow.=&Apache::lonnavmaps::close();
     }      }
Line 88  sub error_page { Line 88  sub error_page {
       &Apache::lonmenu::rawconfig().'</script>'.        &Apache::lonmenu::rawconfig().'</script>'.
       '<p>'.&mt('The following problems occurred:').        '<p>'.&mt('The following problems occurred:').
       $error.        $error.
       '</p><br /><a href="'.$dest.'>'.&mt('Continue').'</a>'.        '</p><br /><a href="'.$dest.'">'.&mt('Continue').'</a>'.
       &Apache::loncommon::end_page());        &Apache::loncommon::end_page());
 }  }
   
Line 149  sub handler { Line 149  sub handler {
   
 # store role if recent_role list being kept  # store role if recent_role list being kept
                     if ($env{'environment.recentroles'}) {                      if ($env{'environment.recentroles'}) {
                           my %frozen_roles =
                              &Apache::lonhtmlcommon::get_recent_frozen('roles',$env{'environment.recentrolesn'});
  &Apache::lonhtmlcommon::store_recent('roles',   &Apache::lonhtmlcommon::store_recent('roles',
      $trolecode,' ');       $trolecode,' ',$frozen_roles{$trolecode});
                     }                      }
   
   
Line 247  ENDENTERKEY Line 249  ENDENTERKEY
    'request.course.sec'  => $csec,     'request.course.sec'  => $csec,
                                            'request.course.groups' => $cgrps);                                             'request.course.groups' => $cgrps);
                     my $tadv=0;                      my $tadv=0;
     my $msg=&mt('Entering course ...');  
   
     if (($cnum) && ($role ne 'ca') && ($role ne 'aa')) {      if (($cnum) && ($role ne 'ca') && ($role ne 'aa')) {
                           my $msg;
  my ($furl,$ferr)=   my ($furl,$ferr)=
     &Apache::lonuserstate::readmap($cdom.'/'.$cnum);      &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
  if (($env{'form.orgurl'}) &&    if (($env{'form.orgurl'}) && 
Line 264  ENDENTERKEY Line 266  ENDENTERKEY
     }      }
     return OK;      return OK;
  } else {   } else {
     unless ($env{'request.course.id'}) {      if (!$env{'request.course.id'}) {
  &Apache::lonnet::appenv(   &Apache::lonnet::appenv(
       "request.course.id"  => $cdom.'_'.$cnum);        "request.course.id"  => $cdom.'_'.$cnum);
  $furl='/adm/roles?tryagain=1';   $furl='/adm/roles?tryagain=1';
  $msg=   $msg=
     '<h1><font color="red">'.      '<h1><span class="LC_error">'.
  &mt('Could not initialize course at this time.').      &mt('Could not initialize [_1] at this time.',
     '</font></h1><h3>'.&mt('Please try again.').'</h3>'.$ferr;   $env{'course.'.$cdom.'_'.$cnum.'.description'}).
       '</span></h1><h3>'.&mt('Please try again.').'</h3>'.$ferr;
     }      }
     if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; }      if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; }
     &Apache::lonnet::appenv('request.role.adv'=>$tadv);      &Apache::lonnet::appenv('request.role.adv'=>$tadv);
   
     if (($ferr) && ($tadv)) {      if (($ferr) && ($tadv)) {
  &error_page($r,$ferr,$furl);   &error_page($r,$ferr,$furl);
     } else {      } else {
Line 298  ENDENTERKEY Line 302  ENDENTERKEY
  ) {   ) {
  my $startpage = &courseloadpage($courseid);   my $startpage = &courseloadpage($courseid);
  unless ($startpage eq 'firstres') {            unless ($startpage eq 'firstres') {         
     $msg = &mt('Entering course ....');      $msg = &mt('Entering [_1] ....',
          $env{'course.'.$courseid.'.description'});
     &redirect_user($r,&mt('New in course'),      &redirect_user($r,&mt('New in course'),
    '/adm/whatsnew?refpage=start',$msg,     '/adm/whatsnew?refpage=start',$msg,
    $env{'environment.remotenavmap'});     $env{'environment.remotenavmap'});
Line 306  ENDENTERKEY Line 311  ENDENTERKEY
  }   }
     }      }
  }   }
  &redirect_user($r,&mt('Entering Course'),  # Are we allowed to look at the first resource?
    if (!&Apache::lonnet::allowed('bre',$furl)) {
   # Guess not ...
       $furl=&Apache::lonpageflip::first_accessible_resource();
    }
                                   $msg = &mt('Entering [_1] ...',
      $env{'course.'.$courseid.'.description'});
    &redirect_user($r,&mt('Entering [_1]',
         $env{'course.'.$courseid.'.description'}),
        $furl,$msg,         $furl,$msg,
        $env{'environment.remotenavmap'});         $env{'environment.remotenavmap'});
     }      }
Line 351  ENDENTERKEY Line 364  ENDENTERKEY
     my $start_page=&Apache::loncommon::start_page('User Roles');      my $start_page=&Apache::loncommon::start_page('User Roles');
     my $standby=&mt('Role selected. Please stand by.');      my $standby=&mt('Role selected. Please stand by.');
     $standby=~s/\n/\\n/g;      $standby=~s/\n/\\n/g;
     my $helptag='<table><tr><td>'.&Apache::loncommon::help_open_menu('','General Intro','General_Intro','User Roles',1,undef,undef,undef,undef,,&mt("Click here for help")).'</td></td></tr></table>';  
     $r->print(<<ENDHEADER);      $r->print(<<ENDHEADER);
 $start_page  $start_page
 $helptag<br />  <br />
 <script>  <script>
 $swinfo  $swinfo
 window.focus();  window.focus();
Line 411  ENDHEADER Line 424  ENDHEADER
     } else {      } else {
         if ($env{'user.error.msg'}) {          if ($env{'user.error.msg'}) {
     $r->print(      $r->print(
  '<h3><font color="red">'.   '<h3><span class="LC_error">'.
  &mt('You need to choose another user role or enter a specific course for this function').'</font></h3>');   &mt('You need to choose another user role or enter a specific course for this function').'</span></h3>');
  }   }
     }      }
 # -------------------------------------------------------- Choice or no choice?  # -------------------------------------------------------- Choice or no choice?
Line 472  ENDHEADER Line 485  ENDHEADER
  $tstatus='selected';   $tstatus='selected';
             }              }
             my $tbg;              my $tbg;
             if (($tstatus eq 'is') || ($tstatus eq 'selected') ||              if (($tstatus eq 'is') 
                 ($env{'form.showall'})) {   || ($tstatus eq 'selected') 
    || ($tstatus eq 'will') 
    || ($tstatus eq 'future') 
                   || ($env{'form.showall'})) {
                 if ($tstatus eq 'is') {                  if ($tstatus eq 'is') {
                     $tbg='#77FF77';                      $tbg='#77FF77';
                     $tfont='#003300';                      $tfont='#003300';
Line 505  ENDHEADER Line 521  ENDHEADER
     if ($tremark) { $tremark.='<br />'; }      if ($tremark) { $tremark.='<br />'; }
                     $tremark.=&mt('Defined by ').$rauthor.                      $tremark.=&mt('Defined by ').$rauthor.
  &mt(' at ').$rdomain.'.';   &mt(' at ').$rdomain.'.';
                     $trole=$rrole;   }
                 } else {   $trole=Apache::lonnet::plaintext($role);
                     $trole=Apache::lonnet::plaintext($role);  
                 }  
                 my $ttype;                  my $ttype;
                 my $twhere;                  my $twhere;
                 my ($tdom,$trest,$tsection)=                  my ($tdom,$trest,$tsection)=
Line 552  ENDHEADER Line 566  ENDHEADER
     $tremark.=&Apache::lonhtmlcommon::authorbombs('/res/'.$tdom.'/'.$env{'user.name'}.'/');      $tremark.=&Apache::lonhtmlcommon::authorbombs('/res/'.$tdom.'/'.$env{'user.name'}.'/');
     $sortkey=$role;      $sortkey=$role;
                 } elsif ($trest) {                  } elsif ($trest) {
                     $ttype='Course';  
                     my $tcourseid=$tdom.'_'.$trest;                      my $tcourseid=$tdom.'_'.$trest;
                       $ttype = &Apache::loncommon::course_type($tcourseid);
                       $trole = &Apache::lonnet::plaintext($role,$ttype);
                     if ($env{'course.'.$tcourseid.'.description'}) {                      if ($env{'course.'.$tcourseid.'.description'}) {
                         $twhere=$env{'course.'.$tcourseid.'.description'};                          $twhere=$env{'course.'.$tcourseid.'.description'};
  $sortkey=$role."\0".$tdom."\0".$twhere."\0".$envkey;   $sortkey=$role."\0".$tdom."\0".$twhere."\0".$envkey;
Line 571  ENDHEADER Line 586  ENDHEADER
                               ' <font size="-2">'.                                ' <font size="-2">'.
         &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom,$tfont).          &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom,$tfont).
                               '</font>';                                '</font>';
                               $ttype = $newhash{'type'};
                               $trole = &Apache::lonnet::plaintext($role,$ttype);
                         } else {                          } else {
                             $twhere=&mt('Currently not available');                              $twhere=&mt('Currently not available');
                             $env{'course.'.$tcourseid.'.description'}=$twhere;                              $env{'course.'.$tcourseid.'.description'}=$twhere;
     $sortkey=$role."\0".$tdom."\0".$twhere."\0".$envkey;      $sortkey=$role."\0".$tdom."\0".$twhere."\0".$envkey;
                               $ttype = 'Unavailable';
                         }                          }
                     }                      }
                     if ($tsection) {                      if ($tsection) {
                         $twhere.='<br />'.&mt('Section/Group').': '.$tsection;                          $twhere.='<br />'.&mt('Section/Group').': '.$tsection;
     }      }
   
     if ($role ne 'st') { $twhere.="<br />".&mt('Domain').":".$tdom; }      if ($role ne 'st') { $twhere.="<br />".&mt('Domain').":".$tdom; }
                 } elsif ($tdom) {                  } elsif ($tdom) {
                     $ttype='Domain';                      $ttype='Domain';
Line 591  ENDHEADER Line 608  ENDHEADER
                     $twhere=&mt('system wide');                      $twhere=&mt('system wide');
     $sortkey=$role.$twhere;      $sortkey=$role.$twhere;
                 }                  }
                    $roletext.=&build_roletext($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver);
                 $roletext.=&build_roletext($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$ttype,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver);  
  $roletext{$envkey}=$roletext;   $roletext{$envkey}=$roletext;
  if (!$sortkey) {$sortkey=$twhere."\0".$envkey;}   if (!$sortkey) {$sortkey=$twhere."\0".$envkey;}
  $sortrole{$sortkey}=$envkey;   $sortrole{$sortkey}=$envkey;
Line 622  ENDHEADER Line 638  ENDHEADER
 # More than one possible role  # More than one possible role
 # ----------------------------------------------------------------------- Table  # ----------------------------------------------------------------------- Table
     unless (($advanced) || ($nochoose)) {      unless (($advanced) || ($nochoose)) {
  $r->print("<h2>".&mt('Select a Course to Enter')."</h2>\n");   $r->print("<h2>".&mt('Select a Course/Group to Enter')."</h2>\n");
     }      }
     $r->print('<br /><table><tr>');      $r->print('<br /><table><tr>');
     unless ($nochoose) { $r->print('<th>&nbsp;</th>'); }      unless ($nochoose) { $r->print('<th>&nbsp;</th>'); }
     $r->print('<th>'.&mt('User Role').'</th><th>'.&mt('Extent').      $r->print('<th>'.&mt('User Role').'</th><th>'.&mt('Extent').
          '</th><th>'.&mt('Start').'</th><th>'.&mt('End').'</th></tr>'."\n");           '</th><th>'.&mt('Start').'</th><th>'.&mt('End').'</th></tr>'."\n");
     my $doheaders=-1;      my $doheaders=-1;
     foreach my $type ('Domain','Construction Space','Course','System') {      foreach my $type ('Domain','Construction Space','Course','Group','Unavailable','System') {
  my $haverole=0;   my $haverole=0;
  foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {   foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {
     if ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/) {       if ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/) { 
Line 668  ENDHEADER Line 684  ENDHEADER
         $r->print(&coursepick_jscript());          $r->print(&coursepick_jscript());
         $r->print(&Apache::loncommon::coursebrowser_javascript());          $r->print(&Apache::loncommon::coursebrowser_javascript());
     }      }
     foreach my $type ('Construction Space','Domain','Course','System') {      foreach my $type ('Construction Space','Domain','Course','Group','Unavailable','System') {
  my $output;   my $output;
  foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {   foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {
     if ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/) {       if ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/) { 
Line 730  ENDHEADER Line 746  ENDHEADER
  $ttype='Construction Space';   $ttype='Construction Space';
  $twhere='User: '.$trest.', Domain: '.$tdom;   $twhere='User: '.$trest.', Domain: '.$tdom;
     } else {      } else {
  $ttype='Course';   $ttype= 
       &Apache::loncommon::course_type($tdom.'_'.$trest);
  $twhere=$env{'course.'.$tdom.'_'.$trest.'.description'};   $twhere=$env{'course.'.$tdom.'_'.$trest.'.description'};
  if ($tsec) {   if ($tsec) {
     $twhere.=' (Section/Group: '.$tsec.')';      $twhere.=' (Section: '.$tsec.')';
  }   }
     }      }
  } elsif ($tdom) {   } elsif ($tdom) {
Line 803  sub role_status { Line 820  sub role_status {
 }  }
   
 sub build_roletext {  sub build_roletext {
     my ($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$ttype,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver) = @_;      my ($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver) = @_;
     my $roletext='<tr bgcolor="'.$tbg.'">';      my $roletext='<tr bgcolor="'.$tbg.'">';
     my $is_dc=($trolecode =~ m/^dc\./);      my $is_dc=($trolecode =~ m/^dc\./);
     my $rowspan=($is_dc) ? ''      my $rowspan=($is_dc) ? ''
Line 817  sub build_roletext { Line 834  sub build_roletext {
                 $roletext.='<td'.$rowspan.'><a href="/adm/switchserver?'.                  $roletext.='<td'.$rowspan.'><a href="/adm/switchserver?'.
                 $switchserver.'">'.&mt('Switch Server').'</a></td>';                  $switchserver.'">'.&mt('Switch Server').'</a></td>';
             } else {              } else {
                 $roletext.=('<td>&nbsp;</td>');                  $roletext.=('<td'.$rowspan.'>&nbsp;</td>');
             }              }
         } elsif ($tstatus eq 'is') {          } elsif ($tstatus eq 'is') {
             $roletext.='<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'.              $roletext.='<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'.
Line 837  sub build_roletext { Line 854  sub build_roletext {
             $roletext.='<td'.$rowspan.'>&nbsp;</td>';              $roletext.='<td'.$rowspan.'>&nbsp;</td>';
         }          }
     }      }
     $tremark.=&Apache::lonannounce::showday(time,1,      if ($trolecode !~ m/^(dc|ca|au|aa)\./) {
                  &Apache::lonannounce::readcalendar($tdom.'_'.$trest));   $tremark.=&Apache::lonannounce::showday(time,1,
    &Apache::lonannounce::readcalendar($tdom.'_'.$trest));
       }
     $roletext.='<td><font color="'.$tfont.'">'.$trole.      $roletext.='<td><font color="'.$tfont.'">'.$trole.
        '</font></td><td><font color="'.$tfont.'">'.$twhere.         '</font></td><td><font color="'.$tfont.'">'.$twhere.
                '</font></td><td><font color="'.$tfont.'">'.$tpstart.                 '</font></td><td><font color="'.$tfont.'">'.$tpstart.
Line 888  sub check_fordc { Line 906  sub check_fordc {
 }  }
   
 sub courselink {  sub courselink {
     my ($dcdom,$rowtype) = @_;      my ($dcdom,$rowtype,$selecttype) = @_;
     my $courseform=&Apache::loncommon::selectcourse_link      my $courseform=&Apache::loncommon::selectcourse_link
                      ('rolechoice','dccourse'.$rowtype.'_'.$dcdom,'dcdomain'.$rowtype.'_'.$dcdom,'coursedesc'.$rowtype.'_'.$dcdom,$dcdom);                     ('rolechoice','dccourse'.$rowtype.'_'.$dcdom,
                       'dcdomain'.$rowtype.'_'.$dcdom,'coursedesc'.$rowtype.'_'.
                       $dcdom,$dcdom,undef,$selecttype);
     my $hiddenitems = '<input type="hidden" name="dcdomain'.$rowtype.'_'.$dcdom.'" value="'.$dcdom.'" />'.      my $hiddenitems = '<input type="hidden" name="dcdomain'.$rowtype.'_'.$dcdom.'" value="'.$dcdom.'" />'.
                       '<input type="hidden" name="origdom'.$rowtype.'_'.$dcdom.'" value="'.$dcdom.'" />'.                        '<input type="hidden" name="origdom'.$rowtype.'_'.$dcdom.'" value="'.$dcdom.'" />'.
                       '<input type="hidden" name="dccourse'.$rowtype.'_'.$dcdom.'" value="" />'.                        '<input type="hidden" name="dccourse'.$rowtype.'_'.$dcdom.'" value="" />'.
Line 969  sub display_cc_role { Line 989  sub display_cc_role {
         if ($rolekey =~ m-^user\.role.cc\./(\w+)/(\w+)$-) {          if ($rolekey =~ m-^user\.role.cc\./(\w+)/(\w+)$-) {
             my $tcourseid = $1.'_'.$2;              my $tcourseid = $1.'_'.$2;
             my $trolecode = 'cc./'.$1.'/'.$2;              my $trolecode = 'cc./'.$1.'/'.$2;
             my $trole = Apache::lonnet::plaintext('cc');  
             my $twhere;              my $twhere;
               my $ttype;
             my $tbg='#77FF77';              my $tbg='#77FF77';
             my $tfont='#003300';              my $tfont='#003300';
             my %newhash=&Apache::lonnet::coursedescription($tcourseid);              my %newhash=&Apache::lonnet::coursedescription($tcourseid);
Line 979  sub display_cc_role { Line 999  sub display_cc_role {
                         ' <font size="-2">'.                          ' <font size="-2">'.
                         &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$2,$1,$tfont).                          &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$2,$1,$tfont).
                         '</font>';                          '</font>';
                   $ttype = $newhash{'type'};
             } else {              } else {
                 $twhere=&mt('Currently not available');                  $twhere=&mt('Currently not available');
                 $env{'course.'.$tcourseid.'.description'}=$twhere;                  $env{'course.'.$tcourseid.'.description'}=$twhere;
             }              }
               my $trole = &Apache::lonnet::plaintext('cc',$ttype);
             $twhere.="<br />".&mt('Domain').":".$1;              $twhere.="<br />".&mt('Domain').":".$1;
             $roletext = &build_roletext($trolecode,$1,$2,'is',$tryagain,$advanced,'',$tbg,$tfont,$trole,&mt('Course'),$twhere,'','','',1,'');              $roletext = &build_roletext($trolecode,$1,$2,'is',$tryagain,$advanced,'',$tbg,$tfont,$trole,$twhere,'','','',1,'');
         }          }
     }      }
     return $roletext;      return ($roletext);
 }  }
   
 sub allcourses_row {  sub allcourses_row {
     my ($dcdom,$rowtype) = @_;      my ($dcdom,$rowtype) = @_;
     my $ccrole = Apache::lonnet::plaintext('cc');  
     my $selectlink = &courselink($dcdom,$rowtype);  
     my $output = '<tr bgcolor="#77FF77">'.      my $output = '<tr bgcolor="#77FF77">'.
  '<td colspan="5">'.                   ' <td colspan="5">';
  '<font color="#002200">'.$ccrole.'</font>'.      foreach my $type ('Course','Group') {
  ' <b>'.$selectlink.'</b>'.          my $selectlink = &courselink($dcdom,$rowtype,$type);
  ' from '.&mt('Domain').' '.$dcdom.          my $ccrole = &Apache::lonnet::plaintext('cc',$type);
  '<tr><td colspan="5" height="3"></td></tr>'."\n";          $output.= '<font color="#002200">'.$ccrole.'</font>'.
                 ' <b>'.$selectlink.'</b>'.
                 ' from '.&mt('Domain').' '.$dcdom.'<br />';
       }
       $output .= '</tr><tr><td colspan="5" height="3"></td></tr>'."\n";
     return $output;      return $output;
 }  }
   
Line 1013  sub set_privileges { Line 1037  sub set_privileges {
     my $area = '/'.$dcdom.'/'.$pickedcourse;      my $area = '/'.$dcdom.'/'.$pickedcourse;
     my $role = 'cc';      my $role = 'cc';
     my $spec = $role.'.'.$area;      my $spec = $role.'.'.$area;
     my $userroles = &Apache::lonnet::set_arearole($role,$area,'','',$dcdom,$env{'user.name'});      my %userroles = &Apache::lonnet::set_arearole($role,$area,'','',$dcdom,$env{'user.name'});
     my %ccrole = ();      my %ccrole = ();
     &Apache::lonnet::standard_roleprivs(\%ccrole,$role,$dcdom,$spec,$pickedcourse,$area);      &Apache::lonnet::standard_roleprivs(\%ccrole,$role,$dcdom,$spec,$pickedcourse,$area);
     my ($author,$adv)= &Apache::lonnet::set_userprivs(\$userroles,\%ccrole);      my ($author,$adv)= &Apache::lonnet::set_userprivs(\%userroles,\%ccrole);
     my @newprivs = split/\n/,$userroles;      &Apache::lonnet::appenv(%userroles);
     my %newccroles = ();  
     foreach (@newprivs) {  
         my ($key,$val) = split/=/,$_;  
         $newccroles{$key} = $val;  
     }  
     &Apache::lonnet::appenv(%newccroles);  
     &Apache::lonnet::log($env{'user.domain'},      &Apache::lonnet::log($env{'user.domain'},
                          $env{'user.name'},                           $env{'user.name'},
                          $env{'user.home'},                           $env{'user.home'},

Removed from v.1.150  
changed lines
  Added in v.1.166


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