--- loncom/interface/loncreatecourse.pm 2004/06/17 18:31:24 1.60 +++ loncom/interface/loncreatecourse.pm 2004/07/02 00:27:44 1.63 @@ -1,7 +1,7 @@ #meserver The LearningOnline Network # Create a course # -# $Id: loncreatecourse.pm,v 1.60 2004/06/17 18:31:24 raeburn Exp $ +# $Id: loncreatecourse.pm,v 1.63 2004/07/02 00:27:44 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -42,19 +42,34 @@ use localenroll; # ================================================ Get course directory listing -#FIXME - doesn't support directories under /userfiles/ BUG#2999 +my @output=(); + sub crsdirlist { my ($courseid,$which)=@_; - unless ($which) { $which=''; } + @output=(); + return &innercrsdirlist($courseid,$which); +} + +sub innercrsdirlist { + my ($courseid,$which,$path)=@_; + my $dirptr=16384; + unless ($which) { $which=''; } else { $which.='/'; } + unless ($path) { $path=''; } else { $path.='/'; } my %crsdata=&Apache::lonnet::coursedescription($courseid); my @listing=&Apache::lonnet::dirlist ($which,$crsdata{'domain'},$crsdata{'num'}, &Apache::loncommon::propath($crsdata{'domain'},$crsdata{'num'})); - my @output=(); foreach (@listing) { - #FIXME if list is a DIR need to recurse unless ($_=~/^\./) { - push (@output,(split(/\&/,$_))[0]); + my @unpackline = split (/\&/,$_); + if ($unpackline[3]&$dirptr) { +# is a directory, recurse + &innercrsdirlist($courseid,$which.$unpackline[0], + $path.$unpackline[0]); + } else { +# is a file, put into output + push (@output,$path.$unpackline[0]); + } } } return @output; @@ -531,7 +546,8 @@ ENDENHEAD my $courseid=&Apache::lonnet::createcourse($ENV{'request.role.domain'}, $cdescr,$curl, $ENV{'form.course_home'}, - $ENV{'form.nonstandard'}); + $ENV{'form.nonstandard'}, + $ENV{'form.crscode'}); # Note: The testing routines depend on this being output; see # Utils::Course. This needs to at least be output as a comment