[LON-CAPA-cvs] cvs: loncom /interface londropadd.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Fri, 26 Apr 2002 18:59:00 -0000
matthew Fri Apr 26 14:59:00 2002 EDT
Modified files:
/loncom/interface londropadd.pm
Log:
More cleanups - added call to loncommon::linked_select_forms to enable the
instructor to specify a machine to create the users on. This required some
reworking of the logic involved in adding/dropping users.
Index: loncom/interface/londropadd.pm
diff -u loncom/interface/londropadd.pm:1.30 loncom/interface/londropadd.pm:1.31
--- loncom/interface/londropadd.pm:1.30 Thu Apr 25 15:21:34 2002
+++ loncom/interface/londropadd.pm Fri Apr 26 14:59:00 2002
@@ -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.31 2002/04/26 18:59:00 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -104,6 +104,35 @@
}
}
+# ============ 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 +411,7 @@
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(<<ENDPICK);
</table>
<input type=hidden name=nfields value=$i>
@@ -474,9 +502,24 @@
sub enroll_single_student {
my $r=shift;
$r->print('<h3>Enrolling Student</h3>');
- $r->print($ENV{'form.cuname'}." in domain ".$ENV{'form.cdomain'}.": ");
+ $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('<font color="#ff0000">Error:</font>'.
+ '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') {
@@ -491,15 +534,16 @@
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');
}
@@ -523,7 +567,7 @@
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');
+ my $domform = &domain_form($defdom);
# Print it all out
$r->print(<<ENDSENROLL);
<script type="text/javascript" language="Javascript">
@@ -535,7 +579,7 @@
var foundsec=0;
var tw;
if ((typeof(vf.cuname.value) !="undefined") && (vf.cuname.value!='') &&
- (typeof(vf.cdomain.value)!="undefined") && (vf.cdomain.value!='')) {
+ (typeof(vf.lcdomain.value)!="undefined") && (vf.lcdomain.value!='')) {
founduname=1;
}
if ((typeof(vf.cfirst.value)!="undefined") && (vf.cfirst.value!='') &&
@@ -713,8 +757,19 @@
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('<font color="#ff0000">Error:</font>'.
+ 'Invalid home server specified');
+ return;
+ }
+ }
# Determine authentication mechanism
my $amode = '';
my $genpwd = '';
@@ -797,11 +852,11 @@
}
}
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('<p><b>'.
'Error enrolling '.$username.': '.