--- loncom/homework/inputtags.pm 2003/05/23 07:04:44 1.102 +++ loncom/homework/inputtags.pm 2003/06/07 03:57:28 1.104 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.102 2003/05/23 07:04:44 albertel Exp $ +# $Id: inputtags.pm,v 1.104 2003/06/07 03:57:28 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -52,6 +52,8 @@ sub initialize_inputtags { @Apache::inputtags::previous_version=(); # id of current part, 0 means that no part is current (inside only $Apache::inputtags::part=''; + # list of all part ids seen + @Apache::inputtags::partlist=(); # list of problem date statuses, the first element is for # if there is a second element it is for the current @Apache::inputtags::status=(); @@ -59,6 +61,26 @@ sub initialize_inputtags { %Apache::inputtags::params=(); # list of all ids, for , these get join()ed and prepended @Apache::inputtags::import=(); + # list of all import ids seen + @Apache::inputtags::importlist=(); +} + +sub check_for_duplicate_ids { + my %check; + foreach my $id (@Apache::inputtags::partlist, + @Apache::inputtags::responselist, + @Apache::inputtags::importlist) { + $check{$id}++; + } + my @duplicates; + foreach my $id (sort(keys(%check))) { + if ($check{$id} > 1) { + push(@duplicates,$id); + } + } + if (@duplicates) { + &Apache::lonxml::error("Duplicated ids found, problem will operate incorrectly. Duplicated ids seen: ",join(', ',@duplicates)); + } } sub start_input { @@ -314,7 +336,7 @@ sub decideoutput { } else { $message = "You are correct."; } - $message=' Your receipt is '.&Apache::lonnet::receipt; + $message.=' Your receipt is '.&Apache::lonnet::receipt; } $button=0; $previousmsg=''; @@ -429,10 +451,9 @@ sub setgradedata { $Apache::lonhomework::history{"resource.$id.tries"} + 1; $Apache::lonhomework::results{"resource.$id.solved"} = $solvemsg; - my $numawards=scalar(@Apache::inputtags::responselist); - &Apache::lonxml::debug("Whaaa!"); + my $numawards=scalar(@Apache::inputtags::response); $Apache::lonhomework::results{"resource.$id.awarded"} = 0; - foreach my $res (@Apache::inputtags::responselist) { + foreach my $res (@Apache::inputtags::response) { $Apache::lonhomework::results{"resource.$id.awarded"}+= $Apache::lonhomework::results{"resource.$id.$res.awarded"}; } @@ -503,7 +524,7 @@ sub grade { my $response=''; if ( defined $ENV{'form.submitted'}) { my @awards = (); - foreach $response (@Apache::inputtags::responselist) { + foreach $response (@Apache::inputtags::response) { &Apache::lonxml::debug("looking for response.$id.$response.awarddetail"); my $value=$Apache::lonhomework::results{"resource.$id.$response.awarddetail"}; &Apache::lonxml::debug("keeping $value from $response for $id");