Diff for /loncom/interface/loncommon.pm between versions 1.564 and 1.564.2.1

version 1.564, 2007/08/15 18:03:22 version 1.564.2.1, 2007/08/24 07:20:22
Line 6912  sub commit_studentrole { Line 6912  sub commit_studentrole {
 ############################################################  ############################################################
 ############################################################  ############################################################
   
   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 {  sub construct_course {
     my ($args,$logmsg,$courseid,$crsudom,$crsunum,$udom,$uname,$context) = @_;      my ($args,$logmsg,$courseid,$crsudom,$crsunum,$udom,$uname,$context) = @_;
     my $outcome;      my $outcome;
Line 6919  sub construct_course { Line 6953  sub construct_course {
     if ($context eq 'auto') {      if ($context eq 'auto') {
         $linefeed = "\n";          $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  # Open course
 #  #
Line 6939  sub construct_course { Line 6990  sub construct_course {
     # if anyone ever decides to not show this, and Utils::Course::new      # if anyone ever decides to not show this, and Utils::Course::new
     # will need to be suitably modified.      # will need to be suitably modified.
     $outcome .= &mt('New LON-CAPA [_1] ID: [_2]',$crstype,$$courseid).$linefeed;      $outcome .= &mt('New LON-CAPA [_1] ID: [_2]',$crstype,$$courseid).$linefeed;
   
 #  #
 # Check if created correctly  # Check if created correctly
 #  #
     ($$crsudom,$$crsunum)= &LONCAPA::split_courseid($$courseid);      ($$crsudom,$$crsunum)= &LONCAPA::split_courseid($$courseid);
     my $crsuhome=&Apache::lonnet::homeserver($$crsunum,$$crsudom);      my $crsuhome=&Apache::lonnet::homeserver($$crsunum,$$crsudom);
     $outcome .= &mt('Created on').': '.$crsuhome.$linefeed;      $outcome .= &mt('Created on').': '.$crsuhome.$linefeed;
   
 #  #
 # Are we cloning?  # Do the cloning
 #  #   
     my $cloneid='';      if ($can_clone && $cloneid) {
     if (($args->{'clonecourse'}) && ($args->{'clonedomain'})) {   $clonemsg = &mt('Cloning [_1] from [_2]',$crstype,$clonehome);
         my $can_clone = 0;   if ($context ne 'auto') {
  $cloneid='/'.$args->{'clonedomain'}.'/'.$args->{'clonecourse'};      $clonemsg = '<span class="LC_success">'.$clonemsg.'</span>';
         my ($clonecrsudom,$clonecrsunum)= &LONCAPA::split_courseid($cloneid);   }
  my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom);   $outcome .= $clonemsg.$linefeed;
         my $clonemsg;   my %oldcenv=&Apache::lonnet::dump('environment',$$crsudom,$$crsunum);
  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);  
 # Copy all files  # Copy all files
     &Apache::lonclonecourse::copycoursefiles($cloneid,$$courseid);   &Apache::lonclonecourse::copycoursefiles($cloneid,$$courseid);
 # Restore URL  # Restore URL
     $cenv{'url'}=$oldcenv{'url'};   $cenv{'url'}=$oldcenv{'url'};
 # Restore title  # Restore title
     $cenv{'description'}=$oldcenv{'description'};   $cenv{'description'}=$oldcenv{'description'};
 # restore grading mode  # restore grading mode
     if (defined($oldcenv{'grading'})) {   if (defined($oldcenv{'grading'})) {
  $cenv{'grading'}=$oldcenv{'grading'};      $cenv{'grading'}=$oldcenv{'grading'};
     }  
 # Mark as cloned  
     $cenv{'clonedfrom'}=$cloneid;  
     delete($cenv{'default_enrollment_start_date'});  
     delete($cenv{'default_enrollment_end_date'});  
  }   }
   # 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)  # Set environment (will override cloned, if existing)
 #  #
Line 7121  sub construct_course { Line 7130  sub construct_course {
                            ' ('.$lt{'adby'}.')';                             ' ('.$lt{'adby'}.')';
         if ($context eq 'auto') {          if ($context eq 'auto') {
             $outcome .= $badclass_msg.$linefeed;              $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) {              foreach my $item (@badclasses) {
                 if ($context eq 'auto') {                  if ($context eq 'auto') {
                     $outcome .= " - $item\n";                      $outcome .= " - $item\n";
Line 7132  sub construct_course { Line 7141  sub construct_course {
             if ($context eq 'auto') {              if ($context eq 'auto') {
                 $outcome .= $linefeed;                  $outcome .= $linefeed;
             } else {              } else {
                 $outcome .= "</ul><br /><br /></font>\n";                  $outcome .= "</ul><br /><br /></div>\n";
             }              }
         }           } 
     }      }
Line 7154  sub construct_course { Line 7163  sub construct_course {
             if ($context eq 'auto') {              if ($context eq 'auto') {
                 $outcome .= $krb_msg;                  $outcome .= $krb_msg;
             } else {              } else {
                 $outcome .= '<font color="red" size="+1">'.$krb_msg.'</font>';                  $outcome .= '<span class="LC_error">'.$krb_msg.'</span>';
             }              }
             $outcome .= $linefeed;              $outcome .= $linefeed;
         }          }
Line 7252  sub construct_course { Line 7261  sub construct_course {
  if ($errtext) { $fatal=2; }   if ($errtext) { $fatal=2; }
         $outcome .= ($fatal?$errtext:'write ok').$linefeed;          $outcome .= ($fatal?$errtext:'write ok').$linefeed;
     }      }
     return $outcome;  
       return (1,$outcome);
 }  }
   
 ############################################################  ############################################################

Removed from v.1.564  
changed lines
  Added in v.1.564.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>