[system] / trunk / webwork-modperl / lib / WeBWorK / ContentGenerator / ProblemSets.pm Repository:
ViewVC logotype

View of /trunk/webwork-modperl/lib/WeBWorK/ContentGenerator/ProblemSets.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1096 - (download) (as text) (annotate)
Mon Jun 9 23:25:09 2003 UTC (10 years ago) by sh002i
File size: 4227 byte(s)
*** empty log message ***

    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   foreach my $setID ($db->listUserSets($effectiveUser)) {
   70     push @sets, $db->getMergedSet($effectiveUser, $setID);
   71   }
   72   @sets = sort byname @sets if $sort eq "name";
   73   @sets = sort byduedate @sets if $sort eq "status";
   74   foreach my $set (@sets) {
   75     print $self->setListRow($set, ($permissionLevel > 0),
   76       ($permissionLevel > 0));
   77   }
   78 
   79   print CGI::end_table();
   80   my $pl = ($permissionLevel > 0 ? "s" : "");
   81   print CGI::p(CGI::submit("hardcopy", "Download Harcopy for Selected Set$pl"));
   82   print CGI::endform();
   83 
   84   # feedback form
   85   my $ce = $self->{ce};
   86   my $root = $ce->{webworkURLs}->{root};
   87   my $courseName = $ce->{courseName};
   88   my $feedbackURL = "$root/$courseName/feedback/";
   89   print
   90     CGI::startform("POST", $feedbackURL),
   91     $self->hidden_authen_fields,
   92     CGI::hidden("module", __PACKAGE__),
   93     CGI::p({-align=>"right"},
   94       CGI::submit(-name=>"feedbackForm", -label=>"Send Feedback")
   95     ),
   96     CGI::endform();
   97 
   98   return "";
   99 }
  100 
  101 sub setListRow($$$) {
  102   my ($self, $set, $multiSet, $preOpenSets) = @_;
  103 
  104   my $name = $set->set_id;
  105 
  106   my $interactiveURL = "$name/?" . $self->url_authen_args;
  107   #my $hardcopyURL = "hardcopy/$name/?" . $self->url_authen_args;
  108 
  109   my $openDate = formatDateTime($set->open_date);
  110   my $dueDate = formatDateTime($set->due_date);
  111   my $answerDate = formatDateTime($set->answer_date);
  112 
  113   #my $checkbox = CGI::checkbox(-name=>"hcSet", -value=>$set->set_id, -label=>"");
  114 
  115   my $control = "";
  116   if ($multiSet) {
  117     $control = CGI::checkbox(
  118       -name=>"hcSet",
  119       -value=>$name,
  120       -label=>"",
  121     );
  122   } else {
  123     $control = CGI::radio_group(
  124       -name=>"hcSet",
  125       -values=>[$name],
  126       -default=>"-",
  127       -labels=>{$name => ""},
  128     );
  129   }
  130 
  131   my $interactive = CGI::a({-href=>$interactiveURL}, $name);
  132   #my $hardcopy = CGI::a({-href=>$hardcopyURL}, "download");
  133 
  134   my $status;
  135   if (time < $set->open_date) {
  136     $status = "opens at $openDate";
  137     $control = "" unless $preOpenSets;
  138     $interactive = $name unless $preOpenSets;
  139     #$hardcopy = "";
  140   } elsif (time < $set->due_date) {
  141     $status = "open, due at $dueDate";
  142   } elsif (time < $set->answer_date) {
  143     $status = "closed, answers at $answerDate";
  144   } else {
  145     $status = "closed, answers available";
  146   }
  147 
  148   return CGI::Tr(CGI::td([
  149     $control,
  150     $interactive,
  151     $status,
  152     #$hardcopy,
  153   ]));
  154 }
  155 
  156 sub byname { $a->set_id cmp $b->set_id; }
  157 sub byduedate { $a->due_date <=> $b->due_date; }
  158 
  159 1;

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9