--- loncom/interface/lonrequestcourse.pm 2009/08/18 01:41:37 1.16 +++ loncom/interface/lonrequestcourse.pm 2009/08/18 20:06:51 1.17 @@ -1,7 +1,7 @@ # The LearningOnline Network # Request a course # -# $Id: lonrequestcourse.pm,v 1.16 2009/08/18 01:41:37 raeburn Exp $ +# $Id: lonrequestcourse.pm,v 1.17 2009/08/18 20:06:51 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -775,7 +775,7 @@ sub print_request_form { } if ($instcode ne '') { $code_chk = &Apache::lonnet::auto_validate_instcode('',$dom,$instcode); - if ($code_chk eq 'ok') { + if ($code_chk eq 'valid') { $message = '
'. &mt('The chosen course category [_1] is valid.',''. $instcode.'').'
'; @@ -1808,6 +1808,7 @@ sub print_request_outcome { } $now = time; $crstype = $env{'form.crstype'}; + my @instsections; if ($crstype eq 'official') { if (&Apache::lonnet::auto_run('',$dom)) { ($enrollstart,$enrollend)=&dates_from_form('enrollstart','enrollend'); @@ -1815,7 +1816,11 @@ sub print_request_outcome { for (my $i=0; $i<$env{'form.sectotal'}; $i++) { if ($env{'form.sec_'.$i}) { if ($env{'form.secnum_'.$i} ne '') { - $sections{$i}{'inst'} = $env{'form.secnum_'.$i}; + my $sec = $env{'form.secnum_'.$i}; + $sections{$i}{'inst'} = $sec; + if (($sec ne '') && (!grep(/^\Q$sec\E$/,@instsections))) { + push(@instsections,$sec); + } $sections{$i}{'loncapa'} = $env{'form.loncapasec_'.$i}; } } @@ -1973,6 +1978,7 @@ sub print_request_outcome { details => $details, ); my $requestkey = $dom.'_'.$cnum; + my $validationerror; if ($val eq 'autolimit=') { $disposition = 'process'; } elsif ($val =~ /^autolimit=(\d+)$/) { @@ -1980,9 +1986,32 @@ sub print_request_outcome { $disposition = &check_autolimit($env{'user.name'},$env{'user.domain'}, $dom,$crstype,$limit,\$message); } elsif ($val eq 'validate') { - $disposition = - &Apache::lonnet::auto_courserequest_validation($dom,$details, - \@inststatuses,\$message); + my $inststatuslist; + if (@inststatuses > 0) { + $inststatuslist = join(',',@inststatuses); + } + my $instseclist; + if (@instsections > 0) { + $instseclist = join(',',@instsections); + } + my $validation = + &Apache::lonnet::auto_validate_instcode('',$dom,$instcode, + $env{'user.name'}.':'.$env{'user.domain'},$inststatuslist, + $instseclist); + if ($validation eq 'valid') { + $disposition = 'process'; + } elsif ($validation eq 'rejected') { + $disposition = 'rejected'; + } elsif ($validation eq 'pending') { + $disposition = 'pending'; + } elsif ($disposition eq 'approval') { + $disposition = 'approval'; + } elsif ($disposition =~ /^error(.*)$/) { + $disposition = 'approval'; + $validationerror = $1; + } else { + $disposition = 'approval'; + } } else { $disposition = 'approval'; } @@ -2035,13 +2064,13 @@ sub print_request_outcome { my $statuskey = 'status:'.$dom.':'.$cnum; my %userreqhash = &Apache::lonnet::get('courserequests',[$statuskey], $env{'user.domain'},$env{'user.name'}); - if (exists($userreqhash{$statuskey})) { + if ($userreqhash{$statuskey} ne '') { $modified = 1; my %queuehash = &Apache::lonnet::get_dom('courserequestqueue', [$cnum.'_approval', $cnum.'_pending'],$dom); - if ((exists($queuehash{$cnum.'_approval'})) || - (exists($queuehash{$cnum.'_pending'}))) { + if (($queuehash{$cnum.'_approval'} ne '') || + ($queuehash{$cnum.'_pending'} ne '')) { $queued = 1; } } @@ -2084,6 +2113,9 @@ sub print_request_outcome { $output .= '

'.&mt('Your course request has been updated').'

'. ¬ification_information($disposition,$req_notifylist,$cnum,$now); } + if ($validationerror ne '') { + $output .= ''.&mt('An error occurred validating your request with institutional data sources: {_1].',$validationerror).'

'; + } } return $output; } @@ -2111,12 +2143,16 @@ sub notification_information { my $sender = $env{'user.name'}.':'.$env{'user.domain'}; &Apache::loncoursequeueadmin::send_selfserve_notification($req_notifylist,"$fullname ($env{'user.name'}:$env{'user.domain'})",$cnum,$env{'form.cdescr'},$now,'coursereq',$sender); } - } else { + } elsif ($disposition eq 'pending') { $output .= '
'. &mt('Your request has been placed in a queue pending administrative action.').'
'. &mt("Usually this means that your institution's information systems do not list you among the instructional personnel for this course.").'
'. &mt('The list of instructional personnel for the course will be automatically checked daily, and once you are listed the request will be processed.'). '
'; + } else { + $output .= '
'. + &mt('Your request status is: [_1].',$disposition). + '
' } return $output; }