--- loncom/lonnet/perl/lonnet.pm 2010/06/03 01:46:43 1.1068 +++ loncom/lonnet/perl/lonnet.pm 2010/06/03 17:04:41 1.1069 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.1068 2010/06/03 01:46:43 www Exp $ +# $Id: lonnet.pm,v 1.1069 2010/06/03 17:04:41 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -8157,6 +8157,9 @@ sub metadata { if (defined($cached)) { return $result->{':'.$what}; } } { +# Imported parts would go here + my @newpartorder=(); + my $importedparts=0; # # Is this a recursive call for a library? # @@ -8250,14 +8253,36 @@ sub metadata { my $dir=$filename; $dir=~s|[^/]*$||; $location=&filelocation($dir,$location); - + my $importmode=$token->[2]->{'importmode'}; if ($importmode eq 'problem') { -# Import as problem +# Import as problem/response $unikey=&add_prefix_and_part($prefix,$token->[2]->{'part'}); } elsif ($importmode eq 'part') { # Import as part(s) - $unikey=&add_prefix_and_part($prefix,$token->[2]->{'id'}); + $importedparts=1; +# We need to get the original file and the imported file to get the part order correct +# Good news: we do not need to worry about nested libraries, since parts cannot be nested +# Load and inspect original file + my $origfilelocation=$perlvar{'lonDocRoot'}.&clutter($uri); + my $origfile=&getfile($origfilelocation); + my @origfileimportpartids=($origfile=~/<(part|import)[^>]*id\s*=\s*[\"\']([^\"\']+)[\"\'][^>]*>/gs); +# Load and inspect imported file + my $impfile=&getfile($location); + my @impfilepartids=($impfile=~/]*id\s*=\s*[\"\']([^\"\']+)[\"\'][^>]*>/gs); + +#&logthis("Found imported parts".join(',',@impfilepartids)); +#&logthis("Found original parts and imports".join(',',@origfileimportpartids)); + if ($#impfilepartids>=0) { +# This problem had parts +#&logthis("Importing parted problem"); + } else { +# Importing by turning a single problem into a problem part +# It gets the import-tags ID as part-ID +#&logthis("Importing unparted problem"); + $unikey=&add_prefix_and_part($prefix,$token->[2]->{'id'}); + push(@newpartorder,$token->[2]->{'id'}); + } } else { # Normal import $unikey=&add_prefix_and_part($prefix,$token->[2]->{'part'});