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