[system] / branches / rel-2-1-a1 / webwork-modperl / lib / WeBWorK / ContentGenerator / ProblemSet.pm Repository:
ViewVC logotype

Diff of /branches/rel-2-1-a1/webwork-modperl/lib/WeBWorK/ContentGenerator/ProblemSet.pm

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

Revision 525 Revision 526
16use warnings; 16use warnings;
17use base qw(WeBWorK::ContentGenerator); 17use base qw(WeBWorK::ContentGenerator);
18use Apache::Constants qw(:common); 18use Apache::Constants qw(:common);
19use CGI qw(); 19use CGI qw();
20use WeBWorK::ContentGenerator; 20use WeBWorK::ContentGenerator;
21use WeBWorK::ContentGenerator::Problem;
22use WeBWorK::DB::WW;
23use WeBWorK::DB::Classlist;
21 24
22sub initialize { 25sub initialize {
23 my $self = shift; 26 my $self = shift;
24 my $courseEnvironment = $self->{courseEnvironment}; 27 my $courseEnvironment = $self->{courseEnvironment};
25 28
26 # Open a database connection that we can use for the rest of 29 # Open a database connection that we can use for the rest of
27 # the content generation. 30 # the content generation.
28 31
29 my $wwdb = new WeBWorK::DB::WW $courseEnvironment; 32 $self->{wwdb} = WeBWorK::DB::WW->new($courseEnvironment);
30 $self->{wwdb} = $wwdb; 33 $self->{cldb} = WeBWorK::DB::Classlist->new($courseEnvironment);
31} 34}
32 35
33sub path { 36sub path {
34 my ($self, $setName, $args) = @_; 37 my ($self, $setName, $args) = @_;
35 $setName =~ s/^set//; 38 $setName =~ s/^set//;
36
37 39
38 my $ce = $self->{courseEnvironment}; 40 my $ce = $self->{courseEnvironment};
39 my $root = $ce->{webworkURLs}->{root}; 41 my $root = $ce->{webworkURLs}->{root};
40 my $courseName = $ce->{courseName}; 42 my $courseName = $ce->{courseName};
41 return $self->pathMacro($args, 43 return $self->pathMacro($args,
50 $setName =~ s/^set//; 52 $setName =~ s/^set//;
51 53
52 my $ce = $self->{courseEnvironment}; 54 my $ce = $self->{courseEnvironment};
53 my $root = $ce->{webworkURLs}->{root}; 55 my $root = $ce->{webworkURLs}->{root};
54 my $courseName = $ce->{courseName}; 56 my $courseName = $ce->{courseName};
55 57
58 print CGI::strong("Problem Sets"), CGI::br();
59
56 my $wwdb = $self->{wwdb}; 60 my $wwdb = $self->{wwdb};
57 my $user = $self->{r}->param("user"); 61 my $user = $self->{r}->param("user");
58 my @sets; 62 my @sets;
59 push @sets, $wwdb->getSet($user, $_) foreach ($wwdb->getSets($user)); 63 push @sets, $wwdb->getSet($user, $_) foreach ($wwdb->getSets($user));
60 foreach my $set (sort { $a->open_date <=> $b->open_date } @sets) { 64 foreach my $set (sort { $a->open_date <=> $b->open_date } @sets) {
72 $setName =~ s/^set//; 76 $setName =~ s/^set//;
73 77
74 return $setName; 78 return $setName;
75} 79}
76 80
81sub info {
82 # NOTE: info doesn't
83 my ($self, $setName) = @_;
84 $setName =~ s/^set//;
85
86 my $r = $self->{r};
87 my $ce = $self->{courseEnvironment};
88
89 my $wwdb = $self->{wwdb};
90 my $cldb = $self->{cldb};
91 my $user = $cldb->getUser($r->param("user"));
92 my $set = $wwdb->getSet($user->id, $setName);
93 my $psvn = $wwdb->getPSVN($user->id, $setName);
94
95 my $screenSetHeader = $ce->{webworkFiles}->{screenSnippets}->{setHeader};
96 my $displayMode = $ce->{pg}->{options}->{displayMode};
97
98 return "" unless defined $screenSetHeader and $screenSetHeader;
99
100 # decide what to do about problem number
101 my $problem = WeBWorK::Problem->new(
102 id => 0,
103 set_id => $set->id,
104 login_id => $user->id,
105 source_file => $screenSetHeader,
106 # the rest of Problem's fields are not needed, i think
107 );
108
109 my $pg = WeBWorK::PG->new(
110 $ce,
111 $user,
112 $r->param('key'),
113 $set,
114 $problem,
115 $psvn,
116 {}, # no form fields!
117 { # translation options
118 displayMode => $displayMode,
119 showHints => 0,
120 showSolutions => 0,
121 processAnswers => 0,
122 },
123 );
124
125 # handle translation errors
126 if ($pg->{flags}->{error_flag}) {
127 return WeBWorK::ContentGenerator::Problem::translationError(
128 $pg->{errors}, $pg->{body_text});
129 } else {
130 return $pg->{body_text};
131 }
132}
133
77sub body { 134sub body {
78 my ($self, $setName) = @_; 135 my ($self, $setName) = @_;
79 $setName =~ s/^set//; 136 $setName =~ s/^set//;
80 my $r = $self->{r}; 137 my $r = $self->{r};
81 my $courseEnvironment = $self->{courseEnvironment}; 138 my $courseEnvironment = $self->{courseEnvironment};
82 my $user = $r->param('user'); 139 my $user = $r->param('user');
83 my $wwdb = $self->{wwdb}; 140 my $wwdb = $self->{wwdb};
84 141
85 # *** *** *** *** 142 my $hardcopyURL =
86 # somewhere in here, we have to print the problem set header! 143 $courseEnvironment->{webworkURLs}->{root} . "/"
87 # *** *** *** *** 144 . $courseEnvironment->{courseName} . "/"
145 . "hardcopy/set$setName/?" . $self->url_authen_args;
146 print CGI::p(CGI::a({-href=>$hardcopyURL}, "Download a hardcopy"),
147 "of this problem set.");
88 148
89 print CGI::start_table(); 149 print CGI::start_table();
90 print CGI::Tr( 150 print CGI::Tr(
91 CGI::th("Name"), 151 CGI::th("Name"),
92 CGI::th("Attempts"), 152 CGI::th("Attempts"),
118 my $remaining = $problem->max_attempts < 0 178 my $remaining = $problem->max_attempts < 0
119 ? "unlimited" 179 ? "unlimited"
120 : $problem->max_attempts - $attempts; 180 : $problem->max_attempts - $attempts;
121 my $status = $problem->status * 100 . "%"; 181 my $status = $problem->status * 100 . "%";
122 182
123 return CGI::Tr(CGI::td([ 183 return CGI::Tr(CGI::td({-nowrap=>1}, [
124 $interactive, 184 $interactive,
125 $attempts, 185 $attempts,
126 $remaining, 186 $remaining,
127 $status, 187 $status,
128 ])); 188 ]));

Legend:
Removed from v.525  
changed lines
  Added in v.526

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9