Diff for /loncom/auth/lonroles.pm between versions 1.109 and 1.110

version 1.109, 2004/11/12 23:29:55 version 1.110, 2004/11/14 18:27:08
Line 84  sub handler { Line 84  sub handler {
     my $envkey;      my $envkey;
     my %dcroles = ();      my %dcroles = ();
     my $numdc = &check_fordc(\%dcroles,$then);      my $numdc = &check_fordc(\%dcroles,$then);
       my %recentroles;
       if ($numdc > 0) {
           %recentroles = &Apache::lonnet::dump(&recent_filename('roles'));
       }
   
 # ================================================================== Roles Init  # ================================================================== Roles Init
     if ($ENV{'form.selectrole'}) {      if ($ENV{'form.selectrole'}) {
Line 100  sub handler { Line 104  sub handler {
                                 "request.role.adv"    => $ENV{'user.adv'},                                  "request.role.adv"    => $ENV{'user.adv'},
  "request.role.domain" => $ENV{'user.domain'});   "request.role.domain" => $ENV{'user.domain'});
   
 # Check to see if the user is a DC trying to enter a course and needs privs to be created  # Check if user is a DC trying to enter a course and needs privs to be created
         if ($numdc > 0) {          if ($numdc > 0) {
             foreach my $envkey (keys %ENV) {              foreach my $envkey (keys %ENV) {
                 if ($envkey =~ m-^form\.cc\./(\w+)/(\w+)$-) {                  if ($envkey =~ m-^form\.cc\./(\w+)/(\w+)$-) {
                     if ($dcroles{$1}) {                      if ($dcroles{$1}) {
                         my $cckey = 'user.role.cc./'.$1.'/'.$2;                          my $cckey = 'user.role.cc./'.$1.'/'.$2;
                         if ($ENV{$cckey}) {                          &check_privs($cckey,$then,$now);
                             my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend,$tfont);  
                             &role_status($cckey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend);  
                             unless (($tstatus eq 'is') || ($tstatus eq 'will_not')) {  
                                 &set_privileges($1,$2);  
                             }  
                         } else {  
                             &set_privileges($1,$2);  
                         }  
                     }                      }
                     last;                      last;
                 }                  }
             }              }
         }          }
   
   # Check if user is a DC with courses in the recent list which need privs.
   #        if ($numdc > 0) {
   #            %recentroles = &Apache::lonnet::dump(&recent_filename('recent_roles'));
   #            foreach my $rolekey (keys %recentroles) {
   #                if ($rolekey =~ m-^user\.role.cc\./\w+/\w+$-) {
   #                    &check_privs($rolekey,$then,$now);
   #                }
   #            }
   #        }
   
         foreach $envkey (keys %ENV) {          foreach $envkey (keys %ENV) {
             next if ($envkey!~/^user\.role\./);              next if ($envkey!~/^user\.role\./);
             my ($where,$trolecode,$role,$tstatus,$tend,$tstart);              my ($where,$trolecode,$role,$tstatus,$tend,$tstart);
Line 268  ENDENTERKEY Line 274  ENDENTERKEY
                                 my $formaction = '/adm/roles/';                                  my $formaction = '/adm/roles/';
                                 my ($dcdom,$pickedcourse) = split/_/,$courseid;                                  my ($dcdom,$pickedcourse) = split/_/,$courseid;
                                 if ($ENV{'user.role.dc./'.$dcdom.'/'}) {                                  if ($ENV{'user.role.dc./'.$dcdom.'/'}) {
                                     &Apache::lonhtmlcommon::store_recent('recent_roles',                                      &Apache::lonhtmlcommon::store_recent('roles',
                                     $courseid,$formaction);                                      $envkey,$formaction);
                                 }                                  }
                             }                              }
                             #                              #
Line 551  ENDHEADER Line 557  ENDHEADER
                 }                  }
     
                 $roletext.='<tr bgcolor='.$tbg.'>';                  $roletext.='<tr bgcolor='.$tbg.'>';
                 unless ($nochoose) {                  $roletext.=&build_roletext($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$ttype,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver);
                     if (!$button) {  
  if ($switchserver) {  
     $roletext.='<td><a href="/adm/logout?handover='.  
                               $switchserver.'">'.&mt('Switch Server').'</a></td>';  
                         } else {  
                             $roletext.=('<td>&nbsp;</td>');  
                         }  
                     } elsif ($tstatus eq 'is') {  
                         $roletext.=('<td><input type=submit value="'.  
   &mt('Select').'" name="'.  
                                   $trolecode.'"></td>');  
                     } elsif ($tryagain) {  
                         $roletext.=  
     '<td><input type=submit value="'.  
   &mt('Try Selecting Again').'" name="'.$trolecode.'"></td>';  
                     } elsif ($advanced) {  
                         $roletext.=  
                             '<td><input type=submit value="'.  
         &mt('Re-Initialize').'" name="'.$trolecode.'"></td>';  
                     } else {  
                         $roletext.='<td>&nbsp;</td>';  
                     }  
                 }  
                 $tremark.=&Apache::lonannounce::showday(time,1,  
                          &Apache::lonannounce::readcalendar($tdom.'_'.$trest));  
                   
  $roletext.='<td><font color="'.$tfont.'">'.$trole.  
                       '</font></td><td><font color="'.$tfont.'">'.$ttype.  
                       '</font></td><td><font color="'.$tfont.'">'.$twhere.  
                       '</font></td><td><font color="'.$tfont.'">'.$tpstart.  
                       '</font></td><td><font color="'.$tfont.'">'.$tpend.  
                       '</font></td><td><font color="'.$tfont.'">'.$tremark.  
                       '&nbsp;</font></td></tr>'."\n";  
  $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 632  ENDHEADER Line 605  ENDHEADER
  if ($haverole) { $doheaders++; }   if ($haverole) { $doheaders++; }
     }      }
     if ($numdc > 0) {      if ($numdc > 0) {
         &select_recent_courses($r,\%roletext);          &display_recent_roles($r,\%roletext,\%recentroles);
     }      }
     foreach my $type ('Construction Space','Course','Domain','System') {      foreach my $type ('Construction Space','Course','Domain','System') {
  my $output;   my $output;
Line 768  sub role_status { Line 741  sub role_status {
     }      }
 }  }
   
   sub build_roletext {
       my ($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$ttype,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver) = @_;
       my $roletext='<tr bgcolor='.$tbg.'>';
       unless ($nochoose) {
           if (!$button) {
               if ($switchserver) {
                   $roletext.='<td><a href="/adm/logout?handover='.
                   $switchserver.'">'.&mt('Switch Server').'</a></td>';
               } else {
                   $roletext.=('<td>&nbsp;</td>');
               }
           } elsif ($tstatus eq 'is') {
               $roletext.=('<td><input type=submit value="'.
                           &mt('Select').'" name="'.
                           $trolecode.'"></td>');
           } elsif ($tryagain) {
               $roletext.=
                   '<td><input type=submit value="'.
                   &mt('Try Selecting Again').'" name="'.$trolecode.'"></td>';
           } elsif ($advanced) {
               $roletext.=
                   '<td><input type=submit value="'.
                   &mt('Re-Initialize').'" name="'.$trolecode.'"></td>';
           } else {
               $roletext.='<td>&nbsp;</td>';
           }
       }
       $tremark.=&Apache::lonannounce::showday(time,1,
                    &Apache::lonannounce::readcalendar($tdom.'_'.$trest));
   
   
       $roletext.='<td><font color="'.$tfont.'">'.$trole.
                  '</font></td><td><font color="'.$tfont.'">'.$ttype.
                  '</font></td><td><font color="'.$tfont.'">'.$twhere.
                  '</font></td><td><font color="'.$tfont.'">'.$tpstart.
                  '</font></td><td><font color="'.$tfont.'">'.$tpend.
                  '</font></td><td><font color="'.$tfont.'">'.$tremark.
                  '&nbsp;</font></td></tr>'."\n";
       return $roletext;
   }
   
   sub check_privs {
       my ($cckey,$then,$now) = @_;
       if ($ENV{$cckey}) {
           my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend,$tfont);
           &role_status($cckey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend);
           unless (($tstatus eq 'is') || ($tstatus eq 'will_not')) {
               &set_privileges($1,$2);
           }
       } else {
           &set_privileges($1,$2);
       }
   }
   
 sub check_fordc {  sub check_fordc {
     my ($dcroles,$then) = @_;      my ($dcroles,$then) = @_;
     my $numdc = 0;      my $numdc = 0;
Line 873  END Line 900  END
     return $process_pick;      return $process_pick;
 }  }
   
 sub select_recent_courses {  sub display_recent_roles {
     my ($r,$roletext)=@_;      my ($r,$roletext,$recentroles)=@_;
     my $advanced = $ENV{'user.adv'};      my $advanced = $ENV{'user.adv'};
     my $tryagain = $ENV{'form.tryagain'};      my $tryagain = $ENV{'form.tryagain'};
     my %recent=&Apache::lonnet::dump(&recent_filename('recent_roles'));  
     my $numrecent = 0;      my $numrecent = 0;
     my $roledisplay = '<tr bgcolor="#BBffBB">'.      my $roledisplay = '<tr bgcolor="#BBffBB">'.
                    '<td align="center" colspan="7">'.                     '<td align="center" colspan="7">'.
                    &mt('Recent courses accessed by DC').                     &mt('Recent courses accessed by DC').
                     '</td></tr>'."\n";                      '</td></tr>'."\n";
     foreach my $courseid (sort keys %recent) {      foreach my $rolekey (sort keys %{$recentroles}) {
         unless ($courseid =~/^error\:/) {          unless ($rolekey =~/^error\:/) {
             print STDERR "$courseid\n";              unless ($$roletext{$rolekey}) {
             my ($dom,$crs) = split/_/,$courseid;                  if ($rolekey =~ m-^user\.role.cc\./(\w+)/(\w+)$-) {
                       my $tcourseid = $1.'_'.$2;
                       my $trolecode = 'cc./'.$1.'/'.$2;
                       my $trole = Apache::lonnet::plaintext('cc');
                       my $twhere;
                       my $tbg='#77FF77';
                       my $tfont='#003300';
                       my %newhash=&Apache::lonnet::coursedescription($tcourseid);
                       if (%newhash) {
                           $twhere=$newhash{'description'}.
                                  ' <font size="-2">'.
                                  &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$2,$1,$tfont).
                                  '</font>';
                       } else {
                           $twhere=&mt('Currently not available');
                           $ENV{'course.'.$tcourseid.'.description'}=$twhere;
                       }
                       $twhere.="<br />".&mt('Domain').":".$1;
                       $$roletext{$rolekey} = &build_roletext($trolecode,$1,$2,'is',$tryagain,$advanced,'',$tbg,$tfont,$trole,&mt('Course'),$twhere,'','','',1,'');
                   }
               }
               $roledisplay.=$$roletext{$rolekey};
             $numrecent ++;              $numrecent ++;
             my $crskey = 'user.role.cc./'.$dom.'/'.$crs;  
             $roledisplay.=$$roletext{$crskey};  
         }          }
     }      }
     if ($numrecent > 0) {      if ($numrecent > 0) {

Removed from v.1.109  
changed lines
  Added in v.1.110


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