--- loncom/interface/lonrequestcourse.pm 2013/12/27 14:34:52 1.72 +++ loncom/interface/lonrequestcourse.pm 2014/04/09 10:50:07 1.77 @@ -1,7 +1,7 @@ # The LearningOnline Network # Request a course # -# $Id: lonrequestcourse.pm,v 1.72 2013/12/27 14:34:52 raeburn Exp $ +# $Id: lonrequestcourse.pm,v 1.77 2014/04/09 10:50:07 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -128,7 +128,7 @@ sub handler { } &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, - ['action','showdom','cnum','state','crstype','queue']); + ['action','showdom','cnum','state','crstype','queue','tabs']); &Apache::lonhtmlcommon::clear_breadcrumbs(); my $dom = &get_course_dom(); my $action = $env{'form.action'}; @@ -155,16 +155,31 @@ sub handler { } if ($canreq) { - if ((scalar(keys(%can_request)) == 1) && ($can_request{'textbook'})) { + if (($env{'form.crstype'} eq 'textbook') || + (scalar(keys(%can_request)) == 1) && ($can_request{'textbook'})) { my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses'],$dom); if ($action eq 'log') { + my $usetabs; + if ((scalar(keys(%can_request)) == 1) && ($can_request{'textbook'})) { + $usetabs = 1; + } elsif ($env{'form.tabs'} eq 'on') { + $usetabs = 1; + } &Apache::lonhtmlcommon::add_breadcrumb({text=>'Course Request'}); my $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests'); - &print_request_logs($r,$dom,undef,undef,$crumb); + &print_request_logs($r,$dom,undef,undef,$crumb,$usetabs); } elsif ($action eq 'process') { - &process_textbook_request($r,$dom,$action,\%domdefs,\%domconfig); + if ($can_request{'textbook'}) { + &process_textbook_request($r,$dom,$action,\%domdefs,\%domconfig,\%can_request); + } else { + &textbook_request_disabled($r,$dom,\%can_request); + } } else { - &print_textbook_form($r,$dom,\@incdoms,\%domdefs,$domconfig{'requestcourses'}); + if ($can_request{'textbook'}) { + &print_textbook_form($r,$dom,\@incdoms,\%domdefs,$domconfig{'requestcourses'},\%can_request); + } else { + &textbook_request_disabled($r,$dom,\%can_request); + } } return OK; } @@ -195,7 +210,7 @@ sub handler { my @invalidcrosslist; my %trail = ( - crstype => 'Request Action', + crstype => 'Pick Action', codepick => 'Category', courseinfo => 'Description', enrollment => 'Access Dates', @@ -382,7 +397,7 @@ function setPage(formname) { } ENDJS - &print_request_logs($r,$dom,$jscript,$loaditems,$crumb); + &print_request_logs($r,$dom,$jscript,$loaditems,$crumb,\%can_request); } } else { &print_main_menu($r,\%can_request,\%states,$dom,$jscript,'',$crumb,\@incdoms); @@ -802,7 +817,7 @@ END return true; } END - my ($pagetitle,$pageinfo,$domaintitle); + my ($pagetitle,$pageinfo,$domaintitle,$earlyout); if (ref($can_request) eq 'HASH') { if (($can_request->{'official'}) || ($can_request->{'unofficial'}) || $can_request->{'textbook'}) { if ($can_request->{'community'}) { @@ -818,15 +833,24 @@ END $pagetitle = 'Community Requests'; $pageinfo = &mt('Request creation of a new course, or review your pending requests.'); $domaintitle = &mt('Community Domain'); - } else { + } elsif ((ref($incdoms) eq 'ARRAY') && ((@{$incdoms} > 1) || + ((@{$incdoms} == 1) && ($incdoms->[0] ne $dom)))) { $pagetitle = 'Course/Community Requests'; $pageinfo = &mt('You do not have rights to request creation of courses in this domain; please choose a different domain.'); $domaintitle = &mt('Course/Community Domain'); + } else { + $pagetitle = 'Course/Community Requests'; + $pageinfo = &mt('You do not have rights to request creation of courses or communities.'); + $earlyout = 1; } } $r->print(&header($pagetitle,$js.$jscript,$loaditems).$crumb. - '
'.$pageinfo.'
'. - ''.$pageinfo.'
'); + if ($earlyout) { + $r->print(&Apache::loncommon::end_page()); + return; + } + $r->print(''.&mt('Your course request has been processed and the course has been created.');
}
- if ($code) {
+ if (($code) || ((ref($postprocess) eq 'HASH') &&
+ (($postprocess->{'createdweb'}) || ($postprocess->{'createdmsg'})))) {
$output .= ¬ification_information($disposition,$env{'user.name'}.':'.$env{'user.domain'},
- $cnum,$now,$code);
+ $dom,$cnum,$now,$code,$postprocess);
+ }
+ if ($code) {
+ $reqhash{'code'} = $code;
}
$output .= '
'.$role_result.'
'.&mt('Your course request has been updated').'
'; } - $output .= ¬ification_information($disposition,$req_notifylist,$cnum,$now); + $output .= ¬ification_information($disposition,$req_notifylist,$dom,$cnum,$now); + if ($disposition eq 'approval') { + 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'}, + $env{'user.domain'},$fullname,$env{'form.cdescr'}); + if ((ref($postprocess) eq 'HASH') && + ((ref($postprocess->{'queuedmsg'}) eq 'HASH') || ($postprocess->{'queuedweb'}))) { + ¬ification_information($disposition,undef,$dom,$cnum,$now,undef,$postprocess); + } + } } if ($validationerror ne '') { $output .= ''.&mt('An error occurred validating your request with institutional data sources: [_1].',$validationerror).'
'; @@ -3840,7 +3954,7 @@ sub update_requestors_roles { } sub notification_information { - my ($disposition,$req_notifylist,$cnum,$now,$code) = @_; + my ($disposition,$req_notifylist,$dom,$cnum,$now,$code,$postprocess) = @_; my %emails = &Apache::loncommon::getemails(); my $address; if (($emails{'permanentemail'} ne '') || ($emails{'notification'} ne '')) { @@ -3858,9 +3972,34 @@ sub notification_information { } if ($req_notifylist) { my $fullname = &Apache::loncommon::plainname($env{'user.name'}, - $env{'user.domain'}); + $env{'user.domain'}); 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); + &Apache::loncoursequeueadmin::send_selfserve_notification($req_notifylist,"$fullname ($env{'user.name'}:$env{'user.domain'})", + 'undef',$env{'form.cdescr'},$now,'coursereq',$sender); + } + if (ref($postprocess) eq 'HASH') { + if (ref($postprocess->{'queuedmsg'}) eq 'ARRAY') { + if (scalar(@{$postprocess->{'queuedmsg'}}) > 0) { + my $recipient = $env{'user.name'}.':'.$env{'user.domain'}; + my $sender = $recipient; + my $addmsg = []; + foreach my $item (@{$postprocess->{'queuedmsg'}}) { + if (ref($item) eq 'HASH') { + if ($item->{'mt'} ne '') { + push(@{$addmsg},$item); + } + } + } + if (scalar(@{$addmsg}) > 0) { + &Apache::loncoursequeueadmin::send_selfserve_notification($recipient,$addmsg,undef, + $env{'form.cdescr'},$now, + 'queuedcrsreq',$sender); + } + } + } + if ($postprocess->{'queuedweb'}) { + $output .= $postprocess->{'queuedweb'}; + } } } elsif ($disposition eq 'pending') { $output .= ''.
- &mt('Students can automatically select your course by entering this code: [_1].',''.$code.'').
- '
'.
- &mt('A message has been sent to your LON-CAPA account with this information.');
- if ($address ne '') {
- $output.= '
'.&mt('And an e-mail has also been sent to: [_1] with this code.',$address);
- }
- $output .= '
'.
+ &mt('Students can automatically select your course by entering this code: [_1].',''.$code.'').
+ '
'.
+ &mt('A message has been sent to your LON-CAPA account with this information.');
+ if ($address ne '') {
+ $output.= '
'.&mt('An e-mail has also been sent to: [_1] with this code.',$address);
+ }
+ $output .= '
'.&mt('Create another course').'
'); } + &endContentScreen($r); $r->print(&Apache::loncommon::end_page()); } @@ -4600,6 +4799,20 @@ function validTextbookReq() { ENDSCRIPT } + +sub startContentScreen { + my ($r,$mode)=@_; + $r->print("\n".'