--- loncom/interface/lonrequestcourse.pm 2014/05/19 15:59:55 1.84 +++ loncom/interface/lonrequestcourse.pm 2015/05/21 23:40:09 1.87 @@ -1,7 +1,7 @@ # The LearningOnline Network # Request a course # -# $Id: lonrequestcourse.pm,v 1.84 2014/05/19 15:59:55 raeburn Exp $ +# $Id: lonrequestcourse.pm,v 1.87 2015/05/21 23:40:09 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -172,7 +172,7 @@ sub handler { if ($can_request{'textbook'}) { &process_textbook_request($r,$dom,$action,\%domdefs,\%domconfig,\%can_request); } else { - &textbook_request_disabled($r,$dom,\%can_request); + &textbook_request_disabled($r,$dom,$action,\%can_request); } } elsif ($action eq 'display') { my ($uname,$udom,$result,$warning) = &domcoord_display($dom); @@ -194,7 +194,7 @@ sub handler { if ($can_request{'textbook'}) { &print_textbook_form($r,$dom,\@incdoms,\%domdefs,$domconfig{'requestcourses'},\%can_request); } else { - &textbook_request_disabled($r,$dom,\%can_request); + &textbook_request_disabled($r,$dom,$action,\%can_request); } } return OK; @@ -476,27 +476,29 @@ sub get_breadcrumbs { } } } - for (my $i=0; $i<@{$states->{$action}}; $i++) { - if ($$state eq $states->{$action}[$i]) { - &Apache::lonhtmlcommon::add_breadcrumb( - {text=>"$trail->{$$state}"}); - $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests'); - last; - } else { - if (($$state eq 'process') || ($$state eq 'removal') || ($$state eq 'reqauthor')) { + if (ref($states->{$action}) eq 'ARRAY') { + for (my $i=0; $i<@{$states->{$action}}; $i++) { + if ($$state eq $states->{$action}[$i]) { &Apache::lonhtmlcommon::add_breadcrumb( - { href => '/adm/requestcourse', - text => "$trail->{$states->{$action}[$i]}", - } - ); + {text=>"$trail->{$$state}"}); + $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests'); + last; } else { - &Apache::lonhtmlcommon::add_breadcrumb( + if (($$state eq 'process') || ($$state eq 'removal') || ($$state eq 'reqauthor')) { + &Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/requestcourse', + text => "$trail->{$states->{$action}[$i]}", + } + ); + } else { + &Apache::lonhtmlcommon::add_breadcrumb( { href => "javascript:backPage(document.requestcrs,'$states->{$action}[$i]')", text => "$trail->{$states->{$action}[$i]}", } - ); - } - } - } + ); + } + } + } + } } else { &Apache::lonhtmlcommon::add_breadcrumb( {text=>'Pick Action'}); @@ -937,7 +939,8 @@ END if ($action eq 'new') { my $jsextra; if (($state eq 'courseinfo') || ($state eq 'codepick')) { - $jsextra = "\n".&Apache::loncommon::coursebrowser_javascript($dom); + $jsextra = "\n".&Apache::loncommon::coursebrowser_javascript($dom,'','','','','', + $newinstcode); } elsif ($state eq 'enrollment') { if (($env{'form.crstype'} eq 'official') && (&Apache::lonnet::auto_run('',$dom))) { @@ -2786,6 +2789,7 @@ sub print_review { my $enrollrow_title = &mt('Default Access Dates').'
'. '('.&Apache::lonnet::plaintext('st',$category).')'; + my $instcode; if ($env{'form.crstype'} eq 'official') { if ((ref($codetitles) eq 'ARRAY') && (ref($cat_titles) eq 'HASH')) { foreach my $title (@{$codetitles}) { @@ -2801,6 +2805,11 @@ sub print_review { } } } + if (ref($code_order) eq 'ARRAY') { + foreach my $item (@{$code_order}) { + $instcode .= $env{'form.instcode_'.$item}; + } + } $inst_headers .= ''.&mt('Credits').''; if ($instcredits) { $inst_values .= ''.$instcredits.''; @@ -2888,7 +2897,7 @@ sub print_review { ($env{'form.clonedom'} =~ /^$match_domain$/)) { my $canclone = &Apache::loncoursequeueadmin::can_clone_course($uname, $udom,$env{'form.clonecrs'},$env{'form.clonedom'}, - $env{'form.crstype'}); + $env{'form.crstype'},$dom,$instcode); if ($canclone) { my %courseenv = &Apache::lonnet::userenvironment($env{'form.clonedom'}, $env{'form.clonecrs'},('description','internal.coursecode')); @@ -3586,7 +3595,7 @@ sub print_request_outcome { my $canclone = &Apache::loncoursequeueadmin::can_clone_course($env{'user.name'}, $env{'user.domain'},$env{'form.clonecrs'},$env{'form.clonedom'}, - $crstype); + $crstype,$dom,$instcode); if ($canclone) { $clonecrs = $env{'form.clonecrs'}; $clonedom = $env{'form.clonedom'}; @@ -3668,6 +3677,11 @@ sub process_request { $dom,$crstype,$limit,\$message); } elsif ($val eq 'validate') { my ($inststatuslist,$validationchk,$validation,%custominfo); + if (ref($details) eq 'HASH') { + if ($details->{'clonecrs'}) { + $custominfo{'_LC_clonefrom'} = $details->{'clonedom'}.'_'.$details->{'clonecrs'}; + } + } if (@inststatuses > 0) { $inststatuslist = join(',',@inststatuses); } @@ -3760,6 +3774,11 @@ sub process_request { &mt('Your request is being processed; this page will update when processing is complete.'). ''); $r->rflush(); + if (ref($details) eq 'HASH') { + if ($details->{'clonecrs'}) { + $customitems{'_LC_clonefrom'} = $details->{'clonedom'}.'_'.$details->{'clonecrs'}; + } + } my ($result,$postprocess) = &Apache::loncoursequeueadmin::course_creation($dom,$cnum, 'autocreate',$details,\$logmsg,\$newusermsg,\$addresult, \$enrollcount,\$response,\$keysmsg,\%domdefs,\%longroles, @@ -4450,7 +4469,7 @@ sub print_textbook_form { my ($clonedom,$clonecrs) = split(/_/,$item); if (ref($prefab{$type}{$item}) eq 'HASH') { if (&Apache::loncoursequeueadmin::can_clone_course($env{'user.name'}, - $env{'user.domain'},$clonecrs,$clonedom,$crstype)) { + $env{'user.domain'},$clonecrs,$clonedom,$crstype,$dom)) { my $num = $prefab{$type}{$item}{'order'}; $ordered{$type}{$num} = $item; @@ -4792,7 +4811,7 @@ sub process_textbook_request { if (&Apache::lonnet::homeserver($clonecrs,$clonedom) ne 'no_host') { my $canclone = &Apache::loncoursequeueadmin::can_clone_course($env{'user.name'}, - $env{'user.domain'},$clonecrs,$clonedom,$crstype); + $env{'user.domain'},$clonecrs,$clonedom,$crstype,$dom); unless ($canclone) { undef($clonecrs); undef($clonedom); @@ -5014,6 +5033,33 @@ ENDSCRIPT } +sub textbook_request_disabled { + my ($r,$dom,$action,$can_request) = @_; + if (ref($can_request) eq 'HASH') { + if ($action eq 'process') { + unless ((scalar(keys(%{$can_request})) == 1)) { + &Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/requestcourse', + text => 'Pick action', + }); + } + } + } + $r->print(&header('Course Request')); + &Apache::lonhtmlcommon::add_breadcrumb({text=>'Course Request'}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests'). + '
'. + '

'.&mt('You do not have privileges to request creation of textbook courses.').'

'); + if (ref($can_request) eq 'HASH') { + if (scalar(keys(%{$can_request})) > 1) { + $r->print(''.&mt('Go back').''); + } + } + $r->print('
'. + &Apache::loncommon::end_page()); + return; +} + sub startContentScreen { my ($r,$mode)=@_; $r->print("\n".'