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

Diff of /trunk/webwork2/lib/WeBWorK/ContentGenerator/Hardcopy.pm

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

Revision 809 Revision 818
16use warnings; 16use warnings;
17use base qw(WeBWorK::ContentGenerator); 17use base qw(WeBWorK::ContentGenerator);
18use CGI qw(); 18use CGI qw();
19use File::Path qw(rmtree); 19use File::Path qw(rmtree);
20use File::Temp qw(tempdir); 20use File::Temp qw(tempdir);
21use WeBWorK::DB::Classlist;
22use WeBWorK::DB::WW;
23use WeBWorK::Form; 21use WeBWorK::Form;
24use WeBWorK::Utils qw(readFile); 22use WeBWorK::Utils qw(readFile);
25 23
26sub go { 24sub go {
27 my ($self, $singleSet) = @_; 25 my ($self, $singleSet) = @_;
28 26
29 my $r = $self->{r}; 27 my $r = $self->{r};
30 my $ce = $self->{ce}; 28 my $ce = $self->{ce};
29 my $db = $self->{db};
31 my @sets = $r->param("hcSet"); 30 my @sets = $r->param("hcSet");
32 my @users = $r->param("hcUser"); 31 my @users = $r->param("hcUser");
33 32
34 # add singleSet to the list of sets 33 # add singleSet to the list of sets
35 if (length $singleSet > 0) { 34 if (length $singleSet > 0) {
40 # default user is the effectiveUser 39 # default user is the effectiveUser
41 unless (@users) { 40 unless (@users) {
42 unshift @users, $r->param("effectiveUser"); 41 unshift @users, $r->param("effectiveUser");
43 } 42 }
44 43
45 $self->{cldb} = WeBWorK::DB::Classlist->new($ce);
46 $self->{authdb} = WeBWorK::DB::Auth->new($ce);
47 $self->{wwdb} = WeBWorK::DB::WW->new($ce);
48 $self->{user} = $self->{cldb}->getUser($r->param("user")); 44 $self->{user} = $db->getUser($r->param("user"));
49 $self->{permissionLevel} = $self->{authdb}->getPermissions($r->param("user")); 45 $self->{permissionLevel} = $db->getPermissionLevel($r->param("user"))->permission();
50 $self->{effectiveUser} = $self->{cldb}->getUser($r->param("effectiveUser")); 46 $self->{effectiveUser} = $db->getUser($r->param("effectiveUser"));
51 $self->{sets} = \@sets; 47 $self->{sets} = \@sets;
52 $self->{users} = \@users; 48 $self->{users} = \@users;
53 $self->{errors} = []; 49 $self->{errors} = [];
54 $self->{warnings} = []; 50 $self->{warnings} = [];
55 51
162# ----- 158# -----
163 159
164sub displayForm($) { 160sub displayForm($) {
165 my $self = shift; 161 my $self = shift;
166 my $r = $self->{r}; 162 my $r = $self->{r};
163 my $db = $self->{db};
167 164
168 print CGI::start_p(), "Select the problem sets for which to generate hardcopy versions."; 165 print CGI::start_p(), "Select the problem sets for which to generate hardcopy versions.";
169 if ($self->{permissionLevel} > 0) { 166 if ($self->{permissionLevel} > 0) {
170 print "You may also select multiple users from the users list. You will receive hardcopy for each (set, user) pair."; 167 print "You may also select multiple users from the users list. You will receive hardcopy for each (set, user) pair.";
171 } 168 }
202 { 199 {
203 print CGI::start_td(); 200 print CGI::start_td();
204 print CGI::h3("Sets"); 201 print CGI::h3("Sets");
205 print CGI::start_table(); 202 print CGI::start_table();
206 my @sets; 203 my @sets;
207 push @sets, $self->{wwdb}->getSet($self->{effectiveUser}->id, $_) 204 push @sets, $db->getGlobalUserSet($self->{effectiveUser}->id, $_)
208 foreach ($self->{wwdb}->getSets($self->{effectiveUser}->id)); 205 foreach ($db->listUserSets($self->{effectiveUser}->id));
209 @sets = sort { $a->id cmp $b->id } @sets; 206 @sets = sort { $a->set_id cmp $b->set_id } @sets;
210 foreach my $set (@sets) { 207 foreach my $set (@sets) {
211 my $checked = grep { $_ eq $set->id } @{$self->{sets}}; 208 my $checked = grep { $_ eq $set->set_id } @{$self->{sets}};
212 my $control; 209 my $control;
213 if (time < $set->open_date and not $preOpenSets) { 210 if (time < $set->open_date and not $preOpenSets) {
214 $control = ""; 211 $control = "";
215 } else { 212 } else {
216 if ($multiSet) { 213 if ($multiSet) {
217 $control = CGI::checkbox( 214 $control = CGI::checkbox(
218 -name=>"hcSet", 215 -name=>"hcSet",
219 -value=>$set->id, 216 -value=>$set->set_id,
220 -label=>"", 217 -label=>"",
221 -checked=>$checked 218 -checked=>$checked
222 ); 219 );
223 } else { 220 } else {
224 $control = CGI::radio_group( 221 $control = CGI::radio_group(
225 -name=>"hcSet", 222 -name=>"hcSet",
226 -values=>[$set->id], 223 -values=>[$set->set_id],
227 -default=>($checked ? $set->id : "-"), 224 -default=>($checked ? $set->set_id : "-"),
228 -labels=>{$set->id => ""} 225 -labels=>{$set->set_id => ""}
229 ); 226 );
230 } 227 }
231 } 228 }
232 print CGI::Tr(CGI::td([ 229 print CGI::Tr(CGI::td([
233 $control, 230 $control,
234 $set->id, 231 $set->set_id,
235 ])); 232 ]));
236 } 233 }
237 print CGI::end_table(); 234 print CGI::end_table();
238 print CGI::end_td(); 235 print CGI::end_td();
239 } 236 }
248 # CGI::td({-colspan=>"2"}, "All Users"), 245 # CGI::td({-colspan=>"2"}, "All Users"),
249 #); 246 #);
250 #print CGI::Tr(CGI::td({-colspan=>"3"}, "&nbsp;")); 247 #print CGI::Tr(CGI::td({-colspan=>"3"}, "&nbsp;"));
251 my @users; 248 my @users;
252 push @users, $self->{cldb}->getUser($_) 249 push @users, $self->{cldb}->getUser($_)
253 foreach ($self->{cldb}->getUsers()); 250 foreach ($self->{cldb}->listUsers());
254 @users = sort { $a->last_name cmp $b->last_name } @users; 251 @users = sort { $a->last_name cmp $b->last_name } @users;
255 foreach my $user (@users) { 252 foreach my $user (@users) {
256 my $checked = grep { $_ eq $user->id } @{$self->{users}}; 253 my $checked = grep { $_ eq $user->id } @{$self->{users}};
257 print CGI::Tr(CGI::td([ 254 print CGI::Tr(CGI::td([
258 CGI::checkbox(-name=>"hcUser", -value=>$user->id, -label=>"", -checked=>$checked), 255 CGI::checkbox(-name=>"hcUser", -value=>$user->id, -label=>"", -checked=>$checked),
406} 403}
407 404
408sub getSetTeX { 405sub getSetTeX {
409 my ($self, $setName) = @_; 406 my ($self, $setName) = @_;
410 my $ce = $self->{ce}; 407 my $ce = $self->{ce};
411 my $wwdb = $self->{wwdb}; 408 my $db = $self->{db};
412 my $effectiveUserName = $self->{effectiveUser}->id; 409 my $effectiveUserName = $self->{effectiveUser}->id;
413 my @problemNumbers = sort { $a <=> $b } $wwdb->getProblems($effectiveUserName, $setName); 410 my @problemNumbers = sort { $a <=> $b }
411 $db->listUserProblems($effectiveUserName, $setName);
414 412
415 # get header and footer 413 # get header and footer
416 my $setHeader = $wwdb->getSet($effectiveUserName, $setName)->set_header 414 my $setHeader = $db->getGlobalUserSet($effectiveUserName, $setName)->set_header
417 || $ce->{webworkFiles}->{hardcopySnippets}->{setHeader}; 415 || $ce->{webworkFiles}->{hardcopySnippets}->{setHeader};
418 # database doesn't support the following yet :( 416 # database doesn't support the following yet :(
419 #my $setFooter = $wwdb->getSet($effectiveUserName, $setName)->set_footer 417 #my $setFooter = $wwdb->getGlobalUserSet($effectiveUserName, $setName)->set_footer
420 # || $ce->{webworkFiles}->{hardcopySnippets}->{setFooter}; 418 # || $ce->{webworkFiles}->{hardcopySnippets}->{setFooter};
421 # so we don't allow per-set customization, which is probably okay :) 419 # so we don't allow per-set customization, which is probably okay :)
422 my $setFooter = $ce->{webworkFiles}->{hardcopySnippets}->{setFooter}; 420 my $setFooter = $ce->{webworkFiles}->{hardcopySnippets}->{setFooter};
423 421
424 my $tex = ""; 422 my $tex = "";
446 444
447sub getProblemTeX { 445sub getProblemTeX {
448 my ($self, $setName, $problemNumber, $pgFile) = @_; 446 my ($self, $setName, $problemNumber, $pgFile) = @_;
449 my $r = $self->{r}; 447 my $r = $self->{r};
450 my $ce = $self->{ce}; 448 my $ce = $self->{ce};
451
452 my $wwdb = $self->{wwdb}; 449 my $db = $self->{db};
453 my $cldb = $self->{cldb}; 450
454 my $authdb = $self->{authdb};
455 my $effectiveUser = $self->{effectiveUser}; 451 my $effectiveUser = $self->{effectiveUser};
456 my $permissionLevel = $self->{permissionLevel}; 452 my $permissionLevel = $self->{permissionLevel};
457 my $set = $wwdb->getSet($effectiveUser->id, $setName); 453 my $set = $db->getGlobalUserSet($effectiveUser->id, $setName);
458 my $psvn = $wwdb->getPSVN($effectiveUser->id, $setName); 454 my $psvn = $set->psvn();
459 455
460 # decide what to do about problem number 456 # decide what to do about problem number
461 my $problem; 457 my $problem;
462 if ($problemNumber) { 458 if ($problemNumber) {
463 $problem = $wwdb->getProblem($effectiveUser->id, $setName, $problemNumber); 459 $problem = $db->getGlobalUserProblem($effectiveUser->id, $setName, $problemNumber);
464 } elsif ($pgFile) { 460 } elsif ($pgFile) {
465 $problem = WeBWorK::Problem->new( 461 $problem = WeBWorK::DB::Record::UserProblem->new(
466 id => 0,
467 set_id => $set->id, 462 set_id => $set->set_id,
463 problem_id => 0,
468 login_id => $effectiveUser->id, 464 login_id => $effectiveUser->id,
469 source_file => $pgFile, 465 source_file => $pgFile,
470 # the rest of Problem's fields are not needed, i think 466 # the rest of Problem's fields are not needed, i think
471 ); 467 );
472 } 468 }

Legend:
Removed from v.809  
changed lines
  Added in v.818

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9