--- loncom/interface/Attic/londropadd.pm 2002/04/30 15:24:16 1.35 +++ loncom/interface/Attic/londropadd.pm 2002/05/06 17:48:57 1.41 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to drop and add students in courses # -# $Id: londropadd.pm,v 1.35 2002/04/30 15:24:16 matthew Exp $ +# $Id: londropadd.pm,v 1.41 2002/05/06 17:48:57 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -62,14 +62,14 @@ sub header { return(< -LON-CAPA Student Drop/Add +LON-CAPA Enrollment Manager -

Drop/Add Students

-
-

Course: $ENV{'course.'.$ENV{'request.course.id'}.'.description'}

+

$ENV{'course.'.$ENV{'request.course.id'}.'.description'}

+

Enrollment Manager

+ ENDHEAD } @@ -106,8 +106,8 @@ sub modifystudent { } if ($result eq '') { $result eq 'Unable to find section for this student'; - } elsif ($result =~ /^(ok:)+$/) { - $result eq 'ok'; + } else { + $result =~ s/(ok:)+/ok/g; } return $result; } @@ -150,13 +150,17 @@ sub menu_phase_one {

Upload a courselist

$upfile_select -

-


+

+


Enroll a single student

-

-


+

+
+

Classlist

+

+

+

Drop students

-

+

ENDUPFORM } @@ -170,12 +174,14 @@ sub phase_two_header { } my $javascript_validations=&javascript_validations($krbdefdom); $r->print(<Uploading Class List

Identify fields

Total number of records found in file: $distotal
Enter as many fields as you can. The system will inform you and bring you back to this page if the data selected is insufficient to run your class.
- + + @@ -457,7 +463,7 @@ LON-CAPA domain: $domform

Disable ID/Student Number Safeguard and Force Change of Conflicting IDs (only do if you know what you are doing)

-
+
Note: for large courses, this operation might be time consuming. ENDPICK } @@ -569,6 +575,7 @@ sub enroll_single_student { # ======================================================= Menu Phase Two Enroll sub menu_phase_two_enroll { my $r=shift; + $r->print("

Enroll One Student

"); my ($krbdefdom) = $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/; $krbdefdom=~tr/a-z/A-Z/; my $today = time; @@ -686,6 +693,7 @@ sub get_current_classlist { } return (undef,%currentlist); } else { + $tmp =~ s/^error://; return ($tmp,undef); } } @@ -693,13 +701,17 @@ sub get_current_classlist { # ========================================================= Menu Phase Two Drop sub menu_phase_two_drop { my $r=shift; + $r->print("

Drop Students

"); my $cid=$ENV{'request.course.id'}; - my ($error,%currentlist)=&get_current_classlist($ENV{'course.'.$cid.'.domain'}, - $ENV{'course.'.$cid.'.num'}); + my ($error,%currentlist)=&get_current_classlist + ($ENV{'course.'.$cid.'.domain'},$ENV{'course.'.$cid.'.num'}); if (defined($error)) { - $r->print('
ERROR:$error
'); - } - if (!defined(%currentlist)) { + if ($error =~ /^No such file or directory/) { + $r->print("There are no students currently enrolled.\n"); + } else { + $r->print("
ERROR:$error
"); + } + } elsif (!defined(%currentlist)) { $r->print("There are no students currently enrolled.\n"); } else { # Print out the available choices @@ -707,6 +719,104 @@ sub menu_phase_two_drop { } } +# ============================================== view classlist +sub menu_phase_two_view { + my $r=shift; + $r->print("

Current Classlist

"); + my $cid=$ENV{'request.course.id'}; + my ($error,%currentlist)=&get_current_classlist + ($ENV{'course.'.$cid.'.domain'},$ENV{'course.'.$cid.'.num'}); + if (defined($error)) { + if ($error =~ /^No such file or directory/) { + $r->print("There are no students currently enrolled.\n"); + } else { + $r->print("
ERROR:$error
"); + } + } elsif (!defined(%currentlist)) { + $r->print("There are no students currently enrolled.\n"); + } else { + # Print out the available choices + &show_class_list($r,'view',%currentlist); + } +} + +# ============================================== view classlist +sub menu_phase_two_viewcsv { + my $r=shift; + my $cid=$ENV{'request.course.id'}; + my ($error,%currentlist)=&get_current_classlist + ($ENV{'course.'.$cid.'.domain'},$ENV{'course.'.$cid.'.num'}); + if (defined($error)) { + if ($error =~ /^No such file or directory/) { + $r->print("There are no students currently enrolled.\n"); + } else { + $r->print("
ERROR:$error
"); + } + } elsif (!defined(%currentlist)) { + $r->print("There are no students currently enrolled.\n"); + } else { + &show_class_list($r,'csv',%currentlist); + } +} + +# =================================================== Show student list to drop +sub show_class_list { + my ($r,$mode,%currentlist)=@_; + my $cid=$ENV{'request.course.id'}; + if ($mode eq 'view') { + $r->print(< + + + +END + } elsif ($mode eq 'csv') { + $r->print(<print( ($mode eq 'view' ? + '' :'')); + } else { + if ($mode eq 'view') { + $r->print(<<"END"); + + + + + + + + +END + } elsif ($mode eq 'csv') { + $r->print($sname.','. + $sdom.','. + $reply{$sname}.','. + $info{'lastname'}.','. + $info{'firstname'}.','. + $info{'middlename'}.','. + $info{'generation'}.','. + $ssec."\n"); + } + } + } + $r->print('
usernamedomainIDstudent namegenerationsection
' :''). + 'Internal error: unable to get environment '. + 'for '.$sname.' in domain '.$sdom. + ( $mode eq 'view' ?'
$sname$sdom$reply{$sname}$info{'lastname'}, $info{'firstname'} $info{'middlename'}$info{'generation'}$ssec

') if ($mode eq 'view'); +} + # =================================================== Show student list to drop sub show_drop_list { my ($r,%currentlist)=@_; @@ -955,7 +1065,7 @@ sub drop_student_list { foreach (@droplist) { my ($uname,$udom)=split(/\:/,$_); my $result = &modifystudent($udom,$uname,$ENV{'request.course.id'}); - if ($result eq 'ok') { + if ($result eq 'ok' || $result eq 'ok:') { $r->print('Dropped '.$uname.' at '.$udom.'
'); } else { $r->print('Error dropping '.$uname.' at '.$udom.': '.$result. @@ -979,9 +1089,9 @@ sub handler { if (($ENV{'request.course.fn'}) && (&Apache::lonnet::allowed('cst',$ENV{'request.course.id'}))) { # Start page - $r->content_type('text/html'); + $r->content_type('text/html') if (! exists($ENV{'form.viewcsv'})); $r->send_http_header; - $r->print(&header()); + $r->print(&header()) if (! exists($ENV{'form.viewcsv'})); # Phase one, initial screen unless ($ENV{'form.phase'}) { &menu_phase_one($r); @@ -1002,6 +1112,10 @@ sub handler { &menu_phase_two_enroll($r); } elsif ($ENV{'form.drop'}) { &menu_phase_two_drop($r); + } elsif ($ENV{'form.view'}) { + &menu_phase_two_view($r); + } elsif ($ENV{'form.viewcsv'}) { + &menu_phase_two_viewcsv($r); } } # Phase three @@ -1019,7 +1133,7 @@ sub handler { &enroll_single_student($r); } # End - $r->print(''); + $r->print('') if (! exists($ENV{'form.viewcsv'})); } else { # Not in a course, or not allowed to modify parms $ENV{'user.error.msg'}=