--- loncom/interface/lonrequestcourse.pm 2009/08/16 19:16:16 1.14 +++ loncom/interface/lonrequestcourse.pm 2009/08/17 04:39:15 1.15 @@ -1,7 +1,7 @@ # The LearningOnline Network # Request a course # -# $Id: lonrequestcourse.pm,v 1.14 2009/08/16 19:16:16 raeburn Exp $ +# $Id: lonrequestcourse.pm,v 1.15 2009/08/17 04:39:15 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -689,13 +689,13 @@ sub print_request_form { $r->print('
'.&Apache::lonhtmlcommon::start_pick_box().$codepicker. &Apache::lonhtmlcommon::end_pick_box().'
'); } else { - $r->print(&courseinfo_form($dom,$formname,$crstype)); + $r->print(&courseinfo_form($dom,$formname,$crstype,$next)); } } else { - $r->print(&courseinfo_form($dom,$formname,$crstype)); + $r->print(&courseinfo_form($dom,$formname,$crstype,$next)); } } elsif ($prev eq 'codepick') { - $r->print(&courseinfo_form($dom,$formname,$crstype)); + $r->print(&courseinfo_form($dom,$formname,$crstype,$next)); } elsif ($state eq 'enrollment') { if ($crstype eq 'official') { &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles, @@ -743,7 +743,7 @@ sub print_request_form { push(@excluded,'instcode'); } $r->print(&Apache::lonhtmlcommon::echo_form_input(\@excluded).''); - &display_navbuttons($r,$formname,$prev,$navtxt{'prev'},$next,$navtxt{'next'}); + &display_navbuttons($r,$formname,$prev,$navtxt{'prev'},$next,$navtxt{'next'},$state); return; } @@ -1216,33 +1216,35 @@ sub print_review { $inst_headers .= ''.&mt('Clone From').''; if (($env{'form.clonecrs'} =~ /^$match_name$/) && ($env{'form.clonedom'} =~ /^$match_domain$/)) { - my %coursehash = - &Apache::lonnet::courseiddump($env{'form.clonedom'},'.',1,'.','.', - $env{'form.clonecrs'},undef,undef,'.'); - my $cloneid = $env{'form.clonedom'}.'_'.$env{'form.clonecrs'}; - if (ref($coursehash{$cloneid}) eq 'HASH') { - $inst_headers .= ''.$ctxt{'dsh'}.''; - my $clonedesc = $coursehash{$cloneid}{'description'}; - my $cloneinst = $coursehash{$cloneid}{'inst_code'}; - - $inst_values .= ''.$clonedesc.' '; - if ($cloneinst ne '') { - $inst_values .= &mt('([_1] in [_2])',$cloneinst,$env{'form.clonedom'}); - } else { - $inst_values .= &mt('(from [_1])',$env{'form.clonedom'}); - } - $inst_values .= ''; - if ($env{'form.datemode'} eq 'preserve') { - $inst_values .= $ctxt{'pcd'}; - } elsif ($env{'form.datemode'} eq 'shift') { - $inst_values .= &mt('Shift dates by [_1] days',$env{'form.dateshift'}); - } else { - $inst_values .= $ctxt{'ncd'}; - } - $inst_values .= ''; - } else { - $inst_values .= ''.&mt('Unknown').''; - } + my $canclone = &Apache::loncoursequeueadmin::can_clone_course($env{'user.name'}, + $env{'user.domain'},$env{'form.clonecrs'}, $env{'form.clonedom'}); + if ($canclone) { + my %courseenv = &Apache::lonnet::userenvironment($env{'form.clonedom'}, + $env{'form.clonecrs'},('description','internal.coursecode')); + if (keys(%courseenv) > 0) { + $inst_headers .= ''.$ctxt{'dsh'}.''; + $inst_values .= ''.$courseenv{'description'}.' '; + my $cloneinst = $courseenv{'internal.coursecode'}; + if ($cloneinst ne '') { + $inst_values .= &mt('([_1] in [_2])',$cloneinst,$env{'form.clonedom'}); + } else { + $inst_values .= &mt('(from [_1])',$env{'form.clonedom'}); + } + $inst_values .= ''; + if ($env{'form.datemode'} eq 'preserve') { + $inst_values .= $ctxt{'pcd'}; + } elsif ($env{'form.datemode'} eq 'shift') { + $inst_values .= &mt('Shift dates by [_1] days',$env{'form.dateshift'}); + } else { + $inst_values .= $ctxt{'ncd'}; + } + $inst_values .= ''; + } else { + $inst_values .= ''.&mt('Unknown').''; + } + } else { + $inst_values .= ''.&mt('Not permitted'),''; + } } else { $inst_values .= ''.&mt('None').''; } @@ -1346,9 +1348,26 @@ sub dates_from_form { } sub courseinfo_form { - my ($dom,$formname,$crstype) = @_; - my $output = '
'.&Apache::lonhtmlcommon::start_pick_box(). - &Apache::lonhtmlcommon::row_title('Course Description'). + my ($dom,$formname,$crstype,$next) = @_; + my $nodescr = &mt('You must provide a (brief) course description.'); + my $js_validate = <<"ENDJS"; + + +ENDJS + + my $output .= $js_validate."\n".'
'.&Apache::lonhtmlcommon::start_pick_box(). + &Apache::lonhtmlcommon::row_title('Course Description'). ''; my ($home_server_pick,$numlib) = &Apache::loncommon::home_server_form_item($dom,'chome', @@ -1510,7 +1529,7 @@ sub get_course_dom { } sub display_navbuttons { - my ($r,$formname,$prev,$prevtext,$next,$nexttext) = @_; + my ($r,$formname,$prev,$prevtext,$next,$nexttext,$state) = @_; $r->print('
'); if ($prev) { $r->print(' @@ -1523,7 +1542,10 @@ sub display_navbuttons { onclick="javascript:history.back()"/>    '); } - if ($next) { + if ($state eq 'courseinfo') { + $r->print(' + '); + } elsif ($next) { $r->print(' '); @@ -1653,6 +1675,20 @@ sub print_request_outcome { if (exists($env{'form.instcode'})) { $instcode = $env{'form.instcode'}; } + my $clonecrs = ''; + my $clonedom = ''; + if (($env{'form.clonecrs'} =~ /^($match_courseid)$/) && + ($env{'form.clonedom'} =~ /^($match_domain)$/)) { + my $clonehome = &Apache::lonnet::homeserver($env{'form.clonedom'},$env{'form.clonecrs'}); + if ($clonehome ne 'no_host') { + my $canclone = &can_clone_course($env{'user.name'},$env{'user.domain'}, + $env{'form.clonecrs'}, $env{'form.clonedom'}); + if ($canclone) { + $clonecrs = $env{'form.clonecrs'}; + $clonedom = $env{'form.clonedom'}; + } + } + } my $details = { owner => $env{'user.name'}, domain => $env{'user.domain'}, @@ -1662,8 +1698,8 @@ sub print_request_outcome { cdescr => $env{'form.cdescr'}, crstype => $env{'form.crstype'}, instcode => $instcode, - clonedom => $env{'form.clonedom'}, - clonecrs => $env{'form.clonecrs'}, + clonedom => $clonedom, + clonecrs => $clonecrs, datemode => $env{'form.datemode'}, dateshift => $env{'form.dateshift'}, sectotal => $sectotal,