Parent Directory
|
Revision Log
changed addmessage() to replace submitError
1 ################################################################################ 2 # WeBWorK Online Homework Delivery System 3 # Copyright © 2000-2003 The WeBWorK Project, http://openwebwork.sf.net/ 4 # $CVSHeader: webwork-modperl/lib/WeBWorK/ContentGenerator/Instructor/AddUsers.pm,v 1.13 2004/05/06 22:44:14 sh002i Exp $ 5 # 6 # This program is free software; you can redistribute it and/or modify it under 7 # the terms of either: (a) the GNU General Public License as published by the 8 # Free Software Foundation; either version 2, or (at your option) any later 9 # version, or (b) the "Artistic License" which comes with this package. 10 # 11 # This program is distributed in the hope that it will be useful, but WITHOUT 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 13 # FOR A PARTICULAR PURPOSE. See either the GNU General Public License or the 14 # Artistic License for more details. 15 ################################################################################ 16 17 package WeBWorK::ContentGenerator::Instructor::AddUsers; 18 use base qw(WeBWorK::ContentGenerator::Instructor); 19 20 =head1 NAME 21 22 WeBWorK::ContentGenerator::Instructor::AddUsers - Menu interface for adding users 23 24 25 =cut 26 27 use strict; 28 use warnings; 29 use CGI qw(); 30 use WeBWorK::Utils qw/cryptPassword/; 31 32 sub initialize { 33 my ($self) = @_; 34 my $r = $self->r; 35 my $db = $r->db; 36 my $ce = $r->ce; 37 my $authz = $r->authz; 38 39 my $user = $r->param('user'); 40 41 unless ($authz->hasPermissions($user, "modify_student_data")) { 42 $self->addmessage(CGI::div({class=>"ResultsWithError"}, CGI::p("You are not authorized to modify student data"))); 43 return; 44 } 45 46 if (defined($r->param('addStudents'))) { 47 my @userIDs; 48 my $numberOfStudents = $r->param('number_of_students'); 49 warn "Internal error -- the number of students to be added has not been included" unless defined $numberOfStudents; 50 foreach my $i (1..$numberOfStudents) { 51 my $new_user_id = $r->param("new_user_id_$i"); 52 my $new_password = cryptPassword($r->param("student_id_$i")); 53 next unless defined($new_user_id) and $new_user_id; 54 push @userIDs, $new_user_id; 55 56 my $newUser = $db->newUser; 57 my $newPermissionLevel = $db->newPermissionLevel; 58 my $newPassword = $db->newPassword; 59 $newUser->user_id($new_user_id); 60 $newPermissionLevel->user_id($new_user_id); 61 $newPassword->user_id($new_user_id); 62 $newPassword->password($new_password); 63 $newUser->last_name($r->param("last_name_$i")); 64 $newUser->first_name($r->param("first_name_$i")); 65 $newUser->student_id($r->param("student_id_$i")); 66 $newUser->email_address($r->param("email_address_$i")); 67 $newUser->section($r->param("section_$i")); 68 $newUser->recitation($r->param("recitation_$i")); 69 $newUser->comment($r->param("comment_$i")); 70 $newUser->status('C'); 71 $newPermissionLevel->permission(0); 72 #FIXME handle errors if user exists already 73 eval { $db->addUser($newUser) }; 74 if ($@) { 75 my $addError = $@; 76 $self->{studentEntryReport} .= join("", 77 CGI::b("Failed to enter student: "), $newUser->last_name, ", ",$newUser->first_name, 78 CGI::b(", login/studentID: "), $newUser->user_id, "/",$newUser->student_id, 79 CGI::b(", email: "), $newUser->email_address, 80 CGI::b(", section: "), $newUser->section, 81 CGI::br(), CGI::b("Error message: "), $addError, 82 CGI::hr(),CGI::br(), 83 ); 84 } else { 85 $db->addPermissionLevel($newPermissionLevel); 86 $db->addPassword($newPassword); 87 $self->{studentEntryReport} .= join("", 88 CGI::b("Entered student: "), $newUser->last_name, ", ",$newUser->first_name, 89 CGI::b(", login/studentID: "), $newUser->user_id, "/",$newUser->student_id, 90 CGI::b(", email: "), $newUser->email_address, 91 CGI::b(", section: "), $newUser->section,CGI::hr(),CGI::br(), 92 93 ); 94 } 95 } 96 if (defined $r->param("assignSets")) { 97 my @setIDs = $r->param("assignSets"); 98 if (@setIDs) { 99 $self->assignSetsToUsers(\@setIDs, \@userIDs); 100 } 101 } 102 } 103 } 104 105 sub body { 106 my ($self) = @_; 107 my $r = $self->r; 108 my $ce = $r->ce; 109 my $db = $r->db; 110 my $authz = $r->authz; 111 112 my $courseName = $r->urlpath->arg("courseID"); 113 my $authen_args = $self->url_authen_args(); 114 my $user = $r->param('user'); 115 116 ################### debug code 117 #my $permissonLevel = $self->{db}->getPermissionLevel($user)->permission(); #checked 118 #my $courseEnvironmentLevels = $self->{ce}->{permissionLevels}; 119 #return CGI::em(" user $permissonLevel permlevels ".join("<>",%$courseEnvironmentLevels)); 120 ################### debug code 121 122 return CGI::em('You are not authorized to access the Instructor tools.') 123 unless $authz->hasPermissions($user, 'access_instructor_tools'); 124 125 return join("", 126 127 CGI::hr(), 128 CGI::p( 129 defined($self->{studentEntryReport}) 130 ? $self->{studentEntryReport} 131 : '' 132 ), 133 CGI::p("Enter information below for students you wish to add. Each student's password will initially be set to their student ID."), 134 $self->addStudentForm, 135 ); 136 } 137 138 sub addStudentForm { 139 my $self = shift; 140 my $r = $self->r; 141 my $db = $r->db; 142 my $ce = $r->ce; 143 my $numberOfStudents = $r->param("number_of_students") || 5; 144 145 146 147 # Add a student form 148 149 my @entryLines = (); 150 foreach my $i (1..$numberOfStudents) { 151 push( @entryLines, 152 CGI::Tr({}, 153 CGI::td({}, 154 [ CGI::input({name=>"last_name_$i"}), 155 CGI::input({name=>"first_name_$i"}), 156 CGI::input({name=>"student_id_$i",size=>"16"}), 157 CGI::input({name=>"new_user_id_$i",size=>"10"}), 158 CGI::input({name=>"email_address_$i"}), 159 CGI::input({name=>"section_$i",size=>"10"}), 160 CGI::input({name=>"recitation_$i",size=>"10"}), 161 CGI::input({name=>"comment_$i"}), 162 ] 163 ) 164 ),"\n", 165 ); 166 } 167 168 return join("", 169 CGI::start_form({method=>"post", action=>$r->uri(),name=>"add_users"}), 170 $self->hidden_authen_fields(),"\n", 171 CGI::submit(-name=>"Create", -value=>"Create")," ","\n", 172 CGI::input({type=>'text', name=>'number_of_students', value=>$numberOfStudents,size => 3}), " entry rows. ","\n", 173 CGI::end_form(),"\n", 174 CGI::hr(), 175 176 CGI::start_form({method=>"post", action=>$r->uri()}), 177 $self->hidden_authen_fields(), 178 CGI::input({type=>'hidden', name => "number_of_students", value => $numberOfStudents}), 179 CGI::start_table({border=>'1', cellpadding=>'2'}), 180 CGI::Tr({}, 181 CGI::th({}, 182 ['Last Name', 'First Name', 'Student ID', 'Login Name', 'Email Address', 'Section','Recitation', 'Comment'] 183 ) 184 ), 185 @entryLines, 186 CGI::end_table(), 187 188 189 190 CGI::p("Select sets below to assign them to the newly-created users."), 191 CGI::popup_menu( 192 -name => "assignSets", 193 -values => [ $db->listGlobalSets ], 194 -size => 10, 195 -multiple => "multiple", 196 ), 197 CGI::p( 198 CGI::submit({name=>"addStudents", value=>"Add Students"}), 199 ), 200 CGI::end_form(), 201 202 #qq{ <div style="color:red"> After entering new students you will still 203 #need to assign sets to them. This is done from the "set list" page. <br> 204 #Click on the entry "xx users" in 205 #the "assigned to" column at the far right. <br> Then click either "assign to all" 206 #or check individual users and click "save" at the bottom. </div> 207 #Soon ( real soon -- honest!!! :-) ) you will also be able to assign sets to the students as they are entered from this page. } 208 ); 209 } 210 211 1; 212 213 __END__ 214 215 =head1 AUTHOR 216 217 Written by Dennis Lambe Jr., malsyned (at) math.rochester.edu 218 219 =cut
| aubreyja at gmail dot com | ViewVC Help |
| Powered by ViewVC 1.0.9 |