--- loncom/interface/Attic/londropadd.pm 2002/09/24 18:24:43 1.52
+++ loncom/interface/Attic/londropadd.pm 2002/10/15 14:41:31 1.56
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
-# $Id: londropadd.pm,v 1.52 2002/09/24 18:24:43 matthew Exp $
+# $Id: londropadd.pm,v 1.56 2002/10/15 14:41:31 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -558,7 +558,7 @@ sub print_upload_manager_form {
sub enroll_single_student {
my $r=shift;
$r->print('
Enrolling Student
');
- $r->print('
Enrolling '.$ENV{'form.cuname'}." in domain ".
+ $r->print('
ERROR '.
'Invalid login mode or password. '.
@@ -726,34 +734,18 @@ END
return;
}
-# =================================================== get the current classlist
-sub get_current_classlist {
- my $r = shift;
- # Call DownloadClasslist
- my $cid = $ENV{'request.course.id'};
- my $c = $r->connection;
- my $classlisthash = &Apache::loncoursedata::DownloadClasslist
- ($cid,'Not downloaded',$c);
- # Call ProcessClasslist
- my %cache;
- my @students = &Apache::loncoursedata::ProcessClasslist(\%cache,
- $classlisthash,
- $cid,$c);
- return (\@students,\%cache);
-}
-
# ========================================================= Menu Phase Two Drop
sub print_drop_menu {
my $r=shift;
$r->print("
Drop Students
");
my $cid=$ENV{'request.course.id'};
- my ($student_array,$student_data)=&get_current_classlist($r);
- if (! scalar(@$student_array)) {
+ my ($classlist,$keylist) = &Apache::loncoursedata::get_classlist();
+ if (! defined($classlist)) {
$r->print("There are no students currently enrolled.\n");
return;
}
# Print out the available choices
- &show_drop_list($student_array,$student_data,$r);
+ &show_drop_list($r,$classlist,$keylist);
return;
}
@@ -767,15 +759,17 @@ sub print_html_classlist {
END
my $cid=$ENV{'request.course.id'};
- my ($student_array,$student_data)=&get_current_classlist($r);
- if (! scalar(@$student_array)) {
+ my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();
+ if (! defined($classlist)) {
$r->print("There are no students currently enrolled.\n");
} else {
# Print out the available choices
if ($ENV{'form.action'} eq 'modifystudent') {
- &show_class_list($r,'view','modify','any',$student_array,$student_data);
+ &show_class_list($r,'view','modify','modifystudent',
+ 'Active',$classlist,$keylist);
} else {
- &show_class_list($r,'view','aboutme','any',$student_array,$student_data);
+ &show_class_list($r,'view','aboutme','classlist',
+ 'Active',$classlist,$keylist);
}
}
}
@@ -784,54 +778,77 @@ END
sub print_csv_classlist {
my $r=shift;
my $cid=$ENV{'request.course.id'};
- my ($student_array,$student_data)=&get_current_classlist($r);
- if (! scalar(@$student_array)) {
+ my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();
+ if (! defined($classlist)) {
$r->print("There are no students currently enrolled.\n");
} else {
- &show_class_list($r,'csv','nolink','any',$student_array,$student_data);
+ &show_class_list($r,'csv','nolink','csv',
+ 'Active',$classlist,$keylist);
}
}
# =================================================== Show student list to drop
sub show_class_list {
- my ($r,$mode,$linkto,$statusmode,$students,$student_data)=@_;
+ my ($r,$mode,$linkto,$action,$statusmode,$classlist,$keylist)=@_;
my $cid=$ENV{'request.course.id'};
+ &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
+ ['sortby']);
+ my $sortby = $ENV{'form.sortby'};
+ if ($sortby !~ /^(username|domain|section|fullname|id)$/) {
+ $sortby = 'username';
+ }
# Print out header
if ($mode eq 'view') {
if ($linkto eq 'aboutme') {
- $r->print('Select a user name to view the users page.');
+ $r->print('Select a user name to view the users personal page.');
} elsif ($linkto eq 'modify') {
$r->print('Select a user name to modify the students information');
}
$r->print(<
@@ -876,10 +894,10 @@ END
sub print_modify_student_form {
my $r = shift();
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
- ['sdom','sname']);
-
- my $sname = $ENV{'form.sname'};
- my $sdom = $ENV{'form.sdom'};
+ ['sdom','sname','sortby']);
+ my $sname = $ENV{'form.sname'};
+ my $sdom = $ENV{'form.sdom'};
+ my $sortby = $ENV{'form.sortby'};
# determine the students name information
my %info=&Apache::lonnet::get('environment',
['firstname','middlename',
@@ -914,7 +932,8 @@ Only domain coordinators can change a us
-
+
+
Modify Enrollment for $info{'firstname'} $info{'middlename'}
$info{'lastname'} $info{'generation'}, $sname\@$sdom
+
+Disable ID/Student Number Safeguard and Force Change of Conflicting IDs
+(only do if you know what you are doing)
+
Section:
@@ -948,15 +971,33 @@ END
#
sub modify_single_student {
my $r = shift;
- # make sure user can modify student data?
+ # Get the 'sortby' variable so the user does not need to re-sort
+ my $sortby = $ENV{'form.sortby'};
+ #
+ # We always need this information
+ my $slogin = $ENV{'form.slogin'};
+ my $sdom = $ENV{'form.sdomain'};
+ #
+ # Get the old data
+ my %old=&Apache::lonnet::get('environment',
+ ['firstname','middlename',
+ 'lastname','generation','id'],
+ $sdom, $slogin);
+ my ($tmp) = keys(%old);
+ if ($tmp =~ /^(con_lost|error|no_such_host)/i) {
+ $r->print("There was an error determining the environment values ".
+ " for $slogin \@ $sdom.");
+ return;
+ }
+ undef $tmp;
+ #
+ # Get the new data
my $firstname = $ENV{'form.firstname'};
my $middlename = $ENV{'form.middlename'};
my $lastname = $ENV{'form.lastname'};
my $generation = $ENV{'form.generation'};
my $section = $ENV{'form.section'};
my $courseid = $ENV{'request.course.id'};
- my $sname = $ENV{'form.slogin'};
- my $sdom = $ENV{'form.sdomain'};
my $sid = $ENV{'form.id'};
my $starttime = &Apache::lonhtmlcommon::get_date_from_form('startdate',
time);
@@ -964,15 +1005,46 @@ sub modify_single_student {
time);
my $displayable_starttime = localtime($starttime);
my $displayable_endtime = localtime($endtime);
+ #
+ # check for forceid override
+ if (($sid ne $old{'id'}) && (! exists($ENV{'form.forceid'}))) {
+ $r->print("You changed the students id ".
+ " but did not disable the ID change safeguard.".
+ " The students id will not be changed.");
+ $sid = $old{'id'};
+ }
+ #
# talk to the user about what we are going to do
$r->print(<Modifying data for user $sname \@ $sdom
+
Modifying data for user $slogin \@ $sdom
Student Information
-
-
First name
$firstname
-
Middle name
$middlename
-
Last name
$lastname
-
Generation
$generation
+
+
+
Field
+
Old Value
+
New Value
+
+
+
First name
+
$old{'firstname'}
+
$firstname
+
+
Middle name
+
$old{'middlename'}
+
$middlename
+
+
Last name
+
$old{'lastname'}
+
$lastname
+
+
Generation
+
$old{'generation'}
+
$generation
+
+
ID
+
$old{'id'}
+
$sid
+
Role Information
@@ -982,20 +1054,24 @@ sub modify_single_student {
END
+ #
# Send request(s) to modify data
- # The '1' in the call to modifystudent is to force the students
- # id to be changed.
my $roleresults = &Apache::lonnet::modifystudent
- ($sdom,$sname,$sid,undef,undef,$firstname,$middlename,$lastname,
- $generation,$section,$endtime,$starttime,1);
- if ($roleresults =~/refused/) {
+ ($sdom,$slogin,$sid,undef,undef,$firstname,$middlename,$lastname,
+ $generation,$section,$endtime,$starttime,$ENV{'form.forceid'});
+ if ($roleresults eq 'refused' ) {
$r->print("Your request to change the role information for this ".
- "student was refused.");
+ "student was refused. You do not appear to have ".
+ "sufficient authority to change student information.");
} elsif ($roleresults !~ /ok/) {
$r->print("An error occurred during the attempt to change the role".
" information for this student. ".
"The error reported was ".
$roleresults);
+ &Apache::lonnet::logthis("londropadd:failed attempt to modify student".
+ " data for ".$slogin." \@ ".$sdom." by ".
+ $ENV{'user.name'}." \@ ".$ENV{'user.domain'}.
+ ":".$roleresults);
} else { # everything is okay!
$r->print("Student information updated successfully. ".
"The student must log out and log in again to see ".
@@ -1003,7 +1079,7 @@ END
}
$r->print(<