--- loncom/interface/loncreatecourse.pm 2003/09/03 23:15:27 1.35 +++ loncom/interface/loncreatecourse.pm 2003/09/09 17:26:03 1.37 @@ -1,7 +1,7 @@ # The LearningOnline Network # Create a course # -# $Id: loncreatecourse.pm,v 1.35 2003/09/03 23:15:27 www Exp $ +# $Id: loncreatecourse.pm,v 1.37 2003/09/09 17:26:03 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -98,11 +98,37 @@ sub writefile { 'output',$which); } +# ===================================================================== Rewrite + +sub rewritefile { + my ($contents,%rewritehash)=@_; + foreach (keys %rewritehash) { + my $pattern=$_; + $pattern=~s/(\W)/\\$1/gs; + my $new=$rewritehash{$_}; + $contents=~s/$pattern/$new/gs; + } + return $contents; +} + # ============================================================= Copy a userfile sub copyfile { my ($origcrsid,$newcrsid,$which)=@_; - return &writefile($newcrsid,$which,&readfile($origcrsid,$which)); + unless ($which=~/\.sequence$/) { + return &writefile($newcrsid,$which, + &readfile($origcrsid,$which)); + } else { + my %origcrsdata=&Apache::lonnet::coursedescription($origcrsid); + my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid); + return &writefile($newcrsid,$which, + &rewritefile( + &readfile($origcrsid,$which), + ( + '/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/' + => '/uploaded/'. $newcrsdata{'domain'}.'/'. $newcrsdata{'num'}.'/' + ))); + } } # =============================================================== Copy a dbfile @@ -149,6 +175,18 @@ sub copyresourcedb { delete $data{$_}; } } +# adjust symbs + my $pattern='uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/'; + $pattern=~s/(\W)/\\$1/gs; + my $new= 'uploaded/'. $newcrsdata{'domain'}.'/'. $newcrsdata{'num'}.'/'; + foreach (keys %data) { + if ($_=~/$pattern/) { + my $newkey=$_; + $newkey=~s/$pattern/$new/; + $data{$newkey}=$data{$_}; + delete $data{$_}; + } + } # adjust dates foreach (keys %data) { my $thiskey=$_; @@ -395,10 +433,14 @@ ENDENHEAD } else { $r->print( '
Cloning course from '.$clonehome.''); + my %oldcenv=&Apache::lonnet::dump('environment',$crsudom,$crsunum); # Copy all files ©coursefiles($cloneid,$courseid); +# Restore URL + $cenv{'url'}=$oldcenv{'url'}; # Restore title - $cenv{'description'}=$cdescr; + $cenv{'description'}=$oldcenv{'description'}; +# Mark as cloned $cenv{'clonedfrom'}=$cloneid; } }