[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 737 - (download) (as text) (annotate)
Tue Feb 18 07:04:13 2003 UTC (10 years, 3 months ago) by sh002i
File size: 4643 byte(s)
merged changes from rel-2-0-pr1-hardcopy-changes
-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::DB::Auth;
   22 use WeBWorK::Utils qw(readFile formatDateTime);
   23 
   24 sub initialize {
   25   my $self = shift;
   26   my $courseEnvironment = $self->{courseEnvironment};
   27 
   28   # Open a database connection that we can use for the rest of
   29   # the content generation.
   30 
   31   $self->{wwdb} = new WeBWorK::DB::WW $courseEnvironment;
   32   $self->{authdb} = new WeBWorK::DB::Auth $courseEnvironment;
   33 }
   34 
   35 sub path {
   36   my ($self, $args) = @_;
   37 
   38   my $ce = $self->{courseEnvironment};
   39   my $root = $ce->{webworkURLs}->{root};
   40   my $courseName = $ce->{courseName};
   41   return $self->pathMacro($args,
   42     "Home" => "$root",
   43     $courseName => "",
   44   );
   45 }
   46 
   47 sub title {
   48   my $self = shift;
   49   my $courseEnvironment = $self->{courseEnvironment};
   50 
   51   return $courseEnvironment->{courseName};
   52 }
   53 
   54 sub body {
   55   my $self = shift;
   56   my $r = $self->{r};
   57   my $courseEnvironment = $self->{courseEnvironment};
   58   my $user = $r->param("user");
   59   my $effectiveUser = $r->param("effectiveUser");
   60   my $sort = $r->param("sort") || "status";
   61   my $wwdb = $self->{wwdb};
   62   my $authdb = $self->{authdb};
   63   my $permissionLevel = $authdb->getPermissions($user);
   64 
   65   if (defined $courseEnvironment->{courseFiles}->{motd}
   66     and $courseEnvironment->{courseFiles}->{motd}) {
   67     my $motd = eval { readFile($courseEnvironment->{courseFiles}->{motd}) };
   68     $@ or print $motd;
   69   }
   70 
   71   $sort = "status" unless $sort eq "status" or $sort eq "name";
   72   my $baseURL = $r->uri . "?" . $self->url_authen_args();
   73   my $nameHeader = ($sort eq "name") ? CGI::u("Name") : CGI::a({-href=>"$baseURL&sort=name"}, "Name");
   74   my $statusHeader = ($sort eq "status") ? CGI::u("Status") : CGI::a({-href=>"$baseURL&sort=status"}, "Status");
   75 
   76   print CGI::startform(-method=>"POST", -action=>$r->uri."hardcopy/");
   77   print $self->hidden_authen_fields;
   78   print CGI::start_table();
   79   print CGI::Tr(
   80     CGI::th("Sel."),
   81     CGI::th($nameHeader),
   82     CGI::th($statusHeader),
   83     #CGI::th("Hardcopy"),
   84   );
   85 
   86   my @sets;
   87   push @sets, $wwdb->getSet($effectiveUser, $_) foreach ($wwdb->getSets($effectiveUser));
   88   @sets = sort byname @sets if $sort eq "name";
   89   @sets = sort byduedate @sets if $sort eq "status";
   90   foreach my $set (@sets) {
   91     print $self->setListRow($set, ($permissionLevel > 0));
   92   }
   93 
   94   print CGI::end_table();
   95   my $pl = ($permissionLevel > 0 ? "s" : "");
   96   print CGI::p(CGI::submit("hardcopy", "Download Harcopy for Selected Set$pl"));
   97   print CGI::endform();
   98 
   99   # feedback form
  100   my $ce = $self->{courseEnvironment};
  101   my $root = $ce->{webworkURLs}->{root};
  102   my $courseName = $ce->{courseName};
  103   my $feedbackURL = "$root/$courseName/feedback/";
  104   print
  105     CGI::startform("POST", $feedbackURL),
  106     $self->hidden_authen_fields,
  107     CGI::hidden("module", __PACKAGE__),
  108     CGI::p({-align=>"right"},
  109       CGI::submit(-name=>"feedbackForm", -label=>"Send Feedback")
  110     ),
  111     CGI::endform();
  112 
  113   return "";
  114 }
  115 
  116 sub setListRow($$$) {
  117   my ($self, $set, $multiSet) = @_;
  118 
  119   my $name = $set->id;
  120 
  121   my $interactiveURL = "$name/?" . $self->url_authen_args;
  122   #my $hardcopyURL = "hardcopy/$name/?" . $self->url_authen_args;
  123 
  124   my $openDate = formatDateTime($set->open_date);
  125   my $dueDate = formatDateTime($set->due_date);
  126   my $answerDate = formatDateTime($set->answer_date);
  127 
  128   #my $checkbox = CGI::checkbox(-name=>"hcSet", -value=>$set->id, -label=>"");
  129 
  130   my $control = "";
  131   if ($multiSet) {
  132     $control = CGI::checkbox(
  133       -name=>"hcSet",
  134       -value=>$name,
  135       -label=>"",
  136     );
  137   } else {
  138     $control = CGI::radio_group(
  139       -name=>"hcSet",
  140       -values=>[$name],
  141       -default=>"-",
  142       -labels=>{$name => ""},
  143     );
  144   }
  145 
  146   my $interactive = CGI::a({-href=>$interactiveURL}, $name);
  147   #my $hardcopy = CGI::a({-href=>$hardcopyURL}, "download");
  148 
  149   my $status;
  150   if (time < $set->open_date) {
  151     $status = "opens at $openDate";
  152     $control = "";
  153     $interactive = $name;
  154     #$hardcopy = "";
  155   } elsif (time < $set->due_date) {
  156     $status = "open, due at $dueDate";
  157   } elsif (time < $set->answer_date) {
  158     $status = "closed, answers at $answerDate";
  159   } else {
  160     $status = "closed, answers available";
  161   }
  162 
  163   return CGI::Tr(CGI::td([
  164     $control,
  165     $interactive,
  166     $status,
  167     #$hardcopy,
  168   ]));
  169 }
  170 
  171 sub byname { $a->id cmp $b->id; }
  172 sub byduedate { $a->due_date <=> $b->due_date; }
  173 
  174 1;

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9