[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 1714 - (view) (download) (as text)

1 : sh002i 455 ################################################################################
2 : sh002i 1663 # WeBWorK Online Homework Delivery System
3 :     # Copyright © 2000-2003 The WeBWorK Project, http://openwebwork.sf.net/
4 : gage 1714 # $CVSHeader: webwork-modperl/lib/WeBWorK/ContentGenerator/ProblemSets.pm,v 1.35 2003/12/12 02:24:29 gage Exp $
5 : sh002i 1663 #
6 :     # This program is free software; you can redistribute it and/or modify it under
7 :     # the terms of either: (a) the GNU General Public License as published by the
8 :     # Free Software Foundation; either version 2, or (at your option) any later
9 :     # version, or (b) the "Artistic License" which comes with this package.
10 :     #
11 :     # This program is distributed in the hope that it will be useful, but WITHOUT
12 :     # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 :     # FOR A PARTICULAR PURPOSE. See either the GNU General Public License or the
14 :     # Artistic License for more details.
15 : sh002i 455 ################################################################################
16 :    
17 : malsyned 353 package WeBWorK::ContentGenerator::ProblemSets;
18 : sh002i 818 use base qw(WeBWorK::ContentGenerator);
19 : malsyned 353
20 : sh002i 455 =head1 NAME
21 :    
22 :     WeBWorK::ContentGenerator::ProblemSets - Display a list of built problem sets.
23 :    
24 :     =cut
25 :    
26 : malsyned 441 use strict;
27 :     use warnings;
28 : sh002i 449 use CGI qw();
29 : sh002i 1111 use WeBWorK::Utils qw(readFile formatDateTime sortByName);
30 : malsyned 353
31 : sh002i 469 sub path {
32 :     my ($self, $args) = @_;
33 :    
34 : sh002i 809 my $ce = $self->{ce};
35 : sh002i 469 my $root = $ce->{webworkURLs}->{root};
36 :     my $courseName = $ce->{courseName};
37 :     return $self->pathMacro($args,
38 :     "Home" => "$root",
39 :     $courseName => "",
40 :     );
41 :     }
42 :    
43 : malsyned 353 sub title {
44 : gage 1714 my $self = shift;
45 :     my $r = $self ->{r};
46 :     my $db = $self ->{db};
47 :     my $user = $r -> param("user");
48 :     my $courseName = $self ->{ce} -> {courseName};
49 :    
50 :     return "WeBWorK welcomes user $user to $courseName" ;
51 : malsyned 353 }
52 :    
53 :     sub body {
54 :     my $self = shift;
55 :     my $r = $self->{r};
56 : sh002i 809 my $courseEnvironment = $self->{ce};
57 : sh002i 818 my $db = $self->{db};
58 : sh002i 683 my $user = $r->param("user");
59 : malsyned 720 my $effectiveUser = $r->param("effectiveUser");
60 : sh002i 692 my $sort = $r->param("sort") || "status";
61 : gage 1667 my $permissionLevel = $db->getPermissionLevel($user)->permission(); # checked???
62 :     $permissionLevel =0 unless defined $permissionLevel;
63 : malsyned 353
64 : sh002i 721 if (defined $courseEnvironment->{courseFiles}->{motd}
65 :     and $courseEnvironment->{courseFiles}->{motd}) {
66 :     my $motd = eval { readFile($courseEnvironment->{courseFiles}->{motd}) };
67 :     $@ or print $motd;
68 :     }
69 : sh002i 701
70 : sh002i 683 $sort = "status" unless $sort eq "status" or $sort eq "name";
71 :     my $baseURL = $r->uri . "?" . $self->url_authen_args();
72 : sh002i 737 my $nameHeader = ($sort eq "name") ? CGI::u("Name") : CGI::a({-href=>"$baseURL&sort=name"}, "Name");
73 :     my $statusHeader = ($sort eq "status") ? CGI::u("Status") : CGI::a({-href=>"$baseURL&sort=status"}, "Status");
74 : sh002i 683
75 : sh002i 640 print CGI::startform(-method=>"POST", -action=>$r->uri."hardcopy/");
76 :     print $self->hidden_authen_fields;
77 : sh002i 449 print CGI::start_table();
78 :     print CGI::Tr(
79 : sh002i 469 CGI::th("Sel."),
80 : sh002i 683 CGI::th($nameHeader),
81 :     CGI::th($statusHeader),
82 : sh002i 737 #CGI::th("Hardcopy"),
83 : sh002i 449 );
84 :    
85 : sh002i 1229 my @setIDs = $db->listUserSets($effectiveUser);
86 :    
87 : sh002i 1650 my @userSetIDs = map {[$effectiveUser, $_]} @setIDs;
88 : gage 1632 $WeBWorK::timer->continue("Begin collecting merged sets") if defined($WeBWorK::timer);
89 : sh002i 1650 my @sets = $db->getMergedSets( @userSetIDs );
90 : gage 1632 $WeBWorK::timer->continue("Begin sorting merged sets") if defined($WeBWorK::timer);
91 : sh002i 1229
92 : sh002i 1111 @sets = sortByName("set_id", @sets) if $sort eq "name";
93 : sh002i 683 @sets = sort byduedate @sets if $sort eq "status";
94 : gage 1632 $WeBWorK::timer->continue("End preparing merged sets") if defined($WeBWorK::timer);
95 :    
96 : sh002i 683 foreach my $set (@sets) {
97 : gage 1667 die "set $set not defined" unless $set;
98 : sh002i 739 print $self->setListRow($set, ($permissionLevel > 0),
99 :     ($permissionLevel > 0));
100 : sh002i 449 }
101 : malsyned 441
102 : sh002i 449 print CGI::end_table();
103 : sh002i 737 my $pl = ($permissionLevel > 0 ? "s" : "");
104 : gage 1438 print CGI::p(CGI::submit("hardcopy", "Download Hardcopy for Selected Set$pl"));
105 : sh002i 449 print CGI::endform();
106 : malsyned 441
107 : sh002i 669 # feedback form
108 : sh002i 809 my $ce = $self->{ce};
109 : sh002i 669 my $root = $ce->{webworkURLs}->{root};
110 :     my $courseName = $ce->{courseName};
111 :     my $feedbackURL = "$root/$courseName/feedback/";
112 : gage 1500
113 :    
114 :     #print feedback form
115 : sh002i 669 print
116 : gage 1500 CGI::start_form(-method=>"POST", -action=>$feedbackURL),"\n",
117 :     $self->hidden_authen_fields,"\n",
118 :     CGI::hidden("module", __PACKAGE__),"\n",
119 :     CGI::hidden("set", ''),"\n",
120 :     CGI::hidden("problem", ''),"\n",
121 :     CGI::hidden("displayMode", $self->{displayMode}),"\n",
122 :     CGI::hidden("showOldAnswers", ''),"\n",
123 :     CGI::hidden("showCorrectAnswers", ''),"\n",
124 :     CGI::hidden("showHints", ''),"\n",
125 :     CGI::hidden("showSolutions", ''),"\n",
126 :     CGI::p({-align=>"left"},
127 :     CGI::submit(-name=>"feedbackForm", -label=>"Email instructor")
128 : sh002i 669 ),
129 : gage 1500 CGI::endform(),"\n";
130 : sh002i 669
131 : sh002i 449 return "";
132 : malsyned 353 }
133 :    
134 : sh002i 737 sub setListRow($$$) {
135 : sh002i 739 my ($self, $set, $multiSet, $preOpenSets) = @_;
136 : sh002i 449
137 : gage 1489 my $name = $set->set_id;
138 : sh002i 449
139 : sh002i 555 my $interactiveURL = "$name/?" . $self->url_authen_args;
140 : sh002i 737 #my $hardcopyURL = "hardcopy/$name/?" . $self->url_authen_args;
141 : sh002i 469
142 : sh002i 449 my $openDate = formatDateTime($set->open_date);
143 :     my $dueDate = formatDateTime($set->due_date);
144 :     my $answerDate = formatDateTime($set->answer_date);
145 :    
146 : sh002i 818 #my $checkbox = CGI::checkbox(-name=>"hcSet", -value=>$set->set_id, -label=>"");
147 : sh002i 737
148 :     my $control = "";
149 :     if ($multiSet) {
150 :     $control = CGI::checkbox(
151 :     -name=>"hcSet",
152 :     -value=>$name,
153 :     -label=>"",
154 :     );
155 :     } else {
156 :     $control = CGI::radio_group(
157 :     -name=>"hcSet",
158 :     -values=>[$name],
159 :     -default=>"-",
160 :     -labels=>{$name => ""},
161 :     );
162 :     }
163 :    
164 : gage 1489 my $interactive = CGI::a({-href=>$interactiveURL}, "set $name");
165 : sh002i 449
166 :     my $status;
167 :     if (time < $set->open_date) {
168 :     $status = "opens at $openDate";
169 : sh002i 739 $control = "" unless $preOpenSets;
170 :     $interactive = $name unless $preOpenSets;
171 : sh002i 449 } elsif (time < $set->due_date) {
172 : malsyned 1459 $status = "open, due $dueDate";
173 : sh002i 449 } elsif (time < $set->answer_date) {
174 :     $status = "closed, answers at $answerDate";
175 :     } else {
176 :     $status = "closed, answers available";
177 :     }
178 :    
179 :     return CGI::Tr(CGI::td([
180 : sh002i 737 $control,
181 : sh002i 469 $interactive,
182 : sh002i 449 $status,
183 :     ]));
184 :     }
185 : gage 1469 sub info {
186 :     my $self = shift;
187 :     my $r = $self->{r};
188 :     my $courseEnvironment = $self->{ce};
189 : sh002i 449
190 : gage 1469 if (defined $courseEnvironment->{courseFiles}->{course_info}
191 :     and $courseEnvironment->{courseFiles}->{course_info}) {
192 :     my $course_info = eval { readFile($courseEnvironment->{courseFiles}->{course_info}) };
193 :     $@ or print $course_info;
194 :     }
195 :     '';
196 :     }
197 : sh002i 919 sub byname { $a->set_id cmp $b->set_id; }
198 : sh002i 683 sub byduedate { $a->due_date <=> $b->due_date; }
199 :    
200 : malsyned 353 1;

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9