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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 720 - (view) (download) (as text)

1 : sh002i 455 ################################################################################
2 : sh002i 494 # WeBWorK mod_perl (c) 2000-2002 WeBWorK Project
3 : sh002i 455 # $Id$
4 :     ################################################################################
5 :    
6 : malsyned 353 package WeBWorK::ContentGenerator::ProblemSets;
7 :    
8 : sh002i 455 =head1 NAME
9 :    
10 :     WeBWorK::ContentGenerator::ProblemSets - Display a list of built problem sets.
11 :    
12 :     =cut
13 :    
14 : malsyned 441 use strict;
15 :     use warnings;
16 : sh002i 455 use base qw(WeBWorK::ContentGenerator);
17 : sh002i 449 use Apache::Constants qw(:common);
18 :     use CGI qw();
19 : malsyned 353 use WeBWorK::ContentGenerator;
20 : malsyned 441 use WeBWorK::DB::WW;
21 : sh002i 701 use WeBWorK::Utils qw(readFile formatDateTime);
22 : malsyned 353
23 : malsyned 441 sub 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 :    
34 : sh002i 469 sub 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 :     }
45 :    
46 : malsyned 353 sub title {
47 :     my $self = shift;
48 :     my $courseEnvironment = $self->{courseEnvironment};
49 : sh002i 469
50 :     return $courseEnvironment->{courseName};
51 : malsyned 353 }
52 :    
53 :     sub body {
54 :     my $self = shift;
55 :     my $r = $self->{r};
56 :     my $courseEnvironment = $self->{courseEnvironment};
57 : sh002i 683 my $user = $r->param("user");
58 : malsyned 720 my $effectiveUser = $r->param("effectiveUser");
59 : sh002i 692 my $sort = $r->param("sort") || "status";
60 : malsyned 441 my $wwdb = $self->{wwdb};
61 : malsyned 353
62 : sh002i 701 my $motd = eval { readFile($courseEnvironment->{courseFiles}->{motd}) };
63 :     $@ or print $motd;
64 :    
65 : sh002i 683 $sort = "status" unless $sort eq "status" or $sort eq "name";
66 :     my $baseURL = $r->uri . "?" . $self->url_authen_args();
67 :     my $nameHeader = ($sort eq "name") ? "Name" : CGI::a({-href=>"$baseURL&sort=name"}, "Name");
68 :     my $statusHeader = ($sort eq "status") ? "Status" : CGI::a({-href=>"$baseURL&sort=status"}, "Status");
69 :    
70 : sh002i 640 print CGI::startform(-method=>"POST", -action=>$r->uri."hardcopy/");
71 :     print $self->hidden_authen_fields;
72 : sh002i 449 print CGI::start_table();
73 :     print CGI::Tr(
74 : sh002i 469 CGI::th("Sel."),
75 : sh002i 683 CGI::th($nameHeader),
76 :     CGI::th($statusHeader),
77 : sh002i 469 CGI::th("Hardcopy"),
78 : sh002i 449 );
79 :    
80 : sh002i 469 my @sets;
81 : malsyned 720 push @sets, $wwdb->getSet($effectiveUser, $_) foreach ($wwdb->getSets($effectiveUser));
82 : sh002i 683 @sets = sort byname @sets if $sort eq "name";
83 :     @sets = sort byduedate @sets if $sort eq "status";
84 :     foreach my $set (@sets) {
85 : sh002i 469 print $self->setListRow($set);
86 : sh002i 449 }
87 : malsyned 441
88 : sh002i 449 print CGI::end_table();
89 : sh002i 469 print CGI::p(CGI::submit("hardcopy", "Download Harcopy for Selected Sets"));
90 : sh002i 449 print CGI::endform();
91 : malsyned 441
92 : sh002i 669 # feedback form
93 :     my $ce = $self->{courseEnvironment};
94 :     my $root = $ce->{webworkURLs}->{root};
95 :     my $courseName = $ce->{courseName};
96 :     my $feedbackURL = "$root/$courseName/feedback/";
97 :     print
98 :     CGI::startform("POST", $feedbackURL),
99 :     $self->hidden_authen_fields,
100 :     CGI::hidden("module", __PACKAGE__),
101 :     CGI::p({-align=>"right"},
102 :     CGI::submit(-name=>"feedbackForm", -label=>"Send Feedback")
103 :     ),
104 :     CGI::endform();
105 :    
106 : sh002i 449 return "";
107 : malsyned 353 }
108 :    
109 : sh002i 469 sub setListRow($$) {
110 :     my $self = shift;
111 : sh002i 449 my $set = shift;
112 :    
113 :     my $name = $set->id;
114 :    
115 : sh002i 555 my $interactiveURL = "$name/?" . $self->url_authen_args;
116 :     my $hardcopyURL = "hardcopy/$name/?" . $self->url_authen_args;
117 : sh002i 469
118 : sh002i 449 my $openDate = formatDateTime($set->open_date);
119 :     my $dueDate = formatDateTime($set->due_date);
120 :     my $answerDate = formatDateTime($set->answer_date);
121 :    
122 :     my $checkbox = CGI::checkbox(-name=>"set", -value=>$set->id, -label=>"");
123 : sh002i 469 my $interactive = CGI::a({-href=>$interactiveURL}, $name);
124 : sh002i 555 my $hardcopy = CGI::a({-href=>$hardcopyURL}, "download");
125 : sh002i 449
126 :     my $status;
127 :     if (time < $set->open_date) {
128 :     $status = "opens at $openDate";
129 :     $checkbox = "";
130 : sh002i 469 $interactive = $name;
131 : sh002i 449 $hardcopy = "";
132 :     } elsif (time < $set->due_date) {
133 :     $status = "open, due at $dueDate";
134 :     } elsif (time < $set->answer_date) {
135 :     $status = "closed, answers at $answerDate";
136 :     } else {
137 :     $status = "closed, answers available";
138 :     }
139 :    
140 :     return CGI::Tr(CGI::td([
141 :     $checkbox,
142 : sh002i 469 $interactive,
143 : sh002i 449 $status,
144 :     $hardcopy,
145 :     ]));
146 :     }
147 :    
148 : sh002i 683 sub byname { $a->id cmp $b->id; }
149 :     sub byduedate { $a->due_date <=> $b->due_date; }
150 :    
151 : malsyned 353 1;

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9