--- loncom/interface/Attic/londropadd.pm 2004/03/17 19:56:47 1.108 +++ loncom/interface/Attic/londropadd.pm 2004/06/09 17:08:27 1.113 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to drop and add students in courses # -# $Id: londropadd.pm,v 1.108 2004/03/17 19:56:47 matthew Exp $ +# $Id: londropadd.pm,v 1.113 2004/06/09 17:08:27 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -37,6 +37,7 @@ use Apache::loncommon(); use Apache::lonhtmlcommon(); use Apache::Constants qw(:common :http REDIRECT); use Spreadsheet::WriteExcel; +use Apache::lonstathelpers(); use Apache::lonlocal; ############################################################### @@ -172,10 +173,15 @@ sub print_main_menu { $Text{'drop'} $help{'Course_Drop_Student'}
+END
+ my ($cdom,$cnum) = split/_/,$ENV{'request.course.id'};
+ if (&Apache::lonnet::auto_run($cnum,$cdom) ) {
+ $r->print(< \n");
@@ -1137,14 +1150,10 @@ sub print_html_classlist {
my %lt=&Apache::lonlocal::texthash('csv' => "CSV",
'excel' => "Excel",
'html' => 'HTML');
- $r->print('');
- my $output_selector = '
@@ -1229,6 +1234,10 @@ END
$lt{'sn'}
');
- foreach (sort keys %coursepersonnel) {
- $r->print('
');
#
# Interface output
- my $CCL=&mt('Current Class List');
$r->print('');
$r->print("'.$_.' ');
- foreach (split(/\,/,$coursepersonnel{$_})) {
- my ($puname,$pudom)=split(/\:/,$_);
+ foreach my $role (sort keys %coursepersonnel) {
+ next if ($role =~ /^\s*$/);
+ $r->print(' ');
}
$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(' '.&mt('Current Class List').'
');
@@ -1166,13 +1174,10 @@ sub print_html_classlist {
} else {
# Print out the available choices
if ($ENV{'form.action'} eq 'modifystudent') {
- &show_class_list($r,'view','modify','modifystudent',
+ &show_class_list($r,'view','modify',
$ENV{'form.Status'},$classlist,$keylist);
- } 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',
+ } else {
+ &show_class_list($r,$ENV{'form.output'},'aboutme',
$ENV{'form.Status'},$classlist,$keylist);
}
}
@@ -1180,7 +1185,7 @@ sub print_html_classlist {
# =================================================== Show student list to drop
sub show_class_list {
- my ($r,$mode,$linkto,$action,$statusmode,$classlist,$keylist)=@_;
+ my ($r,$mode,$linkto,$statusmode,$classlist,$keylist)=@_;
my $cid=$ENV{'request.course.id'};
#
# Variables for excel output
@@ -1190,30 +1195,30 @@ sub show_class_list {
my ($CSVfile,$CSVfilename);
#
my $sortby = $ENV{'form.sortby'};
- if ($sortby !~ /^(username|domain|section|fullname|id)$/) {
+ if ($sortby !~ /^(username|domain|section|fullname|id|start|end)$/) {
$sortby = 'username';
}
# Print out header
$r->print(<
$lt{'sec'}
+
+ $lt{'start'}
+
+ $lt{'end'}
END
@@ -1254,12 +1263,12 @@ END
print $CSVfile '"'.join('","',map {
&Apache::loncommon::csv_translate(&mt($_))
} ("username","domain","ID","student name",
- "section","status")).'"'."\n";
+ "section","start date","end date","status")).'"'."\n";
} else {
print $CSVfile '"'.join('","',map {
&Apache::loncommon::csv_translate(&mt($_))
} ("username","domain","ID","student name",
- "section")).'"'."\n";
+ "section","start date","end date")).'"'."\n";
}
} elsif ($mode eq 'excel') {
# Create the excel spreadsheet
@@ -1278,7 +1287,9 @@ END
$excel_sheet->write($row++,0,$description,$format->{'h1'});
#
$excel_sheet->write($row++,0,["username","domain","ID",
- "student name","section","status"],$format->{'bold'});
+ "student name","section",
+ "start date","end date","status"],
+ $format->{'bold'});
}
#
# Sort the students
@@ -1299,14 +1310,19 @@ END
} (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'}];
next if (($statusmode ne 'Any') && ($status ne $statusmode));
- if ($mode eq 'view') {
+ if ($mode eq 'view' || $mode eq 'html') {
+ $start = &Apache::lonlocal::locallocaltime($start);
+ $end = &Apache::lonlocal::locallocaltime($end);
$r->print("\n
END
} elsif ($mode eq 'csv') {
next if (! defined($CSVfile));
# no need to bother with $linkto
+ $start = &Apache::lonlocal::locallocaltime($start);
+ $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') {
@@ -1343,11 +1363,19 @@ END
}
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') {
$r->print('".(++$studentcount)." \n ");
if ($linkto eq 'nothing') {
$r->print($username);
@@ -1329,13 +1345,17 @@ END
$id
$name
$section
+ $start
+ $end
');
} elsif ($mode eq 'excel') {
$excel_workbook->close();
@@ -1694,7 +1722,7 @@ sub show_drop_list {
['sortby']);
}
my $sortby = $ENV{'form.sortby'};
- if ($sortby !~ /^(username|domain|section|fullname|id)$/) {
+ if ($sortby !~ /^(username|domain|section|fullname|id|start|end)$/) {
$sortby = 'username';
}
#
@@ -1718,13 +1746,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(<
@@ -1734,16 +1763,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
@@ -1780,12 +1809,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");
@@ -1796,11 +1838,13 @@ END
@@ -1757,6 +1782,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",