--- loncom/interface/Attic/londropadd.pm 2004/02/26 22:42:21 1.103
+++ loncom/interface/Attic/londropadd.pm 2005/06/03 16:27:26 1.130
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
-# $Id: londropadd.pm,v 1.103 2004/02/26 22:42:21 matthew Exp $
+# $Id: londropadd.pm,v 1.130 2005/06/03 16:27:26 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -32,20 +32,22 @@
package Apache::londropadd;
use strict;
-use Apache::lonnet();
+use Apache::lonnet;
use Apache::loncommon();
use Apache::lonhtmlcommon();
use Apache::Constants qw(:common :http REDIRECT);
use Spreadsheet::WriteExcel;
+use Apache::lonstathelpers();
use Apache::lonlocal;
###############################################################
###############################################################
sub header {
+ my $html=&Apache::lonxml::xmlbegin();
my $bodytag=&Apache::loncommon::bodytag('Enrollment Manager');
my $title = &mt('LON-CAPA Enrollment Manager');
return(< ';
+ $menu_html.='';
+ if (exists($menu_item->{'url'})) {
+ $menu_html.=qq{};
+ } else {
+ $menu_html.=
+ qq{};
+ }
+ $menu_html.= &mt($menu_item->{'text'}).'';
+ if (exists($menu_item->{'help'})) {
+ $menu_html.=
+ &Apache::loncommon::help_open_topic($menu_item->{'help'});
+ }
+ $menu_html.='
- - $Text{'enrollone'} - $help{'Course_Add_Student'} -
- - $Text{'modify'} - $help{'Course_Modify_Student_Data'} -
- - $Text{'view'} - $help{'Course_View_Class_List'} -
- - $Text{'drop'} - $help{'Course_Drop_Student'} -
- - $Text{'populate'} - -END + $r->print($menu_html); + return; } ############################################################### @@ -189,17 +205,17 @@ sub print_upload_manager_header { my ($r,$datatoken,$distotal,$krbdefdom)=@_; my $javascript; # - if (! exists($ENV{'form.upfile_associate'})) { - $ENV{'form.upfile_associate'} = 'forward'; + if (! exists($env{'form.upfile_associate'})) { + $env{'form.upfile_associate'} = 'forward'; } - if ($ENV{'form.associate'} eq 'Reverse Association') { - if ( $ENV{'form.upfile_associate'} ne 'reverse' ) { - $ENV{'form.upfile_associate'} = 'reverse'; + if ($env{'form.associate'} eq 'Reverse Association') { + if ( $env{'form.upfile_associate'} ne 'reverse' ) { + $env{'form.upfile_associate'} = 'reverse'; } else { - $ENV{'form.upfile_associate'} = 'forward'; + $env{'form.upfile_associate'} = 'forward'; } } - if ($ENV{'form.upfile_associate'} eq 'reverse') { + if ($env{'form.upfile_associate'} eq 'reverse') { $javascript=&upload_manager_javascript_reverse_associate(); } else { $javascript=&upload_manager_javascript_forward_associate(); @@ -207,8 +223,8 @@ sub print_upload_manager_header { # # Deal with restored settings my $password_choice = ''; - if (exists($ENV{'form.ipwd_choice'}) && - $ENV{'form.ipwd_choice'} ne '') { + if (exists($env{'form.ipwd_choice'}) && + $env{'form.ipwd_choice'} ne '') { # If a column was specified for password, assume it is for an # internal password. This is a bug waiting to be filed (could be # local or krb auth instead of internal) but I do not have the @@ -218,7 +234,7 @@ sub print_upload_manager_header { # my $javascript_validations=&javascript_validations('auth',$krbdefdom, $password_choice); - my $checked=(($ENV{'form.noFirstLine'})?' checked="1"':''); + my $checked=(($env{'form.noFirstLine'})?' checked="1"':''); $r->print('
\n". &mt('Note: this will not take effect if the user already exists'). + &Apache::loncommon::help_open_topic('Auth_Options'). "
\n"; $Str .= $krbform."\n
\n". $intform."\n
\n". @@ -623,14 +640,14 @@ sub print_upload_manager_form { my $firstLine; my $datatoken; - if (!$ENV{'form.datatoken'}) { + if (!$env{'form.datatoken'}) { $datatoken=&Apache::loncommon::upfile_store($r); } else { - $datatoken=$ENV{'form.datatoken'}; + $datatoken=$env{'form.datatoken'}; &Apache::loncommon::load_tmp_file($r); } my @records=&Apache::loncommon::upfile_record_sep(); - if($ENV{'form.noFirstLine'}){ + if($env{'form.noFirstLine'}){ $firstLine=shift(@records); } my $total=$#records; @@ -653,7 +670,7 @@ sub print_upload_manager_form { }); # # Determine kerberos parameters as appropriate - my $defdom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}; + my $defdom=$env{'course.'.$env{'request.course.id'}.'.domain'}; my ($krbdef,$krbdefdom) = &Apache::loncommon::get_kerberos_defaults($defdom); # @@ -662,17 +679,17 @@ sub print_upload_manager_form { my $keyfields; if ($total>=0) { my @field= - (['username',&mt('Username'), $ENV{'form.username_choice'}], - ['names',&mt('Last Name, First Names'),$ENV{'form.names_choice'}], - ['fname',&mt('First Name'), $ENV{'form.fname_choice'}], - ['mname',&mt('Middle Names/Initials'),$ENV{'form.mname_choice'}], - ['lname',&mt('Last Name'), $ENV{'form.lname_choice'}], - ['gen', &mt('Generation'), $ENV{'form.gen_choice'}], - ['id', &mt('ID/Student Number'),$ENV{'form.id_choice'}], - ['sec', &mt('Group/Section'), $ENV{'form.sec_choice'}], - ['ipwd', &mt('Initial Password'),$ENV{'form.ipwd_choice'}], - ['email',&mt('EMail Address'), $ENV{'form.email_choice'}]); - if ($ENV{'form.upfile_associate'} eq 'reverse') { + (['username',&mt('Username'), $env{'form.username_choice'}], + ['names',&mt('Last Name, First Names'),$env{'form.names_choice'}], + ['fname',&mt('First Name'), $env{'form.fname_choice'}], + ['mname',&mt('Middle Names/Initials'),$env{'form.mname_choice'}], + ['lname',&mt('Last Name'), $env{'form.lname_choice'}], + ['gen', &mt('Generation'), $env{'form.gen_choice'}], + ['id', &mt('ID/Student Number'),$env{'form.id_choice'}], + ['sec', &mt('Group/Section'), $env{'form.sec_choice'}], + ['ipwd', &mt('Initial Password'),$env{'form.ipwd_choice'}], + ['email',&mt('EMail Address'), $env{'form.email_choice'}]); + if ($env{'form.upfile_associate'} eq 'reverse') { &Apache::loncommon::csv_print_samples($r,\@records); $i=&Apache::loncommon::csv_print_select_table($r,\@records, \@field); @@ -696,25 +713,25 @@ sub print_upload_manager_form { sub enroll_single_student { my $r=shift; # Remove non alphanumeric values from section - $ENV{'form.csec'}=~s/\W//g; + $env{'form.csec'}=~s/\W//g; # # We do the dates first because the action of making them the defaul - # in the course is entirely seperate from the action of enrolling the + # in the course is entirely separate from the action of enrolling the # student. Also, a failure in setting the dates as default is not fatal # to the process of enrolling / modifying a student. my ($startdate,$enddate) = &get_dates_from_form(); - if ($ENV{'form.makedatesdefault'}) { + if ($env{'form.makedatesdefault'}) { $r->print(&make_dates_default($startdate,$enddate)); } $r->print('
'.&mt('Enrolling').' '.$ENV{'form.cuname'}." \@ ". - $ENV{'form.lcdomain'}.'
'); - if (($ENV{'form.cuname'})&&($ENV{'form.cuname'}!~/\W/)&& - ($ENV{'form.lcdomain'})&&($ENV{'form.lcdomain'}!~/\W/)) { + $r->print(''.&mt('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'}; + my $domain=$env{'form.lcdomain'}; + my $desiredhost = $env{'form.lcserver'}; if (lc($desiredhost) eq 'default') { $desiredhost = undef; } else { @@ -729,33 +746,33 @@ sub enroll_single_student { # End of home server selection logic my $amode=''; my $genpwd=''; - if ($ENV{'form.login'} eq 'krb') { + if ($env{'form.login'} eq 'krb') { $amode='krb'; - $amode.=$ENV{'form.krbver'}; - $genpwd=$ENV{'form.krbarg'}; - } elsif ($ENV{'form.login'} eq 'int') { + $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') { + $genpwd=$env{'form.intarg'}; + } elsif ($env{'form.login'} eq 'loc') { $amode='localauth'; - $genpwd=$ENV{'form.locarg'}; + $genpwd=$env{'form.locarg'}; if (!$genpwd) { $genpwd=" "; } } - my $home = &Apache::lonnet::homeserver($ENV{'form.cuname'}, - $ENV{'form.lcdomain'}); + 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'}, + &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'},$enddate, - $startdate,$ENV{'form.forceid'}, - $desiredhost); + ($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'},$enddate, + $startdate,$env{'form.forceid'}, + $desiredhost,$env{'form.emailaddress'}); if ($login_result =~ /^ok/) { $r->print($login_result); $r->print("".&mt('If active, the new role will be available when the student next logs in to LON-CAPA.')."
"); @@ -769,7 +786,7 @@ sub enroll_single_student { } else { $r->print(&mt('Invalid login mode or password.').' '); } - $r->print(''.&mt('Unable to enroll').' '.$ENV{'form.cuname'}.'.'); + $r->print(''.&mt('Unable to enroll').' '.$env{'form.cuname'}.'.'); } } else { $r->print(&mt('Invalid username or domain')); @@ -780,10 +797,10 @@ sub setup_date_selectors { my ($starttime,$endtime,$mode) = @_; if (! defined($starttime)) { $starttime = time; - unless ($mode eq 'createcourse') { - if (exists($ENV{'course.'.$ENV{'request.course.id'}. + unless ($mode eq 'create_enrolldates' || $mode eq 'create_defaultdates') { + if (exists($env{'course.'.$env{'request.course.id'}. '.default_enrollment_start_date'})) { - $starttime = $ENV{'course.'.$ENV{'request.course.id'}. + $starttime = $env{'course.'.$env{'request.course.id'}. '.default_enrollment_start_date'}; } } @@ -791,9 +808,9 @@ sub setup_date_selectors { if (! defined($endtime)) { $endtime = time+(6*30*24*60*60); # 6 months from now, approx unless ($mode eq 'createcourse') { - if (exists($ENV{'course.'.$ENV{'request.course.id'}. + if (exists($env{'course.'.$env{'request.course.id'}. '.default_enrollment_end_date'})) { - $endtime = $ENV{'course.'.$ENV{'request.course.id'}. + $endtime = $env{'course.'.$env{'request.course.id'}. '.default_enrollment_end_date'}; } } @@ -804,12 +821,20 @@ sub setup_date_selectors { my $enddateform = &Apache::lonhtmlcommon::date_setter('studentform', 'enddate', $endtime); - if ($mode eq 'createcourse') { + if ($mode eq 'create_enrolldates') { $startdateform = &Apache::lonhtmlcommon::date_setter('ccrs', - 'startdate', + 'startenroll', $starttime); $enddateform = &Apache::lonhtmlcommon::date_setter('ccrs', - 'enddate', + 'endenroll', + $endtime); + } + if ($mode eq 'create_defaultdates') { + $startdateform = &Apache::lonhtmlcommon::date_setter('ccrs', + 'startaccess', + $starttime); + $enddateform = &Apache::lonhtmlcommon::date_setter('ccrs', + 'endaccess', $endtime); } return ($startdateform,$enddateform); @@ -818,7 +843,7 @@ sub setup_date_selectors { sub get_dates_from_form { my $startdate = &Apache::lonhtmlcommon::get_date_from_form('startdate'); my $enddate = &Apache::lonhtmlcommon::get_date_from_form('enddate'); - if ($ENV{'form.no_end_date'}) { + if ($env{'form.no_end_date'}) { $enddate = 0; } return ($startdate,$enddate); @@ -830,7 +855,7 @@ sub date_setting_table { my $dateDefault = ''.&mt('Starting Date').' | '. @@ -853,8 +881,8 @@ sub date_setting_table { sub make_dates_default { my ($startdate,$enddate) = @_; my $result = ''; - my $dom = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}; - my $crs = $ENV{'course.'.$ENV{'request.course.id'}.'.num'}; + my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; my $put_result = &Apache::lonnet::put('environment', {'default_enrollment_start_date'=>$startdate, 'default_enrollment_end_date' =>$enddate},$dom,$crs); @@ -862,7 +890,7 @@ sub make_dates_default { $result .= "Set default start and end dates for course
$lt{'hs'}: | $homeserver_form |
---|---|
$lt{'mail'}: | +
+ | |
$lt{'mail'}: | ++ + |
---|
'.$_.' | '); - foreach (split(/\,/,$coursepersonnel{$_})) { - my ($puname,$pudom)=split(/\:/,$_); + foreach my $role (sort keys %coursepersonnel) { + next if ($role =~ /^\s*$/); + $r->print(' |
'.$role.' | '); + foreach my $user (split(',',$coursepersonnel{$role})) { + my ($puname,$pudom)=split(':',$user); $r->print(' '.&Apache::loncommon::aboutmewrapper( - &Apache::loncommon::plainname($puname, - $pudom),$puname,$pudom)); + &Apache::loncommon::plainname($puname, + $pudom), + $puname,$pudom)); } $r->print(' |
\n"); - if ($ENV{'form.action'} ne 'modifystudent') { + if ($env{'form.action'} ne 'modifystudent') { my %lt=&Apache::lonlocal::texthash('csv' => "CSV", 'excel' => "Excel", 'html' => 'HTML'); - $r->print(''); - my $output_selector = '
\n"); - + $r->print(''. + "\n\n"); # # Print the classlist $r->print('
+ | |||||||||
---|---|---|---|---|---|---|---|---|---|
$lt{'type'} | + "); + } else { + $r->print(" +Count | + "); + } + $r->print(<$lt{'dom'} @@ -1227,14 +1290,18 @@ END $lt{'sn'} | $lt{'sec'} + | + $lt{'start'} + | + $lt{'end'} | -||||
\n "); + if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') { + if (! defined($start) || $start == 0) { + $start = &mt('none'); + } else { + $start = &Apache::lonlocal::locallocaltime($start); + } + if (! defined($end) || $end == 0) { + $end = &mt('none'); + } else { + $end = &Apache::lonlocal::locallocaltime($end); + } + $r->print(" | |||||||||
'.&mt('manual').' | |
@@ -1478,21 +1614,21 @@ sub modify_single_student {
my $r = shift;
#
# Remove non alphanumeric values from the section
- $ENV{'form.section'} =~ s/\W//g;
+ $env{'form.section'} =~ s/\W//g;
#
# Do the date defaults first
my ($starttime,$endtime) = &get_dates_from_form();
- if ($ENV{'form.makedatesdefault'}) {
+ if ($env{'form.makedatesdefault'}) {
$r->print(&make_dates_default($starttime,$endtime));
}
# Get the 'sortby' and 'Status' variables so the user goes back to their
# previous screen
- my $sortby = $ENV{'form.sortby'};
- my $status = $ENV{'form.Status'};
+ my $sortby = $env{'form.sortby'};
+ my $status = $env{'form.Status'};
#
# We always need this information
- my $slogin = $ENV{'form.slogin'};
- my $sdom = $ENV{'form.sdomain'};
+ my $slogin = $env{'form.slogin'};
+ my $sdom = $env{'form.sdomain'};
#
# Get the old data
my %old=&Apache::lonnet::get('environment',
@@ -1500,7 +1636,7 @@ sub modify_single_student {
'lastname','generation','id'],
$sdom, $slogin);
$old{'section'} = &Apache::lonnet::getsection($sdom,$slogin,
- $ENV{'request.course.id'});
+ $env{'request.course.id'});
my ($tmp) = keys(%old);
if ($tmp =~ /^(con_lost|error|no_such_host)/i) {
$r->print(&mt('There was an error determining the environment values for')." $slogin \@ $sdom.");
@@ -1509,19 +1645,19 @@ sub modify_single_student {
undef $tmp;
#
# Get the new data
- my $firstname = $ENV{'form.firstname'};
- my $middlename = $ENV{'form.middlename'};
- my $lastname = $ENV{'form.lastname'};
- my $generation = $ENV{'form.generation'};
- my $section = $ENV{'form.section'};
- my $courseid = $ENV{'request.course.id'};
- my $sid = $ENV{'form.id'};
+ my $firstname = $env{'form.firstname'};
+ my $middlename = $env{'form.middlename'};
+ my $lastname = $env{'form.lastname'};
+ my $generation = $env{'form.generation'};
+ my $section = $env{'form.section'};
+ my $courseid = $env{'request.course.id'};
+ my $sid = $env{'form.id'};
my $displayable_starttime = localtime($starttime);
my $displayable_endtime = localtime($endtime);
#
# check for forceid override
if ((defined($old{'id'})) && ($old{'id'} ne '') &&
- ($sid ne $old{'id'}) && (! exists($ENV{'form.forceid'}))) {
+ ($sid ne $old{'id'}) && (! exists($env{'form.forceid'}))) {
$r->print("".&mt('You changed the students id but did not disable the ID change safeguard. The students id will not be changed.')."");
$sid = $old{'id'};
}
@@ -1588,14 +1724,14 @@ END
# Send request(s) to modify data (final undef is for 'desiredhost',
# which is a moot point because the student already has an account.
my $modify_section_results = &modifystudent($sdom,$slogin,
- $ENV{'request.course.id'},
+ $env{'request.course.id'},
$section,undef);
if ($modify_section_results !~ /^ok/) {
$r->print(&mt('An error occured during the attempt to change the section for this student.')."
");
}
my $roleresults = &Apache::lonnet::modifystudent
($sdom,$slogin,$sid,undef,undef,$firstname,$middlename,$lastname,
- $generation,$section,$endtime,$starttime,$ENV{'form.forceid'});
+ $generation,$section,$endtime,$starttime,$env{'form.forceid'});
if ($roleresults eq 'refused' ) {
$r->print(&mt('Your request to change the role information for this student was refused. You do not appear to have sufficient authority to change student information.'));
} elsif ($roleresults !~ /ok/) {
@@ -1604,7 +1740,7 @@ END
$roleresults);
&Apache::lonnet::logthis("londropadd:failed attempt to modify student".
" data for ".$slogin." \@ ".$sdom." by ".
- $ENV{'user.name'}." \@ ".$ENV{'user.domain'}.
+ $env{'user.name'}." \@ ".$env{'user.domain'}.
":".$roleresults);
} else { # everything is okay!
$r->print(&mt('Student information updated successfully.')."
".
@@ -1624,7 +1760,7 @@ END
sub get_enrollment_data {
my ($sname,$sdomain) = @_;
- my $courseid = $ENV{'request.course.id'};
+ my $courseid = $env{'request.course.id'};
$courseid =~ s:_:/:g;
my %roles = &Apache::lonnet::dump('roles',$sdomain,$sname);
my ($tmp) = keys(%roles);
@@ -1683,13 +1819,13 @@ which describes the order elements are s
#################################################
sub show_drop_list {
my ($r,$classlist,$keylist,$nosort)=@_;
- my $cid=$ENV{'request.course.id'};
- if (! exists($ENV{'form.sortby'})) {
+ my $cid=$env{'request.course.id'};
+ if (! exists($env{'form.sortby'})) {
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['sortby']);
}
- my $sortby = $ENV{'form.sortby'};
- if ($sortby !~ /^(username|domain|section|fullname|id)$/) {
+ my $sortby = $env{'form.sortby'};
+ if ($sortby !~ /^(username|domain|section|fullname|id|start|end)$/) {
$sortby = 'username';
}
#
@@ -1713,13 +1849,14 @@ function uncheckAll(field) {
END
+my %lt=&Apache::lonlocal::texthash('usrn' => "username",
+ 'dom' => "domain",
+ 'sn' => "student name",
+ 'sec' => "section",
+ 'start' => "start date",
+ 'end' => "end date",
+ );
if ($nosort) {
- my %lt=&Apache::lonlocal::texthash(
- 'usrn' => "username",
- 'dom' => "domain",
- 'sn' => "student name",
- 'sec' => "section",
- );
$r->print(<
@@ -1729,16 +1866,12 @@ END
END
} else {
- my %lt=&Apache::lonlocal::texthash(
- 'usrn' => "username",
- 'dom' => "domain",
- 'sn' => "student name",
- 'sec' => "section",
- );
$r->print(<ID
$lt{'sn'}
$lt{'sec'}
+ $lt{'start'}
+ $lt{'end'}
END
@@ -1775,12 +1912,25 @@ END
} (keys(%$classlist));
foreach my $student (@Sorted_Students) {
my $error;
- my $username = $classlist->{$student}->[$index{'username'}];
- my $domain = $classlist->{$student}->[$index{'domain'}];
- my $section = $classlist->{$student}->[$index{'section'}];
- my $name = $classlist->{$student}->[$index{'fullname'}];
- my $id = $classlist->{$student}->[$index{'id'}];
- my $status = $classlist->{$student}->[$index{'status'}];
+ my $sdata = $classlist->{$student};
+ my $username = $sdata->[$index{'username'}];
+ my $domain = $sdata->[$index{'domain'}];
+ my $section = $sdata->[$index{'section'}];
+ my $name = $sdata->[$index{'fullname'}];
+ my $id = $sdata->[$index{'id'}];
+ my $start = $sdata->[$index{'start'}];
+ my $end = $sdata->[$index{'end'}];
+ if (! defined($start) || $start == 0) {
+ $start = &mt('none');
+ } else {
+ $start = &Apache::lonlocal::locallocaltime($start);
+ }
+ if (! defined($end) || $end == 0) {
+ $end = &mt('none');
+ } else {
+ $end = &Apache::lonlocal::locallocaltime($end);
+ }
+ my $status = $sdata->[$index{'status'}];
next if ($status ne 'Active');
#
$r->print(<<"END");
@@ -1791,11 +1941,13 @@ END
@@ -1752,6 +1885,10 @@ END
$lt{'sn'}
$lt{'sec'}
+
+ $lt{'start'}
+
+ $lt{'end'}
$id
$name
$section
+ $start
+ $end
END
}
$r->print('
');
- my %lt=&Apache::lonlocal::texthash(
+ %lt=&Apache::lonlocal::texthash(
'dp' => "Drop Students",
'ca' => "check all",
'ua' => "uncheck all",
@@ -1841,24 +1993,24 @@ sub upfile_drop_add {
my $r=shift;
&Apache::loncommon::load_tmp_file($r);
my @studentdata=&Apache::loncommon::upfile_record_sep();
- if($ENV{'form.noFirstLine'}){shift(@studentdata);}
- my @keyfields = split(/\,/,$ENV{'form.keyfields'});
- my $cid = $ENV{'request.course.id'};
+ if($env{'form.noFirstLine'}){shift(@studentdata);}
+ my @keyfields = split(/\,/,$env{'form.keyfields'});
+ my $cid = $env{'request.course.id'};
my %fields=();
- for (my $i=0; $i<=$ENV{'form.nfields'}; $i++) {
- if ($ENV{'form.upfile_associate'} eq 'reverse') {
- if ($ENV{'form.f'.$i} ne 'none') {
- $fields{$keyfields[$i]}=$ENV{'form.f'.$i};
+ for (my $i=0; $i<=$env{'form.nfields'}; $i++) {
+ if ($env{'form.upfile_associate'} eq 'reverse') {
+ if ($env{'form.f'.$i} ne 'none') {
+ $fields{$keyfields[$i]}=$env{'form.f'.$i};
}
} else {
- $fields{$ENV{'form.f'.$i}}=$keyfields[$i];
+ $fields{$env{'form.f'.$i}}=$keyfields[$i];
}
}
#
# Store the field choices away
foreach my $field (qw/username names
fname mname lname gen id sec ipwd email/) {
- $ENV{'form.'.$field.'_choice'}=$fields{$field};
+ $env{'form.'.$field.'_choice'}=$fields{$field};
}
&Apache::loncommon::store_course_settings('enrollment_upload',
{ 'username_choice' => 'scalar',
@@ -1874,12 +2026,12 @@ sub upfile_drop_add {
#
my ($startdate,$enddate) = &get_dates_from_form();
- if ($ENV{'form.makedatesdefault'}) {
+ if ($env{'form.makedatesdefault'}) {
$r->print(&make_dates_default($startdate,$enddate));
}
# Determine domain and desired host (home server)
- my $domain=$ENV{'form.lcdomain'};
- my $desiredhost = $ENV{'form.lcserver'};
+ my $domain=$env{'form.lcdomain'};
+ my $desiredhost = $env{'form.lcserver'};
if (lc($desiredhost) eq 'default') {
$desiredhost = undef;
} else {
@@ -1894,19 +2046,19 @@ sub upfile_drop_add {
# Determine authentication mechanism
my $amode = '';
my $genpwd = '';
- if ($ENV{'form.login'} eq 'krb') {
+ if ($env{'form.login'} eq 'krb') {
$amode='krb';
- $amode.=$ENV{'form.krbver'};
- $genpwd=$ENV{'form.krbarg'};
- } elsif ($ENV{'form.login'} eq 'int') {
+ $amode.=$env{'form.krbver'};
+ $genpwd=$env{'form.krbarg'};
+ } elsif ($env{'form.login'} eq 'int') {
$amode='internal';
- if ((defined($ENV{'form.intarg'})) && ($ENV{'form.intarg'})) {
- $genpwd=$ENV{'form.intarg'};
+ if ((defined($env{'form.intarg'})) && ($env{'form.intarg'})) {
+ $genpwd=$env{'form.intarg'};
}
- } elsif ($ENV{'form.login'} eq 'loc') {
+ } elsif ($env{'form.login'} eq 'loc') {
$amode='localauth';
- if ((defined($ENV{'form.locarg'})) && ($ENV{'form.locarg'})) {
- $genpwd=$ENV{'form.locarg'};
+ if ((defined($env{'form.locarg'})) && ($env{'form.locarg'})) {
+ $genpwd=$env{'form.locarg'};
}
}
if ($amode =~ /^krb/) {
@@ -1997,13 +2149,13 @@ sub upfile_drop_add {
\$lname,\$gen,\$sec) {
$$_ =~ s/(\s+$|^\s+)//g;
}
- if ($password || $ENV{'form.login'} eq 'loc') {
+ if ($password || $env{'form.login'} eq 'loc') {
&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'},$desiredhost,
+ $startdate,$env{'form.forceid'},$desiredhost,
$email);
if ($reply ne 'ok') {
$reply =~ s/^error://;
@@ -2034,7 +2186,7 @@ sub upfile_drop_add {
#####################################
# Drop students #
#####################################
- if ($ENV{'form.fullup'} eq 'yes') {
+ if ($env{'form.fullup'} eq 'yes') {
$r->print(''.&mt('Dropping Students')."
\n");
# Get current classlist
my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();
@@ -2062,16 +2214,11 @@ sub upfile_drop_add {
sub drop_student_list {
my $r=shift;
my $count=0;
- my @droplist;
- if (ref($ENV{'form.droplist'})) {
- @droplist = @{$ENV{'form.droplist'}};
- } else {
- @droplist = ($ENV{'form.droplist'});
- }
+ my @droplist = &Apache::loncommon::get_env_multiple('form.droplist');
foreach (@droplist) {
my ($uname,$udom)=split(/\:/,$_);
# drop student
- my $result = &modifystudent($udom,$uname,$ENV{'request.course.id'});
+ my $result = &modifystudent($udom,$uname,$env{'request.course.id'});
if ($result eq 'ok' || $result eq 'ok:') {
$r->print(&mt('Dropped [_1]',$uname.'@'.$udom).'
');
$count++;
@@ -2135,41 +2282,47 @@ sub handler {
text=>"Enrollment Manager",
faq=>9,bug=>'Instructor Interface',});
# Needs to be in a course
- if (! (($ENV{'request.course.fn'}) &&
- (&Apache::lonnet::allowed('cst',$ENV{'request.course.id'})))) {
- # Not in a course, or not allowed to modify parms
- $ENV{'user.error.msg'}=
+ if (! ($env{'request.course.fn'})) {
+ # Not in a course
+ $env{'user.error.msg'}=
"/adm/dropadd:cst:0:0:Cannot drop or add students";
return HTTP_NOT_ACCEPTABLE;
}
#
+ my $view_permission =
+ &Apache::lonnet::allowed('vcl',$env{'request.course.id'});
+ my $enrl_permission =
+ &Apache::lonnet::allowed('cst',$env{'request.course.id'});
+ if (! $view_permission && ! $enrl_permission) {
+ $env{'user.error.msg'}=
+ "/adm/dropadd:cst:0:0:Cannot drop or add students";
+ return HTTP_NOT_ACCEPTABLE;
+ }
+ #
# Only output the header information if they did not request csv format
#
- &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
- ['state','action']);
# Start page
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
$r->print(&header());
#
# Main switch on form.action and form.state, as appropriate
- if (! exists($ENV{'form.action'})) {
+ if (! exists($env{'form.action'})) {
$r->print(&Apache::lonhtmlcommon::breadcrumbs
(undef,'Enrollment Manager'));
- &print_main_menu($r);
- } elsif ($ENV{'form.action'} eq 'upload') {
+ &print_main_menu($r,$enrl_permission,$view_permission);
+ } elsif ($env{'form.action'} eq 'upload' && $enrl_permission) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/dropadd?action=upload&state=',
- text=>"Upload Classlist",
- faq=>9,bug=>'Instructor Interface',});
+ text=>"Upload Classlist"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'Upload Classlist'));
- if (! exists($ENV{'form.state'})) {
+ (undef,'Upload Classlist','Course_Create_Class_List'));
+ if (! exists($env{'form.state'})) {
&print_first_courselist_upload_form($r);
- } elsif ($ENV{'form.state'} eq 'got_file') {
+ } elsif ($env{'form.state'} eq 'got_file') {
&print_upload_manager_form($r);
- } elsif ($ENV{'form.state'} eq 'enrolling') {
- if ($ENV{'form.datatoken'}) {
+ } elsif ($env{'form.state'} eq 'enrolling') {
+ if ($env{'form.datatoken'}) {
&upfile_drop_add($r);
} else {
# Hmmm, this is an error
@@ -2177,64 +2330,60 @@ sub handler {
} else {
&print_first_courselist_upload_form($r);
}
- } elsif ($ENV{'form.action'} eq 'drop') {
+ } elsif ($env{'form.action'} eq 'drop' && $enrl_permission) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/dropadd?action=drop',
- text=>"Drop Students",
- faq=>9,bug=>'Instructor Interface',});
+ text=>"Drop Students"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'Drop Students'));
- if (! exists($ENV{'form.state'})) {
+ (undef,'Drop Students','Course_Drop_Student'));
+ if (! exists($env{'form.state'})) {
&print_drop_menu($r);
- } elsif ($ENV{'form.state'} eq 'done') {
+ } elsif ($env{'form.state'} eq 'done') {
&drop_student_list($r);
} else {
&print_drop_menu($r);
}
- } elsif ($ENV{'form.action'} eq 'enrollstudent') {
+ } elsif ($env{'form.action'} eq 'enrollstudent' && $enrl_permission) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/dropadd?action=enrollstudent',
- text=>"Enroll Student",
- faq=>9,bug=>'Instructor Interface',});
+ text=>"Enroll Student"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'Enroll Student'));
- if (! exists($ENV{'form.state'})) {
+ (undef,'Enroll Student','Course_Add_Student'));
+ if (! exists($env{'form.state'})) {
&get_student_username_domain_form($r);
- } elsif ($ENV{'form.state'} eq 'gotusername') {
+ } elsif ($env{'form.state'} eq 'gotusername') {
&print_enroll_single_student_form($r);
- } elsif ($ENV{'form.state'} eq 'enrolling') {
+ } elsif ($env{'form.state'} eq 'enrolling') {
&enroll_single_student($r);
} else {
&get_student_username_domain_form($r);
}
- } elsif ($ENV{'form.action'} eq 'classlist') {
+ } elsif ($env{'form.action'} eq 'classlist' && $view_permission) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/dropadd?action=classlist',
- text=>"View Classlist",
- faq=>9,bug=>'Instructor Interface',});
+ text=>"View Classlist"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'View Classlist'));
- if (! exists($ENV{'form.state'})) {
+ (undef,'View Classlist','Course_View_Class_List'));
+ if (! exists($env{'form.state'})) {
&print_html_classlist($r,undef);
- } elsif ($ENV{'form.state'} eq 'csv') {
+ } elsif ($env{'form.state'} eq 'csv') {
&print_html_classlist($r,'csv');
- } elsif ($ENV{'form.state'} eq 'excel') {
+ } elsif ($env{'form.state'} eq 'excel') {
&print_html_classlist($r,'excel');
} else {
&print_html_classlist($r,undef);
}
- } elsif ($ENV{'form.action'} eq 'modifystudent') {
+ } elsif ($env{'form.action'} eq 'modifystudent' && $enrl_permission) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/dropadd?action=modifystudent',
- text=>"Modify Student Data",
- faq=>9,bug=>'Instructor Interface',});
+ text=>"Modify Student Data"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'Modify Student Data'));
- if (! exists($ENV{'form.state'})) {
+ (undef,'Modify Student Data','Course_Modify_Student_Data'));
+ if (! exists($env{'form.state'})) {
&print_html_classlist($r);
- } elsif ($ENV{'form.state'} eq 'selected') {
+ } elsif ($env{'form.state'} eq 'selected') {
&print_modify_student_form($r);
- } elsif ($ENV{'form.state'} eq 'done') {
+ } elsif ($env{'form.state'} eq 'done') {
&modify_single_student($r);
} else {
&print_html_classlist($r);
@@ -2242,11 +2391,11 @@ sub handler {
} else {
# We should not end up here, but I guess it is possible
&Apache::lonnet::logthis("Undetermined state in londropadd.pm. ".
- "form.action = ".$ENV{'form.action'}.
+ "form.action = ".$env{'form.action'}.
"Someone should fix this.");
$r->print(&Apache::lonhtmlcommon::breadcrumbs
(undef,'Enrollment Manager'));
- &print_main_menu($r);
+ &print_main_menu($r,$enrl_permission,$view_permission);
}
#
# Finish up