Diff for /loncom/interface/lonrequestcourse.pm between versions 1.27 and 1.28

version 1.27, 2009/08/31 14:57:06 version 1.28, 2009/09/05 20:24:15
Line 102  described at http://www.lon-capa.org. Line 102  described at http://www.lon-capa.org.
   
 =item check_autolimit()  =item check_autolimit()
   
 =item build_batchcreatehash()  
   
 =item retrieve_settings()  =item retrieve_settings()
   
 =item get_request_settings()  =item get_request_settings()
Line 1264  sub print_personnel_menu { Line 1262  sub print_personnel_menu {
         $type = 'Community';          $type = 'Community';
     }      }
     foreach my $role (@roles) {      foreach my $role (@roles) {
         my $plrole=&Apache::lonnet::plaintext($role,$type);          my $plrole = &Apache::lonnet::plaintext($role,$type);
         $roleoptions .= '  <option value="'.$role.'">'.$plrole.'</option>'."\n";          $roleoptions .= '  <option value="'.$role.'">'.$plrole.'</option>'."\n";
     }      }
     my %customroles=&Apache::lonuserutils::my_custom_roles();      my %customroles=&Apache::lonuserutils::my_custom_roles();
     if (keys(%customroles) > 0) {      if (keys(%customroles) > 0) {
         foreach my $cust (sort(keys(%customroles))) {          foreach my $cust (sort(keys(%customroles))) {
             my $custrole='cr_cr_'.$env{'user.domain'}.              my $custrole="cr/$env{'user.domain'}/$env{'user.name'}/$cust";
                     '_'.$env{'user.name'}.'_'.$cust;  
             $roleoptions .= '  <option value="'.$custrole.'">'.$cust.'</option>'."\n";              $roleoptions .= '  <option value="'.$custrole.'">'.$cust.'</option>'."\n";
         }          }
     }      }
Line 1778  sub print_review { Line 1775  sub print_review {
             if ($env{'form.person_'.$i.'_role'} eq 'cc') {              if ($env{'form.person_'.$i.'_role'} eq 'cc') {
                 $showsec = &mt('None');                  $showsec = &mt('None');
             }              }
               my $role = $env{'form.person_'.$i.'_role'}; 
             $personnel_values .=               $personnel_values .= 
                 '<tr><td>'.$env{'form.person_'.$i.'_firstname'}.' '.                  '<tr><td>'.$env{'form.person_'.$i.'_firstname'}.' '.
                 $env{'form.person_'.$i.'_lastname'}.'</td>'.                  $env{'form.person_'.$i.'_lastname'}.'</td>'.
                 '<td>'.$env{'form.person_'.$i.'_uname'}.':'.                  '<td>'.$env{'form.person_'.$i.'_uname'}.':'.
                 $env{'form.person_'.$i.'_dom'}.'</td>'.                  $env{'form.person_'.$i.'_dom'}.'</td>'.
                 '<td>'.&Apache::lonnet::plaintext($env{'form.person_'.$i.'_role'},                  '<td>'.&Apache::lonnet::plaintext($role,$container).'</td>'.
                                                   $container).'</td>'.  
                 '<td>'.$showsec.'</td></tr>';                  '<td>'.$showsec.'</td></tr>';
         }          }
     }      }
