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

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

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

Revision 403 Revision 683
1################################################################################
2# WeBWorK mod_perl (c) 2000-2002 WeBWorK Project
3# $Id$
4################################################################################
5
1package WeBWorK::ContentGenerator::ProblemSets; 6package WeBWorK::ContentGenerator::ProblemSets;
2our @ISA = qw(WeBWorK::ContentGenerator);
3 7
8=head1 NAME
9
10WeBWorK::ContentGenerator::ProblemSets - Display a list of built problem sets.
11
12=cut
13
14use strict;
15use warnings;
16use base qw(WeBWorK::ContentGenerator);
17use Apache::Constants qw(:common);
18use CGI qw();
4use WeBWorK::ContentGenerator; 19use WeBWorK::ContentGenerator;
5use Apache::Constants qw(:common); 20use WeBWorK::DB::WW;
6use CGI qw(-compile :html :form); 21use WeBWorK::Utils qw(formatDateTime);
22
23sub initialize {
24 my $self = shift;
25 my $courseEnvironment = $self->{courseEnvironment};
26
27 # Open a database connection that we can use for the rest of
28 # the content generation.
29
30 my $wwdb = new WeBWorK::DB::WW $courseEnvironment;
31 $self->{wwdb} = $wwdb;
32}
33
34sub path {
35 my ($self, $args) = @_;
36
37 my $ce = $self->{courseEnvironment};
38 my $root = $ce->{webworkURLs}->{root};
39 my $courseName = $ce->{courseName};
40 return $self->pathMacro($args,
41 "Home" => "$root",
42 $courseName => "",
43 );
44}
7 45
8sub title { 46sub title {
9 my $self = shift; 47 my $self = shift;
10 my $r = $self->{r};
11 my $courseEnvironment = $self->{courseEnvironment}; 48 my $courseEnvironment = $self->{courseEnvironment};
12 my $user = $r->param('user'); 49
13 50 return $courseEnvironment->{courseName};
14 return "Problem Sets for $user";
15} 51}
16 52
17sub body { 53sub body {
18 my $self = shift; 54 my $self = shift;
19 my $r = $self->{r}; 55 my $r = $self->{r};
20 my $courseEnvironment = $self->{courseEnvironment}; 56 my $courseEnvironment = $self->{courseEnvironment};
21 my $user = $r->param('user'); 57 my $user = $r->param("user");
58 my $sort = $r->param("sort");
59 my $wwdb = $self->{wwdb};
22 60
61 $sort = "status" unless $sort eq "status" or $sort eq "name";
62 my $baseURL = $r->uri . "?" . $self->url_authen_args();
63 my $nameHeader = ($sort eq "name") ? "Name" : CGI::a({-href=>"$baseURL&sort=name"}, "Name");
64 my $statusHeader = ($sort eq "status") ? "Status" : CGI::a({-href=>"$baseURL&sort=status"}, "Status");
65
23 print startform({-method=>"POST", -action=>$r->uri."set0/"}); 66 print CGI::startform(-method=>"POST", -action=>$r->uri."hardcopy/");
24 print $self->hidden_authen_fields; 67 print $self->hidden_authen_fields;
25 print input({-type=>"submit", -value=>"Do Set 0"}); 68 print CGI::start_table();
69 print CGI::Tr(
70 CGI::th("Sel."),
71 CGI::th($nameHeader),
72 CGI::th($statusHeader),
73 CGI::th("Hardcopy"),
74 );
75
76 my @sets;
77 push @sets, $wwdb->getSet($user, $_) foreach ($wwdb->getSets($user));
78 @sets = sort byname @sets if $sort eq "name";
79 @sets = sort byduedate @sets if $sort eq "status";
80 foreach my $set (@sets) {
81 print $self->setListRow($set);
82 }
83
84 print CGI::end_table();
85 print CGI::p(CGI::submit("hardcopy", "Download Harcopy for Selected Sets"));
26 print endform; 86 print CGI::endform();
27 ""; 87
88 # feedback form
89 my $ce = $self->{courseEnvironment};
90 my $root = $ce->{webworkURLs}->{root};
91 my $courseName = $ce->{courseName};
92 my $feedbackURL = "$root/$courseName/feedback/";
93 print
94 CGI::startform("POST", $feedbackURL),
95 $self->hidden_authen_fields,
96 CGI::hidden("module", __PACKAGE__),
97 CGI::p({-align=>"right"},
98 CGI::submit(-name=>"feedbackForm", -label=>"Send Feedback")
99 ),
100 CGI::endform();
101
102 return "";
28} 103}
29 104
105sub setListRow($$) {
106 my $self = shift;
107 my $set = shift;
108
109 my $name = $set->id;
110
111 my $interactiveURL = "$name/?" . $self->url_authen_args;
112 my $hardcopyURL = "hardcopy/$name/?" . $self->url_authen_args;
113
114 my $openDate = formatDateTime($set->open_date);
115 my $dueDate = formatDateTime($set->due_date);
116 my $answerDate = formatDateTime($set->answer_date);
117
118 my $checkbox = CGI::checkbox(-name=>"set", -value=>$set->id, -label=>"");
119 my $interactive = CGI::a({-href=>$interactiveURL}, $name);
120 my $hardcopy = CGI::a({-href=>$hardcopyURL}, "download");
121
122 my $status;
123 if (time < $set->open_date) {
124 $status = "opens at $openDate";
125 $checkbox = "";
126 $interactive = $name;
127 $hardcopy = "";
128 } elsif (time < $set->due_date) {
129 $status = "open, due at $dueDate";
130 } elsif (time < $set->answer_date) {
131 $status = "closed, answers at $answerDate";
132 } else {
133 $status = "closed, answers available";
134 }
135
136 return CGI::Tr(CGI::td([
137 $checkbox,
138 $interactive,
139 $status,
140 $hardcopy,
141 ]));
142}
143
144sub byname { $a->id cmp $b->id; }
145sub byduedate { $a->due_date <=> $b->due_date; }
146
301; 1471;

Legend:
Removed from v.403  
changed lines
  Added in v.683

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9