--- loncom/homework/inputtags.pm 2002/08/07 16:23:05 1.60 +++ loncom/homework/inputtags.pm 2003/07/15 21:26:23 1.109 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.60 2002/08/07 16:23:05 albertel Exp $ +# $Id: inputtags.pm,v 1.109 2003/07/15 21:26:23 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -30,9 +30,10 @@ package Apache::inputtags; use HTML::Entities(); use strict; +use Apache::loncommon; BEGIN { - &Apache::lonxml::register('Apache::inputtags',('textfield','textline','datasubmission')); + &Apache::lonxml::register('Apache::inputtags',('hiddenline','textfield','textline')); } @@ -47,8 +48,12 @@ sub initialize_inputtags { @Apache::inputtags::responselist=(); # list of whether or not a specific response was previously used @Apache::inputtags::previous=(); + # submission it was used in + @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=(); @@ -56,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 { @@ -79,34 +104,38 @@ sub start_textfield { my $resid=$Apache::inputtags::response[-1]; if ($target eq 'web') { $Apache::lonxml::evaluate--; - my $partid=$Apache::inputtags::part; - my $oldresponse = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$partid.$resid.submission"}); - my $cols = &Apache::lonxml::get_param('cols',$parstack,$safeeval); - if ( $cols eq '') { $cols = 80; } - my $rows = &Apache::lonxml::get_param('rows',$parstack,$safeeval); - if ( $rows eq '') { $rows = 10; } if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') { - $result= '