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

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

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

Revision 468 Revision 469
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;
21 21
22sub initialize {
23 my $self = shift;
24 my $courseEnvironment = $self->{courseEnvironment};
25
26 # Open a database connection that we can use for the rest of
27 # the content generation.
28
29 my $wwdb = new WeBWorK::DB::WW $courseEnvironment;
30 $self->{wwdb} = $wwdb;
31}
32
33sub path {
34 my ($self, $setName, $args) = @_;
35 $setName =~ s/^set//;
36
37
38 my $ce = $self->{courseEnvironment};
39 my $root = $ce->{webworkURLs}->{root};
40 my $courseName = $ce->{courseName};
41 return $self->pathMacro($args,
42 "Home" => "$root",
43 $courseName => "$root/$courseName",
44 $setName => "",
45 );
46}
47
48sub siblings {
49 my ($self, $setName) = @_;
50 $setName =~ s/^set//;
51
52 my $ce = $self->{courseEnvironment};
53 my $root = $ce->{webworkURLs}->{root};
54 my $courseName = $ce->{courseName};
55
56 my $wwdb = $self->{wwdb};
57 my $user = $self->{r}->param("user");
58 my @sets;
59 push @sets, $wwdb->getSet($user, $_) foreach ($wwdb->getSets($user));
60 foreach my $set (sort { $a->open_date <=> $b->open_date } @sets) {
61 if (time >= $set->open_date) {
62 print CGI::a({-href=>"$root/$courseName/".$set->id."/?"
63 . $self->url_authen_args}, $set->id), CGI::br();
64 } else {
65 print $set->id, CGI::br();
66 }
67 }
68}
69
22sub title { 70sub title {
23 my ($self, $problem_set) = @_; 71 my ($self, $setName) = @_;
72 $setName =~ s/^set//;
73
74 return $setName;
75}
76
77sub body {
78 my ($self, $setName) = @_;
79 $setName =~ s/^set//;
24 my $r = $self->{r}; 80 my $r = $self->{r};
25 my $courseEnvironment = $self->{courseEnvironment}; 81 my $courseEnvironment = $self->{courseEnvironment};
26 my $user = $r->param('user'); 82 my $user = $r->param('user');
27 83 my $wwdb = $self->{wwdb};
28 return "Problem set $problem_set for $user"; 84
85 print CGI::start_table();
86 print CGI::Tr(
87 CGI::th("Name"),
88 CGI::th("Attempts"),
89 CGI::th("Remaining"),
90 CGI::th("Status"),
91 );
92
93 my $set = $wwdb->getSet($user, $setName);
94 my @problemNumbers = $wwdb->getProblems($user, $setName);
95 foreach my $problemNumber (sort { $a <=> $b } @problemNumbers) {
96 my $problem = $wwdb->getProblem($user, $setName, $problemNumber);
97 print $self->problemListRow($set, $problem);
98 }
99
100 print CGI::end_table();
101
102 return "";
29} 103}
30 104
31sub body { 105sub problemListRow($$$) {
32 my ($self, $problem_set) = @_; 106 my $self = shift;
33 my $r = $self->{r}; 107 my $set = shift;
34 my $courseEnvironment = $self->{courseEnvironment}; 108 my $problem = shift;
35 my $user = $r->param('user');
36 109
37 print CGI->startform({-method=>"POST", -action=>$r->uri."prob2/"}); 110 my $name = $problem->id;
38 print $self->hidden_authen_fields; 111 my $interactiveURL = "prob$name/?" . $self->url_authen_args;
39 print CGI->input({-type=>"submit", -value=>"Do Problem 2"}); 112 my $interactive = CGI::a({-href=>$interactiveURL}, "Problem $name");
40 print CGI->endform(); 113 my $attempts = $problem->num_correct + $problem->num_incorrect;
41 ""; 114 my $remaining = $problem->max_attempts < 0
115 ? "unlimited"
116 : $problem->max_attempts - $attempts;
117 my $status = $problem->status * 100 . "%";
118
119 return CGI::Tr(CGI::td([
120 $interactive,
121 $attempts,
122 $remaining,
123 $status,
124 ]));
42} 125}
43 126
441; 1271;

Legend:
Removed from v.468  
changed lines
  Added in v.469

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9