--- loncom/homework/response.pm 2001/07/10 22:06:42 1.30 +++ loncom/homework/response.pm 2001/08/07 12:24:53 1.40 @@ -2,12 +2,14 @@ # various response type definitons response definition # 11/23,11/24,11/28 Gerd Kortemeyer +# Guy Albertelli +# 08/04,08/07 Gerd Kortemeyer package Apache::response; use strict; sub BEGIN { - &Apache::lonxml::register('Apache::response',('responseparam','caparesponse','numericalresponse','radiobuttonresponse','optionresponse','imageresponse','essayresponse')); + &Apache::lonxml::register('Apache::response',('responseparam','caparesponse','numericalresponse','stringresponse','radiobuttonresponse','optionresponse','imageresponse','essayresponse')); } sub start_response { @@ -33,8 +35,11 @@ sub setrandomnumber { &Apache::lonxml::debug("randseed $rndseed"); # $rndseed=unpack("%32i",$rndseed); $rndseed=$rndseed - +(&Apache::lonnet::numval($Apache::inputtags::part) << 10) + +(&Apache::lonnet::numval($Apache::inputtags::part) << 10); + if (defined($Apache::inputtags::response['-1'])) { + $rndseed=$rndseed +&Apache::lonnet::numval($Apache::inputtags::response['-1']); + } srand($rndseed); &Apache::lonxml::debug("randseed $rndseed"); return ''; @@ -44,10 +49,17 @@ sub meta_parameter_write { my ($name,$type,$default,$display)=@_; return '' + '" type="'.$type.'"'. + ($default?' default="'.$default.'"':''). + ($display?' display="'.$display.' [Part: '.$Apache::inputtags::part.']"':'') + .'>' + ."\n"; +} + +sub meta_package_write { + my $name=shift; + return '' ."\n"; } @@ -69,17 +81,17 @@ sub mandatory_part_meta { # of each part # return - &meta_parameter_write('opendate','date_start','', - 'Opening Date'). - &meta_parameter_write('duedate','date_end','', - 'Due Date'). - &meta_parameter_write('answerdate','date_start','', - 'Show Answer Date'). - &meta_parameter_write('weight','int_zeropos','', - 'Available Points'). - &meta_parameter_write('maxtries','int_pos','', - 'Maximum Number of Tries'). - +# &meta_parameter_write('opendate','date_start','', +# 'Opening Date'). +# &meta_parameter_write('duedate','date_end','', +# 'Due Date'). +# &meta_parameter_write('answerdate','date_start','', +# 'Show Answer Date'). +# &meta_parameter_write('weight','int_zeropos','', +# 'Available Points'). +# &meta_parameter_write('maxtries','int_pos','', +# 'Maximum Number of Tries'). + &meta_package_write('part'). &meta_stores_write('solved','string', 'Problem Status'). &meta_stores_write('tries','int_zeropos', @@ -93,22 +105,54 @@ sub mandatory_part_meta { } sub check_for_previous { - return '0'; + my ($curresponse,$partid,$id) = @_; + my %previous; + $previous{'used'} = 0; + foreach my $key (reverse(sort(keys(%Apache::lonhomework::history)))) { + if ($key =~ /resource\.$partid\.$id\.submission/) { + &Apache::lonxml::debug("Trying $key"); + my $pastresponse=$Apache::lonhomework::history{$key}; + if ($pastresponse eq $curresponse) { + $previous{'used'} = 1; + my $history; + if ( $key =~ /^(\d+):/ ) { + $history=$1; + $previous{'award'} = $Apache::lonhomework::history{"$history:resource.$partid.$id.awarddetail"}; + $previous{'last'}='0'; + } else { + $previous{'award'} = $Apache::lonhomework::history{"resource.$partid.$id.awarddetail"}; + $previous{'last'}='1'; + } + if (! $previous{'award'} ) { $previous{'award'} = 'UNKNOWN'; } + &Apache::lonxml::debug("got a match :$previous{'award'}:$previous{'used'}:"); + last; + } + } + } + return %previous; } -sub start_numericalresponse { +sub start_caparesponse { require Apache::caparesponse; import Apache::caparesponse; my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - return &Apache::caparesponse::start_numericalresponse($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); +# print "\n
\nsimple caparesponse\n"; + return &Apache::caparesponse::start_caparesponse($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); +} + +sub start_stringresponse { + require Apache::caparesponse; + import Apache::caparesponse; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + return &Apache::caparesponse::start_stringresponse($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); } -sub start_caparesponse { +sub start_numericalresponse { require Apache::caparesponse; import Apache::caparesponse; my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; -# print "\n
\nsimple caparesponse\n"; - return &Apache::caparesponse::start_caparesponse($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); + return &Apache::caparesponse::start_numericalresponse + ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); } sub start_radiobuttonresponse {