--- loncom/interface/lonrequestcourse.pm 2014/01/05 10:55:35 1.75 +++ loncom/interface/lonrequestcourse.pm 2014/05/09 15:02:31 1.81 @@ -1,7 +1,7 @@ # The LearningOnline Network # Request a course # -# $Id: lonrequestcourse.pm,v 1.75 2014/01/05 10:55:35 raeburn Exp $ +# $Id: lonrequestcourse.pm,v 1.81 2014/05/09 15:02:31 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1526,7 +1526,8 @@ sub print_request_form { &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles, \%cat_order,\@code_order); } - my ($storeresult,$result) = &print_request_outcome($dom,\@codetitles, + my $lonhost = $r->dir_config('lonHostID'); + my ($storeresult,$result) = &print_request_outcome($lonhost,$dom,\@codetitles, \@code_order,$instcredits); $r->print($result); if (($storeresult eq 'ok') || ($storeresult eq 'created')) { @@ -1549,7 +1550,7 @@ sub print_request_form { if ($result eq 'created') { my $role = 'au'; my $spec = "$role./$env{'form.showdom'}/"; - push(@links,&mt('Enter your authoring space with role: [_1]', + push(@links,&mt('Enter your Authoring Space with role: [_1]', ''. &Apache::lonnet::plaintext($role).'')); } @@ -1624,12 +1625,12 @@ sub print_request_form { sub print_author_prompt { my ($r,$action,$cnum,$showdom,$crstype,$storeresult) = @_; - $r->print('
'.
&mt('Although assessment items can be created directly inside a course, such items only use part of the assessment capabilities of LON-CAPA.').
'
'.
- &mt('By contrast, items created in authoring space, then imported into a course, can use all of the features of the assessment engine.').'
'.&mt('Request authoring space access now?'). + &mt('By contrast, items created in Authoring Space, then imported into a course, can use all of the features of the assessment engine.').'
'. + ''.&mt('Request Authoring Space access now?').
' '.
''.
(' 'x2).
@@ -3335,7 +3336,7 @@ sub display_navbuttons {
}
sub print_request_outcome {
- my ($dom,$codetitles,$code_order,$instcredits) = @_;
+ my ($lonhost,$dom,$codetitles,$code_order,$instcredits) = @_;
my ($output,$cnum,$now,$req_notifylist,$crstype,$enrollstart,$enrollend,
%sections,%crosslistings,%personnel,@baduname,@missingdom,%domconfig,
$uniquecode);
@@ -3580,13 +3581,14 @@ sub print_request_outcome {
accessend => $accessend,
personnel => \%personnel,
};
- my ($result,$output) = &process_request($dom,$cnum,$crstype,$now,$details,$instcode,
+ my ($result,$output) = &process_request($lonhost,$dom,$cnum,$crstype,$now,$details,$instcode,
$req_notifylist,\@instsections,\%domconfig);
return ($result,$output);
}
sub process_request {
- my ($dom,$cnum,$crstype,$now,$details,$instcode,$req_notifylist,$instsections,$domconfig) = @_;
+ my ($lonhost,$dom,$cnum,$crstype,$now,$details,$instcode,$req_notifylist,$instsections,
+ $domconfig) = @_;
my (@inststatuses,$storeresult,$creationresult,$output);
my $val =
&Apache::loncoursequeueadmin::get_processtype('course',$env{'user.name'},
@@ -3606,7 +3608,7 @@ sub process_request {
}
$storeresult = 'notpermitted';
} else {
- my ($disposition,$message,$reqstatus);
+ my ($disposition,$message,$reqstatus,$coursedesc);
my %reqhash = (
reqtime => $now,
crstype => $crstype,
@@ -3614,6 +3616,11 @@ sub process_request {
);
my $requestkey = $dom.'_'.$cnum;
my $validationerror;
+ my $fullname = &Apache::loncommon::plainname($env{'user.name'},
+ $env{'user.domain'});
+ if (ref($details) eq 'HASH') {
+ $coursedesc = $details->{'cdescr'};
+ }
if ($val eq 'autolimit=') {
$disposition = 'process';
} elsif ($val =~ /^autolimit=(\d+)$/) {
@@ -3621,7 +3628,7 @@ sub process_request {
$disposition = &check_autolimit($env{'user.name'},$env{'user.domain'},
$dom,$crstype,$limit,\$message);
} elsif ($val eq 'validate') {
- my ($inststatuslist,$validationchk,$validation);
+ my ($inststatuslist,$validationchk,$validation,%custominfo);
if (@inststatuses > 0) {
$inststatuslist = join(',',@inststatuses);
}
@@ -3631,10 +3638,27 @@ sub process_request {
$instseclist = join(',',@{$instsections});
}
}
+ my $preprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,'prevalidate',$env{'user.name'},
+ $env{'user.domain'},$fullname,$coursedesc);
+ if (ref($preprocess) eq 'HASH') {
+ if (ref($preprocess->{'formitems'}) eq 'HASH') {
+ foreach my $key (keys(%{$preprocess->{'formitems'}})) {
+ if ($preprocess->{'formitems'}->{$key} eq 'multiple') {
+ if (exists($env{'form.'.$key})) {
+ @{$custominfo{$key}} = &Apache::loncommon::get_env_multiple($env{'form.'.$key});
+ }
+ } else {
+ if (exists($env{'form.'.$key})) {
+ $custominfo{$key} = $env{'form.'.$key};
+ }
+ }
+ }
+ }
+ }
$validationchk =
&Apache::lonnet::auto_courserequest_validation($dom,
$env{'user.name'}.':'.$env{'user.domain'},$crstype,
- $inststatuslist,$instcode,$instseclist);
+ $inststatuslist,$instcode,$instseclist,\%custominfo);
if ($validationchk =~ /:/) {
($validation,$message) = split(':',$validationchk);
} else {
@@ -3651,13 +3675,8 @@ sub process_request {
}
$reqhash{'disposition'} = $disposition;
$reqstatus = $disposition;
- my ($modified,$queued,$coursedesc,%customitems);
+ my ($modified,$queued,$coursedesc,$token,%customitems);
unless ($disposition eq 'rejected') {
- if (ref($details) eq 'HASH') {
- $coursedesc = $details->{'cdescr'};
- }
- my $fullname = &Apache::loncommon::plainname($env{'user.name'},
- $env{'user.domain'});
my $inprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,'process',$env{'user.name'},
$env{'user.domain'},$fullname,$coursedesc);
if (ref($inprocess) eq 'HASH') {
@@ -3720,6 +3739,14 @@ sub process_request {
if ($code) {
$reqhash{'code'} = $code;
}
+ if (ref($postprocess) eq 'HASH') {
+ if (ref($postprocess->{'createdactions'}) eq 'HASH') {
+ if (ref($postprocess->{'createdactions'}{'environment'}) eq 'HASH') {
+ &Apache::loncoursequeueadmin::postprocess_crsenv($dom,$cnum,
+ $postprocess->{'createdactions'}{'environment'});
+ }
+ }
+ }
$output .= '
'.$role_result.'
'.&mt('Your community request has been updated').'
'; - } else { - $output .= ''.&mt('Your course request has been updated').'
'; - } - $output .= ¬ification_information($disposition,$req_notifylist,$dom,$cnum,$now); - if ($disposition eq 'approval') { + if ($storeresult eq 'ok') { + my $postprocess; + if (($disposition eq 'approval') || ($disposition eq 'pending')) { + my $updateaction = $disposition; + if ($disposition eq 'approval') { + $updateaction = 'queued'; + } my $fullname = &Apache::loncommon::plainname($env{'user.name'}, $env{'user.domain'}); - my $postprocess = - &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,'queued',$env{'user.name'}, + $postprocess = + &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,$updateaction,$env{'user.name'}, $env{'user.domain'},$fullname,$env{'form.cdescr'}); + } + if ($modified && $queued) { + if ($crstype eq 'community') { + $output .= ''.&mt('Your community request has been updated').'
'; + } else { + $output .= ''.&mt('Your course request has been updated').'
'; + } + if ($disposition eq 'approval') { + $output .= ¬ification_information($disposition,$req_notifylist,$dom,$cnum,$now); + } + } + if ($disposition eq 'approval') { if ((ref($postprocess) eq 'HASH') && ((ref($postprocess->{'queuedmsg'}) eq 'HASH') || ($postprocess->{'queuedweb'}))) { - my $recipient = $env{'user.name'}.':'.$env{'user.domain'}; - $output .= ¬ification_information($disposition,$recipient,$dom,$cnum,$now,undef,$postprocess); + ¬ification_information($disposition,undef,$dom,$cnum,$now,undef,$postprocess); + } + } elsif ($disposition eq 'pending') { + my $pendingform; + if ($crstype ne 'official') { + $pendingform = &pending_validation_form($dom,$cnum,$crstype,$now,$token, + $lonhost,$env{'form.cdescr'}); + } + if ($pendingform) { + $output .= $pendingform; + } else { + $output .= ¬ification_information($disposition,undef,$dom,$cnum,$now,undef,$postprocess); } } } @@ -3994,7 +4055,7 @@ sub notification_information { if (scalar(@{$addmsg}) > 0) { &Apache::loncoursequeueadmin::send_selfserve_notification($recipient,$addmsg,undef, $env{'form.cdescr'},$now, - 'queuedreq',$sender); + 'queuedcrsreq',$sender); } } } @@ -4003,11 +4064,20 @@ sub notification_information { } } } elsif ($disposition eq 'pending') { - $output .= '