--- loncom/homework/inputtags.pm 2002/10/08 18:04:04 1.65 +++ loncom/homework/inputtags.pm 2003/09/23 15:44:39 1.114.2.2 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.65 2002/10/08 18:04:04 bowersj2 Exp $ +# $Id: inputtags.pm,v 1.114.2.2 2003/09/23 15:44:39 albertel 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')); + &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 { @@ -86,30 +111,30 @@ sub start_textfield { if ( $cols eq '') { $cols = 80; } my $rows = &Apache::lonxml::get_param('rows',$parstack,$safeeval); if ( $rows eq '') { $rows = 10; } - $result= '