# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
# $Id: londropadd.pm,v 1.59 2002/10/16 18:45:10 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
# LON-CAPA is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# LON-CAPA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# /home/httpd/html/adm/gpl.txt
#
# http://www.lon-capa.org/
#
# (Handler to set parameters for assessments
#
# (Handler to resolve ambiguous file locations
#
# (TeX Content Handler
#
###############################################################
###############################################################
package Apache::londropadd;
use strict;
use Apache::lonnet();
use Apache::loncommon();
use Apache::lonhtmlcommon();
use Apache::Constants qw(:common :http REDIRECT);
###############################################################
###############################################################
sub header {
my $bodytag=&Apache::loncommon::bodytag('Enrollment Manager');
return(<
Note: this will not take effect if the user already exists
$krbform
$intform
$locform
Note: for large courses, this operation may be time consuming.
ENDPICK
}
# ======================================================= Menu Phase Two Upload
sub print_upload_manager_form {
my $r=shift;
my $datatoken;
if (!$ENV{'form.datatoken'}) {
$datatoken=&Apache::loncommon::upfile_store($r);
} else {
$datatoken=$ENV{'form.datatoken'};
&Apache::loncommon::load_tmp_file($r);
}
my @records=&Apache::loncommon::upfile_record_sep();
my $total=$#records;
my $distotal=$total+1;
$ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
my $krbdefdom=$1;
$krbdefdom=~tr/a-z/A-Z/;
my $today=time;
my $halfyear=$today+15552000;
my $defdom=$r->dir_config('lonDefDomain');
&print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom);
my $i;
my $keyfields;
if ($total>=0) {
my @d=(['username','Username'],
['names','Last Name, First Names'],
['fname','First Name'],
['mname','Middle Names/Initials'],
['lname','Last Name'],
['gen','Generation'],
['id','ID/Student Number'],
['sec','Group/Section'],
['ipwd','Initial Password']);
if ($ENV{'form.upfile_associate'} eq 'reverse') {
&Apache::loncommon::csv_print_samples($r,\@records);
$i=&Apache::loncommon::csv_print_select_table($r,\@records,\@d);
foreach (@d) { $keyfields.=$_->[0].','; }
chop($keyfields);
} else {
unshift(@d,['none','']);
$i=&Apache::loncommon::csv_samples_select_table($r,\@records,\@d);
my %sone=&Apache::loncommon::record_sep($records[0]);
$keyfields=join(',',sort(keys(%sone)));
}
}
&print_upload_manager_footer($r,$i,$keyfields,$defdom,$today,$halfyear);
}
# ======================================================= Enroll single student
sub enroll_single_student {
my $r=shift;
$r->print('
Enrolling '.$ENV{'form.cuname'}." \@ ". $ENV{'form.lcdomain'}.'
'); if (($ENV{'form.cuname'})&&($ENV{'form.cuname'}!~/\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_library_servers($domain); if (! exists($home_servers{$desiredhost})) { $r->print('Error:'. 'Invalid home server specified'); return; } } $r->print(" with server $desiredhost :") if (defined($desiredhost)); # End of home server selection logic my $amode=''; my $genpwd=''; if ($ENV{'form.login'} eq 'krb') { $amode='krb'; $amode.=$ENV{'form.krbver'}; $genpwd=$ENV{'form.krbarg'}; } elsif ($ENV{'form.login'} eq 'int') { $amode='internal'; $genpwd=$ENV{'form.intarg'}; } elsif ($ENV{'form.login'} eq 'loc') { $amode='localauth'; $genpwd=$ENV{'form.locarg'}; if (!$genpwd) { $genpwd=" "; } } my $home = &Apache::lonnet::homeserver($ENV{'form.cuname'}, $ENV{'form.lcdomain'}); if ((($amode) && ($genpwd)) || ($home ne 'no_host')) { # Clean out any old roles the student has in this class. &modifystudent($ENV{'form.lcdomain'},$ENV{'form.cuname'}, $ENV{'request.course.id'},$ENV{'form.csec'}, $desiredhost); my $login_result = &Apache::lonnet::modifystudent ($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'}, $desiredhost); if ($login_result =~ /^ok/) { $r->print($login_result); $r->print("If active, the new role will be available ". "when the student next logs in to LON-CAPA.
"); } else { $r->print("unable to enroll: ".$login_result); } } else { $r->print('ERROR '. 'Invalid login mode or password. '. 'Unable to enroll '.$ENV{'form.cuname'}.'.
'); } } else { $r->print('Invalid username or domain'); } } # ======================================================= Menu Phase Two Enroll sub print_enroll_single_student_form { my $r=shift; $r->print("First Name: | |
Middle Name: | |
Last Name: | |
Generation: |
Username:
Domain: $domform
Note: login settings below will not take effect if the user already exists
$krbform
$intform
$locform
Group/Section:
ID/Student Number:
Disable ID/Student Number Safeguard and Force Change of Conflicting IDs (only do if you know what you are doing)
END return; } # ========================================================= Menu Phase Two Drop sub print_drop_menu { my $r=shift; $r->print("
Current Classlist
END
if ($ENV{'form.action'} ne 'modifystudent') {
$r->print(<
username | domain | ID | student name | section |
---|---|---|---|---|
\n "); if ($linkto eq 'nothing') { $r->print($username); } elsif ($linkto eq 'aboutme') { $r->print(&Apache::loncommon::aboutmewrapper($username, $username, $domain)); } elsif ($linkto eq 'modify') { $r->print(''. $username."\n"); } $r->print(<<"END"); | $domain | $id | $name | $section |
'. 'Unable to retrieve environment data for '.$sname. 'in domain '.$sdom.'
'. 'Please contact your LON-CAPA administrator '. 'regarding this situation.