Diff for /loncom/auth/lonroles.pm between versions 1.157 and 1.176

version 1.157, 2006/06/07 20:52:16 version 1.176, 2007/03/02 23:17:48
Line 40  use Apache::lonhtmlcommon; Line 40  use Apache::lonhtmlcommon;
 use Apache::lonannounce;  use Apache::lonannounce;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonpageflip();  use Apache::lonpageflip();
   use Apache::lonnavdisplay();
 use GDBM_File;  use GDBM_File;
 use LONCAPA;  use LONCAPA qw(:DEFAULT :match);
     
   
 sub redirect_user {  sub redirect_user {
Line 53  sub redirect_user { Line 54  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 125  sub handler { Line 126  sub handler {
         if ($numdc > 0) {          if ($numdc > 0) {
             foreach my $envkey (keys %env) {              foreach my $envkey (keys %env) {
                 if (my ($domain,$coursenum) =                  if (my ($domain,$coursenum) =
                                     ($envkey =~ m-^form\.cc\./(\w+)/(\w+)$-)) {      ($envkey =~ m-^form\.cc\./($match_domain)/($match_courseid)$-)) {
                     if ($dcroles{$domain}) {                      if ($dcroles{$domain}) {
                         &check_privs($domain,$coursenum,$then,$now);                          &check_privs($domain,$coursenum,$then,$now);
                     }                      }
Line 149  sub handler { Line 150  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 162  sub handler { Line 165  sub handler {
  my $authnum=$cnum;   my $authnum=$cnum;
  if ($env{'course.'.$cdom.'_'.$cnum.'.keyauth'}) {   if ($env{'course.'.$cdom.'_'.$cnum.'.keyauth'}) {
     ($authnum,$authdom)=      ($authnum,$authdom)=
  split(/\W/,$env{'course.'.$cdom.'_'.$cnum.'.keyauth'});   split(/:/,$env{'course.'.$cdom.'_'.$cnum.'.keyauth'});
  }   }
 # check with key authority  # check with key authority
  unless (&Apache::lonnet::validate_access_key(   unless (&Apache::lonnet::validate_access_key(
Line 264  ENDENTERKEY Line 267  ENDENTERKEY
     }      }
     return OK;      return OK;
  } else {   } else {
                             my $type = 'Course/Group';  
     if (!$env{'request.course.id'}) {      if (!$env{'request.course.id'}) {
  $type = &Apache::loncommon::course_type();  
  &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><span class="LC_error">'.      '<h1><span class="LC_error">'.
     &mt('Could not initialize '.lc($type).' at this time.').      &mt('Could not initialize [_1] at this time.',
    $env{'course.'.$cdom.'_'.$cnum.'.description'}).
     '</span></h1><h3>'.&mt('Please try again.').'</h3>'.$ferr;      '</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; }
Line 301  ENDENTERKEY Line 303  ENDENTERKEY
  ) {   ) {
  my $startpage = &courseloadpage($courseid);   my $startpage = &courseloadpage($courseid);
  unless ($startpage eq 'firstres') {            unless ($startpage eq 'firstres') {         
     $msg = &mt('Entering '.lc($type).' ....');      $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 310  ENDENTERKEY Line 313  ENDENTERKEY
     }      }
  }   }
 # Are we allowed to look at the first resource?  # Are we allowed to look at the first resource?
  if (!&Apache::lonnet::allowed('bre',$furl)) {   if ($furl !~ m|^/adm/|) {
 # Guess not ...  # Guess not ...
     $furl=&Apache::lonpageflip::first_accessible_resource();      $furl=&Apache::lonpageflip::first_accessible_resource();
  }   }
                                 $msg = &mt('Entering '.lc($type).' ...');                                  $msg = &mt('Entering [_1] ...',
  &redirect_user($r,&mt('Entering '.$type),     $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 360  ENDENTERKEY Line 365  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 402  ENDHEADER Line 407  ENDHEADER
 # --------------------------------------------------------------- Error Header?  # --------------------------------------------------------------- Error Header?
     if ($error) {      if ($error) {
  $r->print("<h1>LON-CAPA Access Control</h1>");   $r->print("<h1>LON-CAPA Access Control</h1>");
         $r->print("<!-- LONCAPAACCESSCONTROLERRORSCREEN --><hr /><pre>Access  : ".   $r->print("<!-- LONCAPAACCESSCONTROLERRORSCREEN --><hr /><pre>");
                   Apache::lonnet::plaintext($priv)."\n");   if ($priv ne '') {
         $r->print("Resource: ".&Apache::lonenc::check_encrypt($fn)."\n");      $r->print("Access  : ".&Apache::lonnet::plaintext($priv)."\n");
         $r->print("Action  : $msg\n</pre><hr />");   }
    if ($fn ne '') {
       $r->print("Resource: ".&Apache::lonenc::check_encrypt($fn)."\n");
    }
    if ($msg ne '') {
       $r->print("Action  : $msg\n");
    }
    $r->print("</pre><hr />");
  my $url=$fn;   my $url=$fn;
  my $last;   my $last;
  if (tie(my %hash,'GDBM_File',$env{'request.course.fn'}.'_symb.db',   if (tie(my %hash,'GDBM_File',$env{'request.course.fn'}.'_symb.db',
Line 433  ENDHEADER Line 445  ENDHEADER
     } else {      } else {
         if ($advanced) {          if ($advanced) {
     $r->print(&mt("Your home server is ").      $r->print(&mt("Your home server is ").
       $Apache::lonnet::hostname{&Apache::lonnet::homeserver        &Apache::lonnet::hostname(&Apache::lonnet::homeserver
                       ($env{'user.name'},$env{'user.domain'})}.                        ($env{'user.name'},$env{'user.domain'})).
       "<br />\n");        "<br />\n");
     $r->print(&mt(      $r->print(&mt(
       "Author and Co-Author roles are not available on servers other than their respective home servers."));        "Author and Co-Author roles are not available on servers other than their respective home servers."));
Line 481  ENDHEADER Line 493  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 514  ENDHEADER Line 529  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 533  ENDHEADER Line 546  ENDHEADER
                         $switchserver='otherserver='.$home.'&role='.$trolecode;                          $switchserver='otherserver='.$home.'&role='.$trolecode;
                     }                      }
                     #next if ($home eq 'no_host');                      #next if ($home eq 'no_host');
                     $home = $Apache::lonnet::hostname{$home};                      $home = &Apache::lonnet::hostname($home);
                     $ttype='Construction Space';                      $ttype='Construction Space';
                     $twhere=&mt('User').': '.$trest.'<br />'.&mt('Domain').                      $twhere=&mt('User').': '.$trest.'<br />'.&mt('Domain').
  ': '.$tdom.'<br />'.   ': '.$tdom.'<br />'.
Line 553  ENDHEADER Line 566  ENDHEADER
                         $switchserver='otherserver='.$home.'&role='.$trolecode;                          $switchserver='otherserver='.$home.'&role='.$trolecode;
                     }                      }
                     #next if ($home eq 'no_host');                      #next if ($home eq 'no_host');
                     $home = $Apache::lonnet::hostname{$home};                      $home = &Apache::lonnet::hostname($home);
                     $ttype='Construction Space';                      $ttype='Construction Space';
                     $twhere=&mt('Domain').': '.$tdom.'<br />'.&mt('Server').                      $twhere=&mt('Domain').': '.$tdom.'<br />'.&mt('Server').
  ':&nbsp;'.$home;   ':&nbsp;'.$home;
Line 591  ENDHEADER Line 604  ENDHEADER
                         }                          }
                     }                      }
                     if ($tsection) {                      if ($tsection) {
                         $twhere.='<br />'.&mt('Section/Group').': '.$tsection;                          $twhere.='<br />'.&mt('Section').': '.$tsection;
     }      }
     if ($role ne 'st') { $twhere.="<br />".&mt('Domain').":".$tdom; }      if ($role ne 'st') { $twhere.="<br />".&mt('Domain').":".$tdom; }
                 } elsif ($tdom) {                  } elsif ($tdom) {
Line 633  ENDHEADER Line 646  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/Group to Enter')."</h2>\n");   $r->print("<h2>".&mt('Select a Course 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','Group','Unavailable','System') {      foreach my $type ('Domain','Construction Space','Course','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 657  ENDHEADER Line 670  ENDHEADER
  foreach (sort(keys(%recent_roles))) {   foreach (sort(keys(%recent_roles))) {
     if (defined($roletext{'user.role.'.$_})) {      if (defined($roletext{'user.role.'.$_})) {
  $output.=$roletext{'user.role.'.$_};   $output.=$roletext{'user.role.'.$_};
                 if ($_ =~ m-dc\./(\w+)/- && $dcroles{$1}) {                  if ($_ =~ m-dc\./($match_domain)/- 
       && $dcroles{$1}) {
     $output .= &allcourses_row($1,'recent');      $output .= &allcourses_row($1,'recent');
                 }                  }
     } elsif ($numdc > 0) {      } elsif ($numdc > 0) {
Line 679  ENDHEADER Line 693  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','Group','Unavailable','System') {      foreach my $type ('Construction Space','Domain','Course','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/) { 
  $output.=$roletext{$sortrole{$which}};   $output.=$roletext{$sortrole{$which}};
                 if ($sortrole{$which} =~ m-dc\./(\w+)/-) {                  if ($sortrole{$which} =~ m-dc\./($match_domain)/-) {
                     if ($dcroles{$1}) {                      if ($dcroles{$1}) {
                         $output .= &allcourses_row($1,'');                          $output .= &allcourses_row($1,'');
                     }                      }
Line 727  ENDHEADER Line 741  ENDHEADER
 # ------------------------------------------------------------ Privileges Info  # ------------------------------------------------------------ Privileges Info
     if (($advanced) && (($env{'user.error.msg'}) || ($error))) {      if (($advanced) && (($env{'user.error.msg'}) || ($error))) {
  $r->print('<hr /><h2>Current Privileges</h2>');   $r->print('<hr /><h2>Current Privileges</h2>');
    $r->print(&privileges_info());
  foreach $envkey (sort keys %env) {  
     if ($envkey=~/^user\.priv\.$env{'request.role'}\./) {  
  my $where=$envkey;  
  $where=~s/^user\.priv\.$env{'request.role'}\.//;  
  my $ttype;  
  my $twhere;  
  my ($tdom,$trest,$tsec)=  
     split(/\//,Apache::lonnet::declutter($where));  
  if ($trest) {  
     if ($env{'course.'.$tdom.'_'.$trest.'.description'} eq 'ca') {  
  $ttype='Construction Space';  
  $twhere='User: '.$trest.', Domain: '.$tdom;  
     } else {  
  $ttype=   
     &Apache::loncommon::course_type($tdom.'_'.$trest);  
  $twhere=$env{'course.'.$tdom.'_'.$trest.'.description'};  
  if ($tsec) {  
     $twhere.=' (Section: '.$tsec.')';  
  }  
     }  
  } elsif ($tdom) {  
     $ttype='Domain';  
     $twhere=$tdom;  
  } else {  
     $ttype='System';  
     $twhere='/';  
  }  
  $r->print("\n<h3>".$ttype.': '.$twhere.'</h3><ul>');  
  foreach (sort split(/:/,$env{$envkey})) {  
     if ($_) {  
  my ($prv,$restr)=split(/\&/,$_);  
  my $trestr='';  
  if ($restr ne 'F') {  
     my $i;  
     $trestr.=' (';  
     for ($i=0;$i<length($restr);$i++) {  
  $trestr.=  
        Apache::lonnet::plaintext(substr($restr,$i,1));  
  if ($i<length($restr)-1) { $trestr.=', '; }  
     }  
     $trestr.=')';  
  }  
  $r->print('<li>'.  
   Apache::lonnet::plaintext($prv).$trestr.  
   '</li>');  
     }  
  }  
  $r->print('</ul>');  
     }  
  }  
     }      }
     $r->print(&Apache::lonnet::getannounce());      $r->print(&Apache::lonnet::getannounce());
     if ($advanced) {      if ($advanced) {
Line 789  ENDHEADER Line 753  ENDHEADER
     return OK;      return OK;
 }  }
   
   sub privileges_info {
       my ($which) = @_;
       my $output;
   
       $which ||= $env{'request.role'};
   
       foreach my $envkey (sort(keys(%env))) {
    next if ($envkey!~/^user\.priv\.\Q$which\E\.(.*)/);
   
    my $where=$1;
    my $ttype;
    my $twhere;
    my (undef,$tdom,$trest,$tsec)=split(m{/},$where);
    if ($trest) {
       if ($env{'course.'.$tdom.'_'.$trest.'.description'} eq 'ca') {
    $ttype='Construction Space';
    $twhere='User: '.$trest.', Domain: '.$tdom;
       } else {
    $ttype= &Apache::loncommon::course_type($tdom.'_'.$trest);
    $twhere=$env{'course.'.$tdom.'_'.$trest.'.description'};
    if ($tsec) {
       my $sec_type = 'Section';
       if (exists($env{"user.role.gr.$where"})) {
    $sec_type = 'Group';
       }
       $twhere.=' ('.$sec_type.': '.$tsec.')';
    }
       }
    } elsif ($tdom) {
       $ttype='Domain';
       $twhere=$tdom;
    } else {
       $ttype='System';
       $twhere='/';
    }
    $output .= "\n<h3>".$ttype.': '.$twhere.'</h3>'."\n<ul>";
    foreach my $priv (sort(split(/:/,$env{$envkey}))) {
       next if (!$priv);
   
       my ($prv,$restr)=split(/\&/,$priv);
       my $trestr='';
       if ($restr ne 'F') {
    $trestr.=' ('.
       join(', ',
    map { &Apache::lonnet::plaintext($_) } 
        (split('',$restr))).') ';
       }
       $output .= "\n\t".
    '<li>'.&Apache::lonnet::plaintext($prv).$trestr.'</li>';
    }
    $output .= "\n".'</ul>';
       }
       return $output;
   }
   
 sub role_status {  sub role_status {
     my ($rolekey,$then,$now,$role,$where,$trolecode,$tstatus,$tstart,$tend) = @_;      my ($rolekey,$then,$now,$role,$where,$trolecode,$tstatus,$tstart,$tend) = @_;
     my @pwhere = ();      my @pwhere = ();
Line 829  sub build_roletext { Line 848  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 849  sub build_roletext { Line 868  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 883  sub check_fordc { Line 903  sub check_fordc {
     my $numdc = 0;      my $numdc = 0;
     if ($env{'user.adv'}) {      if ($env{'user.adv'}) {
         foreach my $envkey (sort keys %env) {          foreach my $envkey (sort keys %env) {
             if ($envkey=~/^user\.role\.dc\.\/(\w+)\/$/) {              if ($envkey=~/^user\.role\.dc\.\/($match_domain)\/$/) {
                 my $dcdom = $1;                  my $dcdom = $1;
                 my $livedc = 1;                  my $livedc = 1;
                 my ($tstart,$tend)=split(/\./,$env{$envkey});                  my ($tstart,$tend)=split(/\./,$env{$envkey});
Line 904  sub courselink { Line 924  sub courselink {
     my $courseform=&Apache::loncommon::selectcourse_link      my $courseform=&Apache::loncommon::selectcourse_link
                    ('rolechoice','dccourse'.$rowtype.'_'.$dcdom,                     ('rolechoice','dccourse'.$rowtype.'_'.$dcdom,
                     'dcdomain'.$rowtype.'_'.$dcdom,'coursedesc'.$rowtype.'_'.                      'dcdomain'.$rowtype.'_'.$dcdom,'coursedesc'.$rowtype.'_'.
                     $dcdom,$dcdom,undef,$selecttype);                      $dcdom,$dcdom,undef);
     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 980  sub display_cc_role { Line 1000  sub display_cc_role {
     my $advanced = $env{'user.adv'};      my $advanced = $env{'user.adv'};
     my $tryagain = $env{'form.tryagain'};      my $tryagain = $env{'form.tryagain'};
     unless ($rolekey =~/^error\:/) {      unless ($rolekey =~/^error\:/) {
         if ($rolekey =~ m-^user\.role.cc\./(\w+)/(\w+)$-) {          if ($rolekey =~ m-^user\.role.cc\./($match_domain)/($match_courseid)$-) {
             my $tcourseid = $1.'_'.$2;              my $tcourseid = $1.'_'.$2;
             my $trolecode = 'cc./'.$1.'/'.$2;              my $trolecode = 'cc./'.$1.'/'.$2;
             my $twhere;              my $twhere;
Line 1010  sub allcourses_row { Line 1030  sub allcourses_row {
     my ($dcdom,$rowtype) = @_;      my ($dcdom,$rowtype) = @_;
     my $output = '<tr bgcolor="#77FF77">'.      my $output = '<tr bgcolor="#77FF77">'.
                  ' <td colspan="5">';                   ' <td colspan="5">';
     foreach my $type ('Course','Group') {      my $selectlink = &courselink($dcdom,$rowtype);
         my $selectlink = &courselink($dcdom,$rowtype,$type);      my $ccrole = &Apache::lonnet::plaintext('cc');
         my $ccrole = &Apache::lonnet::plaintext('cc',$type);      $output.= '<font color="#002200">'.$ccrole.'</font>'.
         $output.= '<font color="#002200">'.$ccrole.'</font>'.  
               ' <b>'.$selectlink.'</b>'.                ' <b>'.$selectlink.'</b>'.
               ' from '.&mt('Domain').' '.$dcdom.'<br />';                ' from '.&mt('Domain').' '.$dcdom.'<br />';
     }  
     $output .= '</tr><tr><td colspan="5" height="3"></td></tr>'."\n";      $output .= '</tr><tr><td colspan="5" height="3"></td></tr>'."\n";
     return $output;      return $output;
 }  }
Line 1031  sub set_privileges { Line 1049  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,'','',
     $env{'user.domain'},
     $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);

Removed from v.1.157  
changed lines
  Added in v.1.176


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