--- loncom/interface/Attic/londropadd.pm 2002/04/16 21:02:17 1.26
+++ loncom/interface/Attic/londropadd.pm 2002/04/26 19:10:54 1.32
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
-# $Id: londropadd.pm,v 1.26 2002/04/16 21:02:17 matthew Exp $
+# $Id: londropadd.pm,v 1.32 2002/04/26 19:10:54 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
-
@@ -156,36 +184,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
@@ -505,31 +502,48 @@ sub menu_phase_two_upload {
sub enroll_single_student {
my $r=shift;
$r->print('Enrolling Student
');
+ $r->print($ENV{'form.cuname'}." in domain ".$ENV{'form.lcdomain'});
if (($ENV{'form.cuname'})&&($ENV{'form.cuname'}!~/\W/)&&
- ($ENV{'form.cdomain'})&&($ENV{'form.cdomain'}!~/\W/)) {
+ ($ENV{'form.lcdomain'})&&($ENV{'form.lcdomain'}!~/\W/)) {
+ # Deal with home server selection
+ my $domain=$ENV{'form.lcdomain'};
+ my $desiredhost = $ENV{'form.lcserver'};
+ if (lc($desiredhost) eq 'default') {
+ $desiredhost = undef;
+ } else {
+ my %home_servers = &Apache::loncommon::get_home_servers($domain);
+ if (! exists($home_servers{$desiredhost})) {
+ $r->print('Error:'.
+ 'Invalid home server specified');
+ return;
+ }
+ }
+ $r->print(" with server $desiredhost :");
+ # End of home server selection logic
my $amode='';
my $genpwd='';
if ($ENV{'form.login'} eq 'krb') {
$amode='krb4';
- $genpwd=$ENV{'form.krbdom'};
+ $genpwd=$ENV{'form.krbarg'};
} elsif ($ENV{'form.login'} eq 'int') {
$amode='internal';
- $genpwd=$ENV{'form.intpwd'};
+ $genpwd=$ENV{'form.intarg'};
} elsif ($ENV{'form.login'} eq 'loc') {
$amode='localauth';
$genpwd=$ENV{'form.locarg'};
if (!$genpwd) { $genpwd=" "; }
}
if (($amode) && ($genpwd)) {
- &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.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'}));
+ $ENV{'form.startdate'},$ENV{'form.forceid'},
+ $desiredhost));
+ &modifystudent($ENV{'form.lcdomain'},$ENV{'form.cuname'},
+ $ENV{'request.course.id'},$ENV{'form.csec'});
} else {
$r->print('Invalid login mode or password');
}
@@ -547,8 +561,16 @@ sub menu_phase_two_enroll {
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 = &domain_form($defdom);
+ # Print it all out
$r->print(<
username domain
@@ -714,7 +746,12 @@ END
}
}
$r->print('
');
- $r->print('');
+ $r->print(<<"END");
+
+ + +
+END } # ================================================= Drop/Add from uploaded file @@ -739,18 +776,29 @@ sub upfile_drop_add { my $enddate = $ENV{'form.enddate'}; if ($startdate=~/\D/) { $startdate=''; } if ($enddate=~/\D/) { $enddate=''; } - # + # Determine domain and desired host (home server) my $domain=$ENV{'form.lcdomain'}; + my $desiredhost = $ENV{'form.lcserver'}; + if (lc($desiredhost) eq 'default') { + $desiredhost = undef; + } else { + my %home_servers = &Apache::loncommon::get_home_servers($domain); + if (! exists($home_servers{$desiredhost})) { + $r->print('Error:'. + 'Invalid home server specified'); + return; + } + } # Determine authentication mechanism my $amode = ''; my $genpwd = ''; if ($ENV{'form.login'} eq 'krb') { $amode='krb4'; - $genpwd=$ENV{'form.krbdom'}; + $genpwd=$ENV{'form.krbarg'}; } elsif ($ENV{'form.login'} eq 'int') { $amode='internal'; - if ((defined($ENV{'form.intpwd'})) && ($ENV{'form.intpwd'})) { - $genpwd=$ENV{'form.intpwd'}; + if ((defined($ENV{'form.intarg'})) && ($ENV{'form.intarg'})) { + $genpwd=$ENV{'form.intarg'}; } } elsif ($ENV{'form.login'} eq 'loc') { $amode='localauth'; @@ -823,11 +871,11 @@ sub upfile_drop_add { } } if ($password) { - &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'}); + $startdate,$ENV{'form.forceid'},$desiredhost); + &modifystudent($domain,$username,$cid,$sec); if ($reply ne 'ok') { $r->print(''.
'Error enrolling '.$username.': '.
@@ -854,9 +902,12 @@ sub upfile_drop_add {
if ($ENV{'form.fullup'} eq 'yes') {
$r->print('Dropping Students
');
# Get current classlist
- my %currentlist=&get_current_classlist
+ my ($error,%currentlist)=&get_current_classlist
($ENV{'course.'.$cid.'.domain'},
$ENV{'course.'.$cid.'.num'});
+ if (defined($error)) {
+ $r->print('ERROR:$error
');
+ }
if (defined(%currentlist)) {
# Drop the students
foreach (@studentdata) {
@@ -870,8 +921,7 @@ sub upfile_drop_add {
# Print out list of dropped students
&show_drop_list($r,%currentlist);
} else {
- $r->print(''.
- 'Could not access classlist
');
+ $r->print("There are no students currently enrolled.\n");
}
}
} # end of unless
@@ -894,7 +944,6 @@ sub drop_student_list {
# ================================================================ Main Handler
sub handler {
my $r=shift;
- $Apache::lonxml::debug=1;
if ($r->header_only) {
$r->content_type('text/html');
$r->send_http_header;
@@ -906,7 +955,7 @@ sub handler {
# Start page
$r->content_type('text/html');
$r->send_http_header;
- &header($r);
+ $r->print(&header());
# Phase one, initial screen
unless ($ENV{'form.phase'}) {
&menu_phase_one($r);