Parent Directory
|
Revision Log
merged changes from rel-2-0-pr1-hardcopy-changes -sam
1 ################################################################################ 2 # WeBWorK mod_perl (c) 2000-2002 WeBWorK Project 3 # $Id$ 4 ################################################################################ 5 6 package WeBWorK::ContentGenerator::ProblemSets; 7 8 =head1 NAME 9 10 WeBWorK::ContentGenerator::ProblemSets - Display a list of built problem sets. 11 12 =cut 13 14 use strict; 15 use warnings; 16 use base qw(WeBWorK::ContentGenerator); 17 use Apache::Constants qw(:common); 18 use CGI qw(); 19 use WeBWorK::ContentGenerator; 20 use WeBWorK::DB::WW; 21 use WeBWorK::DB::Auth; 22 use WeBWorK::Utils qw(readFile formatDateTime); 23 24 sub initialize { 25 my $self = shift; 26 my $courseEnvironment = $self->{courseEnvironment}; 27 28 # Open a database connection that we can use for the rest of 29 # the content generation. 30 31 $self->{wwdb} = new WeBWorK::DB::WW $courseEnvironment; 32 $self->{authdb} = new WeBWorK::DB::Auth $courseEnvironment; 33 } 34 35 sub path { 36 my ($self, $args) = @_; 37 38 my $ce = $self->{courseEnvironment}; 39 my $root = $ce->{webworkURLs}->{root}; 40 my $courseName = $ce->{courseName}; 41 return $self->pathMacro($args, 42 "Home" => "$root", 43 $courseName => "", 44 ); 45 } 46 47 sub title { 48 my $self = shift; 49 my $courseEnvironment = $self->{courseEnvironment}; 50 51 return $courseEnvironment->{courseName}; 52 } 53 54 sub body { 55 my $self = shift; 56 my $r = $self->{r}; 57 my $courseEnvironment = $self->{courseEnvironment}; 58 my $user = $r->param("user"); 59 my $effectiveUser = $r->param("effectiveUser"); 60 my $sort = $r->param("sort") || "status"; 61 my $wwdb = $self->{wwdb}; 62 my $authdb = $self->{authdb}; 63 my $permissionLevel = $authdb->getPermissions($user); 64 65 if (defined $courseEnvironment->{courseFiles}->{motd} 66 and $courseEnvironment->{courseFiles}->{motd}) { 67 my $motd = eval { readFile($courseEnvironment->{courseFiles}->{motd}) }; 68 $@ or print $motd; 69 } 70 71 $sort = "status" unless $sort eq "status" or $sort eq "name"; 72 my $baseURL = $r->uri . "?" . $self->url_authen_args(); 73 my $nameHeader = ($sort eq "name") ? CGI::u("Name") : CGI::a({-href=>"$baseURL&sort=name"}, "Name"); 74 my $statusHeader = ($sort eq "status") ? CGI::u("Status") : CGI::a({-href=>"$baseURL&sort=status"}, "Status"); 75 76 print CGI::startform(-method=>"POST", -action=>$r->uri."hardcopy/"); 77 print $self->hidden_authen_fields; 78 print CGI::start_table(); 79 print CGI::Tr( 80 CGI::th("Sel."), 81 CGI::th($nameHeader), 82 CGI::th($statusHeader), 83 #CGI::th("Hardcopy"), 84 ); 85 86 my @sets; 87 push @sets, $wwdb->getSet($effectiveUser, $_) foreach ($wwdb->getSets($effectiveUser)); 88 @sets = sort byname @sets if $sort eq "name"; 89 @sets = sort byduedate @sets if $sort eq "status"; 90 foreach my $set (@sets) { 91 print $self->setListRow($set, ($permissionLevel > 0)); 92 } 93 94 print CGI::end_table(); 95 my $pl = ($permissionLevel > 0 ? "s" : ""); 96 print CGI::p(CGI::submit("hardcopy", "Download Harcopy for Selected Set$pl")); 97 print CGI::endform(); 98 99 # feedback form 100 my $ce = $self->{courseEnvironment}; 101 my $root = $ce->{webworkURLs}->{root}; 102 my $courseName = $ce->{courseName}; 103 my $feedbackURL = "$root/$courseName/feedback/"; 104 print 105 CGI::startform("POST", $feedbackURL), 106 $self->hidden_authen_fields, 107 CGI::hidden("module", __PACKAGE__), 108 CGI::p({-align=>"right"}, 109 CGI::submit(-name=>"feedbackForm", -label=>"Send Feedback") 110 ), 111 CGI::endform(); 112 113 return ""; 114 } 115 116 sub setListRow($$$) { 117 my ($self, $set, $multiSet) = @_; 118 119 my $name = $set->id; 120 121 my $interactiveURL = "$name/?" . $self->url_authen_args; 122 #my $hardcopyURL = "hardcopy/$name/?" . $self->url_authen_args; 123 124 my $openDate = formatDateTime($set->open_date); 125 my $dueDate = formatDateTime($set->due_date); 126 my $answerDate = formatDateTime($set->answer_date); 127 128 #my $checkbox = CGI::checkbox(-name=>"hcSet", -value=>$set->id, -label=>""); 129 130 my $control = ""; 131 if ($multiSet) { 132 $control = CGI::checkbox( 133 -name=>"hcSet", 134 -value=>$name, 135 -label=>"", 136 ); 137 } else { 138 $control = CGI::radio_group( 139 -name=>"hcSet", 140 -values=>[$name], 141 -default=>"-", 142 -labels=>{$name => ""}, 143 ); 144 } 145 146 my $interactive = CGI::a({-href=>$interactiveURL}, $name); 147 #my $hardcopy = CGI::a({-href=>$hardcopyURL}, "download"); 148 149 my $status; 150 if (time < $set->open_date) { 151 $status = "opens at $openDate"; 152 $control = ""; 153 $interactive = $name; 154 #$hardcopy = ""; 155 } elsif (time < $set->due_date) { 156 $status = "open, due at $dueDate"; 157 } elsif (time < $set->answer_date) { 158 $status = "closed, answers at $answerDate"; 159 } else { 160 $status = "closed, answers available"; 161 } 162 163 return CGI::Tr(CGI::td([ 164 $control, 165 $interactive, 166 $status, 167 #$hardcopy, 168 ])); 169 } 170 171 sub byname { $a->id cmp $b->id; } 172 sub byduedate { $a->due_date <=> $b->due_date; } 173 174 1;
| aubreyja at gmail dot com | ViewVC Help |
| Powered by ViewVC 1.0.9 |