Parent Directory
|
Revision Log
Fixed bugs. -Dennis
1 package WeBWorK::ContentGenerator::Instructor; 2 use base qw(WeBWorK::ContentGenerator); 3 4 =head1 NAME 5 6 WeBWorK::ContentGenerator::Instructor - Abstract superclass for the Instructor pages 7 8 =cut 9 10 use strict; 11 use warnings; 12 use CGI qw(); 13 14 sub hiddenEditForUserFields { 15 my ($self, @editForUser) = @_; 16 my $return = ""; 17 foreach my $editUser (@editForUser) { 18 $return .= CGI::input({type=>"hidden", name=>"editForUser", value=>$editUser}); 19 } 20 21 return $return; 22 } 23 24 sub userCountMessage { 25 my ($self, $count, $numUsers) = @_; 26 27 my $message; 28 if ($count == 0) { 29 $message = CGI::em("no users"); 30 } elsif ($count == $numUsers) { 31 $message = "all users"; 32 } elsif ($count == 1) { 33 $message = "1 user"; 34 } elsif ($count > $numUsers || $count < 0) { 35 $message = CGI::em("an impossible number of users: $count out of $numUsers"); 36 } else { 37 $message = "$count users"; 38 } 39 40 return $message; 41 } 42 43 sub assignProblemToUser { 44 my ($self, $user, $globalProblem) = @_; 45 my $db = $self->{db}; 46 my $userProblem = $db->{problem_user}->{record}->new; 47 # Set up the key 48 $userProblem->user_id($user); 49 $userProblem->set_id($globalProblem->set_id); 50 $userProblem->problem_id($globalProblem->problem_id); 51 52 # Initialize user-only fields 53 $userProblem->status(0.0); 54 $userProblem->attempted(0); 55 $userProblem->num_correct(0); 56 $userProblem->num_incorrect(0); 57 $userProblem->attempted(0); 58 $userProblem->problem_seed(int(rand(5000))); 59 60 $db->addUserProblem($userProblem); 61 } 62 63 sub assignSetToUser { 64 my ($self, $user, $globalSet) = @_; 65 my $db = $self->{db}; 66 my $userSet = $db->{set_user}->{record}->new; 67 my $setID = $globalSet->set_id; 68 69 $userSet->user_id($user); 70 $userSet->set_id($setID); 71 $db->addUserSet($userSet); 72 73 foreach my $problemID ($db->listGlobalProblems) { 74 my $problemRecord = $db->getGlobalProblem($setID, $problemID); 75 $self->assignProblemToUser($user, $problemRecord); 76 } 77 } 78 79 # When a new problem is added to a set, all students to whom the set 80 # it belongs to is assigned should have it assigned to them. 81 # Note that this does NOT assign to all users of a course, just all users 82 # of a set. 83 sub assignProblemToAllUsers { 84 my ($self, $globalProblem) = @_; 85 my $db = $self->{db}; 86 my $setID = $globalProblem->set_id; 87 my @users = $db->listSetUsers($setID); 88 89 foreach my $user (@users) { 90 $self->assignProblemToUser($user, $globalProblem); 91 } 92 } 93 94 ## Template Escapes ## 95 96 sub links { 97 my $self = shift; 98 99 # keep the links from the parent 100 my $pathString = ""; 101 102 103 my $ce = $self->{ce}; 104 my $db = $self->{db}; 105 my $userName = $self->{r}->param("user"); 106 my $courseName = $ce->{courseName}; 107 my $root = $ce->{webworkURLs}->{root}; 108 my $permLevel = $db->getPermissionLevel($userName)->permission(); 109 my $key = $db->getKey($userName)->key(); 110 return "" unless defined $key; 111 112 # new URLS 113 my $classList = "$root/$courseName/instructor/users/?". $self->url_authen_args(); 114 my $addStudent = "$root/$courseName/instructor/addStudent/?". $self->url_authen_args(); 115 my $problemSetList = "$root/$courseName/instructor/sets/?". $self->url_authen_args(); 116 117 if ($permLevel > 0 ) { 118 $pathString .="<hr>"; 119 $pathString .= CGI::a({-href=>$classList}, "Class editor") . CGI::br(); 120 $pathString .= ' '.CGI::a({-href=>$addStudent}, "Add Student") . CGI::br(); 121 $pathString .= CGI::a({-href=>$problemSetList}, "ProbSet list") . CGI::br(); 122 } 123 return $self->SUPER::links() . $pathString; 124 } 125 126 1;
| aubreyja at gmail dot com | ViewVC Help |
| Powered by ViewVC 1.0.9 |