--- loncom/homework/response.pm 2007/04/17 23:25:09 1.162
+++ loncom/homework/response.pm 2007/05/31 09:43:46 1.169
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# various response type definitons response definition
#
-# $Id: response.pm,v 1.162 2007/04/17 23:25:09 albertel Exp $
+# $Id: response.pm,v 1.169 2007/05/31 09:43:46 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -391,7 +391,6 @@ sub start_customresponse {
$safeeval,'answerdisplay');
if ($constructtag) {
$result = &Apache::edit::rebuild_tag($token);
- $result.=&Apache::edit::handle_insert();
}
} elsif ($target eq 'answer' || $target eq 'grade') {
&Apache::response::reset_params();
@@ -447,6 +446,9 @@ sub end_customresponse {
$result .= &Apache::response::answer_part('customresponse',$answer);
$result .= &Apache::response::answer_footer('customresponse');
}
+ if ($target eq 'web') {
+ &setup_prior_tries_hash(\&format_prior_response_math);
+ }
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' ||
$target eq 'tex' || $target eq 'analyze') {
&Apache::lonxml::increment_counter(&Apache::response::repetition());
@@ -459,6 +461,11 @@ sub end_customresponse {
return $result;
}
+sub format_prior_response_custom {
+ my ($mode,$answer) =@_;
+ return ''.
+ &HTML::Entities::encode($answer,'"<>&').'';
+}
sub start_mathresponse {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
@@ -491,7 +498,6 @@ sub start_mathresponse {
$safeeval,'answerdisplay','cas','args');
if ($constructtag) {
$result = &Apache::edit::rebuild_tag($token);
- $result.=&Apache::edit::handle_insert();
}
} elsif ($target eq 'answer' || $target eq 'grade') {
&Apache::response::reset_params();
@@ -536,6 +542,10 @@ sub end_mathresponse {
}
}
}
+ if ($target eq 'web') {
+ &setup_prior_tries_hash(\&format_prior_response_math);
+ }
+
pop(@Apache::lonxml::namespace);
pop(@Apache::response::custom_answer);
pop(@Apache::response::custom_answer_type);
@@ -544,6 +554,12 @@ sub end_mathresponse {
return $result;
}
+sub format_prior_response_math {
+ my ($mode,$answer) =@_;
+ return ''.
+ &HTML::Entities::encode($answer,'"<>&').'';
+}
+
sub implicit_multiplication {
my ($expression)=@_;
# Escape scientific notation, so 3e8 does not become 3*e*8
@@ -659,7 +675,6 @@ sub start_responseparam {
}
if ($constructtag) {
$result = &Apache::edit::rebuild_tag($token);
- $result.=&Apache::edit::handle_insert();
}
} elsif ($target eq 'grade' || $target eq 'answer' || $target eq 'web' ||
$target eq 'tex' || $target eq 'analyze' ) {
@@ -826,14 +841,33 @@ sub showallfoils {
return 0;
}
+=pod
+
+=item &getresponse($offset,$resulttype);
+
+Retreives the current submitted response, helps out in the case of
+scantron mode.
+
+Returns either the exact text of the submission, or a bubbled response
+converted to something usable.
+
+Optional Arguments:
+ $offset - if a problem has more than one bubble response, pass in the number
+ of the bubble wanted
+ $resulttype - undef -> a number between 0 and 25
+ 'A is 1' -> a number between 1 and 26
+ 'letter' -> a letter between 'A' and 'Z'
+
+=cut
+
sub getresponse {
- my ($temp,$resulttype)=@_;
+ my ($offset,$resulttype)=@_;
my $formparm='form.HWVAL_'.$Apache::inputtags::response['-1'];
my $response;
- if (!defined($temp)) {
- $temp=1;
+ if (!defined($offset)) {
+ my $temp=1;
} else {
- $formparm.=":$temp";
+ $formparm.=":$offset";
}
my %let_to_num=('A'=>0,'B'=>1,'C'=>2,'D'=>3,'E'=>4,'F'=>5,'G'=>6,'H'=>7,
'I'=>8,'J'=>9,'K'=>10,'L'=>11,'M'=>12,'N'=>13,'O'=>14,
@@ -842,7 +876,7 @@ sub getresponse {
if ($env{'form.submitted'} eq 'scantron') {
my $part = $Apache::inputtags::part;
my $id = $Apache::inputtags::response[-1];
- $response = $env{'scantron.'.($Apache::lonxml::counter+$temp-1).
+ $response = $env{'scantron.'.($Apache::lonxml::counter+$offset-1).
'.answer'};
# save bubbled letter for later
$Apache::lonhomework::results{"resource.$part.$id.scantron"}.=
@@ -860,6 +894,15 @@ sub getresponse {
return $response;
}
+=pod
+
+=item &repetition();
+
+Returns the number of lines that are required to encode the weight.
+(Currently expects that there are 10 bubbles per line)
+
+=cut
+
sub repetition {
my $id = $Apache::inputtags::part;
my $weight = &Apache::lonnet::EXT("resource.$id.weight");
@@ -869,6 +912,30 @@ sub repetition {
return $repetition;
}
+=pod
+
+=item &scored_response($part_id,$response_id);
+
+Sets the results hash elements
+
+ resource.$part_id.$response_id.awarded - to the floating point
+ number between 0 and 1 that was awarded on the bubbled input
+
+ resource.$part_id.$response_id.awarddetail - to 'ASSIGNED_SCORE'
+
+Returns
+
+ the number of bubble sheet lines that were used (and likely need to
+ be passed to &Apache::lonxml::increment_counter()
+
+Arguments
+
+ $part_id - id of the part to grade
+ $response_id - id of the response to grade
+
+
+=cut
+
sub scored_response {
my ($part,$id)=@_;
my $repetition=&repetition();
@@ -1004,7 +1071,17 @@ sub pick_foil_for_concept {
$Apache::response::conceptgroup{'names'};
}
-
+#------------------------------------------------------------
+#
+# Get a parameter associated with a problem.
+# Parameters:
+# $id - the id of the paramater, either a part id,
+# or a partid and responspe id joined by _
+# $name - Name of the parameter to fetch
+# $default - Default value for the paramter.
+#
+#
+#
sub get_response_param {
my ($id,$name,$default)=@_;
my $parameter;