[system] / trunk / webwork-modperl / lib / WeBWorK / ContentGenerator / Problem.pm Repository:
ViewVC logotype

Diff of /trunk/webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1227 Revision 1234
16use warnings; 16use warnings;
17use CGI qw(); 17use CGI qw();
18use File::Path qw(rmtree); 18use File::Path qw(rmtree);
19use WeBWorK::Form; 19use WeBWorK::Form;
20use WeBWorK::PG; 20use WeBWorK::PG;
21use WeBWorK::PG::ImageGenerator;
21use WeBWorK::PG::IO; 22use WeBWorK::PG::IO;
22use WeBWorK::Utils qw(writeLog encodeAnswers decodeAnswers ref2string makeTempDirectory); 23use WeBWorK::Utils qw(writeLog encodeAnswers decodeAnswers ref2string makeTempDirectory);
23use WeBWorK::DB::Utils qw(global2user user2global findDefaults); 24use WeBWorK::DB::Utils qw(global2user user2global findDefaults);
24use WeBWorK::Timing; 25use WeBWorK::Timing;
25 26
213 $will{$_} = $can{$_} && ($want{$_} || $must{$_}); 214 $will{$_} = $can{$_} && ($want{$_} || $must{$_});
214 } 215 }
215 216
216 ##### sticky answers ##### 217 ##### sticky answers #####
217 218
218 if (not $submitAnswers and $will{showOldAnswers}) { 219 if (not ($submitAnswers or $previewAnswers or $checkAnswers) and $will{showOldAnswers}) {
219 # do this only if new answers are NOT being submitted 220 # do this only if new answers are NOT being submitted
220 my %oldAnswers = decodeAnswers($problem->last_answer); 221 my %oldAnswers = decodeAnswers($problem->last_answer);
221 $formFields->{$_} = $oldAnswers{$_} foreach keys %oldAnswers; 222 $formFields->{$_} = $oldAnswers{$_} foreach keys %oldAnswers;
222 } 223 }
223 224
702 my $showAttemptAnswers = shift; 703 my $showAttemptAnswers = shift;
703 my $showCorrectAnswers = shift; 704 my $showCorrectAnswers = shift;
704 my $showAttemptResults = $showAttemptAnswers && shift; 705 my $showAttemptResults = $showAttemptAnswers && shift;
705 my $showSummary = shift; 706 my $showSummary = shift;
706 my $showAttemptPreview = shift || 0; 707 my $showAttemptPreview = shift || 0;
708 my $ce = $self->{ce};
707 my $problemResult = $pg->{result}; # the overall result of the problem 709 my $problemResult = $pg->{result}; # the overall result of the problem
708 my @answerNames = @{ $pg->{flags}->{ANSWER_ENTRY_ORDER} }; 710 my @answerNames = @{ $pg->{flags}->{ANSWER_ENTRY_ORDER} };
709 711
710 my $showMessages = $showAttemptAnswers && grep { $pg->{answers}->{$_}->{ans_message} } @answerNames; 712 my $showMessages = $showAttemptAnswers && grep { $pg->{answers}->{$_}->{ans_message} } @answerNames;
713
714 my $basename = "equation-" . $self->{set}->psvn. "." . $self->{problem}->problem_id . "-preview";
715 my $imgGen = WeBWorK::PG::ImageGenerator->new(
716 tempDir => $ce->{webworkDirs}->{tmp},
717 dir => $ce->{courseDirs}->{html_temp},
718 url => $ce->{courseURLs}->{html_temp},
719 basename => $basename,
720 latex => $ce->{externalPrograms}->{latex},
721 dvipng => $ce->{externalPrograms}->{dvipng},
722 );
711 723
712 my $header; 724 my $header;
713 #$header .= CGI::th("Part"); 725 #$header .= CGI::th("Part");
714 $header .= $showAttemptAnswers ? CGI::th("Entered") : ""; 726 $header .= $showAttemptAnswers ? CGI::th("Entered") : "";
715 $header .= $showAttemptPreview ? CGI::th("Answer Preview") : ""; 727 $header .= $showAttemptPreview ? CGI::th("Answer Preview") : "";
720 my $numCorrect; 732 my $numCorrect;
721 foreach my $name (@answerNames) { 733 foreach my $name (@answerNames) {
722 my $answerResult = $pg->{answers}->{$name}; 734 my $answerResult = $pg->{answers}->{$name};
723 my $studentAnswer = $answerResult->{student_ans}; # original_student_ans 735 my $studentAnswer = $answerResult->{student_ans}; # original_student_ans
724 my $preview = ($showAttemptPreview 736 my $preview = ($showAttemptPreview
725 ? $self->previewAnswer($answerResult) 737 ? $self->previewAnswer($answerResult, $imgGen)
726 : ""); 738 : "");
727 my $correctAnswer = $answerResult->{correct_ans}; 739 my $correctAnswer = $answerResult->{correct_ans};
728 my $answerScore = $answerResult->{score}; 740 my $answerScore = $answerResult->{score};
729 my $answerMessage = $showMessages ? $answerResult->{ans_message} : ""; 741 my $answerMessage = $showMessages ? $answerResult->{ans_message} : "";
730 742
731 $numCorrect += $answerScore > 0; 743 $numCorrect += $answerScore > 0;
742 $row .= $showCorrectAnswers ? CGI::td(nbsp($correctAnswer)) : ""; 754 $row .= $showCorrectAnswers ? CGI::td(nbsp($correctAnswer)) : "";
743 $row .= $showAttemptResults ? CGI::td(nbsp($resultString)) : ""; 755 $row .= $showAttemptResults ? CGI::td(nbsp($resultString)) : "";
744 $row .= $answerMessage ? CGI::td(nbsp($answerMessage)) : ""; 756 $row .= $answerMessage ? CGI::td(nbsp($answerMessage)) : "";
745 push @tableRows, $row; 757 push @tableRows, $row;
746 } 758 }
759
760 # render equation images
761 $imgGen->render(refresh => 1);
747 762
748 my $numIncorrectNoun = scalar @answerNames == 1 ? "question" : "questions"; 763 my $numIncorrectNoun = scalar @answerNames == 1 ? "question" : "questions";
749 my $scorePercent = sprintf("%.0f%%", $problemResult->{score} * 100); 764 my $scorePercent = sprintf("%.0f%%", $problemResult->{score} * 100);
750 my $summary = "On this attempt, you answered $numCorrect out of " 765 my $summary = "On this attempt, you answered $numCorrect out of "
751 . scalar @answerNames . " $numIncorrectNoun correct, for a score of $scorePercent."; 766 . scalar @answerNames . " $numIncorrectNoun correct, for a score of $scorePercent.";
807 CGI::submit(-name=>"redisplay", -label=>"Save Options"), 822 CGI::submit(-name=>"redisplay", -label=>"Save Options"),
808 ); 823 );
809} 824}
810 825
811sub previewAnswer($$) { 826sub previewAnswer($$) {
812 my ($self, $answerResult) = @_; 827 my ($self, $answerResult, $imgGen) = @_;
813 my $ce = $self->{ce}; 828 my $ce = $self->{ce};
814 my $effectiveUser = $self->{effectiveUser}; 829 my $effectiveUser = $self->{effectiveUser};
815 my $set = $self->{set}; 830 my $set = $self->{set};
816 my $problem = $self->{problem}; 831 my $problem = $self->{problem};
817 my $displayMode = $self->{displayMode}; 832 my $displayMode = $self->{displayMode};
838 if ($?) { 853 if ($?) {
839 return "<b>[tth failed: $? $@]</b>"; 854 return "<b>[tth failed: $? $@]</b>";
840 } 855 }
841 return $result; 856 return $result;
842 } elsif ($displayMode eq "images") { 857 } elsif ($displayMode eq "images") {
843 # how are we going to name this? 858 ## how are we going to name this?
844 my $targetPathCommon = "/m2i/" 859 #my $targetPathCommon = "/m2i/"
845 . $effectiveUser->user_id . "." 860 # . $effectiveUser->user_id . "."
846 . $set->set_id . "." 861 # . $set->set_id . "."
847 . $problem->problem_id . "." 862 # . $problem->problem_id . "."
848 . $answerResult->{ans_name} . ".png"; 863 # . $answerResult->{ans_name} . ".png";
849 864 #
850 # figure out where to put things 865 ## figure out where to put things
851 my $wd = makeTempDirectory($ce->{courseDirs}->{html_temp}, "webwork-dvipng"); 866 #my $wd = makeTempDirectory($ce->{courseDirs}->{html_temp}, "webwork-dvipng");
852 my $latex = $ce->{externalPrograms}->{latex}; 867 #my $latex = $ce->{externalPrograms}->{latex};
853 my $dvipng = $ce->{externalPrograms}->{dvipng}; 868 #my $dvipng = $ce->{externalPrograms}->{dvipng};
854 my $targetPath = $ce->{courseDirs}->{html_temp} . $targetPathCommon; 869 #my $targetPath = $ce->{courseDirs}->{html_temp} . $targetPathCommon;
855 # should use surePathToTmpFile, but we have to 870 # # should use surePathToTmpFile, but we have to
856 # isolate it from the problem enivronment first 871 # # isolate it from the problem enivronment first
857 my $targetURL = $ce->{courseURLs}->{html_temp} . $targetPathCommon; 872 #my $targetURL = $ce->{courseURLs}->{html_temp} . $targetPathCommon;
858 873 #
859 # call dvipng to generate a preview 874 ## call dvipng to generate a preview
860 dvipng($wd, $latex, $dvipng, $tex, $targetPath); 875 #dvipng($wd, $latex, $dvipng, $tex, $targetPath);
861 rmtree($wd, 0, 0); 876 #rmtree($wd, 0, 0);
862 if (-e $targetPath) { 877 #if (-e $targetPath) {
863 return "<img src=\"$targetURL\" alt=\"$tex\" />"; 878 # return "<img src=\"$targetURL\" alt=\"$tex\" />";
864 } else { 879 #} else {
865 return "<b>[math2img failed]</b>"; 880 # return "<b>[math2img failed]</b>";
866 } 881 #}
882 $imgGen->add($answerResult->{preview_latex_string});
883
867 } 884 }
868} 885}
869 886
870##### logging subroutine #### 887##### logging subroutine ####
871 888

Legend:
Removed from v.1227  
changed lines
  Added in v.1234

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9