[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 739 - (download) (as text) (annotate)
Fri Feb 21 20:49:49 2003 UTC (10 years, 3 months ago) by sh002i
File size: 4724 byte(s)
1. fixed some formatting in Problem
2. hardcopy allows correct answers, hints, solutions to be shown
3. privileged users are allowed to view/download "not yet open" sets
-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       ($permissionLevel > 0));
   93   }
   94 
   95   print CGI::end_table();
   96   my $pl = ($permissionLevel > 0 ? "s" : "");
   97   print CGI::p(CGI::submit("hardcopy", "Download Harcopy for Selected Set$pl"));
   98   print CGI::endform();
   99 
  100   # feedback form
  101   my $ce = $self->{courseEnvironment};
  102   my $root = $ce->{webworkURLs}->{root};
  103   my $courseName = $ce->{courseName};
  104   my $feedbackURL = "$root/$courseName/feedback/";
  105   print
  106     CGI::startform("POST", $feedbackURL),
  107     $self->hidden_authen_fields,
  108     CGI::hidden("module", __PACKAGE__),
  109     CGI::p({-align=>"right"},
  110       CGI::submit(-name=>"feedbackForm", -label=>"Send Feedback")
  111     ),
  112     CGI::endform();
  113 
  114   return "";
  115 }
  116 
  117 sub setListRow($$$) {
  118   my ($self, $set, $multiSet, $preOpenSets) = @_;
  119 
  120   my $name = $set->id;
  121 
  122   my $interactiveURL = "$name/?" . $self->url_authen_args;
  123   #my $hardcopyURL = "hardcopy/$name/?" . $self->url_authen_args;
  124 
  125   my $openDate = formatDateTime($set->open_date);
  126   my $dueDate = formatDateTime($set->due_date);
  127   my $answerDate = formatDateTime($set->answer_date);
  128 
  129   #my $checkbox = CGI::checkbox(-name=>"hcSet", -value=>$set->id, -label=>"");
  130 
  131   my $control = "";
  132   if ($multiSet) {
  133     $control = CGI::checkbox(
  134       -name=>"hcSet",
  135       -value=>$name,
  136       -label=>"",
  137     );
  138   } else {
  139     $control = CGI::radio_group(
  140       -name=>"hcSet",
  141       -values=>[$name],
  142       -default=>"-",
  143       -labels=>{$name => ""},
  144     );
  145   }
  146 
  147   my $interactive = CGI::a({-href=>$interactiveURL}, $name);
  148   #my $hardcopy = CGI::a({-href=>$hardcopyURL}, "download");
  149 
  150   my $status;
  151   if (time < $set->open_date) {
  152     $status = "opens at $openDate";
  153     $control = "" unless $preOpenSets;
  154     $interactive = $name unless $preOpenSets;
  155     #$hardcopy = "";
  156   } elsif (time < $set->due_date) {
  157     $status = "open, due at $dueDate";
  158   } elsif (time < $set->answer_date) {
  159     $status = "closed, answers at $answerDate";
  160   } else {
  161     $status = "closed, answers available";
  162   }
  163 
  164   return CGI::Tr(CGI::td([
  165     $control,
  166     $interactive,
  167     $status,
  168     #$hardcopy,
  169   ]));
  170 }
  171 
  172 sub byname { $a->id cmp $b->id; }
  173 sub byduedate { $a->due_date <=> $b->due_date; }
  174 
  175 1;

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9