version 1.57, 2004/11/13 16:28:21
|
version 1.63, 2005/03/02 22:26:36
|
Line 1
|
Line 1
|
|
|
# The LearningOnline Network with CAPA |
# The LearningOnline Network with CAPA |
# image click response style |
# image click response style |
# |
# |
Line 119 sub prep_image {
|
Line 120 sub prep_image {
|
my ($x,$y)=split(/:/,$Apache::lonhomework::history{"resource.$part.$respid.submission"}); |
my ($x,$y)=split(/:/,$Apache::lonhomework::history{"resource.$part.$respid.submission"}); |
#draws 2 xs on the image at the clicked location |
#draws 2 xs on the image at the clicked location |
#one in white and then one in red on top of the one in white |
#one in white and then one in red on top of the one in white |
if (defined($x) && $x=~/\S/ && defined($y) && $y =~/\S/) { |
if (defined($x) && $x=~/\S/ && defined($y) && $y =~/\S/ && !&Apache::response::show_answer()) { |
my $length = 6; |
my $length = 6; |
my $width = 1; |
my $width = 1; |
my $extrawidth = 2; |
my $extrawidth = 2; |
Line 130 sub prep_image {
|
Line 131 sub prep_image {
|
|
|
$x{"cgi.$id.OBJTYPE"}.='LINE:'; |
$x{"cgi.$id.OBJTYPE"}.='LINE:'; |
$i=$x{"cgi.$id.OBJCOUNT"}++; |
$i=$x{"cgi.$id.OBJCOUNT"}++; |
$x{"cgi.$id.OBJ$i"}=join(':',(($x),($ymin),($x),($ymax), |
$x{"cgi.$id.OBJ$i"}=join(':',(($xmin),($ymin),($xmax),($ymax), |
"FFFFFF",($width+$extrawidth))); |
"FFFFFF",($width+$extrawidth))); |
$x{"cgi.$id.OBJTYPE"}.='LINE:'; |
$x{"cgi.$id.OBJTYPE"}.='LINE:'; |
$i=$x{"cgi.$id.OBJCOUNT"}++; |
$i=$x{"cgi.$id.OBJCOUNT"}++; |
$x{"cgi.$id.OBJ$i"}=join(':',(($xmin),($y),($xmax),($y), |
$x{"cgi.$id.OBJ$i"}=join(':',(($xmin),($ymax),($xmax),($ymin), |
"FFFFFF",($width+$extrawidth))); |
"FFFFFF",($width+$extrawidth))); |
$x{"cgi.$id.OBJTYPE"}.='LINE:'; |
$x{"cgi.$id.OBJTYPE"}.='LINE:'; |
$i=$x{"cgi.$id.OBJCOUNT"}++; |
$i=$x{"cgi.$id.OBJCOUNT"}++; |
$x{"cgi.$id.OBJ$i"}=join(':',(($x),($ymin),($x),($ymax), |
$x{"cgi.$id.OBJ$i"}=join(':',(($xmin),($ymin),($xmax),($ymax), |
"FF0000",($width))); |
"FF0000",($width))); |
$x{"cgi.$id.OBJTYPE"}.='LINE:'; |
$x{"cgi.$id.OBJTYPE"}.='LINE:'; |
$i=$x{"cgi.$id.OBJCOUNT"}++; |
$i=$x{"cgi.$id.OBJCOUNT"}++; |
$x{"cgi.$id.OBJ$i"}=join(':',(($xmin),($y),($xmax),($y), |
$x{"cgi.$id.OBJ$i"}=join(':',(($xmin),($ymax),($xmax),($ymin), |
"FF0000",($width))); |
"FF0000",($width))); |
} |
} |
if ($mode eq 'answer') { |
if ($mode eq 'answer') { |
Line 226 sub clean_up_image {
|
Line 227 sub clean_up_image {
|
} |
} |
} else { |
} else { |
$image=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$image); |
$image=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$image); |
if (&Apache::lonnet::repcopy($image) ne OK) { |
if (&Apache::lonnet::repcopy($image) ne 'OK') { |
$image='/home/httpd/html/adm/lonKaputt/lonlogo_broken.gif'; |
$image='/home/httpd/html/adm/lonKaputt/lonlogo_broken.gif'; |
} |
} |
} |
} |
Line 269 sub gradefoils {
|
Line 270 sub gradefoils {
|
$temp++; |
$temp++; |
} |
} |
} |
} |
|
my $responsestr="$x:$y"; |
|
my $part=$Apache::inputtags::part; |
|
my %previous=&Apache::response::check_for_previous($responsestr,$part,$id); |
if ($result |
if ($result |
&& $Apache::lonhomework::type eq 'survey') { $result='SUBMITTED'; } |
&& $Apache::lonhomework::type eq 'survey') { $result='SUBMITTED'; } |
$Apache::lonhomework::results{"resource.$Apache::inputtags::part.$id.submission"}="$x:$y"; |
&Apache::response::handle_previous(\%previous,$result); |
$Apache::lonhomework::results{"resource.$Apache::inputtags::part.$id.awarddetail"}=$result; |
$Apache::lonhomework::results{"resource.$part.$id.submission"}=$responsestr; |
|
$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$result; |
return ''; |
return ''; |
} |
} |
|
|
Line 339 sub start_foil {
|
Line 344 sub start_foil {
|
if ($target eq 'web' || $target eq 'grade' || $target eq 'tex' || |
if ($target eq 'web' || $target eq 'grade' || $target eq 'tex' || |
$target eq 'analyze') { |
$target eq 'analyze') { |
my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval); |
my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval); |
if ($name eq '') { $name=$Apache::lonxml::curdepth; } |
if (!$name) { |
|
&Apache::lonxml::error("Foils without names exist. This can cause problems to malfunction."); |
|
$name=$Apache::lonxml::curdepth; |
|
} |
if (defined($Apache::response::foilnames{$name})) { |
if (defined($Apache::response::foilnames{$name})) { |
&Apache::lonxml::error(&mt("Foil name <b><tt>[_1]</tt></b> appears more than once. Foil names need to be unique.",$name)); |
&Apache::lonxml::error(&mt("Foil name <b><tt>[_1]</tt></b> appears more than once. Foil names need to be unique.",$name)); |
} |
} |
Line 425 sub end_image {
|
Line 433 sub end_image {
|
my $result; |
my $result; |
my $name = $Apache::imageresponse::curname; |
my $name = $Apache::imageresponse::curname; |
if ($target eq 'web') { |
if ($target eq 'web') { |
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() |
Line 435 sub end_image {
|
Line 443 sub end_image {
|
$Apache::response::foilgroup{"$name.image"} = $image; |
$Apache::response::foilgroup{"$name.image"} = $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() |
) { |
) { |
Line 446 sub end_image {
|
Line 454 sub end_image {
|
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result=&Apache::edit::end_table(); |
$result=&Apache::edit::end_table(); |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
my $src = &Apache::lonxml::endredirection; |
my $src = &Apache::lonxml::endredirection(); |
$src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); |
my ($path,$file) = &Apache::londefdef::get_eps_image($src); |
my $width_param = ''; |
my ($height_param,$width_param)= |
my $height_param = ''; |
&Apache::londefdef::image_size($src,0.3,$parstack,$safeeval); |
my $scaling = .3; |
$Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; |
my $image = Image::Magick->new; |
|
my $current_figure = $image->Read($src); |
|
$width_param = $image->Get('width') * $scaling;; |
|
$height_param = $image->Get('height') * $scaling;; |
|
undef $image; |
|
my $epssrc = $src; |
|
$epssrc =~ s/(\.gif|\.jpg)$/\.eps/i; |
|
if (not -e $epssrc) { |
|
my $localfile = $epssrc; |
|
$localfile =~ s/.*(\/res)/$1/; |
|
my $file; |
|
my $path; |
|
if ($localfile =~ m!(.*)/([^/]*)$!) { |
|
$file = $2; |
|
$path = $1.'/'; |
|
} |
|
my $signal_eps = 0; |
|
my @content_directory = &Apache::lonnet::dirlist($path); |
|
for (my $iy=0;$iy<=$#content_directory;$iy++) { |
|
my @tempo_array = split(/&/,$content_directory[$iy]); |
|
$content_directory[$iy] = $tempo_array[0]; |
|
if ($file eq $tempo_array[0]) { |
|
$signal_eps = 1; |
|
last; |
|
} |
|
} |
|
if ($signal_eps) { |
|
my $eps_file = &Apache::lonnet::getfile($localfile); |
|
} else { |
|
$localfile = $src; |
|
$localfile =~ s/.*(\/res)/$1/; |
|
my $as = &Apache::lonnet::getfile($src); |
|
} |
|
} |
|
my $file; |
|
my $path; |
|
if ($src =~ m!(.*)/([^/]*)$!) { |
|
$file = $2; |
|
$path = $1.'/'; |
|
} |
|
my $newsrc = $src; |
|
$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); |
|
my $width = &Apache::lonxml::get_param('width',$parstack,$safeeval); |
|
if ($TeXwidth ne '') { |
|
$width_param = $TeXwidth; |
|
} elsif ($TeXheight ne '') { |
|
$width_param = $TeXheight/$height_param*$width_param; |
|
} elsif ($width ne '') { |
|
$width_param = $width*$scaling; |
|
} |
|
$width_param=&Apache::randomlabel::adjust_textwidth($width_param); |
|
#where can we find the picture? |
|
if (-e $newsrc) { |
|
if ($path) { |
|
$Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; |
|
} |
|
} else { |
|
#care about eps dynamical generation |
|
$Apache::response::foilgroup{"$name.image"}='\vskip 0 mm '.&Apache::londefdef::eps_generation($src,$file,$width_param); |
|
} |
|
} |
} |
return $result; |
return $result; |
} |
} |