Parent Directory
|
Revision Log
added Hardcopy. TODO: &getMultiSetTeX figure out what to do about making several sets into 1 TeX \doc make PDF generation code (minimize temp file use!) (to this end, module-ize pip? haha.) -sam
1 ################################################################################ 2 # WeBWorK mod_perl (c) 1995-2002 WeBWorK Team, Univeristy of Rochester 3 # $Id$ 4 ################################################################################ 5 6 package WeBWorK::ContentGenerator::Hardcopy; 7 8 =head1 NAME 9 10 WeBWorK::ContentGenerator::Test - generate a PDF version of one or more 11 problem sets. 12 13 =cut 14 15 use strict; 16 use warnings; 17 use base qw(WeBWorK::ContentGenerator); 18 use Apache::Constants qw(:common); 19 use CGI qw(); 20 use WeBWorK::Form; 21 use WeBWorK::Utils qw(readFile); 22 23 sub go { 24 my ($self, $singleSet) = @_; 25 $singleSet =~ s/^set//; 26 my $r = $self->{r}; 27 my $ce = $self->{courseEnvironment}; 28 $self->{wwdb} = WeBWorK::DB::WW->new($ce); 29 30 my @sets = $r->param("set"); 31 unshift @sets, $singleSet; 32 return DECLINED unless @sets; 33 34 $r->content_type("text/plain"); 35 $r->send_http_header(); 36 print $self->getSetTeX($singleSet); 37 38 return OK; 39 } 40 41 sub getMultiSetTeX { 42 43 } 44 45 sub getSetTeX { 46 my ($self, $setName) = @_; 47 my $ce = $self->{courseEnvironment}; 48 my $wwdb = $self->{wwdb}; 49 my $user = $self->{r}->param("user"); 50 my @problemNumbers = $wwdb->getProblems($user, $setName); 51 52 my $tex; 53 54 # include the set preamble 55 $tex .= texBlockComment("BEGIN Set: $setName Preamble"); 56 eval { $tex .= readFile($ce->{webworkFiles}->{paperSetPreamble}) }; 57 $@ and warn $@; 58 59 # render the set header (problem 0 is the set header, see PG.pm) 60 #$tex .= texBlockComment("BEGIN Set: $setName Header"); 61 #$tex .= $self->getProblemTeX($setName, 0); 62 63 # render each problem 64 foreach my $problemNumber (sort { $a <=> $b } @problemNumbers) { 65 $tex .= texBlockComment("BEGIN Set: $setName Problem: $problemNumber"); 66 $tex .= $self->getProblemTeX($setName, $problemNumber); 67 } 68 69 # include the set postamble 70 $tex .= texBlockComment("BEGIN Set: $setName Postamble"); 71 eval { $tex .= readFile($ce->{webworkFiles}->{paperSetPostamble}) }; 72 $@ and warn $@; 73 74 return $tex; 75 } 76 77 sub getProblemTeX { 78 my ($self, $setName, $problemNumber) = @_; 79 my $r = $self->{r}; 80 my $ce = $self->{courseEnvironment}; 81 82 my $pg = WeBWorK::PG->new( 83 $ce, 84 $r->param('user'), 85 $r->param('key'), 86 $setName, 87 $problemNumber, 88 { # translation options 89 displayMode => "tex", 90 showHints => 0, 91 showSolutions => 0, 92 processAnswers => 0, 93 }, 94 WeBWorK::Form->new->Vars 95 ); 96 97 return $pg->{body_text}; 98 } 99 100 sub texBlockComment { 101 return "%% \n%% " . join("", @_) . "\n%% \n"; 102 } 103 104 1;
| aubreyja at gmail dot com | ViewVC Help |
| Powered by ViewVC 1.0.9 |