version 1.87, 2007/09/25 23:47:59
|
version 1.92, 2008/02/01 22:05:45
|
Line 1
|
Line 1
|
|
# |
# The LearningOnline Network with CAPA |
# The LearningOnline Network with CAPA |
# image click response style |
# image click response style |
# |
# |
Line 59 sub start_imageresponse {
|
Line 59 sub start_imageresponse {
|
$result=&Apache::response::meta_package_write('imageresponse'); |
$result=&Apache::response::meta_package_write('imageresponse'); |
} elsif ($target eq 'analyze') { |
} elsif ($target eq 'analyze') { |
my $part_id="$Apache::inputtags::part.$id"; |
my $part_id="$Apache::inputtags::part.$id"; |
|
$Apache::lonhomework::analyze{"$part_id.type"} = 'imageresponse'; |
push (@{ $Apache::lonhomework::analyze{"parts"} },$part_id); |
push (@{ $Apache::lonhomework::analyze{"parts"} },$part_id); |
push (@{ $Apache::lonhomework::analyze{"$part_id.bubble_lines"} }, |
push (@{ $Apache::lonhomework::analyze{"$part_id.bubble_lines"} }, |
1); |
1); |
|
} elsif ( $target eq 'edit' ) { |
|
$result .= &Apache::edit::tag_start($target,$token). |
|
&Apache::edit::text_arg('Max Number Of Shown Foils:', |
|
'max',$token,'4'). |
|
&Apache::edit::end_row(). |
|
&Apache::edit::start_spanning_row(); |
|
} elsif ( $target eq 'modified' ) { |
|
my $constructtag= |
|
&Apache::edit::get_new_args($token,$parstack,$safeeval,'max'); |
|
if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } |
} |
} |
return $result; |
return $result; |
} |
} |
Line 69 sub start_imageresponse {
|
Line 80 sub start_imageresponse {
|
sub end_imageresponse { |
sub end_imageresponse { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
|
|
|
my $part_id = $Apache::inputtags::part; |
|
my $response_id = $Apache::inputtags::response[-1]; |
|
|
pop(@Apache::lonxml::namespace); |
pop(@Apache::lonxml::namespace); |
&Apache::lonxml::deregister('Apache::imageresponse',('foilgroup','foil','text','image','rectangle','conceptgroup')); |
&Apache::lonxml::deregister('Apache::imageresponse',('foilgroup','foil','text','image','rectangle','conceptgroup')); |
|
|
Line 84 sub end_imageresponse {
|
Line 98 sub end_imageresponse {
|
|
|
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
$target eq 'tex' || $target eq 'analyze') { |
$target eq 'tex' || $target eq 'analyze') { |
&Apache::lonxml::increment_counter(&Apache::response::repetition()); |
&Apache::lonxml::increment_counter(&Apache::response::repetition(), |
|
"$part_id.$response_id"); |
|
if ($target eq 'analyze') { |
|
&Apache::lonhomework::set_bubble_lines(); |
|
} |
|
|
} |
} |
&Apache::response::end_response(); |
&Apache::response::end_response(); |
|
|
Line 105 sub getfoilcounts {
|
Line 124 sub getfoilcounts {
|
my $max = &Apache::lonxml::get_param('max',$parstack,$safeeval,'-2'); |
my $max = &Apache::lonxml::get_param('max',$parstack,$safeeval,'-2'); |
# +1 since instructors will count from 1 |
# +1 since instructors will count from 1 |
my $count = $#{ $Apache::response::foilgroup{'names'} }+1; |
my $count = $#{ $Apache::response::foilgroup{'names'} }+1; |
#if (&Apache::response::showallfoils()) { $max=$count; } |
if (&Apache::response::showallfoils()) { $max=$count; } |
return ($count,$max); |
return ($count,$max); |
} |
} |
|
|
sub whichfoils { |
sub whichfoils { |
my ($max)=@_; |
my ($max)=@_; |
if (!defined(@{ $Apache::response::foilgroup{'names'} })) { return; } |
return if (!defined(@{ $Apache::response::foilgroup{'names'} })); |
my @names = @{ $Apache::response::foilgroup{'names'} }; |
my @names = @{ $Apache::response::foilgroup{'names'} }; |
my @whichopt =(); |
my @whichopt; |
while ((($#whichopt+1) < $max) && ($#names > -1)) { |
while ((($#whichopt+1) < $max) && ($#names > -1)) { |
&Apache::lonxml::debug("Have $#whichopt max is $max"); |
&Apache::lonxml::debug("Have $#whichopt max is $max"); |
my $aopt; |
my $aopt; |
# if (&Apache::response::showallfoils()) { |
if (&Apache::response::showallfoils()) { |
# $aopt=0; |
$aopt=0; |
# } else { |
} else { |
$aopt=int(&Math::Random::random_uniform() * ($#names+1)); |
$aopt=int(&Math::Random::random_uniform() * ($#names+1)); |
# } |
} |
&Apache::lonxml::debug("From $#names elms, picking $aopt"); |
&Apache::lonxml::debug("From $#names elms, picking $aopt"); |
$aopt=splice(@names,$aopt,1); |
$aopt=splice(@names,$aopt,1); |
&Apache::lonxml::debug("Picked $aopt"); |
&Apache::lonxml::debug("Picked $aopt"); |
push (@whichopt,$aopt); |
push(@whichopt,$aopt); |
} |
} |
return @whichopt; |
return @whichopt; |
} |
} |
Line 219 sub displayfoils {
|
Line 238 sub displayfoils {
|
if ($target eq 'tex') {$result.="\\vskip 0 mm \n";} else {$result.="<br />\n";} |
if ($target eq 'tex') {$result.="\\vskip 0 mm \n";} else {$result.="<br />\n";} |
my $image=$Apache::response::foilgroup{"$name.image"}; |
my $image=$Apache::response::foilgroup{"$name.image"}; |
&Apache::lonxml::debug("image is $image"); |
&Apache::lonxml::debug("image is $image"); |
if ( $target eq 'web' && $image !~ /^http:/ ) { |
if ( ($target eq 'web' || $target eq 'answer') |
|
&& $image !~ /^http:/ ) { |
$image=&clean_up_image($image); |
$image=&clean_up_image($image); |
} |
} |
push(@images,$image); |
push(@images,$image); |
Line 280 sub format_prior_response {
|
Line 300 sub format_prior_response {
|
sub display_answers { |
sub display_answers { |
my ($target,$whichopt)=@_; |
my ($target,$whichopt)=@_; |
|
|
my $result; |
my $result=&Apache::response::answer_header('imageresponse'); |
foreach my $name (@$whichopt) { |
foreach my $name (@$whichopt) { |
my $image=$Apache::response::foilgroup{"$name.image"}; |
my $image=$Apache::response::foilgroup{"$name.image"}; |
&Apache::lonxml::debug("image is $image"); |
&Apache::lonxml::debug("image is $image"); |
if ( $target eq 'web' && $image !~ /^http:/ ) { |
if ( ($target eq 'web' || $target eq 'answer') |
|
&& $image !~ /^http:/ ) { |
$image = &clean_up_image($image); |
$image = &clean_up_image($image); |
} |
} |
my $token=&prep_image($image,'answeronly',$name); |
my $token=&prep_image($image,'answeronly',$name); |
|
|
$result.=&Apache::response::answer_header('imageresponse'); |
|
$result.=&Apache::response::answer_part('imageresponse',"<img src=\"/adm/randomlabel.png?token=$token\" /><br />\n"); |
$result.=&Apache::response::answer_part('imageresponse',"<img src=\"/adm/randomlabel.png?token=$token\" /><br />\n"); |
$result.=&Apache::response::answer_footer('imageresponse'); |
|
} |
} |
|
$result.=&Apache::response::answer_footer('imageresponse'); |
return $result; |
return $result; |
} |
} |
|
|
Line 482 sub start_foil {
|
Line 502 sub start_foil {
|
} |
} |
$Apache::response::foilnames{$name}++; |
$Apache::response::foilnames{$name}++; |
if ( $Apache::imageresponse::conceptgroup |
if ( $Apache::imageresponse::conceptgroup |
#&& !&Apache::response::showallfoils() |
&& !&Apache::response::showallfoils() |
) { |
) { |
push(@{ $Apache::response::conceptgroup{'names'} }, $name); |
push(@{ $Apache::response::conceptgroup{'names'} }, $name); |
} else { |
} else { |
Line 535 sub end_text {
|
Line 555 sub end_text {
|
|| $target eq 'answer') { |
|| $target eq 'answer') { |
my $name = $Apache::imageresponse::curname; |
my $name = $Apache::imageresponse::curname; |
if ( $Apache::imageresponse::conceptgroup |
if ( $Apache::imageresponse::conceptgroup |
#&& !&Apache::response::showallfoils() |
&& !&Apache::response::showallfoils() |
) { |
) { |
$Apache::response::conceptgroup{"$name.text"} = &Apache::lonxml::endredirection; |
$Apache::response::conceptgroup{"$name.text"} = &Apache::lonxml::endredirection; |
} else { |
} else { |
Line 578 sub end_image {
|
Line 598 sub end_image {
|
my $image = &Apache::lonxml::endredirection(); |
my $image = &Apache::lonxml::endredirection(); |
&Apache::lonxml::debug("original image is $image"); |
&Apache::lonxml::debug("original image is $image"); |
if ( $Apache::imageresponse::conceptgroup |
if ( $Apache::imageresponse::conceptgroup |
#&& !&Apache::response::showallfoils() |
&& !&Apache::response::showallfoils() |
) { |
) { |
$Apache::response::conceptgroup{"$name.image"} = $image; |
$Apache::response::conceptgroup{"$name.image"} = $image; |
} else { |
} else { |
Line 587 sub end_image {
|
Line 607 sub end_image {
|
} elsif ($target eq 'analyze') { |
} elsif ($target eq 'analyze') { |
my $image = &Apache::lonxml::endredirection(); |
my $image = &Apache::lonxml::endredirection(); |
if ( $Apache::imageresponse::conceptgroup |
if ( $Apache::imageresponse::conceptgroup |
#&& !&Apache::response::showallfoils() |
&& !&Apache::response::showallfoils() |
) { |
) { |
$Apache::response::conceptgroup{"$name.image"} = $image; |
$Apache::response::conceptgroup{"$name.image"} = $image; |
} else { |
} else { |
Line 667 sub end_rectangle {
|
Line 687 sub end_rectangle {
|
$area=~s/\s//g; |
$area=~s/\s//g; |
&Apache::lonxml::debug("out is $area for $name"); |
&Apache::lonxml::debug("out is $area for $name"); |
if ( $Apache::imageresponse::conceptgroup |
if ( $Apache::imageresponse::conceptgroup |
#&& !&Apache::response::showallfoils() |
&& !&Apache::response::showallfoils() |
) { |
) { |
push @{ $Apache::response::conceptgroup{"$name.area"} },"rectangle:$area"; |
push @{ $Apache::response::conceptgroup{"$name.area"} },"rectangle:$area"; |
} else { |
} else { |
Line 748 sub end_polygon {
|
Line 768 sub end_polygon {
|
$area=~s/\s*//g; |
$area=~s/\s*//g; |
&Apache::lonxml::debug("out is $area for $name"); |
&Apache::lonxml::debug("out is $area for $name"); |
if ( $Apache::imageresponse::conceptgroup |
if ( $Apache::imageresponse::conceptgroup |
#&& !&Apache::response::showallfoils() |
&& !&Apache::response::showallfoils() |
) { |
) { |
push @{ $Apache::response::conceptgroup{"$name.area"} },"polygon:$area"; |
push @{ $Apache::response::conceptgroup{"$name.area"} },"polygon:$area"; |
} else { |
} else { |