--- loncom/interface/loncreatecourse.pm 2007/03/03 01:40:28 1.101 +++ loncom/interface/loncreatecourse.pm 2007/06/29 14:32:43 1.102 @@ -1,7 +1,7 @@ # The LearningOnline Network # Create a course # -# $Id: loncreatecourse.pm,v 1.101 2007/03/03 01:40:28 albertel Exp $ +# $Id: loncreatecourse.pm,v 1.102 2007/06/29 14:32:43 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -575,13 +575,39 @@ sub create_course { $crstype='Course'; $enrollstart=&Apache::lonhtmlcommon::get_date_from_form('startenroll'); $enrollend=&Apache::lonhtmlcommon::get_date_from_form('endenroll'); - } $startaccess = &Apache::lonhtmlcommon::get_date_from_form('startaccess'); $endaccess = &Apache::lonhtmlcommon::get_date_from_form('endaccess'); my $autharg; my $authtype; + my ($clonecourse,$clonedomain,$clonemsg); + + if (($env{'form.clonecourse'} ne '') && ($env{'form.clonedomain'} ne '')) { + my $clonehome=&Apache::lonnet::homeserver($env{'form.clonecourse'},$env{'form.clonedomain'}); + if ($clonehome eq 'no_host') { + $clonemsg = &mt('The new course was not cloned from an existing course because the requested course from which to create the clone does not appear to be a valid course.'); + } else { + my %clonedesc = &Apache::lonnet::coursedescription($env{'form.clonedomain'}.'_'.$env{'form.clonecourse'},{'one_time' => 1}); + if ($env{'request.role.domain'} eq $env{'form.clonedomain'}) { + $clonecourse = $env{'form.clonecourse'}; + $clonedomain = $env{'form.clonedomain'}; + } else { + my %clonehash = &Apache::lonnet::get('environment',['cloners'], + $env{'form.clonedomain'},$env{'form.clonecourse'}); + my @cloners = split(/,/,$clonehash{'cloners'}); + my %roleshash = + &Apache::lonnet::get_my_roles($ccuname,$ccdomain,'userroles', + ['active'],['cc'],[$env{'form.clonedomain'}]); + if (($roleshash{$env{'form.clonecourse'}.':'.$env{'form.clonedomain'}.':cc'}) || (grep(/^\Q$ccuname\E:\Q$ccdomain\E$/,@cloners))) { + $clonecourse = $env{'form.clonecourse'}; + $clonedomain = $env{'form.clonedomain'}; + } else { + $clonemsg = &mt('The new course was not cloned from an existing course because the course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$ccuname.':'.$ccdomain,$clonedesc{'description'}); + } + } + } + } if ($env{'form.login'} eq 'krb') { $authtype = 'krb'; @@ -615,8 +641,8 @@ sub create_course { nonstandard => $env{'form.nonstandard'}, crscode => $env{'form.crscode'}, crsquota => $env{'form.crsquota'}, - clonecourse => $env{'form.clonecourse'}, - clonedomain => $env{'form.clonedomain'}, + clonecourse => $clonecourse, + clonedomain => $clonedomain, crsid => $env{'form.crsid'}, curruser => $env{'user.name'}.':'.$env{'user.domain'}, crssections => $env{'form.crssections'}, @@ -669,6 +695,9 @@ sub create_course { $env{'form.course_home'}.&Apache::loncommon::end_page()); return; } + if ($clonemsg ne '') { + $r->print('

'.$clonemsg.'

'); + } my ($courseid,$crsudom,$crsunum); $r->print(&Apache::loncommon::construct_course($args,\$logmsg,\$courseid,\$crsudom,\$crsunum,$env{'user.domain'},$env{'user.name'}));