'.$/;
}
+ $r->print($menu_html);
+ return;
}
###############################################################
@@ -195,17 +226,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();
@@ -213,8 +244,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
@@ -224,7 +255,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('
'.&mt('Uploading Class List')."
\n".
"\n".
'
'.&mt('Identify fields')."
\n");
@@ -237,14 +268,14 @@ sub print_upload_manager_header {
&hidden_input('state','got_file').
&hidden_input('associate','').
&hidden_input('datatoken',$datatoken).
- &hidden_input('fileupload',$ENV{'form.fileupload'}).
- &hidden_input('upfiletype',$ENV{'form.upfiletype'}).
- &hidden_input('upfile_associate',$ENV{'form.upfile_associate'}));
+ &hidden_input('fileupload',$env{'form.fileupload'}).
+ &hidden_input('upfiletype',$env{'form.upfiletype'}).
+ &hidden_input('upfile_associate',$env{'form.upfile_associate'}));
$r->print('');
- $r->print(''.
- &mt('Ignore First Line'));
+ $r->print('');
$r->print("\n".
'');
@@ -309,7 +340,7 @@ END
return;
}
// alert('current.radiovalue = '+current.radiovalue);
- if (current.radiovalue == null || current.radiovalue == 'nochange') {
+ if (current.radiovalue == null || current.radiovalue == '' || current.radiovalue == 'nochange') {
// They did not check any of the login radiobuttons.
alert('$alert{'authen'}');
return;
@@ -581,9 +612,9 @@ sub print_upload_manager_footer {
kerb_def_dom => $krbdefdom,
kerb_def_auth => $krbdef
);
- if (exists($ENV{'form.ipwd_choice'}) &&
- defined($ENV{'form.ipwd_choice'}) &&
- $ENV{'form.ipwd_choice'} ne '') {
+ if (exists($env{'form.ipwd_choice'}) &&
+ defined($env{'form.ipwd_choice'}) &&
+ $env{'form.ipwd_choice'} ne '') {
$param{'curr_authtype'} = 'int';
}
my $krbform = &Apache::loncommon::authform_kerberos(%param);
@@ -597,6 +628,7 @@ sub print_upload_manager_footer {
$Str .= '
'.&mt('Login Type')."
\n";
$Str .= "
\n".
&mt('Note: this will not take effect if the user already exists').
+ &Apache::loncommon::help_open_topic('Auth_Options').
"
\n";
$Str .= ''." \n";
$Str .= &mt('Note: for large courses, this operation may be time '.
@@ -629,14 +661,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;
@@ -659,7 +691,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);
#
@@ -668,17 +700,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);
@@ -702,25 +734,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 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('
');
+ 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 {
@@ -735,33 +767,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.')."
");
@@ -775,7 +807,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'));
@@ -786,10 +818,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'};
}
}
@@ -797,9 +829,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'};
}
}
@@ -810,12 +842,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);
@@ -824,7 +864,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);
@@ -834,16 +874,19 @@ sub date_setting_table {
my ($starttime,$endtime,$mode) = @_;
my ($startform,$endform)=&setup_date_selectors($starttime,$endtime,$mode);
my $dateDefault = ''.
- ' '.
- &mt('make these dates the default for future enrollment');
- if ($mode eq 'createcourse') {
+ '';
+ if ($mode eq 'create_enrolldates' || $mode eq 'create_defaultdates') {
$dateDefault = ' ';
}
- my $perpetual = '';
+ $perpetual.= ' /> '.&mt('no ending date').'';
+ if ($mode eq 'create_enrolldates') {
+ $perpetual = ' ';
+ }
my $result = '';
$result .= "
\n";
$result .= '
'.&mt('Starting Date').'
'.
@@ -859,8 +902,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);
@@ -868,7 +911,7 @@ sub make_dates_default {
$result .= "Set default start and end dates for course ";
#
# Refresh the course environment
- &Apache::lonnet::coursedescription($ENV{'request.course.id'});
+ &Apache::lonnet::coursedescription($env{'request.course.id'});
} else {
$result .= &mt('Unable to set default dates for course').":".$put_result.
' ';
@@ -882,7 +925,7 @@ sub make_dates_default {
sub get_student_username_domain_form {
my $r = shift;
my $domform = &Apache::loncommon::select_dom_form
- ($ENV{'course.'.$ENV{'request.course.id'}.'.domain'},'cudomain',0);
+ ($env{'course.'.$env{'request.course.id'}.'.domain'},'cudomain',0);
my %lt=&Apache::lonlocal::texthash(
'eos' => "Enroll One Student",
'usr' => "Username",
@@ -903,6 +946,10 @@ sub get_student_username_domain_form {
+
END
return;
}
@@ -911,8 +958,10 @@ sub print_enroll_single_student_form {
my $r=shift;
$r->print("
".&mt('Enroll One Student')."
");
#
- my $username = $ENV{'form.cuname'};
- my $domain = $ENV{'form.cudomain'};
+ my $username = $env{'form.cuname'};
+ my $domain = $env{'form.cudomain'};
+ $username=~s/\W//gs;
+ $domain=~s/\W//gs;
my $home = &Apache::lonnet::homeserver($username,$domain);
# $new_user flags whether we are creating a new user or using an old one
my $new_user = 1;
@@ -923,7 +972,7 @@ sub print_enroll_single_student_form {
my $user_data_html = '';
my $javascript_validations = '';
if ($new_user) {
- my $defdom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
+ my $defdom=$env{'course.'.$env{'request.course.id'}.'.domain'};
# Set up authentication forms
my ($krbdef,$krbdefdom) =
&Apache::loncommon::get_kerberos_defaults($domain);
@@ -957,7 +1006,9 @@ sub print_enroll_single_student_form {
'hs' => "Home Server",
'pswd' => "Password",
'psam' => "Please select an authentication mechanism",
+ 'mail' => "Email Address"
);
+ my $authhelp=&Apache::loncommon::help_open_topic('Auth_Options');
$user_data_html = <$lt{'udf'} $username\@$domain
@@ -971,9 +1022,11 @@ sub print_enroll_single_student_form {
\n");
- if ($ENV{'form.action'} ne 'modifystudent') {
+ if ($env{'form.action'} ne 'modifystudent') {
my %lt=&Apache::lonlocal::texthash('csv' => "CSV",
'excel' => "Excel",
'html' => 'HTML');
my $output_selector = '
\n";
$str .= &Apache::loncommon::help_open_topic("Course_Create_Class_List",
&mt("How do I create a class list from a spreadsheet")).
" \n";
@@ -1890,24 +2064,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',
@@ -1923,12 +2097,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 {
@@ -1943,19 +2117,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/) {
@@ -2046,13 +2220,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://;
@@ -2083,7 +2257,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();
@@ -2111,16 +2285,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++;
@@ -2184,40 +2353,59 @@ 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'}=
- "/adm/dropadd:cst:0:0:Cannot drop or add students";
+ if (! ($env{'request.course.fn'})) {
+ # Not in a course
+ $env{'user.error.msg'}=
+ "/adm/dropadd:cst:0:0:Cannot manage or view course groups, ".
+ "or 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'});
+
+ my $grp_view_permission =
+ &Apache::lonnet::allowed('vcg',$env{'request.course.id'});
+ my $grp_manage_permission =
+ &Apache::lonnet::allowed('mdg',$env{'request.course.id'});
+
+
+ if (! $grp_view_permission && ! $grp_manage_permission &&
+ ! $view_permission && ! $enrl_permission) {
+ $env{'user.error.msg'}=
+ "/adm/coursegroups:cst:0:0:Cannot manage or view course groups, ".
+ "or 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,$grp_manage_permission,
+ $grp_view_permission);
+ } elsif ($env{'form.action'} eq 'upload' && $enrl_permission) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/dropadd?action=upload&state=',
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
@@ -2225,60 +2413,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"});
$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"});
$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"});
$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"});
$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);
@@ -2286,11 +2474,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