Diff for /loncom/auth/lonroles.pm between versions 1.200 and 1.204

version 1.200, 2008/07/08 20:16:16 version 1.204, 2008/08/22 17:46:52
Line 43  use Apache::lonpageflip(); Line 43  use Apache::lonpageflip();
 use Apache::lonnavdisplay();  use Apache::lonnavdisplay();
 use GDBM_File;  use GDBM_File;
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
   use HTML::Entities;
     
   
 sub redirect_user {  sub redirect_user {
Line 228  sub handler { Line 229  sub handler {
      $cdom,$cnum,       $cdom,$cnum,
                                                      $env{'user.domain'},                                                       $env{'user.domain'},
      $env{'user.name'},       $env{'user.name'},
       'Assigned from '.$ENV{'REMOTE_ADDR'}.' at '.localtime().' for '.                                                       &mt('Assigned from [_1] at [_2] for [_3]'
                                                      $trolecode);                                                          ,$ENV{'REMOTE_ADDR'}
                                                           ,&Apache::lonlocal::locallocaltime()
                                                           ,$trolecode)
                                                        );
  unless ($assignresult eq 'ok') {   unless ($assignresult eq 'ok') {
      $assignresult=~s/^error\:\s*//;       $assignresult=~s/^error\:\s*//;
      $message=&mt($assignresult).       $message=&mt($assignresult).
Line 335  ENDENTERKEY Line 339  ENDENTERKEY
  } elsif ($env{'request.course.id'}) {   } elsif ($env{'request.course.id'}) {
                                     if ($env{'form.destinationurl'}) {                                      if ($env{'form.destinationurl'}) {
                                         my $dest = $env{'form.destinationurl'};                                          my $dest = $env{'form.destinationurl'};
                                           if ($env{'form.destsymb'} ne '') {
                                               my $esc_symb = &HTML::Entities::encode($env{'form.destsymb'},'"<>&');
                                               $dest .= '?symb='.$esc_symb;
                                           }
                                         &redirect_user($r,&mt('Entering [_1]',                                          &redirect_user($r,&mt('Entering [_1]',
                                                       $env{'course.'.$courseid.'.description'}),                                                        $env{'course.'.$courseid.'.description'}),
                                                $dest,$msg,                                                 $dest,$msg,
Line 349  ENDENTERKEY Line 357  ENDENTERKEY
  ) {   ) {
  my $startpage = &courseloadpage($courseid);   my $startpage = &courseloadpage($courseid);
  unless ($startpage eq 'firstres') {            unless ($startpage eq 'firstres') {         
     $msg = &mt('Entering [_1] ....',      $msg = &mt('Entering [_1] ...',
        $env{'course.'.$courseid.'.description'});         $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,
Line 549  ENDHEADER Line 557  ENDHEADER
                     $countfuture ++;                      $countfuture ++;
                 } elsif ($tstatus eq 'will') {                  } elsif ($tstatus eq 'will') {
                     $tbg='#FFAA77';                      $tbg='#FFAA77';
                     $tremark.=&mt('Active at next login. ');                      $tremark.=&mt('Active at next login.').' ';
                     $roles_nextlogin{$trolecode} = $tstart.':'.$tend;                      $roles_nextlogin{$trolecode} = $tstart.':'.$tend;
                     $countwill ++;                      $countwill ++;
                 } elsif ($tstatus eq 'expired') {                  } elsif ($tstatus eq 'expired') {
Line 558  ENDHEADER Line 566  ENDHEADER
                     $button=0;                      $button=0;
                 } elsif ($tstatus eq 'will_not') {                  } elsif ($tstatus eq 'will_not') {
                     $tbg='#AAFF77';                      $tbg='#AAFF77';
                     $tremark.=&mt('Expired after logout. ');                      $tremark.=&mt('Expired after logout.').' ';
                 } elsif ($tstatus eq 'selected') {                  } elsif ($tstatus eq 'selected') {
                     $tbg='#11CC55';                      $tbg='#11CC55';
                     $tfont='#002200';                      $tfont='#002200';
     $inrole=1;      $inrole=1;
     $countactive++;      $countactive++;
                     $tremark.=&mt('Currently selected. ');                      $tremark.=&mt('Currently selected.').' ';
                 }                  }
                 my $trole;                  my $trole;
                 if ($role =~ /^cr\//) {                  if ($role =~ /^cr\//) {
                     my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role);                      my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role);
     if ($tremark) { $tremark.='<br />'; }      if ($tremark) { $tremark.='<br />'; }
                     $tremark.=&mt('Defined by ').$rauthor.                      $tremark.=&mt('Defined by [_1] at [_2].',$rauthor,$rdomain);
  &mt(' at ').$rdomain.'.';  
  }   }
  $trole=Apache::lonnet::plaintext($role);   $trole=Apache::lonnet::plaintext($role);
                 my $ttype;                  my $ttype;
Line 675  ENDHEADER Line 682  ENDHEADER
     } else {      } else {
         if ($countactive > 0) {          if ($countactive > 0) {
             my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');              my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');
             $r->print('<p>'.&mt('[_1]Visit the [_2]Course Catalog[_3] to view all [_4] LON-CAPA courses.','<b>','<a href="/adm/coursecatalog">','</a></b>',$domdesc).'<br />'.&mt('If a course is [_1]not[_2] in your list of current courses below, you may be able to enroll if self-enrollment is permitted.','<b>','</b>').'</p>');              my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); 
               $r->print('<p>'.&mt('[_1]Visit the [_2]Course Catalog[_3] to view all [_4] LON-CAPA courses.','<b>','<a href="/adm/coursecatalog?showdom='.$esc_dom.'">','</a></b>',$domdesc).'<br />'.&mt('If a course is [_1]not[_2] in your list of current courses below, you may be able to enroll if self-enrollment is permitted.','<b>','</b>').'</p>');
         }          }
     }      }
   
Line 698  ENDHEADER Line 706  ENDHEADER
             my $tfont='#003300';              my $tfont='#003300';
             if ($env{'request.role'} eq 'cm') {              if ($env{'request.role'} eq 'cm') {
                 $r->print('<tr bgcolor="#11CC55">');                  $r->print('<tr bgcolor="#11CC55">');
                 $tremark=&mt('Currently selected. ');                  $tremark=&mt('Currently selected.').' ';
                 $tfont='#002200';                  $tfont='#002200';
             } else {              } else {
                 $r->print('<tr bgcolor="#77FF77">');                  $r->print('<tr bgcolor="#77FF77">');
Line 712  ENDHEADER Line 720  ENDHEADER
         $r->print(&Apache::loncommon::end_page());          $r->print(&Apache::loncommon::end_page());
  return OK;   return OK;
 # Is there only one choice?  # Is there only one choice?
     } elsif (($countactive==1) && ($env{'request.role'} eq 'cm')) {      } elsif ($countactive==1) {
  $r->print('<h3>'.&mt('Please stand by.').'</h3>'.          my $needs_switchserver;
     '<input type="hidden" name="'.$possiblerole.'" value="1" />'.          if ($env{'user.author'}) {
               $needs_switchserver = &check_needs_switchserver($possiblerole);
           }
           if ((!$needs_switchserver) && ($env{'request.role'} eq 'cm')) {
       $r->print('<h3>'.&mt('Please stand by.').'</h3>'.
           '<input type="hidden" name="'.$possiblerole.'" value="1" />'.
             '<noscript><br /><input type="submit" name="submit" value="'.&mt('Continue').'" /></noscript>');              '<noscript><br /><input type="submit" name="submit" value="'.&mt('Continue').'" /></noscript>');
  $r->print("</form>\n");      $r->print("</form>\n");
  $r->rflush();      $r->rflush();
  $r->print('<script type="text/javascript">document.forms.rolechoice.submit();</script>');      $r->print('<script type="text/javascript">document.forms.rolechoice.submit();</script>');
  $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
  return OK;      return OK;
           }
           if ($needs_switchserver) {
               $r->print("<h2>".&mt('Server Switch Required')."</h2>\n".
                         &mt('Construction Space access is only available from '.
                             'the home server of the corresponding Author.').'<br />'.
                         &mt("Click the 'Switch Server' link to go there.").'<br />');   
           }
     }      }
 # More than one possible role  # More than one possible role
 # ----------------------------------------------------------------------- Table  # ----------------------------------------------------------------------- Table
     unless ((!&Apache::lonmenu::show_course()) || ($nochoose)) {      unless ((!&Apache::lonmenu::show_course()) || ($nochoose) || ($countactive==1)) {
  $r->print("<h2>".&mt('Select a Course to Enter')."</h2>\n");   $r->print("<h2>".&mt('Select a Course to Enter')."</h2>\n");
     }      }
     my $doheaders = &roletable_headers($r,\%roleclass,\%sortrole,$nochoose);      my $doheaders = &roletable_headers($r,\%roleclass,\%sortrole,$nochoose);
Line 759  ENDHEADER Line 779  ENDHEADER
                   &Apache::loncommon::authorbrowser_javascript());                    &Apache::loncommon::authorbrowser_javascript());
     }      }
     &print_rolerows($r,$doheaders,\%roleclass,\%sortrole,\%dcroles,\%roletext);      &print_rolerows($r,$doheaders,\%roleclass,\%sortrole,\%dcroles,\%roletext);
     my $tremark='';      if ($countactive > 1) {
     my $tfont='#003300';          my $tremark='';
     if ($env{'request.role'} eq 'cm') {          my $tfont='#003300';
  $r->print('<tr bgcolor="#11CC55">');          if ($env{'request.role'} eq 'cm') {
         $tremark=&mt('Currently selected. ');      $r->print('<tr bgcolor="#11CC55">');
         $tfont='#002200';              $tremark=&mt('Currently selected.').' ';
     } else {              $tfont='#002200';
         $r->print('<tr bgcolor="#77FF77">');          } else {
     }              $r->print('<tr bgcolor="#77FF77">');
     unless ($nochoose) {          }
  if ($env{'request.role'} ne 'cm') {          unless ($nochoose) {
     $r->print('<td><input type="submit" value="'.      if ($env{'request.role'} ne 'cm') {
       &mt('Select').'" name="cm" /></td>');          $r->print('<td><input type="submit" value="'.
  } else {            &mt('Select').'" name="cm" /></td>');
     $r->print('<td>&nbsp;</td>');      } else {
  }          $r->print('<td>&nbsp;</td>');
     }      }
     $r->print('<td colspan="3"><font color="'.$tfont.'"><span class="LC_rolesinfo">'.&mt('No role specified').          }
       '</span></font></td><td><font color="'.$tfont.'">'.$tremark.          $r->print('<td colspan="3"><font color="'.$tfont.'"><span class="LC_rolesinfo">'.&mt('No role specified').
       '&nbsp;</font></td></tr>'."\n");                    '</span></font></td><td><font color="'.$tfont.'">'.$tremark.
                     '&nbsp;</font></td></tr>'."\n");
       } 
     $r->print('</table>');      $r->print('</table>');
     unless ($nochoose) {      unless ($nochoose) {
  $r->print("</form>\n");   $r->print("</form>\n");
Line 791  ENDHEADER Line 812  ENDHEADER
     }      }
     $r->print(&Apache::lonnet::getannounce());      $r->print(&Apache::lonnet::getannounce());
     if ($advanced) {      if ($advanced) {
           my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&');
  $r->print('<p><small><i>'   $r->print('<p><small><i>'
                  .&mt('This is LON-CAPA [_1]',$r->dir_config('lonVersion'))                   .&mt('This is LON-CAPA [_1]',$r->dir_config('lonVersion'))
  .'</i><br />'   .'</i><br />'
  .'<a href="/adm/logout">'.&mt('Logout').'</a>&nbsp;&nbsp;'   .'<a href="/adm/logout">'.&mt('Logout').'</a>&nbsp;&nbsp;'
                  .'<a href="/adm/coursecatalog">'.&mt('Course Catalog')                   .'<a href="/adm/coursecatalog?showdom='.$esc_dom.'">'
                    .&mt('Course Catalog')
                  .'</small></p>');                   .'</small></p>');
     }      }
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
Line 866  sub print_rolerows { Line 889  sub print_rolerows {
 sub findcourse_advice {  sub findcourse_advice {
     my ($r) = @_;      my ($r) = @_;
     my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');      my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');
       my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&');
     if (&Apache::lonnet::auto_run(undef,$env{'user.domain'})) {      if (&Apache::lonnet::auto_run(undef,$env{'user.domain'})) {
         $r->print(&mt('If you were expecting to see an active role listed for a particular course in the [_1] domain, it may be missing for one of the following reasons:',$domdesc).'          $r->print(&mt('If you were expecting to see an active role listed for a particular course in the [_1] domain, it may be missing for one of the following reasons:',$domdesc).'
 <ul>  <ul>
Line 878  sub findcourse_advice { Line 902  sub findcourse_advice {
     } else {      } else {
         $r->print(&mt('If you were expecting to see an active role listed for a particular course, that course may not have been created yet.').'<br />');          $r->print(&mt('If you were expecting to see an active role listed for a particular course, that course may not have been created yet.').'<br />');
     }      }
     $r->print('<p>'.&mt('The [_1]Course Catalog[_2] provides information about all [_3] classes for which LON-CAPA courses have been created.','<a href="/adm/coursecatalog">','</a>',$domdesc).'<br />');      $r->print('<p>'.&mt('The [_1]Course Catalog[_2] provides information about all [_3] classes for which LON-CAPA courses have been created.','<a href="/adm/coursecatalog?showdom='.$esc_dom.'">','</a>',$domdesc).'<br />');
     $r->print(&mt('You can search the course catalog for courses which permit self-enrollment, if you would like to enroll in a course.').'</p>');      $r->print(&mt('You can search the course catalog for courses which permit self-enrollment, if you would like to enroll in a course.').'</p>');
     return;      return;
 }  }
Line 918  sub privileges_info { Line 942  sub privileges_info {
     $ttype='System';      $ttype='System';
     $twhere='/';      $twhere='/';
  }   }
  $output .= "\n<h3>".$ttype.': '.$twhere.'</h3>'."\n<ul>";   $output .= "\n<h3>".&mt($ttype).': '.$twhere.'</h3>'."\n<ul>";
  foreach my $priv (sort(split(/:/,$env{$envkey}))) {   foreach my $priv (sort(split(/:/,$env{$envkey}))) {
     next if (!$priv);      next if (!$priv);
   
Line 1014  sub build_roletext { Line 1038  sub build_roletext {
     return $roletext;      return $roletext;
 }  }
   
   sub check_needs_switchserver {
       my ($possiblerole) = @_;
       my $needs_switchserver;
       my ($role,$where) = split(/\./,$possiblerole,2);
       my (undef,$tdom,$twho) = split(/\//,$where);
       my ($server_status,$home);
       if (($role eq 'ca') || ($role eq 'aa')) {
           ($server_status,$home) = &check_author_homeserver($twho,$tdom);
       } else {
           ($server_status,$home) = &check_author_homeserver($env{'user.name'},
                                                             $env{'user.domain'});
       }
       if ($server_status eq 'switchserver') {
           $needs_switchserver = 1;
       }
       return $needs_switchserver;
   }
   
 sub check_author_homeserver {  sub check_author_homeserver {
     my ($uname,$udom)=@_;      my ($uname,$udom)=@_;
     if (($uname eq '') || ($udom eq '')) {      if (($uname eq '') || ($udom eq '')) {
Line 1069  sub check_fordc { Line 1111  sub check_fordc {
 sub adhoc_course_role {  sub adhoc_course_role {
     my ($then) = @_;       my ($then) = @_; 
     my ($cdom,$cnum);      my ($cdom,$cnum);
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};      $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};      $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
     if (&check_forcc($cdom,$cnum,$then)) {      if (&check_forcc($cdom,$cnum,$then)) {
         my $setprivs;          my $setprivs;
         if (!defined($env{'user.role.'.$env{'form.switchrole'}})) {          if (!defined($env{'user.role.'.$env{'form.switchrole'}})) {

Removed from v.1.200  
changed lines
  Added in v.1.204


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