[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 818 - (download) (as text) (annotate)
Fri Apr 25 04:51:37 2003 UTC (10 years, 1 month ago) by sh002i
File size: 4204 byte(s)
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