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

View of /trunk/webwork2/lib/WeBWorK/ContentGenerator/ProblemSets.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1229 - (download) (as text) (annotate)
Fri Jun 20 01:20:01 2003 UTC (9 years, 11 months ago) by sh002i
File size: 4184 byte(s)
housekeeping

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

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9