--- loncom/homework/imageresponse.pm 2003/05/05 18:24:50 1.25
+++ loncom/homework/imageresponse.pm 2003/06/09 22:42:49 1.31
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# image click response style
#
-# $Id: imageresponse.pm,v 1.25 2003/05/05 18:24:50 www Exp $
+# $Id: imageresponse.pm,v 1.31 2003/06/09 22:42:49 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -51,10 +51,13 @@ sub start_imageresponse {
}
sub end_imageresponse {
- &Apache::response::end_response;
- pop @Apache::lonxml::namespace;
- &Apache::lonxml::deregister('Apache::imageresponse',('foilgroup','foil','text','image','rectangle','conceptgroup'));
- return '';
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ &Apache::response::end_response;
+ pop @Apache::lonxml::namespace;
+ &Apache::lonxml::deregister('Apache::imageresponse',('foilgroup','foil','text','image','rectangle','conceptgroup'));
+ my $result;
+ if ($target eq 'edit') { $result=&Apache::edit::end_table(); }
+ return $result;
}
%Apache::response::foilgroup=();
@@ -103,8 +106,10 @@ sub displayfoils {
my $temp=1;
foreach $name (@whichopt) {
$result.=$Apache::response::foilgroup{"$name.text"};
+ &Apache::lonxml::debug("Text is $result");
if ($target eq 'tex') {$result.="\\vskip 0 mm \n";} else {$result.="
\n";}
my $image=$Apache::response::foilgroup{"$name.image"};
+ &Apache::lonxml::debug("image is $image");
if ($Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"} =~ /^correct/ ) {
if ($target eq 'tex') {
$result.=$Apache::response::foilgroup{"$name.image"}."\\vskip 0 mm \n";
@@ -134,7 +139,8 @@ sub gradefoils {
$x=$ENV{"form.HWVAL_$id:$temp.x"};
$y=$ENV{"form.HWVAL_$id:$temp.y"};
&Apache::lonxml::debug("Got a x of $x and a y of $y for $name");
- if (defined(@{ $Apache::response::foilgroup{"$name.area"} })) {
+ if (defined($x) && defined($y) &&
+ defined(@{ $Apache::response::foilgroup{"$name.area"} })) {
my @areas = @{ $Apache::response::foilgroup{"$name.area"} };
my $grade="INCORRECT";
foreach my $area (@areas) {
@@ -170,14 +176,13 @@ sub end_foilgroup {
if ($count>$max) { $count=$max }
&Apache::lonxml::debug("Count is $count from $max");
@whichopt = &whichfoils($max);
- }
- if ($target eq 'web' || $target eq 'tex') {
- $result=&displayfoils($target,@whichopt);
- }
- if ($target eq 'grade') {
- if ( defined $ENV{'form.submitted'}) {
- &gradefoils(@whichopt);
- }
+ if ($target eq 'web' || $target eq 'tex') {
+ $result=&displayfoils($target,@whichopt);
+ } elsif ($target eq 'grade') {
+ if ( defined $ENV{'form.submitted'}) { &gradefoils(@whichopt); }
+ }
+ } elsif ($target eq 'edit') {
+ $result=&Apache::edit::end_table();
}
return $result;
}
@@ -190,7 +195,8 @@ sub start_conceptgroup {
sub end_conceptgroup {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
- $Apache::imageresponse::conceptgroup=0;
+ $Apache::imageresponse::conceptgroup=0;
+ my $result;
if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') {
if (defined(@{ $Apache::response::conceptgroup{'names'} })) {
my @names = @{ $Apache::response::conceptgroup{'names'} };
@@ -206,8 +212,20 @@ sub end_conceptgroup {
&Apache::lonxml::debug("Selecting $name in $concept");
}
}
+ } elsif ($target eq 'edit') {
+ $result=&Apache::edit::end_table();
}
- return '';
+ return $result;
+}
+
+sub insert_foil {
+ return '
+
+
+
+
+
+';
}
$Apache::imageresponse::curname='';
@@ -228,8 +246,12 @@ sub start_foil {
}
sub end_foil {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
- return '';
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $result;
+ if ($target eq 'edit') {
+ $result=&Apache::edit::end_table();
+ }
+ return $result;
}
sub start_text {
@@ -238,12 +260,12 @@ sub start_text {
if ($target eq 'web' || $target eq 'tex') {
&Apache::lonxml::startredirection;
} elsif ($target eq 'edit') {
- my $descr=$$parser[$#$parser]->get_text("/text");
+ my $descr=&Apache::lonxml::get_all_text('/text',$parser);
$result=&Apache::edit::tag_start($target,$token,'Task Description').
&Apache::edit::editfield($token->[1],$descr,'Text',60,2).
- &Apache::edit::end_row().&Apache::edit::start_spanning_row();
+ &Apache::edit::end_row();
} elsif ($target eq "modified") {
- my $bgimg=$$parser[$#$parser]->get_text("/text");
+ my $descr=&Apache::lonxml::get_all_text('/text',$parser);
$result=$token->[4].&Apache::edit::modifiedfield($token);
&Apache::lonxml::debug($result);
}
@@ -252,6 +274,7 @@ sub start_text {
sub end_text {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $result;
if ($target eq 'web' || $target eq 'tex') {
my $name = $Apache::imageresponse::curname;
if ( $Apache::imageresponse::conceptgroup
@@ -260,8 +283,10 @@ sub end_text {
} else {
$Apache::response::foilgroup{"$name.text"} = &Apache::lonxml::endredirection;
}
+ } elsif ($target eq 'edit') {
+ $result=&Apache::edit::end_table();
}
- return '';
+ return $result;
}
sub start_image {
@@ -270,14 +295,17 @@ sub start_image {
if ($target eq 'web' || $target eq 'tex') {
&Apache::lonxml::startredirection;
} elsif ($target eq 'edit') {
- my $bgimg=$$parser[$#$parser]->get_text("/image");
+ my $bgimg=&Apache::lonxml::get_all_text('/image',$parser);
+ $Apache::edit::bgimgsrc=$bgimg;
+ $Apache::edit::bgimgsrcdepth=$Apache::lonxml::curdepth;
+
$result=&Apache::edit::tag_start($target,$token,'Clickable Image').
&Apache::edit::editline($token->[1],$bgimg,'Image Source File',40);
$result.=&Apache::edit::browse(undef,'textnode').' ';
$result.=&Apache::edit::search(undef,'textnode').
- &Apache::edit::end_row().&Apache::edit::start_spanning_row();
+ &Apache::edit::end_row();
} elsif ($target eq "modified") {
- my $bgimg=$$parser[$#$parser]->get_text("/image");
+ my $bgimg=&Apache::lonxml::get_all_text('/image',$parser);
$result=$token->[4].&Apache::edit::modifiedfield($token);
&Apache::lonxml::debug($result);
}
@@ -285,7 +313,8 @@ sub start_image {
}
sub end_image {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $result;
my $name = $Apache::imageresponse::curname;
if ($target eq 'web') {
my $image = &Apache::lonxml::endredirection;
@@ -296,6 +325,8 @@ sub end_image {
} else {
$Apache::response::foilgroup{"$name.image"} = $image;
}
+ } elsif ($target eq 'edit') {
+ $result=&Apache::edit::end_table();
} elsif ($target eq 'tex') {
my $src = &Apache::lonxml::endredirection;
$src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);
@@ -343,8 +374,8 @@ sub end_image {
$path = $1.'/';
}
my $newsrc = $src;
- $newsrc =~ s/(\.gif|\.jpg)$/\.eps/i;
- $file=~s/(\.gif|\.jpg)$/\.eps/i;
+ $newsrc =~ s/(\.gif|\.jpg|\.jpeg)$/\.eps/i;
+ $file=~s/(\.gif|\.jpg|\.jpeg)$/\.eps/i;
#do we have any specified size of the picture?
my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval);
my $TeXheight = &Apache::lonxml::get_param('TeXheight',$parstack,$safeeval);
@@ -369,7 +400,7 @@ sub end_image {
$Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \graphicspath{{/home/httpd/prtspool/}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';
}
}
- return '';
+ return $result;
}
sub start_rectangle {
@@ -378,12 +409,13 @@ sub start_rectangle {
if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') {
&Apache::lonxml::startredirection;
} elsif ($target eq 'edit') {
- my $coords=$$parser[$#$parser]->get_text("/rectangle");
+ my $coords=&Apache::lonxml::get_all_text('/rectangle',$parser);
$result=&Apache::edit::tag_start($target,$token,'Rectangle').
&Apache::edit::editline($token->[1],$coords,'Coordinate Pairs',40).
- &Apache::edit::end_row().&Apache::edit::start_spanning_row();
+ &Apache::edit::entercoordpair(undef,'textnode').
+ &Apache::edit::end_row();
} elsif ($target eq "modified") {
- my $coords=$$parser[$#$parser]->get_text("/rectangle");
+ my $coords=&Apache::lonxml::get_all_text('/rectangle',$parser);
$result=$token->[4].&Apache::edit::modifiedfield($token);
&Apache::lonxml::debug($result);
}
@@ -409,6 +441,7 @@ sub grade_rectangle {
sub end_rectangle {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $result;
if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') {
my $name = $Apache::imageresponse::curname;
my $area = &Apache::lonxml::endredirection;
@@ -419,8 +452,10 @@ sub end_rectangle {
} else {
push @{ $Apache::response::foilgroup{"$name.area"} },"rectangle:$area";
}
+ } elsif ($target eq 'edit') {
+ $result=&Apache::edit::end_table();
}
- return '';
+ return $result;
}
1;
__END__