From: Mike G. v. a. <we...@ma...> - 2010-05-14 01:21:37
|
Log Message: ----------- minor changes to configuration section Modified Files: -------------- webwork2/lib: WebworkWebservice.pm webwork2/lib/Apache: WeBWorK.pm webwork2/lib/WeBWorK/ContentGenerator: ProblemRenderer.pm Revision Data ------------- Index: WebworkWebservice.pm =================================================================== RCS file: /webwork/cvs/system/webwork2/lib/WebworkWebservice.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -Llib/WebworkWebservice.pm -Llib/WebworkWebservice.pm -u -r1.5 -r1.6 --- lib/WebworkWebservice.pm +++ lib/WebworkWebservice.pm @@ -17,8 +17,18 @@ # warn "Assuming webwork directory is |$webwork_directory| and |$webwork_directory2|", $webwork_directory eq $webwork_directory2; # #WTF??? why don't these two methods give me the same directory name? - my $webwork_directory = '/opt/webwork/webwork2'; - +############################################################################### +# Configuration -- set to top webwork directory (webwork2) (set in webwork.apache2-config) +# Configuration -- set server name +############################################################################### + + my $webwork_directory = $WeBWorK::Constants::WEBWORK_DIRECTORY; #'/opt/webwork/webwork2'; + + $WebworkWebservice::HOST_NAME = 'localhost'; # Apache->server->server_hostname; + $WebworkWebservice::HOST_PORT = '80'; # Apache->server->port; + +############################################################################### + eval "use lib '$webwork_directory/lib'"; die $@ if $@; eval "use WeBWorK::CourseEnvironment"; die $@ if $@; my $ce = new WeBWorK::CourseEnvironment({ webwork_dir => $webwork_directory }); @@ -29,16 +39,19 @@ $WebworkWebservice::WW_DIRECTORY = $webwork_directory; $WebworkWebservice::PG_DIRECTORY = $pg_dir; $WebworkWebservice::SeedCE = $ce; - $WebworkWebservice::HOST_NAME = 'localhost'; #Apache->server->server_hostname; - $WebworkWebservice::HOST_PORT = '80'; #Apache->server->port; + +############################################################################### + $WebworkWebservice::PASSWORD = 'xmluser'; $WebworkWebservice::COURSENAME = 'daemon2_course'; # default course + + warn "webwork_directory set to ", $WeBWorK::Constants::WEBWORK_DIRECTORY; } use strict; -############################################################################### + package WebworkWebservice; Index: ProblemRenderer.pm =================================================================== RCS file: /webwork/cvs/system/webwork2/lib/WeBWorK/ContentGenerator/ProblemRenderer.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -Llib/WeBWorK/ContentGenerator/ProblemRenderer.pm -Llib/WeBWorK/ContentGenerator/ProblemRenderer.pm -u -r1.1 -r1.2 --- lib/WeBWorK/ContentGenerator/ProblemRenderer.pm +++ lib/WeBWorK/ContentGenerator/ProblemRenderer.pm @@ -16,6 +16,7 @@ package WeBWorK::ContentGenerator::ProblemRenderer; use base qw(WeBWorK::ContentGenerator); +use MIME::Base64 qw( encode_base64 decode_base64); =head1 NAME @@ -27,23 +28,33 @@ use strict; use warnings; use WeBWorK::CGI; +use WeBWorK::Utils qw(pretty_print_rh); use WeBWorK::Utils::Tasks qw(renderProblems); sub pre_header_initialize { my ($self) = @_; my $r = $self->r; - + my $db = new WeBWorK::DB($r->ce->{dbLayout}); + $r->db($db); + my $pg = $r->param('pg'); + $pg = decode_base64($r->param('problemSource')); my $file = $r->param('file'); my $seed = $r->param('seed'); + $seed = $r->param('problemSeed'); my $mode = $r->param('mode'); my $hint = $r->param('hint'); my $sol = $r->param('sol'); - + # pretty_print_rh($r); + # pretty_print_rh($r->{paramcache}); + warn "answers", @{ $r->{paramcache}->{AnSwEr0001}},"answersSubmitted",@{ $r->{paramcache}->{answersSubmitted}}; + warn "problemSource" , @{ $r->{paramcache}->{problemSource} }; + warn "request object", ${$r->{r}}; + #die "view warning"; die "must specify either a PG problems (param 'pg') or a path to a PG file (param 'file') and not both" unless defined $pg and length $pg xor defined $file and length $file; - my $problem = $self->get_problem($pg, $file); + #my $problem = $self->get_problem($pg, $file); my @options = (r=>$r, problem_list=>[\$pg]); #push @options, (problem_seed=>$seed) if defined $seed; @@ -54,15 +65,15 @@ ($self->{result}) = renderProblems(@options); } -sub get_problem { - my ($self, $pg, $file) = @_; - - if (defined $pg) { - return \$pg; - } else { - return $file; - } -} +# sub get_problem { +# my ($self, $pg, $file) = @_; +# +# if (defined $pg) { +# return \$pg; +# } else { +# return $file; +# } +# } use Data::Dumper; sub content { @@ -82,4 +93,92 @@ EOF } +# ideas from renderProblem.pl + +# new version of output: +# my $out2 = { +# text => encode_base64( $pg->{body_text} ), +# header_text => encode_base64( $pg->{head_text} ), +# answers => $pg->{answers}, +# errors => $pg->{errors}, +# WARNINGS => encode_base64($pg->{warnings} ), +# problem_result => $pg->{result}, +# problem_state => $pg->{state}, +# #PG_flag => $pg->{flags}, +# +# +# +# }; +sub formatAnswerRow { + my $rh_answer = shift; + my $problemNumber = shift; + my $answerString = $rh_answer->{original_student_ans}||' '; + my $correctAnswer = $rh_answer->{correct_ans}||''; + my $score = ($rh_answer->{score}) ? 'Correct' : 'Incorrect'; + my $row = qq{ + <tr> + <td> + $problemNumber + </td> + <td> + $answerString + </td> + <td> + $score + </td> + <td> + Correct answer is $correctAnswer + </td> + <td> + <i></i> + </td> + </tr>\n + }; + $row; +} + +# sub formatRenderedProblem { +# my $rh_result = shift; # wrap problem in formats +# my $problemText = decode_base64($rh_result->{text}); +# my $rh_answers = $rh_result->{answers}; +# +# my $warnings = ''; +# if ( defined ($rh_result->{WARNINGS}) and $rh_result->{WARNINGS} ){ +# $warnings = "<div style=\"background-color:pink\"> +# <p >WARNINGS</p><p>".decode_base64($rh_result->{WARNINGS})."</p></div>"; +# } +# +# ; +# # collect answers +# my $answerTemplate = q{<hr>ANSWERS <table border="3" align="center">}; +# my $problemNumber = 1; +# foreach my $key (sort keys %{$rh_answers}) { +# $answerTemplate .= formatAnswerRow($rh_answers->{$key}, $problemNumber++); +# } +# $answerTemplate .= q{</table> <hr>}; +# +# +# +# my $problemTemplate = <<ENDPROBLEMTEMPLATE; +# +# $answerTemplate +# $warnings +# <form action="http://webhost.math.rochester.edu/webworkdocs/ww/render" method="post"> +# $problemText +# <input type="hidden" name="answersSubmitted" value="1"> +# <input type="hidden" name="problemAddress" value="probSource"> +# <input type="hidden" name="problemSource" value="$encodedSource"> +# <input type="hidden" name="problemSeed" value="1234"> +# <input type="hidden" name="pathToProblemFile" value="foobar"> +# <p><input type="submit" name="submit" value="submit answers"></p> +# </form> +# +# +# ENDPROBLEMTEMPLATE +# +# +# +# $problemTemplate; +# } + 1; |