--- loncom/interface/Attic/londropadd.pm 2002/09/26 13:29:44 1.54
+++ loncom/interface/Attic/londropadd.pm 2002/12/03 20:30:48 1.62
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
-# $Id: londropadd.pm,v 1.54 2002/09/26 13:29:44 matthew Exp $
+# $Id: londropadd.pm,v 1.62 2002/12/03 20:30:48 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -41,6 +41,7 @@ use Apache::lonnet();
use Apache::loncommon();
use Apache::lonhtmlcommon();
use Apache::Constants qw(:common :http REDIRECT);
+use Spreadsheet::WriteExcel;
###############################################################
###############################################################
@@ -92,7 +93,7 @@ sub modifystudent {
}
}
if ($result eq '') {
- $result eq 'Unable to find section for this student';
+ $result = 'Unable to find section for this student';
} else {
$result =~ s/(ok:)+/ok/g;
}
@@ -220,6 +221,7 @@ function verify_message (vf,founduname,f
alert('You need to specify the username field');
return;
}
+ // alert('current.radiovalue = '+current.radiovalue);
if (current.radiovalue == null || current.radiovalue == 'nochange') {
// They did not check any of the login radiobuttons.
alert('You must choose an authentication type');
@@ -594,17 +596,25 @@ sub enroll_single_student {
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);
- $r->print(&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));
+ 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.
ERROR '.
'Invalid login mode or password. '.
@@ -726,81 +736,89 @@ END
return;
}
-# =================================================== get the current classlist
-sub get_current_classlist {
- my $r = shift;
- # Call DownloadClasslist
- my $cid = $ENV{'request.course.id'};
- my $c = $r->connection;
- my $classlisthash = &Apache::loncoursedata::DownloadClasslist
- ($cid,'Not downloaded',$c);
- # Call ProcessClasslist
- my %cache;
- my @students = &Apache::loncoursedata::ProcessClasslist(\%cache,
- $classlisthash,
- $cid,$c);
- return (\@students,\%cache);
-}
-
# ========================================================= Menu Phase Two Drop
sub print_drop_menu {
my $r=shift;
$r->print("
Drop Students
");
my $cid=$ENV{'request.course.id'};
- my ($student_array,$student_data)=&get_current_classlist($r);
- if (! scalar(@$student_array)) {
+ my ($classlist,$keylist) = &Apache::loncoursedata::get_classlist();
+ if (! defined($classlist)) {
$r->print("There are no students currently enrolled.\n");
return;
}
# Print out the available choices
- &show_drop_list($student_array,$student_data,$r);
+ &show_drop_list($r,$classlist,$keylist);
return;
}
# ============================================== view classlist
sub print_html_classlist {
my $r=shift;
+ if (! exists($ENV{'form.sortby'})) {
+ $ENV{'form.sortby'} = 'username';
+ }
+ if ($ENV{'form.Status'} !~ /^(Any|Expired|Active)$/) {
+ $ENV{'form.Status'} = 'Active';
+ }
+ my $status_select = &Apache::lonhtmlcommon::StatusOptions
+ ($ENV{'form.Status'},'studentform');
$r->print(<
+
+Current Classlist
+
+END
+ if ($ENV{'form.action'} ne 'modifystudent') {
+ $r->print(<
+CSV format
+
+Excel format
+
+
+Student Status:
END
+ }
+ $r->print($status_select."\n");
my $cid=$ENV{'request.course.id'};
- my ($student_array,$student_data)=&get_current_classlist($r);
- if (! scalar(@$student_array)) {
+ my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();
+ if (! defined($classlist)) {
$r->print("There are no students currently enrolled.\n");
} else {
# Print out the available choices
if ($ENV{'form.action'} eq 'modifystudent') {
&show_class_list($r,'view','modify','modifystudent',
- 'any',$student_array,$student_data);
+ $ENV{'form.Status'},$classlist,$keylist);
} else {
&show_class_list($r,'view','aboutme','classlist',
- 'any',$student_array,$student_data);
+ $ENV{'form.Status'},$classlist,$keylist);
}
}
}
# ============================================== view classlist
-sub print_csv_classlist {
+sub print_formatted_classlist {
my $r=shift;
+ my $mode = shift;
my $cid=$ENV{'request.course.id'};
- my ($student_array,$student_data)=&get_current_classlist($r);
- if (! scalar(@$student_array)) {
+ my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();
+ if (! defined($classlist)) {
$r->print("There are no students currently enrolled.\n");
} else {
- &show_class_list($r,'csv','nolink','csv',
- 'any',$student_array,$student_data);
+ &show_class_list($r,$mode,'nolink','csv',
+ $ENV{'form.Status'},$classlist,$keylist);
}
}
# =================================================== Show student list to drop
sub show_class_list {
- my ($r,$mode,$linkto,$action,$statusmode,$students,$s_data)=@_;
+ my ($r,$mode,$linkto,$action,$statusmode,$classlist,$keylist)=@_;
my $cid=$ENV{'request.course.id'};
- &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
- ['sortby']);
+ #
+ # Variables for excel output
+ my ($excel_workbook, $excel_sheet, $excel_filename,$row);
+ #
my $sortby = $ENV{'form.sortby'};
if ($sortby !~ /^(username|domain|section|fullname|id)$/) {
$sortby = 'username';
@@ -808,58 +826,83 @@ sub show_class_list {
# Print out header
if ($mode eq 'view') {
if ($linkto eq 'aboutme') {
- $r->print('Select a user name to view the users page.');
+ $r->print('Select a user name to view the users personal page.');
} elsif ($linkto eq 'modify') {
$r->print('Select a user name to modify the students information');
}
$r->print(<
+
+
'.
- 'Error'.
- 'Error retrieving data for '.
- join('@',split(/:/,$student)).
- ', '.$error.'
'."\n");
- next;
- }
- my $username = $s_data->{$student.':username'};
- my $domain = $s_data->{$student.':domain'};
- my $section = $s_data->{$student.':section'};
- my $name = $s_data->{$student.':fullname'};
- my $status = $s_data->{$student.':Status'};
- my $id = $s_data->{$student.':id'};
- next if (($statusmode ne 'any') && ($status ne $statusmode));
+ 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'}];
+ next if (($statusmode ne 'Any') && ($status ne $statusmode));
if ($mode eq 'view') {
$r->print("
'."\n");
+ }
}
@@ -904,7 +962,7 @@ END
sub print_modify_student_form {
my $r = shift();
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
- ['sdom','sname','sortby']);
+ ['sdom','sname']);
my $sname = $ENV{'form.sname'};
my $sdom = $ENV{'form.sdom'};
my $sortby = $ENV{'form.sortby'};
@@ -932,6 +990,11 @@ sub print_modify_student_form {
my $enddateform = &Apache::lonhtmlcommon::date_setter('studentform',
'enddate',
$endtime);
+ #
+ if (! exists($ENV{'form.Status'}) ||
+ $ENV{'form.Status'} !~ /^(Any|Expired|Active)$/) {
+ $ENV{'form.Status'} = 'crap';
+ }
# Make sure student is enrolled in course
$r->print(<
@@ -944,6 +1007,8 @@ Only domain coordinators can change a us
+
+
Modify Enrollment for $info{'firstname'} $info{'middlename'}
$info{'lastname'} $info{'generation'}, $sname\@$sdom
@@ -981,8 +1046,10 @@ END
#
sub modify_single_student {
my $r = shift;
- # Get the 'sortby' variable so the user does not need to re-sort
+ # 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'};
#
# We always need this information
my $slogin = $ENV{'form.slogin'};
@@ -993,6 +1060,8 @@ sub modify_single_student {
['firstname','middlename',
'lastname','generation','id'],
$sdom, $slogin);
+ $old{'section'} = &Apache::lonnet::getsection($sdom,$slogin,
+ $ENV{'request.course.id'});
my ($tmp) = keys(%old);
if ($tmp =~ /^(con_lost|error|no_such_host)/i) {
$r->print("There was an error determining the environment values ".
@@ -1054,11 +1123,14 @@ sub modify_single_student {