--- loncom/interface/Attic/londropadd.pm 2004/01/21 00:29:56 1.91.2.2
+++ loncom/interface/Attic/londropadd.pm 2004/06/17 18:31:24 1.114
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
-# $Id: londropadd.pm,v 1.91.2.2 2004/01/21 00:29:56 albertel Exp $
+# $Id: londropadd.pm,v 1.114 2004/06/17 18:31:24 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -25,11 +25,6 @@
#
# http://www.lon-capa.org/
#
-# (Handler to set parameters for assessments
-#
-# (Handler to resolve ambiguous file locations
-#
-# (TeX Content Handler
#
###############################################################
##############################################################
@@ -42,8 +37,8 @@ use Apache::loncommon();
use Apache::lonhtmlcommon();
use Apache::Constants qw(:common :http REDIRECT);
use Spreadsheet::WriteExcel;
+use Apache::lonstathelpers();
use Apache::lonlocal;
-use localenroll();
###############################################################
###############################################################
@@ -149,32 +144,39 @@ sub print_main_menu {
'view' => 'View Class List',
'drop' => 'Drop Students',
'populate' => 'Automated Enrollment Manager');
+ my %help=();
+ foreach ('Course_Drop_Student','Course_Add_Student',
+ 'Course_Modify_Student_Data','Course_View_Class_List',
+ 'Course_Create_Class_List') {
+ $help{$_}=&Apache::loncommon::help_open_topic($_);
+ }
$r->print(<
$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'}
END
- if (&localenroll::run() ) {
- $r->print(<'.&mt('Uploading Class List')."
\n".
"
\n".
@@ -216,10 +232,7 @@ sub print_upload_manager_header {
&mt('Total number of records found in file: [_1].',$distotal).
"\n".
"
\n";
$Str .= ''."
\n";
+ 'value="Update Class List" />'."
\n";
$Str .= &mt('Note: for large courses, this operation may be time '.
'consuming');
$r->print($Str);
@@ -606,6 +626,7 @@ sub print_upload_manager_footer {
###############################################################
sub print_upload_manager_form {
my $r=shift;
+
my $firstLine;
my $datatoken;
if (!$ENV{'form.datatoken'}) {
@@ -622,23 +643,41 @@ sub print_upload_manager_form {
my $distotal=$total+1;
my $today=time;
my $halfyear=$today+15552000;
+ #
+ # Restore memorized settings
+ &Apache::loncommon::restore_course_settings
+ ('enrollment_upload',{ 'username_choice' => 'scalar', # column settings
+ 'names_choice' => 'scalar',
+ 'fname_choice' => 'scalar',
+ 'mname_choice' => 'scalar',
+ 'lname_choice' => 'scalar',
+ 'gen_choice' => 'scalar',
+ 'id_choice' => 'scalar',
+ 'sec_choice' => 'scalar',
+ 'ipwd_choice' => 'scalar',
+ 'email_choice' => 'scalar',
+ });
+ #
+ # Determine kerberos parameters as appropriate
my $defdom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
my ($krbdef,$krbdefdom) =
&Apache::loncommon::get_kerberos_defaults($defdom);
+ #
&print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom);
my $i;
my $keyfields;
if ($total>=0) {
- my @field=(['username',&mt('Username')],
- ['names',&mt('Last Name, First Names')],
- ['fname',&mt('First Name')],
- ['mname',&mt('Middle Names/Initials')],
- ['lname',&mt('Last Name')],
- ['gen',&mt('Generation')],
- ['id',&mt('ID/Student Number')],
- ['sec',&mt('Group/Section')],
- ['ipwd',&mt('Initial Password')],
- ['email',&mt('EMail Address')]);
+ 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') {
&Apache::loncommon::csv_print_samples($r,\@records);
$i=&Apache::loncommon::csv_print_select_table($r,\@records,
@@ -666,7 +705,7 @@ sub enroll_single_student {
$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();
@@ -674,8 +713,8 @@ sub enroll_single_student {
$r->print(&make_dates_default($startdate,$enddate));
}
- $r->print('
Enrolling '.$ENV{'form.cuname'}." \@ ". + $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/)) { @@ -687,12 +726,12 @@ sub enroll_single_student { } else { my %home_servers =&Apache::loncommon::get_library_servers($domain); if (! exists($home_servers{$desiredhost})) { - $r->print('Error:'. - 'Invalid home server specified'); + $r->print(''.&mt('Error').':'. + &mt('Invalid home server specified')); return; } } - $r->print(" with server $desiredhost :") if (defined($desiredhost)); + $r->print(" ".&mt('with server')." $desiredhost :") if (defined($desiredhost)); # End of home server selection logic my $amode=''; my $genpwd=''; @@ -725,22 +764,21 @@ sub enroll_single_student { $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.
"); + $r->print("".&mt('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); + $r->print(&mt('unable to enroll').": ".$login_result); } } else { - $r->print('ERROR '); + $r->print('
'.&mt('ERROR').' '); if ($amode =~ /^krb/) { - $r->print('Missing Kerberos domain information. '); + $r->print(&mt('Missing Kerberos domain information.').' '); } else { - $r->print('Invalid login mode or password. '); + $r->print(&mt('Invalid login mode or password.').' '); } - $r->print('Unable to enroll '.$ENV{'form.cuname'}.'.
'); + $r->print(''.&mt('Unable to enroll').' '.$ENV{'form.cuname'}.'.'); } } else { - $r->print('Invalid username or domain'); + $r->print(&mt('Invalid username or domain')); } } @@ -748,7 +786,7 @@ sub setup_date_selectors { my ($starttime,$endtime,$mode) = @_; if (! defined($starttime)) { $starttime = time; - unless ($mode eq 'createcourse') { + 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'}. @@ -772,12 +810,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); @@ -796,22 +842,25 @@ sub date_setting_table { my ($starttime,$endtime,$mode) = @_; my ($startform,$endform)=&setup_date_selectors($starttime,$endtime,$mode); my $dateDefault = 'Starting Date | '. + $result .= '||
'.&mt('Starting Date').' | '. ''.$startform.' | '. ''.$dateDefault.' | '."
Ending Date | '. + $result .= '||
'.&mt('Ending Date').' | '. ''.$endform.' | '. ''.$perpetual.' | '."
Username: | +|
---|---|
$lt{'usr'}: | |
Domain: | +|
$lt{'dom'}: | $domform |
- + |
First Name: | +|
---|---|
$lt{'fn'}: | |
Middle Name: | +|
$lt{'mn'}: | |
Last Name: | +|
$lt{'ln'}: | |
Generation: | +|
$lt{'gen'}: | |
Home Server: | +|
$lt{'hs'}: | $homeserver_form |
First Name: | +|||||||
---|---|---|---|---|---|---|---|
$lt{'fn'}: | |||||||
Middle Name: | +|||||||
$lt{'mn'}: | |||||||
Last Name: | +|||||||
$lt{'ln'}: | |||||||
Generation: | +|||||||
$lt{'gen'}: |
'.$role.' | '); + foreach my $user (split(',',$coursepersonnel{$role})) { + my ($puname,$pudom)=split(':',$user); + $r->print(' '.&Apache::loncommon::aboutmewrapper( + &Apache::loncommon::plainname($puname, + $pudom), + $puname,$pudom)); + } + $r->print(' |
\n");
if ($ENV{'form.action'} ne 'modifystudent') {
- $r->print(<
- username + | |||||||
---|---|---|---|---|---|---|---|
Count | - domain + $lt{'usrn'} + | + $lt{'dom'} | ID | - student name + $lt{'sn'} + | + $lt{'sec'} | - section + $lt{'start'} + | + $lt{'end'} | -+ $lt{'type'} + | + $lt{'chan'}? | "); + } + $r->print(" + + "); } elsif ($mode eq 'csv') { + # + # Open a file + $CSVfilename = '/prtspool/'. + $ENV{'user.name'}.'_'.$ENV{'user.domain'}.'_'. + time.'_'.rand(1000000000).'.csv'; + unless ($CSVfile = Apache::File->new('>/home/httpd'.$CSVfilename)) { + $r->log_error("Couldn't open $CSVfilename for output $!"); + $r->print("Problems occured in writing the csv file. ". + "This error has been logged. ". + "Please alert your LON-CAPA administrator."); + $CSVfile = undef; + } + # + # Write headers and data to file if($statusmode eq 'Expired') { - $r->print('"Students with expired roles"'); + print $CSVfile '"'.&mt('Students with expired roles').'"'."\n"; } if ($statusmode eq 'Any') { - $r->print('"'.join('","',("username","domain","ID","student name", - "section","status")).'"'."\n"); + print $CSVfile '"'.join('","',map { + &Apache::loncommon::csv_translate(&mt($_)) + } ("username","domain","ID","student name", + "section","start date","end date","status")).'"'."\n"; } else { - $r->print('"'.join('","',("username","domain","ID","student name", - "section")).'"'."\n"); + print $CSVfile '"'.join('","',map { + &Apache::loncommon::csv_translate(&mt($_)) + } ("username","domain","ID","student name", + "section","start date","end date")).'"'."\n"; } } elsif ($mode eq 'excel') { # Create the excel spreadsheet @@ -1155,14 +1306,18 @@ END $excel_workbook = Spreadsheet::WriteExcel->new('/home/httpd'. $excel_filename); $excel_workbook->set_tempdir('/home/httpd/perl/tmp'); + # + $format = &Apache::loncommon::define_excel_formats($excel_workbook); $excel_sheet = $excel_workbook->addworksheet('classlist'); # my $description = 'Class List for '. $ENV{'course.'.$ENV{'request.course.id'}.'.description'}; - $excel_sheet->write($row++,0,$description); + $excel_sheet->write($row++,0,$description,$format->{'h1'}); # $excel_sheet->write($row++,0,["username","domain","ID", - "student name","section","status"]); + "student name","section", + "start date","end date","status"], + $format->{'bold'}); } # # Sort the students @@ -1181,16 +1336,31 @@ END || lc($classlist->{$a}->[$third]) cmp lc($classlist->{$b}->[$third]) } (keys(%$classlist)); + my $studentcount = 0; foreach my $student (@Sorted_Students) { - 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 $status = $sdata->[$index{'status'}]; + my $start = $sdata->[$index{'start'}]; + my $end = $sdata->[$index{'end'}]; + my $type = $sdata->[$index{'type'}]; next if (($statusmode ne 'Any') && ($status ne $statusmode)); - if ($mode eq 'view') { - $r->print("
\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(" | |||||||
".(++$studentcount)." | \n "); if ($linkto eq 'nothing') { $r->print($username); } elsif ($linkto eq 'aboutme') { @@ -1212,32 +1382,68 @@ END | $id | $name | $section | -$start | +$end | END + if ($mode eq 'autoenroll') { + my $longtype = &mt('manual').' '; + if ($type eq 'auto') { + $longtype = &mt('auto').' '; + } + $r->print("$longtype | "); + } + $r->print(" + + "); } elsif ($mode eq 'csv') { + next if (! defined($CSVfile)); # no need to bother with $linkto + 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 @line = (); - foreach ($username,$domain,$id,$name,$section) { + foreach ($username,$domain,$id,$name,$section,$start,$end) { push @line,&Apache::loncommon::csv_translate($_); } if ($statusmode eq 'Any') { push @line,&Apache::loncommon::csv_translate($status); } - my $tmp = $"; - $" = '","'; - $r->print("\"@line\"\n"); - $" = $tmp; + print $CSVfile '"'.join('","',@line).'"'."\n"; } elsif ($mode eq 'excel') { - $excel_sheet->write($row++,0,[$username,$domain,$id, - $name,$section,$status]); + $excel_sheet->write($row,0,[$username,$domain,$id, + $name,$section]); + my $col = 5; + foreach my $time ($start,$end) { + $excel_sheet->write($row,$col++, + &Apache::lonstathelpers::calc_serial($time), + $format->{'date'}); + } + $excel_sheet->write($row,$col++,$status); + $row++; } } - if ($mode eq 'view') { + if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') { $r->print(' |
'. - 'Your Excel spreadsheet is ready for download.
'."\n"); + &mt('Your Excel spreadsheet').' '.&mt('is ready for download').'.'."\n"); + } elsif ($mode eq 'csv') { + close($CSVfile); + $r->print(''. + &mt('Your CSV file').' is ready for download.'. + "\n"); + $r->rflush(); + } + if ($mode eq 'autoenroll') { + return $studentcount; } } @@ -1259,33 +1465,66 @@ sub print_modify_student_form { $sdom, $sname); my ($tmp) = keys(%info); if ($tmp =~ /^(con_lost|error|no_such_host)/i) { - $r->print('Error'. + $r->print(''.&mt('Error').''. ''. - 'Unable to retrieve environment data for '.$sname. - 'in domain '.$sdom.'
'. - 'Please contact your LON-CAPA administrator '. - 'regarding this situation.