--- loncom/homework/imageresponse.pm 2005/05/10 11:24:01 1.68 +++ loncom/homework/imageresponse.pm 2006/03/09 01:11:12 1.74 @@ -2,7 +2,7 @@ # The LearningOnline Network with CAPA # image click response style # -# $Id: imageresponse.pm,v 1.68 2005/05/10 11:24:01 foxr Exp $ +# $Id: imageresponse.pm,v 1.74 2006/03/09 01:11:12 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -63,12 +63,25 @@ sub start_imageresponse { sub end_imageresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - &Apache::response::end_response; - pop @Apache::lonxml::namespace; + + 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(); } + if ($target eq 'edit') { + $result=&Apache::edit::end_table(); + } elsif ($target eq 'tex') { + $result=&Apache::inputtags::exam_score_line($target); + } + undef(%Apache::response::foilnames); + + if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || + $target eq 'tex' || $target eq 'analyze') { + &Apache::lonxml::increment_counter(&Apache::response::repetition()); + } + &Apache::response::end_response(); + return $result; } @@ -238,10 +251,18 @@ sub clean_up_image { sub gradefoils { my (@whichopt) = @_; + + my $partid = $Apache::inputtags::part; + my $id = $Apache::inputtags::response['-1']; + + if ($Apache::lonhomework::type eq 'exam') { + &Apache::response::scored_response($partid,$id); + return; + } + my $x; my $y; my $result; - my $id=$Apache::inputtags::response['-1']; my $temp=1; foreach my $name (@whichopt) { $x=$env{"form.HWVAL_$id:$temp.x"}; @@ -280,7 +301,7 @@ sub gradefoils { &Apache::response::handle_previous(\%previous,$result); $Apache::lonhomework::results{"resource.$part.$id.submission"}=$responsestr; $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$result; - return ''; + return; } sub end_foilgroup { @@ -347,8 +368,8 @@ sub start_foil { if ($target eq 'web' || $target eq 'grade' || $target eq 'tex' || $target eq 'analyze') { my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval); - if (!$name) { - &Apache::lonxml::error("Foils without names exist. This can cause problems to malfunction."); + if ($name eq "") { + &Apache::lonxml::warning("Foils without names exist. This can cause problems to malfunction."); $name=$Apache::lonxml::curdepth; } if (defined($Apache::response::foilnames{$name})) { @@ -391,7 +412,7 @@ sub start_text { if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { &Apache::lonxml::startredirection; } elsif ($target eq 'edit') { - my $descr=&Apache::lonxml::get_all_text('/text',$parser); + my $descr=&Apache::lonxml::get_all_text('/text',$parser,$style); $result=&Apache::edit::tag_start($target,$token,'Task Description'). &Apache::edit::editfield($token->[1],$descr,'Text',60,2). &Apache::edit::end_row(); @@ -425,7 +446,7 @@ sub start_image { if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { &Apache::lonxml::startredirection; } elsif ($target eq 'edit') { - my $bgimg=&Apache::lonxml::get_all_text('/image',$parser); + my $bgimg=&Apache::lonxml::get_all_text('/image',$parser,$style); $Apache::edit::bgimgsrc=$bgimg; $Apache::edit::bgimgsrcdepth=$Apache::lonxml::curdepth; @@ -470,15 +491,20 @@ sub end_image { # There may be all sorts of whitespace on fore and aft: - $src =~ s/\s+$//; - $src =~ s/^\s+//; + $src =~ s/\s+$//s; + $src =~ s/^\s+//s; # # Gnuplot e.g. just generates the latex to put inplace. # my $graphinclude; - if ($src =~ /^\\graphicspath/) { + if ($src =~ /^%DYNAMICIMAGE/) { + # This is needed because the newline is not always passed -> tex. + # At present we don't care about the sizing info. + + my ($commentline, $restofstuff) = split(/\n/, $src); $graphinclude = $src; + $graphinclude =~ s/^$commentline//; } else { my ($path,$file) = &Apache::londefdef::get_eps_image($src); my ($height_param,$width_param)= @@ -497,7 +523,7 @@ sub start_rectangle { $target eq 'analyze') { &Apache::lonxml::startredirection; } elsif ($target eq 'edit') { - my $coords=&Apache::lonxml::get_all_text('/rectangle',$parser); + my $coords=&Apache::lonxml::get_all_text('/rectangle',$parser,$style); $result=&Apache::edit::tag_start($target,$token,'Rectangle'). &Apache::edit::editline($token->[1],$coords,'Coordinate Pairs',40). &Apache::edit::entercoord(undef,'textnode',undef,undef,'box'). @@ -551,7 +577,7 @@ sub start_polygon { $target eq 'analyze') { &Apache::lonxml::startredirection; } elsif ($target eq 'edit') { - my $coords=&Apache::lonxml::get_all_text('/polygon',$parser); + my $coords=&Apache::lonxml::get_all_text('/polygon',$parser,$style); $result=&Apache::edit::tag_start($target,$token,'Polygon'). &Apache::edit::editline($token->[1],$coords,'Coordinate list',40). &Apache::edit::entercoord(undef,'textnode',undef,undef,'polygon').