[system] / trunk / webwork2 / lib / WeBWorK / ContentGenerator / Hardcopy.pm Repository:
ViewVC logotype

View of /trunk/webwork2/lib/WeBWorK/ContentGenerator/Hardcopy.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 478 - (download) (as text) (annotate)
Tue Aug 20 01:10:31 2002 UTC (10 years, 9 months ago) by sh002i
File size: 2447 byte(s)
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