--- loncom/interface/Attic/londropadd.pm 2004/01/15 19:27:05 1.99
+++ loncom/interface/Attic/londropadd.pm 2004/02/27 14:59:19 1.104
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
-# $Id: londropadd.pm,v 1.99 2004/01/15 19:27:05 matthew Exp $
+# $Id: londropadd.pm,v 1.104 2004/02/27 14:59:19 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -42,9 +42,7 @@ use Apache::lonlocal;
###############################################################
###############################################################
sub header {
- my $bodytag=&Apache::loncommon::bodytag('Enrollment Manager').
- &Apache::loncommon::help_open_faq(9).
- &Apache::loncommon::help_open_bug('Instructor Interface');
+ my $bodytag=&Apache::loncommon::bodytag('Enrollment Manager');
my $title = &mt('LON-CAPA Enrollment Manager');
return(<
@@ -1102,7 +1100,7 @@ sub print_drop_menu {
# ============================================== view classlist
sub print_html_classlist {
- my $r=shift;
+ my ($r,$mode) = @_;
if (! exists($ENV{'form.sortby'})) {
$ENV{'form.sortby'} = 'username';
}
@@ -1110,32 +1108,57 @@ sub print_html_classlist {
$ENV{'form.Status'} = 'Active';
}
my $status_select = &Apache::lonhtmlcommon::StatusOptions
- ($ENV{'form.Status'},'studentform');
+ ($ENV{'form.Status'});
+ my $cid=$ENV{'request.course.id'};
+ my $cdom=$ENV{'course.'.$cid.'.domain'};
+ my $cnum=$ENV{'course.'.$cid.'.num'};
+ #
+ # List course personnel
+ my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum);
+ $r->print('
');
+ foreach (sort keys %coursepersonnel) {
+ $r->print(''.$_.' | ');
+ foreach (split(/\,/,$coursepersonnel{$_})) {
+ my ($puname,$pudom)=split(/\:/,$_);
+ $r->print(' '.&Apache::loncommon::aboutmewrapper(
+ &Apache::loncommon::plainname($puname,
+ $pudom),$puname,$pudom));
+ }
+ $r->print(' |
');
+ }
+ $r->print('
');
+ #
+ # Interface output
my $CCL=&mt('Current Class List');
- $r->print(<
-
-
-$CCL
-
-END
+ $r->print('');
+ $r->print("
\n");
if ($ENV{'form.action'} ne 'modifystudent') {
- my %lt=&Apache::lonlocal::texthash(
- 'ef' => "Excel format",
- 'ss' => "Student Status",
- );
- $r->print(<
-CSV format
-
-$lt{'ef'}
-
-
-$lt{'ss'}:
-END
+ my %lt=&Apache::lonlocal::texthash('csv' => "CSV",
+ 'excel' => "Excel",
+ 'html' => 'HTML');
+ $r->print('');
+ my $output_selector = '';
+ $r->print(&mt('Output Format: [_1]',$output_selector).(' 'x3));
}
- $r->print($status_select."
\n");
- my $cid=$ENV{'request.course.id'};
+ $r->print(&mt('Student Status: [_1]',$status_select)."\n");
+ $r->print(''."\n
\n");
+
+ #
+ # Print the classlist
+ $r->print(''.&mt('Current Class List').'
');
my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();
if (! defined($classlist)) {
$r->print(&mt('There are no students currently enrolled.')."\n");
@@ -1144,40 +1167,37 @@ END
if ($ENV{'form.action'} eq 'modifystudent') {
&show_class_list($r,'view','modify','modifystudent',
$ENV{'form.Status'},$classlist,$keylist);
- } else {
+ } elsif (! defined($mode) || $mode eq '') {
&show_class_list($r,'view','aboutme','classlist',
$ENV{'form.Status'},$classlist,$keylist);
+ } elsif ($mode eq 'csv' || $mode eq 'excel') {
+ &show_class_list($r,$mode,'nolink','csv',
+ $ENV{'form.Status'},$classlist,$keylist);
}
}
}
-# ============================================== view classlist
-sub print_formatted_classlist {
- my $r=shift;
- my $mode = shift;
- my $cid=$ENV{'request.course.id'};
- my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();
- if (! defined($classlist)) {
- $r->print(&mt('There are no students currently enrolled.')."\n");
- } else {
- &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,$classlist,$keylist)=@_;
my $cid=$ENV{'request.course.id'};
#
# Variables for excel output
- my ($excel_workbook, $excel_sheet, $excel_filename,$row);
+ my ($excel_workbook, $excel_sheet, $excel_filename,$row,$format);
+ #
+ # Variables for csv output
+ my ($CSVfile,$CSVfilename);
#
my $sortby = $ENV{'form.sortby'};
if ($sortby !~ /^(username|domain|section|fullname|id)$/) {
$sortby = 'username';
}
# Print out header
+ $r->print(<
+
+
+END
if ($mode eq 'view') {
if ($linkto eq 'aboutme') {
$r->print(&mt('Select a user name to view the users personal page.'));
@@ -1211,16 +1231,33 @@ sub show_class_list {
END
} 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(&mt('Students with expired roles'));
+ print $CSVfile '"'.&mt('Students with expired roles').'"'."\n";
}
if ($statusmode eq 'Any') {
- $r->print('"'.join('","',(&mt("username"),&mt("domain"),"ID",
- &mt("student name"),&mt("section"),&mt("status"))).
- '"'."\n");
+ print $CSVfile '"'.join('","',map {
+ &Apache::loncommon::csv_translate(&mt($_))
+ } ("username","domain","ID","student name",
+ "section","status")).'"'."\n";
} else {
- $r->print('"'.join('","',(&mt("username"),&mt("domain"),"ID",
- &mt("student name"),&mt("section"))).'"'."\n");
+ print $CSVfile '"'.join('","',map {
+ &Apache::loncommon::csv_translate(&mt($_))
+ } ("username","domain","ID","student name",
+ "section")).'"'."\n";
}
} elsif ($mode eq 'excel') {
# Create the excel spreadsheet
@@ -1230,14 +1267,16 @@ 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","status"],$format->{'bold'});
}
#
# Sort the students
@@ -1290,6 +1329,7 @@ END
END
} elsif ($mode eq 'csv') {
+ next if (! defined($CSVfile));
# no need to bother with $linkto
my @line = ();
foreach ($username,$domain,$id,$name,$section) {
@@ -1298,10 +1338,7 @@ END
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]);
@@ -1313,6 +1350,12 @@ END
$excel_workbook->close();
$r->print(''.
&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();
}
}
@@ -1348,7 +1391,28 @@ sub print_modify_student_form {
$r->print(''.$starttime.'
');
return;
}
+ #
# Deal with date forms
+ my $current_date_description = '';
+ my $textdate = '';
+
+ if (! defined($starttime) || $starttime == 0) {
+ $current_date_description = &mt('Current Starting Date: not set').
+ '
';
+ } else {
+ $current_date_description =
+ &mt('Current Starting Date: [_1]',
+ &Apache::lonlocal::locallocaltime($starttime)).'
';
+ }
+ if (! defined($endtime) || $endtime == 0) {
+ $current_date_description.= &mt('Current Ending Date: not set').
+ '
';
+ } else {
+ $current_date_description.=
+ &mt('Current Ending Date: [_1]',
+ &Apache::lonlocal::locallocaltime($endtime)).'
';
+
+ }
my $date_table = &date_setting_table($starttime,$endtime);
#
if (! exists($ENV{'form.Status'}) ||
@@ -1381,7 +1445,6 @@ $lt{'odcc'}
-
$lt{'mef'} $info{'firstname'} $info{'middlename'}
$info{'lastname'} $info{'generation'}, $sname\@$sdom
@@ -1400,8 +1463,9 @@ $info{'lastname'} $info{'generation'}, $
$lt{'disn'}
-$lt{'sec'}:
+$lt{'sec'}:
+$current_date_description
$date_table