--- loncom/interface/Attic/londropadd.pm 2002/09/18 14:17:47 1.51 +++ loncom/interface/Attic/londropadd.pm 2002/10/16 15:02:28 1.58 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to drop and add students in courses # -# $Id: londropadd.pm,v 1.51 2002/09/18 14:17:47 matthew Exp $ +# $Id: londropadd.pm,v 1.58 2002/10/16 15:02:28 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 '.$ENV{'form.cuname'}." in domain ". + $r->print('
Enrolling '.$ENV{'form.cuname'}." \@ ". $ENV{'form.lcdomain'}.'
'); if (($ENV{'form.cuname'})&&($ENV{'form.cuname'}!~/\W/)&& ($ENV{'form.lcdomain'})&&($ENV{'form.lcdomain'}!~/\W/)) { @@ -594,17 +594,25 @@ sub enroll_single_student { my $home = &Apache::lonnet::homeserver($ENV{'form.cuname'}, $ENV{'form.lcdomain'}); if ((($amode) && ($genpwd)) || ($home ne 'no_host')) { + # Clean out any old roles the student has in this class. &modifystudent($ENV{'form.lcdomain'},$ENV{'form.cuname'}, $ENV{'request.course.id'},$ENV{'form.csec'}, $desiredhost); - $r->print(&Apache::lonnet::modifystudent( - $ENV{'form.lcdomain'},$ENV{'form.cuname'}, - $ENV{'form.cstid'},$amode,$genpwd, - $ENV{'form.cfirst'},$ENV{'form.cmiddle'}, - $ENV{'form.clast'},$ENV{'form.cgen'}, - $ENV{'form.csec'},$ENV{'form.enddate'}, - $ENV{'form.startdate'},$ENV{'form.forceid'}, - $desiredhost)); + my $login_result = &Apache::lonnet::modifystudent + ($ENV{'form.lcdomain'},$ENV{'form.cuname'}, + $ENV{'form.cstid'},$amode,$genpwd, + $ENV{'form.cfirst'},$ENV{'form.cmiddle'}, + $ENV{'form.clast'},$ENV{'form.cgen'}, + $ENV{'form.csec'},$ENV{'form.enddate'}, + $ENV{'form.startdate'},$ENV{'form.forceid'}, + $desiredhost); + if ($login_result =~ /^ok/) { + $r->print($login_result); + $r->print("If active, the new role will be available ". + "when the student next logs in to LON-CAPA.
"); + } else { + $r->print("unable to enroll: ".$login_result); + } } else { $r->print('ERROR '. 'Invalid login mode or password. '. @@ -726,56 +734,58 @@ 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("
-Current Classlist -CSV format +Current Classlist + + +CSV format + + +$status_select
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',$student_array,$student_data); + &show_class_list($r,'view','modify','modifystudent', + $ENV{'form.Status'},$classlist,$keylist); } else { - &show_class_list($r,'view','aboutme',$student_array,$student_data); + &show_class_list($r,'view','aboutme','classlist', + $ENV{'form.Status'},$classlist,$keylist); } } } @@ -784,43 +794,86 @@ 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',$student_array,$student_data); + &show_class_list($r,'csv','nolink','csv', + $ENV{'form.Status'},$classlist,$keylist); } } # =================================================== Show student list to drop sub show_class_list { - my ($r,$mode,$linkto,$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(<
username | domain | ID | -student name | section |
---|---|---|---|---|
+ username + | + domain + | + ID + | + student name + | + section + | +
\n "); if ($linkto eq 'nothing') { @@ -832,7 +885,8 @@ END } elsif ($linkto eq 'modify') { $r->print(''.$username."\n"); + '&sdom='.$domain.'&sortby='.$sortby.'">'. + $username."\n"); } $r->print(<<"END"); | @@ -848,6 +902,9 @@ END foreach ($username,$domain,$id,$name,$section) { push @line,&Apache::loncommon::csv_translate($_); } + if ($statusmode eq 'Any') { + push @line,&Apache::loncommon::csv_translate($status); + } my $tmp = $"; $" = '","'; $r->print("\"@line\"\n"); @@ -864,14 +921,14 @@ 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', - 'lastname','generation'], + 'lastname','generation','id'], $sdom, $sname); my ($tmp) = keys(%info); if ($tmp =~ /^(con_lost|error|no_such_host)/i) { @@ -894,10 +951,16 @@ sub print_modify_student_form { $endtime); # Make sure student is enrolled in course $r->print(<
+Student ID: +
+ +Disable ID/Student Number Safeguard and Force Change of Conflicting IDs +(only do if you know what you are doing) +
Section:
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 | +
Start Time | $displayable_starttime |
End Time | $displayable_endtime |
END
- # send request(s) to modify data
- my $roleresults = 'refused';
- #my $roleresults = &Apache::lonnet::assignrole($sdom,$sname,
- # $courseid.'/'.$section,
- # 'st',
- # $endtime,$starttime);
- if ($roleresults =~/refused/) {
+ #
+ # Send request(s) to modify data
+ my $roleresults = &Apache::lonnet::modifystudent
+ ($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 ".
+ " 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 role updated successfully.");
+ $r->print("Student information updated successfully.
".
+ "The student must log out and log in again to see ".
+ "these changes.");
}
- #
$r->print(<