--- 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" />'.