# The LON-CAPA response handler # # various response type definitons response definition # # YEAR=2000 # 9/14,9/19,11/21,11/22 Guy Albertelli # 11/23,11/24,11/28 Gerd Kortemeyer # 11/28,11/29,12/4,12/11,12/19,12/28 Guy Albertelli # YEAR=2001 # 1/8,1/10,1/19,1/22,2/7,2/19,4/4,4/7,4/16,5/4,5/31,6/2,6/29 Guy Albertelli # 7/10,7/13,8/3 # 8/4 Gerd Kortemeyer # 8/5,8/6 Guy Albertelli # 8/6 Scott Harrison package Apache::response; use strict; # ======================================================================= BEGIN sub BEGIN { &Apache::lonxml::register('Apache::response',('responseparam', 'caparesponse', 'numericalresponse', 'stringresponse', 'radiobuttonresponse', 'optionresponse', 'imageresponse', 'essayresponse')); } # ======================================= Start response (return scalar string) sub start_response { my ($parstack,$safeeval) = @_; my $id = &Apache::lonxml::get_param('id',$parstack,$safeeval); if ($id eq '') { $id = $Apache::lonxml::curdepth; } push (@Apache::inputtags::response,$id); push (@Apache::inputtags::responselist,$id); @Apache::inputtags::inputlist = (); return $id; } # ================================================================ End response sub end_response { pop @Apache::inputtags::response; @Apache::inputtags::inputlist = (); return ''; } # =========================================================== Set random number # used by response to set the non-safe space random number generator to # something that is stable and unique based on the part number and response # number sub setrandomnumber { my $rndseed = &Apache::lonnet::rndseed(); &Apache::lonxml::debug("randseed $rndseed"); # $rndseed = unpack("%32i",$rndseed); $rndseed = $rndseed +(&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 ''; } # ================================= write meta parameter (return scalar string) sub meta_parameter_write { my ($name,$type,$default,$display) = @_; return ''. "\n"; } # =================================== write meta package (return scalar string) sub meta_package_write { my $name=shift; return ''. "\n"; } # ==================================== write meta stores (return scalar string) sub meta_stores_write { my ($name,$type,$display)=@_; return ''. "\n"; } # ============================ write meta mandatory part (return scalar string) sub mandatory_part_meta { # # Autogenerate metadata for mandatory # input (from RAT or lonparmset) and # output (to lonspreadsheet) # 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_package_write('part'); &meta_stores_write('solved','string', 'Problem Status'). &meta_stores_write('tries','int_zeropos', 'Number of Attempts'). &meta_stores_write('awarded','float', 'Partial Credit Factor'); # # Note: responseid-specific data 'submission' and 'awarddetail' # not available to spreadsheet -> skip here # } sub check_for_previous { 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; } # ================================== Start capa response (return scalar string) sub start_caparesponse { 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); } # ================================ Start string response (return scalar string) 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); } # ============================= Start numerical response (return scalar string) sub start_numericalresponse { 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); } # ========================== Start radio button response (return scalar string) sub start_radiobuttonresponse { require Apache::radiobuttonresponse; import Apache::radiobuttonresponse; my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_; return &Apache::radiobuttonresponse::start_radiobuttonresponse( $target,$token,$tagstack,$parstack,$parser,$safeeval,$style); } # ================================ Start option response (return scalar string) sub start_optionresponse { require Apache::optionresponse; import Apache::optionresponse; my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_; return &Apache::optionresponse::start_optionresponse( $target,$token,$tagstack,$parstack,$parser,$safeeval,$style); } # ================================= Start image response (return scalar string) sub start_imageresponse { require Apache::imageresponse; import Apache::imageresponse; my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_; return &Apache::imageresponse::start_imageresponse( $target,$token,$tagstack,$parstack,$parser,$safeeval,$style); } # ================================= Start essay response (return scalar string) sub start_essayresponse { require Apache::essayresponse; import Apache::essayresponse; my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_; return &Apache::essayresponse::start_essayresponse( $target,$token,$tagstack,$parstack,$parser,$safeeval,$style); } # ================================= Start param response (return scalar string) sub start_responseparam { my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; if ($target eq 'grade' || $target eq 'web') { my $default = &Apache::lonxml::get_param('default',$parstack, $safeeval); my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval); &Apache::lonxml::debug("looking for resource.". $Apache::inputtags::part.".$name"); my $value = &Apache::lonnet::EXT("resource.$Apache::inputtags::part". ".$name"); &Apache::lonxml::debug("$name has value :$value: and default :". "$default:"); if ($value eq '' || $value eq 'con_lost') { &Apache::lonxml::debug("defaulting"); $Apache::inputtags::params{$name}=$default; } else { &Apache::lonxml::debug("using value"); $Apache::inputtags::params{$name}=$value; } return ''; } elsif ($target eq 'meta') { return &meta_parameter_write($token->[2]->{'name'}, $token->[2]->{'type'}, $token->[2]->{'default'}, $token->[2]->{'description'}); } elsif ($target eq 'edit') { my $result .= &Apache::edit::tag_start($target,$token, &Apache::lonxml::description($token)); $result .= &Apache::edit::text_arg('Name:','name',$token). &Apache::edit::text_arg('Type:','type',$token). &Apache::edit::text_arg('Description:','description', $token). &Apache::edit::text_arg('Default:','default',$token). ""; $result .= &Apache::edit::end_table; return $result; } elsif ($target eq 'modified') { my $result; my $constructtag = &Apache::edit::get_new_args($token,$parstack, $safeeval,'name','type', 'description','default'); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); $result .= &Apache::edit::handle_insert(); } return $result; } else { return ''; } } # ========================================================== End response param sub end_responseparam { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; if ($target eq 'edit') { return ('','no'); } return ''; } 1; __END__ 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.