[system] / trunk / webwork-modperl / lib / WeBWorK / ContentGenerator / Instructor / UserList.pm Repository:
ViewVC logotype

Diff of /trunk/webwork-modperl/lib/WeBWorK/ContentGenerator/Instructor/UserList.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1799 Revision 1928
1################################################################################ 1################################################################################
2# WeBWorK Online Homework Delivery System 2# WeBWorK Online Homework Delivery System
3# Copyright © 2000-2003 The WeBWorK Project, http://openwebwork.sf.net/ 3# Copyright © 2000-2003 The WeBWorK Project, http://openwebwork.sf.net/
4# $CVSHeader: webwork-modperl/lib/WeBWorK/ContentGenerator/Instructor/UserList.pm,v 1.42 2004/02/06 17:37:11 sh002i Exp $ 4# $CVSHeader: webwork-modperl/lib/WeBWorK/ContentGenerator/Instructor/UserList.pm,v 1.43 2004/02/12 21:38:24 toenail Exp $
5# 5#
6# This program is free software; you can redistribute it and/or modify it under 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 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 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. 9# version, or (b) the "Artistic License" which comes with this package.
143 size => 2, 143 size => 2,
144 access => "readwrite", 144 access => "readwrite",
145 } 145 }
146}; 146};
147sub pre_header_initialize { 147sub pre_header_initialize {
148 my $self = shift; 148 my $self = shift;
149 my $r = $self->{r}; 149 my $r = $self->r;
150 my $ce = $self->{ce}; 150 my $urlpath = $r->urlpath;
151 151 my $ce = $r->ce;
152 my $courseName = $urlpath->arg("courseID");
152 # Handle redirects, if any. 153 # Handle redirects, if any.
153 ############################## 154 ##############################
154 # Redirect to the addUser page 155 # Redirect to the addUser page
155 ################################## 156 ##################################
156 157
157 defined($r->param('action')) && $r->param('action') eq 'add' && do { 158 defined($r->param('action')) && $r->param('action') eq 'add' && do {
158 # fix url and redirect 159 # fix url and redirect
159 my $root = $ce->{webworkURLs}->{root}; 160 my $root = $ce->{webworkURLs}->{root};
160 my $courseName = $ce->{courseName}; 161
161 my $numberOfStudents = $r->param('number_of_students'); 162 my $numberOfStudents = $r->param('number_of_students');
162 warn "number of students not defined " unless defined $numberOfStudents; 163 warn "number of students not defined " unless defined $numberOfStudents;
163 164
164 my $uri="$root/$courseName/instructor/add_users?number_of_students=$numberOfStudents&".$self->url_authen_args; 165 my $uri="$root/$courseName/instructor/add_users?number_of_students=$numberOfStudents&".$self->url_authen_args;
165 #FIXME does the display mode need to be defined? 166 #FIXME does the display mode need to be defined?
172} 173}
173# FIXME -- this should be moved up to instructor or contentgenerator 174# FIXME -- this should be moved up to instructor or contentgenerator
174sub header { 175sub header {
175 my $self = shift; 176 my $self = shift;
176 return REDIRECT if $self->{noContent}; 177 return REDIRECT if $self->{noContent};
177 my $r = $self->{r}; 178 my $r = $self->r;
178 $r->content_type('text/html'); 179 $r->content_type('text/html');
179 $r->send_http_header(); 180 $r->send_http_header();
180 return OK; 181 return OK;
181} 182}
182 183
188 # $str is a complex number 189 # $str is a complex number
189} 190}
190 191
191sub initialize { 192sub initialize {
192 my ($self) = @_; 193 my ($self) = @_;
193 my $r = $self->{r}; 194 my $r = $self->r;
194 my $db = $self->{db}; 195 my $db = $r->db;
195 my $ce = $self->{ce}; 196 my $ce = $r->ce;
196 my $authz = $self->{authz}; 197 my $authz = $r->authz;
197 my $user = $r->param('user'); 198 my $user = $r->param('user');
198 199
199 unless ($authz->hasPermissions($user, "modify_student_data")) { 200 unless ($authz->hasPermissions($user, "modify_student_data")) {
200 $self->{submitError} = "You are not authorized to modify student data"; 201 $self->{submitError} = "You are not authorized to modify student data";
201 return; 202 return;
214 # $db->addPermissionLevel($newPermissionLevel); 215 # $db->addPermissionLevel($newPermissionLevel);
215 # $db->addPassword($newPassword); 216 # $db->addPassword($newPassword);
216 #} 217 #}
217} 218}
218 219
219sub title {
220 my $self = shift;
221 return "User List";
222}
223 220
224sub path { 221
225 my $self = shift; 222sub body {
226 my $args = $_[-1]; 223 my ($self) = @_;
227 my $ce = $self->{ce}; 224 my $r = $self->r;
225 my $urlpath = $r->urlpath;
226 my $db = $r->db;
227 my $ce = $r->ce;
228 my $authz = $r->authz;
229 my $courseName = $urlpath->arg("courseID");
230 my $setID = $urlpath->arg("setID");
231 my $user = $r->param('user');
232
228 my $root = $ce->{webworkURLs}->{root}; 233 my $root = $ce->{webworkURLs}->{root};
229 my $courseName = $ce->{courseName};
230
231 return $self->pathMacro($args,
232 "Home" => "$root",
233 $courseName => "$root/$courseName",
234 "Instructor Tools" => "$root/$courseName/instructor",
235 "Users" => "", # "$root/$courseName/instructor/users",
236 );
237}
238 234
239sub body {
240 my ($self, $setID) = @_;
241 my $r = $self->{r};
242 my $authz = $self->{authz};
243 my $user = $r->param('user');
244 my $db = $self->{db};
245 my $ce = $self->{ce};
246 my $root = $ce->{webworkURLs}->{root};
247 my $courseName = $ce->{courseName};
248
249 # templates for getting field names 235 # templates for getting field names
250 my $userTemplate = $self->{userTemplate} = $db->newUser; 236 my $userTemplate = $self->{userTemplate} = $db->newUser;
251 my $permissionLevelTemplate = $self->{permissionLevelTemplate} = $db->newPermissionLevel; 237 my $permissionLevelTemplate = $self->{permissionLevelTemplate} = $db->newPermissionLevel;
252 238
253 return CGI::em("You are not authorized to access the Instructor tools.") 239 return CGI::em("You are not authorized to access the Instructor tools.")
642 ); 628 );
643} 629}
644 630
645sub delete_handler { 631sub delete_handler {
646 my ($self, $genericParams, $actionParams, $tableParams) = @_; 632 my ($self, $genericParams, $actionParams, $tableParams) = @_;
647 my $db = $self->{db}; 633 my $r = $self->r;
634 my $db = $r->db;
648 my $scope = $actionParams->{"action.delete.scope"}->[0]; 635 my $scope = $actionParams->{"action.delete.scope"}->[0];
649 636
650 my @userIDsToDelete = (); 637 my @userIDsToDelete = ();
651 #if ($scope eq "visible") { 638 #if ($scope eq "visible") {
652 # @userIDsToDelete = @{ $self->{visibleUserIDs} }; 639 # @userIDsToDelete = @{ $self->{visibleUserIDs} };
830 return "Abandon changes"; 817 return "Abandon changes";
831} 818}
832 819
833sub cancelEdit_handler { 820sub cancelEdit_handler {
834 my ($self, $genericParams, $actionParams, $tableParams) = @_; 821 my ($self, $genericParams, $actionParams, $tableParams) = @_;
835 my $r = $self->{r}; 822 my $r = $self->r;
836 823
837 #$self->{selectedUserIDs} = $self->{visibleUserIDs}; 824 #$self->{selectedUserIDs} = $self->{visibleUserIDs};
838 # only do the above if we arrived here via "edit selected users" 825 # only do the above if we arrived here via "edit selected users"
839 if (defined $r->param("prev_visible_users")) { 826 if (defined $r->param("prev_visible_users")) {
840 $self->{visibleUserIDs} = [ $r->param("prev_visible_users") ]; 827 $self->{visibleUserIDs} = [ $r->param("prev_visible_users") ];
853 return "Save changes"; 840 return "Save changes";
854} 841}
855 842
856sub saveEdit_handler { 843sub saveEdit_handler {
857 my ($self, $genericParams, $actionParams, $tableParams) = @_; 844 my ($self, $genericParams, $actionParams, $tableParams) = @_;
858 my $r = $self->{r}; 845 my $r = $self->r;
859 my $db = $self->{db}; 846 my $db = $r->db;
860 847
861 my @visibleUserIDs = @{ $self->{visibleUserIDs} }; 848 my @visibleUserIDs = @{ $self->{visibleUserIDs} };
862 foreach my $userID (@visibleUserIDs) { 849 foreach my $userID (@visibleUserIDs) {
863 my $User = $db->getUser($userID); # checked 850 my $User = $db->getUser($userID); # checked
864 die "record for visible user $userID not found" unless $User; 851 die "record for visible user $userID not found" unless $User;
929 return %result; 916 return %result;
930} 917}
931 918
932sub importUsersFromCSV { 919sub importUsersFromCSV {
933 my ($self, $fileName, $createNew, $replaceExisting, @replaceList) = @_; 920 my ($self, $fileName, $createNew, $replaceExisting, @replaceList) = @_;
921 my $r = $self->r;
934 my $ce = $self->{ce}; 922 my $ce = $r->ce;
935 my $db = $self->{db}; 923 my $db = $r->db;
936 my $dir = $ce->{courseDirs}->{templates}; 924 my $dir = $ce->{courseDirs}->{templates};
937 925
938 die "illegal character in input: \"/\"" if $fileName =~ m|/|; 926 die "illegal character in input: \"/\"" if $fileName =~ m|/|;
939 die "won't be able to read from file $dir/$fileName: does it exist? is it readable?" 927 die "won't be able to read from file $dir/$fileName: does it exist? is it readable?"
940 unless -r "$dir/$fileName"; 928 unless -r "$dir/$fileName";
941 929
1005 return \@replaced, \@added, \@skipped; 993 return \@replaced, \@added, \@skipped;
1006} 994}
1007 995
1008sub exportUsersToCSV { 996sub exportUsersToCSV {
1009 my ($self, $fileName, @userIDsToExport) = @_; 997 my ($self, $fileName, @userIDsToExport) = @_;
1010 my $ce = $self->{ce}; 998 my $r = $self->r;
1011 my $db = $self->{db}; 999 my $ce = $r->ce;
1000 my $db = $r->db;
1012 my $dir = $ce->{courseDirs}->{templates}; 1001 my $dir = $ce->{courseDirs}->{templates};
1013 1002
1014 die "illegal character in input: \"/\"" if $fileName =~ m|/|; 1003 die "illegal character in input: \"/\"" if $fileName =~ m|/|;
1015 1004
1016 open my $fh, ">", "$dir/$fileName" 1005 open my $fh, ">", "$dir/$fileName"
1017 or die "failed to open file $dir/$fileName for writing: $!\n"; 1006 or die "failed to open file $dir/$fileName for writing: $!\n";
1081 } 1070 }
1082} 1071}
1083 1072
1084sub recordEditHTML { 1073sub recordEditHTML {
1085 my ($self, $User, $PermissionLevel, %options) = @_; 1074 my ($self, $User, $PermissionLevel, %options) = @_;
1086 my $r = $self->{r}; 1075 my $r = $self->r;
1087 my $ce = $self->{ce}; 1076 my $urlpath = $r->urlpath;
1077 my $ce = $r->ce;
1088 my $root = $ce->{webworkURLs}->{root}; 1078 my $root = $ce->{webworkURLs}->{root};
1089 my $courseName = $ce->{courseName}; 1079 my $courseName = $urlpath->arg("courseID");
1090 1080
1091 my $editMode = $options{editMode}; 1081 my $editMode = $options{editMode};
1092 my $userSelected = $options{userSelected}; 1082 my $userSelected = $options{userSelected};
1093 1083
1094 my $changeEUserURL = "$root/$courseName?" 1084 my $changeEUserURL = "$root/$courseName?"
1157 return CGI::Tr({}, CGI::td({}, \@tableCells)); 1147 return CGI::Tr({}, CGI::td({}, \@tableCells));
1158} 1148}
1159 1149
1160sub printTableHTML { 1150sub printTableHTML {
1161 my ($self, $UsersRef, $PermissionLevelsRef, $fieldNamesRef, %options) = @_; 1151 my ($self, $UsersRef, $PermissionLevelsRef, $fieldNamesRef, %options) = @_;
1162 my $r = $self->{r}; 1152 my $r = $self->r;
1163 my $userTemplate = $self->{userTemplate}; 1153 my $userTemplate = $self->{userTemplate};
1164 my $permissionLevelTemplate = $self->{permissionLevelTemplate}; 1154 my $permissionLevelTemplate = $self->{permissionLevelTemplate};
1165 my @Users = @$UsersRef; 1155 my @Users = @$UsersRef;
1166 my @PermissionLevels = @$PermissionLevelsRef; 1156 my @PermissionLevels = @$PermissionLevelsRef;
1167 my %fieldNames = %$fieldNamesRef; 1157 my %fieldNames = %$fieldNamesRef;
1168 1158
1169 my $editMode = $options{editMode}; 1159 my $editMode = $options{editMode};
1170 my %selectedUserIDs = map { $_ => 1 } @{ $options{selectedUserIDs} }; 1160 my %selectedUserIDs = map { $_ => 1 } @{ $options{selectedUserIDs} };
1171 my $currentSort = $options{currentSort}; 1161 my $currentSort = $options{currentSort};
1172 1162
1173 # names of headings: 1163 # names of headings:
1174 my @realFieldNames = ( 1164 my @realFieldNames = (
1175 $userTemplate->KEYFIELDS, 1165 $userTemplate->KEYFIELDS,
1176 $userTemplate->NONKEYFIELDS, 1166 $userTemplate->NONKEYFIELDS,

Legend:
Removed from v.1799  
changed lines
  Added in v.1928

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9