--- loncom/interface/Attic/londropadd.pm 2002/04/25 19:21:34 1.30
+++ loncom/interface/Attic/londropadd.pm 2002/04/30 13:51:00 1.34
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
-# $Id: londropadd.pm,v 1.30 2002/04/25 19:21:34 matthew Exp $
+# $Id: londropadd.pm,v 1.34 2002/04/30 13:51:00 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -75,7 +75,7 @@ ENDHEAD
# =========== Drop student from all sections of a course, except optional $csec
sub modifystudent {
- my ($udom,$unam,$courseid,$csec)=@_;
+ my ($udom,$unam,$courseid,$csec,$desiredhost)=@_;
# if $csec is undefined, drop the student from all the courses matching
# this one. If $csec is defined, drop them from all other sections of
# this course and add them to section $csec
@@ -97,13 +97,43 @@ sub modifystudent {
my $now=time;
if (!($start && ($now<$start)) || !($end && ($now>$end))) {
my $reply=&Apache::lonnet::modifystudent
- ($udom,$unam,'','','','','','','',$section,time);
+ ($udom,$unam,'','','','','','','',
+ $section,time,undef,undef,$desiredhost);
}
}
}
}
}
+# ============ build a domain and server selection form
+sub domain_form {
+ my ($defdom) = @_;
+ # Set up domain and server selection forms
+ #
+ # Get the domains
+ my @domains = &Apache::loncommon::get_domains();
+ # build up the menu information to be passed to
+ # &Apache::loncommon::linked_select_forms
+ my %select_menus;
+ foreach my $dom (@domains) {
+ # set up the text for this domain
+ $select_menus{$dom}->{'text'}= $dom;
+ # we want a choice of 'default' as the default in the second menu
+ $select_menus{$dom}->{'default'}= 'default';
+ $select_menus{$dom}->{'select2'}->{'default'} = 'default';
+ # Now build up the other items in the second menu
+ my %servers = &Apache::loncommon::get_home_servers($dom);
+ foreach my $server (keys(%servers)) {
+ $select_menus{$dom}->{'select2'}->{$server}
+ = "$server $servers{$server}";
+ }
+ }
+ my $result = &Apache::loncommon::linked_select_forms
+ ('studentform',' with home server ',$defdom,
+ 'lcdomain','lcserver',\%select_menus);
+ return $result;
+}
+
# ============================================================== Menu Phase One
sub menu_phase_one {
my $r=shift;
@@ -382,8 +412,7 @@ sub phase_two_end {
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,'lcdomain');
+ my $domform = &domain_form($defdom);
$r->print(< Enrolling '.$ENV{'form.cuname'}." in domain ".
+ $ENV{'form.lcdomain'}.' ERROR '.
+ 'Invalid login mode or password. '.
+ 'Unable to enroll '.$ENV{'form.cuname'}.'.
Enrolling Student
');
- $r->print($ENV{'form.cuname'}." in domain ".$ENV{'form.cdomain'}.": ");
+ $r->print('
username domain
@@ -688,7 +753,12 @@ END
}
}
$r->print('
');
- $r->print('');
+ $r->print(<<"END");
+
+ + +
+END } # ================================================= Drop/Add from uploaded file @@ -713,8 +783,19 @@ 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 = ''; @@ -797,11 +878,12 @@ sub upfile_drop_add { } } if ($password) { - &modifystudent($domain,$username,$cid,$sec); + &modifystudent($domain,$username,$cid,$sec, + $desiredhost); 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); if ($reply ne 'ok') { $r->print(''. 'Error enrolling '.$username.': '.