[LON-CAPA-cvs] cvs: loncom(version_2_5_X) /interface loncommon.pm

albertel lon-capa-cvs-allow@mail.lon-capa.org
Fri, 24 Aug 2007 07:20:24 -0000


This is a MIME encoded message

--albertel1187940024
Content-Type: text/plain

albertel		Fri Aug 24 03:20:24 2007 EDT

  Modified files:              (Branch: version_2_5_X)
    /loncom/interface	loncommon.pm 
  Log:
  - backport 1.566, 1.567
  
  
--albertel1187940024
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20070824032024.txt"

Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.564 loncom/interface/loncommon.pm:1.564.2.1
--- loncom/interface/loncommon.pm:1.564	Wed Aug 15 14:03:22 2007
+++ loncom/interface/loncommon.pm	Fri Aug 24 03:20:22 2007
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.564 2007/08/15 18:03:22 albertel Exp $
+# $Id: loncommon.pm,v 1.564.2.1 2007/08/24 07:20:22 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -6912,6 +6912,40 @@
 ############################################################
 ############################################################
 
+sub check_clone {
+    my ($args) = @_;
+    my $cloneid='/'.$args->{'clonedomain'}.'/'.$args->{'clonecourse'};
+    my ($clonecrsudom,$clonecrsunum)= &LONCAPA::split_courseid($cloneid);
+    my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom);
+    my $clonemsg;
+    my $can_clone = 0;
+
+    if ($clonehome eq 'no_host') {
+	$clonemsg = &mt('Attempting to clone non-existing [_1]',
+			$args->{'crstype'});
+    } else {
+	my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1});
+	if ($env{'request.role.domain'} eq $args->{'form.clonedomain'}) {
+	    $can_clone = 1;
+	} else {
+	    my %clonehash = &Apache::lonnet::get('environment',['cloners'],
+						 $args->{'clonedomain'},$args->{'clonecourse'});
+	    my @cloners = split(/,/,$clonehash{'cloners'});
+	    my %roleshash =
+		&Apache::lonnet::get_my_roles($args->{'ccuname'},
+					      $args->{'ccdomain'},'userroles',['active'],['cc'],
+					      [$args->{'clonedomain'}]);
+	    if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':cc'}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) {
+		$can_clone = 1;
+	    } else {
+		$clonemsg = &mt('The new course was not cloned from an existing course because the new course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'});
+	    }
+	}
+    }
+
+    return ($can_clone, $clonemsg, $cloneid, $clonehome);
+}
+
 sub construct_course {
     my ($args,$logmsg,$courseid,$crsudom,$crsunum,$udom,$uname,$context) = @_;
     my $outcome;
@@ -6919,6 +6953,23 @@
     if ($context eq 'auto') {
         $linefeed = "\n";
     }
+
+#
+# Are we cloning?
+#
+    my ($can_clone, $clonemsg, $cloneid, $clonehome);
+    if (($args->{'clonecourse'}) && ($args->{'clonedomain'})) {
+	($can_clone, $clonemsg, $cloneid, $clonehome) = &check_clone($args);
+	if ($context ne 'auto') {
+	    $clonemsg = '<span class="LC_error">'.$clonemsg.'</span>';
+	}
+	$outcome .= $clonemsg.$linefeed;
+
+        if (!$can_clone) {
+	    return (0,$outcome);
+	}
+    }
+
 #
 # Open course
 #
@@ -6939,81 +6990,39 @@
     # if anyone ever decides to not show this, and Utils::Course::new
     # will need to be suitably modified.
     $outcome .= &mt('New LON-CAPA [_1] ID: [_2]',$crstype,$$courseid).$linefeed;
-
 #
 # Check if created correctly
 #
     ($$crsudom,$$crsunum)= &LONCAPA::split_courseid($$courseid);
     my $crsuhome=&Apache::lonnet::homeserver($$crsunum,$$crsudom);
     $outcome .= &mt('Created on').': '.$crsuhome.$linefeed;
+
 #
-# Are we cloning?
-#
-    my $cloneid='';
-    if (($args->{'clonecourse'}) && ($args->{'clonedomain'})) {
-        my $can_clone = 0;
-	$cloneid='/'.$args->{'clonedomain'}.'/'.$args->{'clonecourse'};
-        my ($clonecrsudom,$clonecrsunum)= &LONCAPA::split_courseid($cloneid);
-	my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom);
-        my $clonemsg;
-	if ($clonehome eq 'no_host') {
-            $clonemsg = &mt('Attempting to clone non-existing [_1]',$crstype);
-            if ($context eq 'auto') {
-                $outcome .= $clonemsg;
-            } else {
-	        $outcome .= '<font color="red">'.$clonemsg.'</font>';
-            }
-            $outcome .= $linefeed;
-	} else {
-            my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1});
-            if ($env{'request.role.domain'} eq $args->{'form.clonedomain'}) {
-                $can_clone = 1;
-            } else {
-                my %clonehash = &Apache::lonnet::get('environment',['cloners'],
-                            $args->{'clonedomain'},$args->{'clonecourse'});
-                my @cloners = split(/,/,$clonehash{'cloners'});
-                my %roleshash =
-                    &Apache::lonnet::get_my_roles($args->{'ccuname'},
-                        $args->{'ccdomain'},'userroles',['active'],['cc'],
-                        [$args->{'clonedomain'}]);
-                if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':cc'}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) {
-                    $can_clone = 1;
-                } 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]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'});
-                    if ($context eq 'auto') {
-                        $outcome .= $clonemsg;
-                    } else {
-                        $outcome .= '<font color="red">'.$clonemsg.'</font>';
-                    }
-                    $outcome .= $linefeed;
-                }
-            }
-        }
-        if ($can_clone) {
-	    $clonemsg = &mt('Cloning [_1] from [_2]',$crstype,$clonehome);
-            if ($context eq 'auto') {
-                $outcome = $clonemsg;
-            } else { 
-                $outcome .= '<font color="green">'.$clonemsg.'</font>';
-            }
-            $outcome .= $linefeed;
-	    my %oldcenv=&Apache::lonnet::dump('environment',$$crsudom,$$crsunum);
+# Do the cloning
+#   
+    if ($can_clone && $cloneid) {
+	$clonemsg = &mt('Cloning [_1] from [_2]',$crstype,$clonehome);
+	if ($context ne 'auto') {
+	    $clonemsg = '<span class="LC_success">'.$clonemsg.'</span>';
+	}
+	$outcome .= $clonemsg.$linefeed;
+	my %oldcenv=&Apache::lonnet::dump('environment',$$crsudom,$$crsunum);
 # Copy all files
-	    &Apache::lonclonecourse::copycoursefiles($cloneid,$$courseid);
+	&Apache::lonclonecourse::copycoursefiles($cloneid,$$courseid);
 # Restore URL
-	    $cenv{'url'}=$oldcenv{'url'};
+	$cenv{'url'}=$oldcenv{'url'};
 # Restore title
-	    $cenv{'description'}=$oldcenv{'description'};
+	$cenv{'description'}=$oldcenv{'description'};
 # restore grading mode
-	    if (defined($oldcenv{'grading'})) {
-		$cenv{'grading'}=$oldcenv{'grading'};
-	    }
-# Mark as cloned
-	    $cenv{'clonedfrom'}=$cloneid;
-	    delete($cenv{'default_enrollment_start_date'});
-	    delete($cenv{'default_enrollment_end_date'});
+	if (defined($oldcenv{'grading'})) {
+	    $cenv{'grading'}=$oldcenv{'grading'};
 	}
+# Mark as cloned
+	$cenv{'clonedfrom'}=$cloneid;
+	delete($cenv{'default_enrollment_start_date'});
+	delete($cenv{'default_enrollment_end_date'});
     }
+
 #
 # Set environment (will override cloned, if existing)
 #
@@ -7121,7 +7130,7 @@
                            ' ('.$lt{'adby'}.')';
         if ($context eq 'auto') {
             $outcome .= $badclass_msg.$linefeed;
-            $outcome .= '<font color="red">'.$badclass_msg.$linefeed.'<ul>'."\n";
+            $outcome .= '<div class="LC_warning">'.$badclass_msg.$linefeed.'<ul>'."\n";
             foreach my $item (@badclasses) {
                 if ($context eq 'auto') {
                     $outcome .= " - $item\n";
@@ -7132,7 +7141,7 @@
             if ($context eq 'auto') {
                 $outcome .= $linefeed;
             } else {
-                $outcome .= "</ul><br /><br /></font>\n";
+                $outcome .= "</ul><br /><br /></div>\n";
             }
         } 
     }
@@ -7154,7 +7163,7 @@
             if ($context eq 'auto') {
                 $outcome .= $krb_msg;
             } else {
-                $outcome .= '<font color="red" size="+1">'.$krb_msg.'</font>';
+                $outcome .= '<span class="LC_error">'.$krb_msg.'</span>';
             }
             $outcome .= $linefeed;
         }
@@ -7252,7 +7261,8 @@
 	if ($errtext) { $fatal=2; }
         $outcome .= ($fatal?$errtext:'write ok').$linefeed;
     }
-    return $outcome;
+
+    return (1,$outcome);
 }
 
 ############################################################

--albertel1187940024--