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

Annotation of /trunk/webwork2/lib/WeBWorK/ContentGenerator/ProblemSets.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1500 - (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 : sh002i 818 use base qw(WeBWorK::ContentGenerator);
8 : malsyned 353
9 : sh002i 455 =head1 NAME
10 :    
11 :     WeBWorK::ContentGenerator::ProblemSets - Display a list of built problem sets.
12 :    
13 :     =cut
14 :    
15 : malsyned 441 use strict;
16 :     use warnings;
17 : sh002i 449 use CGI qw();
18 : sh002i 1111 use WeBWorK::Utils qw(readFile formatDateTime sortByName);
19 : malsyned 353
20 : sh002i 469 sub path {
21 :     my ($self, $args) = @_;
22 :    
23 : sh002i 809 my $ce = $self->{ce};
24 : sh002i 469 my $root = $ce->{webworkURLs}->{root};
25 :     my $courseName = $ce->{courseName};
26 :     return $self->pathMacro($args,
27 :     "Home" => "$root",
28 :     $courseName => "",
29 :     );
30 :     }
31 :    
32 : malsyned 353 sub title {
33 :     my $self = shift;
34 : sh002i 818 return $self->{ce}->{courseName};
35 : malsyned 353 }
36 :    
37 :     sub body {
38 :     my $self = shift;
39 :     my $r = $self->{r};
40 : sh002i 809 my $courseEnvironment = $self->{ce};
41 : sh002i 818 my $db = $self->{db};
42 : sh002i 683 my $user = $r->param("user");
43 : malsyned 720 my $effectiveUser = $r->param("effectiveUser");
44 : sh002i 692 my $sort = $r->param("sort") || "status";
45 : sh002i 818 my $permissionLevel = $db->getPermissionLevel($user)->permission();
46 : malsyned 353
47 : sh002i 721 if (defined $courseEnvironment->{courseFiles}->{motd}
48 :     and $courseEnvironment->{courseFiles}->{motd}) {
49 :     my $motd = eval { readFile($courseEnvironment->{courseFiles}->{motd}) };
50 :     $@ or print $motd;
51 :     }
52 : sh002i 701
53 : sh002i 683 $sort = "status" unless $sort eq "status" or $sort eq "name";
54 :     my $baseURL = $r->uri . "?" . $self->url_authen_args();
55 : sh002i 737 my $nameHeader = ($sort eq "name") ? CGI::u("Name") : CGI::a({-href=>"$baseURL&sort=name"}, "Name");
56 :     my $statusHeader = ($sort eq "status") ? CGI::u("Status") : CGI::a({-href=>"$baseURL&sort=status"}, "Status");
57 : sh002i 683
58 : sh002i 640 print CGI::startform(-method=>"POST", -action=>$r->uri."hardcopy/");
59 :     print $self->hidden_authen_fields;
60 : sh002i 449 print CGI::start_table();
61 :     print CGI::Tr(
62 : sh002i 469 CGI::th("Sel."),
63 : sh002i 683 CGI::th($nameHeader),
64 :     CGI::th($statusHeader),
65 : sh002i 737 #CGI::th("Hardcopy"),
66 : sh002i 449 );
67 :    
68 : sh002i 1229 my @setIDs = $db->listUserSets($effectiveUser);
69 :    
70 : sh002i 469 my @sets;
71 : sh002i 1229 foreach my $setID (@setIDs) {
72 : sh002i 1096 push @sets, $db->getMergedSet($effectiveUser, $setID);
73 :     }
74 : sh002i 1229
75 :    
76 : sh002i 1111 @sets = sortByName("set_id", @sets) if $sort eq "name";
77 : sh002i 683 @sets = sort byduedate @sets if $sort eq "status";
78 :     foreach my $set (@sets) {
79 : sh002i 739 print $self->setListRow($set, ($permissionLevel > 0),
80 :     ($permissionLevel > 0));
81 : sh002i 449 }
82 : malsyned 441
83 : sh002i 449 print CGI::end_table();
84 : sh002i 737 my $pl = ($permissionLevel > 0 ? "s" : "");
85 : gage 1438 print CGI::p(CGI::submit("hardcopy", "Download Hardcopy for Selected Set$pl"));
86 : sh002i 449 print CGI::endform();
87 : malsyned 441
88 : sh002i 669 # feedback form
89 : sh002i 809 my $ce = $self->{ce};
90 : sh002i 669 my $root = $ce->{webworkURLs}->{root};
91 :     my $courseName = $ce->{courseName};
92 :     my $feedbackURL = "$root/$courseName/feedback/";
93 : gage 1500
94 :    
95 :     #print feedback form
96 : sh002i 669 print
97 : gage 1500 CGI::start_form(-method=>"POST", -action=>$feedbackURL),"\n",
98 :     $self->hidden_authen_fields,"\n",
99 :     CGI::hidden("module", __PACKAGE__),"\n",
100 :     CGI::hidden("set", ''),"\n",
101 :     CGI::hidden("problem", ''),"\n",
102 :     CGI::hidden("displayMode", $self->{displayMode}),"\n",
103 :     CGI::hidden("showOldAnswers", ''),"\n",
104 :     CGI::hidden("showCorrectAnswers", ''),"\n",
105 :     CGI::hidden("showHints", ''),"\n",
106 :     CGI::hidden("showSolutions", ''),"\n",
107 :     CGI::p({-align=>"left"},
108 :     CGI::submit(-name=>"feedbackForm", -label=>"Email instructor")
109 : sh002i 669 ),
110 : gage 1500 CGI::endform(),"\n";
111 : sh002i 669
112 : sh002i 449 return "";
113 : malsyned 353 }
114 :    
115 : sh002i 737 sub setListRow($$$) {
116 : sh002i 739 my ($self, $set, $multiSet, $preOpenSets) = @_;
117 : sh002i 449
118 : gage 1489 my $name = $set->set_id;
119 : sh002i 449
120 : sh002i 555 my $interactiveURL = "$name/?" . $self->url_authen_args;
121 : sh002i 737 #my $hardcopyURL = "hardcopy/$name/?" . $self->url_authen_args;
122 : sh002i 469
123 : sh002i 449 my $openDate = formatDateTime($set->open_date);
124 :     my $dueDate = formatDateTime($set->due_date);
125 :     my $answerDate = formatDateTime($set->answer_date);
126 :    
127 : sh002i 818 #my $checkbox = CGI::checkbox(-name=>"hcSet", -value=>$set->set_id, -label=>"");
128 : sh002i 737
129 :     my $control = "";
130 :     if ($multiSet) {
131 :     $control = CGI::checkbox(
132 :     -name=>"hcSet",
133 :     -value=>$name,
134 :     -label=>"",
135 :     );
136 :     } else {
137 :     $control = CGI::radio_group(
138 :     -name=>"hcSet",
139 :     -values=>[$name],
140 :     -default=>"-",
141 :     -labels=>{$name => ""},
142 :     );
143 :     }
144 :    
145 : gage 1489 my $interactive = CGI::a({-href=>$interactiveURL}, "set $name");
146 : sh002i 449
147 :     my $status;
148 :     if (time < $set->open_date) {
149 :     $status = "opens at $openDate";
150 : sh002i 739 $control = "" unless $preOpenSets;
151 :     $interactive = $name unless $preOpenSets;
152 : sh002i 449 } elsif (time < $set->due_date) {
153 : malsyned 1459 $status = "open, due $dueDate";
154 : sh002i 449 } elsif (time < $set->answer_date) {
155 :     $status = "closed, answers at $answerDate";
156 :     } else {
157 :     $status = "closed, answers available";
158 :     }
159 :    
160 :     return CGI::Tr(CGI::td([
161 : sh002i 737 $control,
162 : sh002i 469 $interactive,
163 : sh002i 449 $status,
164 :     ]));
165 :     }
166 : gage 1469 sub info {
167 :     my $self = shift;
168 :     my $r = $self->{r};
169 :     my $courseEnvironment = $self->{ce};
170 : sh002i 449
171 : gage 1469 if (defined $courseEnvironment->{courseFiles}->{course_info}
172 :     and $courseEnvironment->{courseFiles}->{course_info}) {
173 :     my $course_info = eval { readFile($courseEnvironment->{courseFiles}->{course_info}) };
174 :     $@ or print $course_info;
175 :     }
176 :     '';
177 :     }
178 : sh002i 919 sub byname { $a->set_id cmp $b->set_id; }
179 : sh002i 683 sub byduedate { $a->due_date <=> $b->due_date; }
180 :    
181 : malsyned 353 1;

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9