--- loncom/homework/response.pm	2021/01/12 15:57:18	1.244.2.3
+++ loncom/homework/response.pm	2024/06/19 05:56:22	1.249
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # various response type definitons response definition
 #
-# $Id: response.pm,v 1.244.2.3 2021/01/12 15:57:18 raeburn Exp $
+# $Id: response.pm,v 1.249 2024/06/19 05:56:22 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -265,10 +265,15 @@ sub mandatory_part_meta {
 }
 
 sub meta_part_order {
+    my ($type) = @_; 
     if (@Apache::inputtags::partlist) {
 	my @parts=@Apache::inputtags::partlist;
-	shift(@parts);
+        unless ($type eq 'library') {
+	    shift(@parts);
+        }
 	return '<partorder>'.join(',',@parts).'</partorder>'."\n";
+    } elsif ($type eq 'library') {
+        return '<partorder></partorder>'."\n";
     } else {
 	return '<partorder>0</partorder>'."\n";
     }
@@ -766,7 +771,8 @@ sub start_responseparam {
 	}
     } elsif ($target eq 'grade' || $target eq 'answer' || $target eq 'web' ||
 	     $target eq 'tex' || $target eq 'analyze' ) {
-	if ($env{'request.state'} eq 'construct') {
+	if (($env{'request.state'} eq 'construct') ||
+	    ($env{'request.noversionuri'} =~ m{^\Q/res/adm/includes/templates/\E[^/]+\.problem$})) {
 	    my $name   =&Apache::lonxml::get_param('name',$parstack,$safeeval);
 	    my $default=&Apache::lonxml::get_param('default',$parstack,
 						     $safeeval);
@@ -797,7 +803,10 @@ sub reset_params {
 sub setup_params {
     my ($tag,$safeeval) = @_;
 
-    if ($env{'request.state'} eq 'construct') { return; }
+    if (($env{'request.state'} eq 'construct') ||
+        ($env{'request.noversionuri'} =~ m{^\Q/res/adm/includes/templates/\E[^/]+\.problem$})) {
+        return;
+    }
     my %paramlist=();
     foreach my $key (keys(%Apache::lonnet::packagetab)) {
 	if ($key =~ /^\Q$tag\E/) {
@@ -1344,7 +1353,7 @@ and all true values mean that they can't
 
 	a return of undef means it is unattempted
 	a return of 0 means it is both attempted and still has tries and
-                      is wrong or is only partially correct, and retries
+                      is wrong or is only partially correct, and retries 
                       are allowed.
 	a return of 1 means it is marked correct
 	a return of 2 means they have exceeded maximum number of tries
@@ -1365,7 +1374,7 @@ sub check_status {
         return 3;
     }
     my $status=&Apache::lonnet::EXT("user.resource.resource.$id.solved");
-    if ($status =~ /^correct/) {
+    if ($status =~ /^correct/) { 
         my $awarded=&Apache::lonnet::EXT("user.resource.resource.$id.awarded");
         my $retrypartial=&Apache::lonnet::EXT("resource.$id.retrypartial");
         unless (($retrypartial =~ /^1|on|yes$/) && ($awarded <1))  {