Line 2324  sub print_request_outcome { Line 2321  sub print_request_outcome {
             if ($result eq 'created') {              if ($result eq 'created') {
                 $disposition = 'created';                  $disposition = 'created';
                 $reqstatus = 'created';                  $reqstatus = 'created';
                 $output = &mt('Your course request has been processed and the course has been created.').                  my $role_result = &update_requestors_roles($dom,$cnum,$crstype,$details,
                           '<br />'.                                                             \%longroles);
                           &mt('You will need to logout and log-in again to be able to select a role in the course.');                  $output = '<p>'.&mt('Your course request has been processed and the course has been created.').
                             '<br />'.$role_result.'</p>';
                 $creationresult = 'created';                  $creationresult = 'created';
             } else {              } else {
                 $output = '<span class="LC_error">'.                  $output = '<span class="LC_error">'.
Line 2393  sub print_request_outcome { Line 2391  sub print_request_outcome {
             $output .=  '<span class="LC_warning">'.&mt('An error occurred saving a record of the details of your request: [_1].',$storeresult).'</span><br />';              $output .=  '<span class="LC_warning">'.&mt('An error occurred saving a record of the details of your request: [_1].',$storeresult).'</span><br />';
             &Apache::lonnet::logthis("Error saving course request - $requestkey for $env{'user.name'}:$env{'user.domain'} - $storeresult");              &Apache::lonnet::logthis("Error saving course request - $requestkey for $env{'user.name'}:$env{'user.domain'} - $storeresult");
         } elsif ($statusresult ne 'ok') {          } elsif ($statusresult ne 'ok') {
              $output .=  '<span class="LC_warning">'.&mt('An error occurred saving a record of the status of your request: [_1].',$statusresult).'</span><br />';              $output .= '<span class="LC_warning">'.&mt('An error occurred saving a record of the status of your request: [_1].',$statusresult).'</span><br />';
             &Apache::lonnet::logthis("Error saving course request status for  $requestkey (for $env{'user.name'}:$env{'user.domain'}) - $statusresult");              &Apache::lonnet::logthis("Error saving course request status for  $requestkey (for $env{'user.name'}:$env{'user.domain'}) - $statusresult");
         }          }
         if ($modified && $queued && $storeresult eq 'ok') {          if ($modified && $queued && $storeresult eq 'ok') {
Line 2411  sub print_request_outcome { Line 2409  sub print_request_outcome {
     }      }
 }  }
   
   sub update_requestors_roles {
       my ($dom,$cnum,$crstype,$details,$longroles) = @_;
       my $now = time;
       my ($active,$future,$numactive,$numfuture,$output);
       my $owner = $env{'user.name'}.':'.$env{'user.domain'};
       if (ref($details) eq 'HASH') {
           if (ref($details->{'personnel'}) eq 'HASH') {
               if (ref($details->{'personnel'}{$owner}) eq 'HASH') {
                   my @roles;
                   if (ref($details->{'personnel'}{$owner}{'roles'}) eq 'ARRAY') {
                       @roles = sort(@{$details->{'personnel'}{$owner}{'roles'}});
                       unless (grep(/^cc$/,@roles)) {
                           push(@roles,'cc');
                       }
                   } else {
                       @roles = ('cc');
                   }
                   foreach my $role (@roles) {
                       my $start = $now;
                       my $end = '0';
                       if ($role eq 'st') {
                           if ($details->{'accessstart'} ne '') {
                               $start = $details->{'accessstart'};
                           }
                           if ($details->{'accessend'} ne '') {
                               $end = $details->{'accessend'};
                           }
                       }
                       my @usecs;
                       if ($role ne 'cc') {
                           if (ref($details->{'personnel'}{$owner}{$role}{'usec'}) eq 'ARRAY') {
                               @usecs = @{$details->{'personnel'}{$owner}{$role}{'usec'}};
                           }
                       } 
                       if ($role eq 'st') {
                           if (@usecs > 1) {
                               my $firstsec = $usecs[0];
                               @usecs = ($firstsec);
                           }
                       }
                       if (@usecs == 0) {
                           push(@usecs,'');
                       }
                       foreach my $usec (@usecs) {
                           my (%userroles,%newrole,%newgroups,$spec,$area);
                           my $area = '/'.$dom.'/'.$cnum;
                           my $spec = $role.'.'.$area;
                           if ($usec ne '') {
                              $spec .= '/'.$usec;
                              $area .= '/'.$usec;
                           }
                           if ($role =~ /^cr\//) {
                               &Apache::lonnet::custom_roleprivs(\%newrole,$role,$dom,
                                                                 $cnum,$spec,$area);
                           } else {
                               &Apache::lonnet::standard_roleprivs(\%newrole,$role,$dom,
                                                                   $spec,$cnum,$area);
                           }
                           &Apache::lonnet::set_userprivs(\%userroles,\%newrole,
                                                          \%newgroups);
                           $userroles{'user.role.'.$spec} = $start.'.'.$end;
                           &Apache::lonnet::appenv(\%userroles,[$role,'cm']);
                           if (($end == 0) || ($end > $now)) {
                               my $showrole = $role;
                               if ($role =~ /^cr\//) {
                                   $showrole = &Apache::lonnet::plaintext($role,$crstype);
                               } elsif (ref($longroles) eq 'HASH') {
                                   if ($longroles->{$role} ne '') {
                                       $showrole = $longroles->{$role};
                                   }
                               }
                               if ($start <= $now) {
                                   $active .= '<li><a href="/adm/roles?selectrole=1&'.                                             $spec.'=1">'.$showrole;
                                   if ($usec ne '') {
                                       $active .= ' - '.&mt('section:').' '.$usec; 
                                   }
                                   $active .= '</a></li>';
                                   $numactive ++;
                               } else { 
                                   $future .= '<li>'.$showrole;
                                   if ($usec ne '') {
                                       $future .= ' - '.&mt('section:').' '.$usec;
                                   }
                                   $future .= '</li>';
                                   $numfuture ++;
                               }
                           }
                       }
                   }
               }
           }
       }
       if ($active) {
           if ($numactive == 1) {
               $output = &mt('Use the following link to enter the course:'); 
           } else {
               $output = &mt('Use the following links to your new roles to enter the course:');
           }
           $output .= ' <ul>'.$active.'</ul><br />';
       }
       if ($future) {
           $output .= &mt('The following course [quant,_1,role] will become available for selection from your [_2]roles page[_3], once the default student access start date - [_4] - has been reached:',$numfuture,'<a href="/adm/roles">','</a>',&Apache::lonlocal::locallocaltime($details->{'accessstart'})).
                      ' <ul>'.$future.'</ul>';
       }
       return $output;
   }
   
 sub notification_information {  sub notification_information {
     my ($disposition,$req_notifylist,$cnum,$now) = @_;      my ($disposition,$req_notifylist,$cnum,$now) = @_;
     my %emails = &Apache::loncommon::getemails();      my %emails = &Apache::loncommon::getemails();

Removed from v.1.27  
changed lines
  Added in v.1.28


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