Parent Directory
|
Revision Log
An MOTD can be displayed on the problem sets page. Define
$courseFiles{motd} to point to a file containing the message.
-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::Utils qw(readFile formatDateTime); 22 23 sub initialize { 24 my $self = shift; 25 my $courseEnvironment = $self->{courseEnvironment}; 26 27 # Open a database connection that we can use for the rest of 28 # the content generation. 29 30 my $wwdb = new WeBWorK::DB::WW $courseEnvironment; 31 $self->{wwdb} = $wwdb; 32 } 33 34 sub path { 35 my ($self, $args) = @_; 36 37 my $ce = $self->{courseEnvironment}; 38 my $root = $ce->{webworkURLs}->{root}; 39 my $courseName = $ce->{courseName}; 40 return $self->pathMacro($args, 41 "Home" => "$root", 42 $courseName => "", 43 ); 44 } 45 46 sub title { 47 my $self = shift; 48 my $courseEnvironment = $self->{courseEnvironment}; 49 50 return $courseEnvironment->{courseName}; 51 } 52 53 sub body { 54 my $self = shift; 55 my $r = $self->{r}; 56 my $courseEnvironment = $self->{courseEnvironment}; 57 my $user = $r->param("user"); 58 my $sort = $r->param("sort") || "status"; 59 my $wwdb = $self->{wwdb}; 60 61 my $motd = eval { readFile($courseEnvironment->{courseFiles}->{motd}) }; 62 $@ or print $motd; 63 64 $sort = "status" unless $sort eq "status" or $sort eq "name"; 65 my $baseURL = $r->uri . "?" . $self->url_authen_args(); 66 my $nameHeader = ($sort eq "name") ? "Name" : CGI::a({-href=>"$baseURL&sort=name"}, "Name"); 67 my $statusHeader = ($sort eq "status") ? "Status" : CGI::a({-href=>"$baseURL&sort=status"}, "Status"); 68 69 print CGI::startform(-method=>"POST", -action=>$r->uri."hardcopy/"); 70 print $self->hidden_authen_fields; 71 print CGI::start_table(); 72 print CGI::Tr( 73 CGI::th("Sel."), 74 CGI::th($nameHeader), 75 CGI::th($statusHeader), 76 CGI::th("Hardcopy"), 77 ); 78 79 my @sets; 80 push @sets, $wwdb->getSet($user, $_) foreach ($wwdb->getSets($user)); 81 @sets = sort byname @sets if $sort eq "name"; 82 @sets = sort byduedate @sets if $sort eq "status"; 83 foreach my $set (@sets) { 84 print $self->setListRow($set); 85 } 86 87 print CGI::end_table(); 88 print CGI::p(CGI::submit("hardcopy", "Download Harcopy for Selected Sets")); 89 print CGI::endform(); 90 91 # feedback form 92 my $ce = $self->{courseEnvironment}; 93 my $root = $ce->{webworkURLs}->{root}; 94 my $courseName = $ce->{courseName}; 95 my $feedbackURL = "$root/$courseName/feedback/"; 96 print 97 CGI::startform("POST", $feedbackURL), 98 $self->hidden_authen_fields, 99 CGI::hidden("module", __PACKAGE__), 100 CGI::p({-align=>"right"}, 101 CGI::submit(-name=>"feedbackForm", -label=>"Send Feedback") 102 ), 103 CGI::endform(); 104 105 return ""; 106 } 107 108 sub setListRow($$) { 109 my $self = shift; 110 my $set = shift; 111 112 my $name = $set->id; 113 114 my $interactiveURL = "$name/?" . $self->url_authen_args; 115 my $hardcopyURL = "hardcopy/$name/?" . $self->url_authen_args; 116 117 my $openDate = formatDateTime($set->open_date); 118 my $dueDate = formatDateTime($set->due_date); 119 my $answerDate = formatDateTime($set->answer_date); 120 121 my $checkbox = CGI::checkbox(-name=>"set", -value=>$set->id, -label=>""); 122 my $interactive = CGI::a({-href=>$interactiveURL}, $name); 123 my $hardcopy = CGI::a({-href=>$hardcopyURL}, "download"); 124 125 my $status; 126 if (time < $set->open_date) { 127 $status = "opens at $openDate"; 128 $checkbox = ""; 129 $interactive = $name; 130 $hardcopy = ""; 131 } elsif (time < $set->due_date) { 132 $status = "open, due at $dueDate"; 133 } elsif (time < $set->answer_date) { 134 $status = "closed, answers at $answerDate"; 135 } else { 136 $status = "closed, answers available"; 137 } 138 139 return CGI::Tr(CGI::td([ 140 $checkbox, 141 $interactive, 142 $status, 143 $hardcopy, 144 ])); 145 } 146 147 sub byname { $a->id cmp $b->id; } 148 sub byduedate { $a->due_date <=> $b->due_date; } 149 150 1;
| aubreyja at gmail dot com | ViewVC Help |
| Powered by ViewVC 1.0.9 |