--- loncom/interface/loncreatecourse.pm 2007/06/01 18:07:47 1.101.2.1 +++ 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.2.1 2007/06/01 18:07:47 albertel Exp $ +# $Id: loncreatecourse.pm,v 1.102 2007/06/29 14:32:43 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -44,11 +44,10 @@ use LONCAPA; sub print_course_creation_page { my $r=shift; - my $crstype = 'Course'; -# my $crstype = 'Group'; -# if ($env{'form.phase'} eq 'courseone') { -# $crstype = 'Course'; -# } + my $crstype = 'Group'; + if ($env{'form.phase'} eq 'courseone') { + $crstype = 'Course'; + } my $defdom=$env{'request.role.domain'}; my %host_servers = &Apache::lonnet::get_servers($defdom,'library'); my $course_home = '<select name="course_home" size="1">'."\n"; @@ -576,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'; @@ -616,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'}, @@ -670,6 +695,9 @@ sub create_course { $env{'form.course_home'}.&Apache::loncommon::end_page()); return; } + if ($clonemsg ne '') { + $r->print('<p>'.$clonemsg.'</p>'); + } my ($courseid,$crsudom,$crsunum); $r->print(&Apache::loncommon::construct_course($args,\$logmsg,\$courseid,\$crsudom,\$crsunum,$env{'user.domain'},$env{'user.name'})); @@ -697,7 +725,7 @@ sub create_course { sub print_intro_page { my $r = shift; my $start_page = - &Apache::loncommon::start_page('Create a New Course'); + &Apache::loncommon::start_page('Create a New Course or Group Space'); my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Options','Create_Course',undef,'Create_Courses'); my $end_page = &Apache::loncommon::end_page(); @@ -708,11 +736,11 @@ sub print_intro_page { short_description => &mt('Create a new course by completing an online form.'), }, -# { internal_name => 'groupone', -# name => &mt('Create a single collaborative group space '), -# short_description => -# &mt('Create a new group space for non-course use by completing an online form .'), -# }, + { internal_name => 'groupone', + name => &mt('Create a single collaborative group space '), + short_description => + &mt('Create a new group space for non-course use by completing an online form .'), + }, { internal_name => 'batchone', name => &mt('Create courses/groups by uploading an attributes file'), short_description => @@ -744,11 +772,11 @@ sub upload_batchfile { my $r = shift; my $start_page = &Apache::loncommon::start_page('Create a New Course or Group Space'); - my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Upload Course Attributes File','Create_Course',undef,'Create_Courses'); + my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Upload Course/Group Attributes File','Create_Course',undef,'Create_Courses'); my $end_page = &Apache::loncommon::end_page(); $r->print($start_page.$crumbs); - $r->print('<h3>'.&mt('Upload a courses attributes file').'</h3>'); + $r->print('<h3>'.&mt('Upload a courses or groups attributes file').'</h3>'); $r->print('<form name="batchcreate" method="post" '. 'enctype="multipart/form-data" action="/adm/createcourse">'. '<input type="file" name="coursecreatorxml" />'.