[LON-CAPA-cvs] cvs: loncom /lonnet/perl lonnet.pm
www
www@source.lon-capa.org
Thu, 03 Jun 2010 17:04:41 -0000
www Thu Jun 3 17:04:41 2010 EDT
Modified files:
/loncom/lonnet/perl lonnet.pm
Log:
Saving my work: reconstructing partorder when importing parts
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.1068 loncom/lonnet/perl/lonnet.pm:1.1069
--- loncom/lonnet/perl/lonnet.pm:1.1068 Thu Jun 3 01:46:43 2010
+++ loncom/lonnet/perl/lonnet.pm Thu Jun 3 17:04:41 2010
@@ -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 @@
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 @@
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=~/<part[^>]*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'});