--- loncom/interface/Attic/londropadd.pm 2002/04/16 19:08:49 1.25
+++ loncom/interface/Attic/londropadd.pm 2002/04/23 21:03:59 1.29
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
-# $Id: londropadd.pm,v 1.25 2002/04/16 19:08:49 matthew Exp $
+# $Id: londropadd.pm,v 1.29 2002/04/23 21:03:59 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -59,8 +59,7 @@ use Apache::Constants qw(:common :http R
# ================================================================ Print header
sub header {
- my $r=shift;
- $r->print(< Note: this will not take effect if the user already exists
-
-Kerberos authenticated with domain
-
+$krbform
-
-Internally authenticated (with initial password
-)
+$intform
-
-Local Authentication with argument
-
+$locform
+LON-CAPA domain: $domform
@@ -460,21 +421,21 @@ LON-CAPA domain:
Disable ID/Student Number Safeguard and Force Change of Conflicting IDs
(only do if you know what you are doing)
-
+First Name:
+ ID/Student Number:
+ Group/Section:
-Domain:
-Note: login settings below will not take effect if the user already exists
-
-
-Kerberos authenticated with domain
-
-
-Internally authenticated (with initial password
-)
-
-
-Local Authentication with argument
-
- Username: Domain: $domform Note: login settings below will not take effect if the user already exists
+
+$krbform
+
+$intform
+
+$locform
+
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.
-
-
-
+
+
+
-
+
-
ENDPICK
@@ -163,36 +155,45 @@ ENDPICK
sub javascript_validations {
my ($krbdefdom)=@_;
+ my %param = ( formname => 'studentform',
+ kerb_def_dom => $krbdefdom );
+ my $authheader = &Apache::loncommon::authform_header(%param);
return (<Login Type
LON-CAPA Domain for Students
-LON-CAPA domain: Starting and Ending Dates
-
-
-
-
-
+
+
+
+
+
Set Starting Date
+
Note: for large courses, this operation might be time consuming.
ENDPICK
}
# ======================================================= Menu Phase Two Upload
-
sub menu_phase_two_upload {
my $r=shift;
+
my $datatoken;
if (!$ENV{'form.datatoken'}) {
- $datatoken=&Apache::loncommon::upfile_store($r);
+ $datatoken=&Apache::loncommon::upfile_store($r);
} else {
- $datatoken=$ENV{'form.datatoken'};
- &Apache::loncommon::load_tmp_file($r);
+ $datatoken=$ENV{'form.datatoken'};
+ &Apache::loncommon::load_tmp_file($r);
}
my @records=&Apache::loncommon::upfile_record_sep();
my $total=$#records;
@@ -510,56 +471,62 @@ sub menu_phase_two_upload {
}
# ======================================================= Enroll single student
-
sub enroll_single_student {
my $r=shift;
$r->print('Enrolling Student
');
+ $r->print($ENV{'form.cuname'}." in domain ".$ENV{'form.cdomain'}.": ");
if (($ENV{'form.cuname'})&&($ENV{'form.cuname'}!~/\W/)&&
($ENV{'form.cdomain'})&&($ENV{'form.cdomain'}!~/\W/)) {
my $amode='';
my $genpwd='';
if ($ENV{'form.login'} eq 'krb') {
- $amode='krb4';
- $genpwd=$ENV{'form.krbdom'};
+ $amode='krb4';
+ $genpwd=$ENV{'form.krbarg'};
} elsif ($ENV{'form.login'} eq 'int') {
- $amode='internal';
- $genpwd=$ENV{'form.intpwd'};
+ $amode='internal';
+ $genpwd=$ENV{'form.intarg'};
} elsif ($ENV{'form.login'} eq 'loc') {
$amode='localauth';
$genpwd=$ENV{'form.locarg'};
if (!$genpwd) { $genpwd=" "; }
}
if (($amode) && ($genpwd)) {
- &dropstudent($ENV{'form.cdomain'},$ENV{'form.cuname'},
- $ENV{'request.course.id'},$ENV{'form.csec'});
- $r->print(&Apache::lonnet::modifystudent
- ($ENV{'form.cdomain'},$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'}));
+ &modifystudent($ENV{'form.cdomain'},$ENV{'form.cuname'},
+ $ENV{'request.course.id'},$ENV{'form.csec'});
+ $r->print(&Apache::lonnet::modifystudent(
+ $ENV{'form.cdomain'},$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'}));
} else {
- $r->print('Invalid login mode or password');
+ $r->print('Invalid login mode or password');
}
} else {
$r->print('Invalid username or domain');
- }
+ }
}
# ======================================================= Menu Phase Two Enroll
-
sub menu_phase_two_enroll {
my $r=shift;
- $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
- my $krbdefdom=$1;
+ my ($krbdefdom) = $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
$krbdefdom=~tr/a-z/A-Z/;
- my $today=time;
- my $halfyear=$today+15552000;
+ my $today = time;
+ my $halfyear = $today+15552000;
my $defdom=$r->dir_config('lonDefDomain');
my $javascript_validations=&javascript_validations($krbdefdom);
+ # Set up authentication forms
+ my %param = ( formname => 'document.studentform');
+ my $krbform = &Apache::loncommon::authform_kerberos(%param);
+ my $intform = &Apache::loncommon::authform_internal(%param);
+ my $locform = &Apache::loncommon::authform_local(%param);
+ # Set up domain selection form
+ my $domform = &Apache::loncommon::select_dom_form($defdom,'cdomain');
+ # Print it all out
$r->print(<Personal Data
-First Name:
-Middle Name:
-Last Name:
-Generation:
+Middle Name:
+Last Name:
+Generation:
-ID/Student Number: Login Data
-Username: Starting and Ending Dates
+
- +>Set Starting Date +
+>Set Ending Date +
-
-
+
+
+
ERROR:$error'); + } + if (!defined(%currentlist)) { + $r->print("There are no students currently enrolled.\n"); + } else { + # Print out the available choices + &show_drop_list($r,%currentlist); + } +} +# =================================================== Show student list to drop sub show_drop_list { my ($r,%currentlist)=@_; my $cid=$ENV{'request.course.id'}; - - $r->print(''); - $r->print('
username | domain | +ID | student name | generation | +section | |
---|---|---|---|---|---|---|
'. - $sname.' | '.$sdom.' | '. - $reply{$sname}.' | '. - &Apache::lonnet::unescape($reply[2]).' '. - &Apache::lonnet::unescape($reply[3]).', '. - &Apache::lonnet::unescape($reply[0]).' '. - &Apache::lonnet::unescape($reply[1]). - ' | '. - $ssec." | ||
'. + 'Internal error: unable to get environment '. + 'for '.$sname.' in domain '.$sdom.' | ||||||
+ | $sname | +$sdom | +$reply{$sname} | +$info{'lastname'}, $info{'firstname'} $info{'middlename'} | +$info{'generation'} | +$ssec | +
'); } else { + # determine section number my $sec=''; my $username=$entries{$fields{'username'}}; if (defined($fields{'sec'})) { @@ -783,6 +777,7 @@ sub upfile_drop_add { $sec=$entries{$fields{'sec'}}; } } + # determine student id number my $id=''; if (defined($fields{'id'})) { if (defined($entries{$fields{'id'}})) { @@ -790,6 +785,7 @@ sub upfile_drop_add { } $id=~tr/A-Z/a-z/; } + # determine student password my $password=''; if ($genpwd) { $password=$genpwd; @@ -801,14 +797,15 @@ sub upfile_drop_add { } } if ($password) { - &dropstudent($domain,$username,$cid,$sec); + &modifystudent($domain,$username,$cid,$sec); my $reply=&Apache::lonnet::modifystudent ($domain,$username,$id,$amode,$password, $fname,$mname,$lname,$gen,$sec,$enddate, $startdate,$ENV{'form.forceid'}); - unless ($reply eq 'ok') { - $r->print( - "
Error enrolling $username: $reply
"); + if ($reply ne 'ok') { + $r->print('
'. + 'Error enrolling '.$username.': '. + $reply.'
'); } else { $count++; $flushc++; $student{$username}=1; @@ -822,130 +819,115 @@ sub upfile_drop_add { $r->print("No password for $username
"); } } - } - } + } + } # end of foreach (@studentdata) $r->print('
Processed Students: '.$count); -# --------------------------------------------------------------- Drop students + ##################################### + # Drop students # + ##################################### if ($ENV{'form.fullup'} eq 'yes') { $r->print('
ERROR:$error'); + } + if (defined(%currentlist)) { + # Drop the students foreach (@studentdata) { my %entries=&Apache::loncommon::record_sep($_); unless (($entries{$fields{'username'}} eq '') || (!defined($entries{$fields{'username'}}))) { - delete($currentlist{ - $entries{$fields{'username'}}.':'. - $domain}); + delete($currentlist{$entries{$fields{'username'}}. + ':'.$domain}); } } -# ----------------------------------------------------------- Print out choices + # Print out list of dropped students &show_drop_list($r,%currentlist); } else { - $r->print('
Dropped '.$count.' student(s).'); $r->print('
Re-enrollment will re-activate data.'); } # ================================================================ Main Handler - sub handler { - my $r=shift; - $Apache::lonxml::debug=1; - if ($r->header_only) { - $r->content_type('text/html'); - $r->send_http_header; - return OK; - } -# ----------------------------------------------------- Needs to be in a course - if (($ENV{'request.course.fn'}) && - (&Apache::lonnet::allowed('cst',$ENV{'request.course.id'}))) { -# ------------------------------------------------------------------ Start page - $r->content_type('text/html'); - $r->send_http_header; - &header($r); -# --------------------------------------------------- Phase one, initial screen - unless ($ENV{'form.phase'}) { - &menu_phase_one($r); - } -# ------------------------------------------------------------------- Phase two - if ($ENV{'form.associate'} eq 'Reverse Association') { - $ENV{'form.phase'} = 'two'; - if ( $ENV{'form.upfile_associate'} ne 'reverse' ) { - $ENV{'form.upfile_associate'} = 'reverse'; - } else { - $ENV{'form.upfile_associate'} = 'forward'; - } - } - if ($ENV{'form.phase'} eq 'two') { - if ($ENV{'form.fileupload'}) { - &menu_phase_two_upload($r); - } elsif ($ENV{'form.enroll'}) { - &menu_phase_two_enroll($r); - } elsif ($ENV{'form.drop'}) { - &menu_phase_two_drop($r); - } - } -# ----------------------------------------------------------------- Phase three - if ($ENV{'form.phase'} eq 'three') { - if ($ENV{'form.datatoken'}) { - &upfile_drop_add($r); - } - } -# ------------------------------------------------------------------ Phase four - if ($ENV{'form.phase'} eq 'four') { - &drop_student_list($r); - } -# ------------------------------------------------------------------ Phase five - if ($ENV{'form.phase'} eq 'five') { - &enroll_single_student($r); - } -# ------------------------------------------------------------------------- End - $r->print('