--- loncom/interface/spreadsheet/classcalc.pm 2003/11/17 19:55:41 1.15 +++ loncom/interface/spreadsheet/classcalc.pm 2004/04/26 14:06:00 1.19 @@ -1,5 +1,5 @@ # -# $Id: classcalc.pm,v 1.15 2003/11/17 19:55:41 matthew Exp $ +# $Id: classcalc.pm,v 1.19 2004/04/26 14:06:00 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -85,7 +85,7 @@ sub html_header { &Apache::lonstatistics::clear_classlist_variables(); foreach (['Sections',&Apache::lonstatistics::SectionSelect('Section','multpile',3)], ['Enrollment Status',&Apache::lonhtmlcommon::StatusOptions(undef,undef,3)], - ['Output Format',&Apache::Spreadsheet::output_selector()]) { + ['Output Format',$self->output_selector()]) { my ($name,$selector) = @{$_}; $toprow .= ''.&mt($name).''; $bottomrow .= ''.$selector.''; @@ -128,25 +128,27 @@ sub outsheet_html { my $exportcolor = '#BBBBFF'; my $num_uneditable = 26; my $num_left = 52-$num_uneditable; - my %lt=&Apache::lonlocal::texthash( - 'co' => 'Course', - 'im' => 'Import', - 'ca' => 'Calculations', - 'stu' => 'Student', - 'sta' => 'Status', - 'usr' => 'Username', - 'dom' => 'Domain', - 'sec' => 'Section', - ); + # + my %header=&Apache::lonlocal::texthash( + 'course' => 'Course', + 'import' => 'Import', + 'calculations' => 'Calculations', + 'student' => 'Student', + 'status' => 'Status', + 'username' => 'Username', + 'domain' => 'Domain', + 'section' => 'Section', + 'row' => 'Row', + ); my $tableheader =<<"END";

- + + $header{'import'} + $header{'calculations'} END my $label_num = 0; @@ -176,9 +178,12 @@ END $tableheader =<<"END";

$lt{'co'}$header{'course'} - $lt{'im'} - $lt{'ca'}
- - - + + + + + + END foreach (split(//,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')){ if ($label_num<$num_uneditable) { @@ -270,11 +275,99 @@ sub csv_rows { return; } +sub output_options { + my $self = shift(); + return ({value => 'htmlclasslist', + description => 'Student Sheet Links'}, + {value => 'html', + description => 'HTML'}, + {value => 'excel', + description => 'Excel'}, + {value => 'csv', + description => 'Comma Separated Values'}, +# {value => 'xml', +# description => 'XML'}, + ); +} + sub outsheet_recursive_excel { my $self = shift; my ($r) = @_; } +sub outsheet_htmlclasslist { + my $self = shift; + my ($r) = @_; + # + # Determine if we should output expire caches links... + my $show_expire_link = 0; + if (exists($ENV{'user.role.dc./'.$ENV{'request.role.domain'}.'/'})){ + $show_expire_link = 1; + } + # + if ($show_expire_link) { + $r->print(''. + &mt('Expire all student spreadsheets').''.$/); + } + # + $r->print('

'. + &mt('Click on a student to be taken to their spreadsheet'). + '

'); + # + my %header=&Apache::lonlocal::texthash( + 'student' => 'Student', + 'status' => 'Status', + 'username' => 'Username', + 'domain' => 'Domain', + 'section' => 'Section', + ); + # + # Prepare to output rows + my $tableheader =<<"END"; +

+

$lt{'ro'}$lt{'stu'}$lt{'usr'}$lt{'dom'}$lt{'sec'}$lt{'sta'}
$header{'row'}$header{'student'}$header{'username'}$header{'domain'}$header{'section'}$header{'status'}
+ + + + + + + +END + if ($show_expire_link) { + $tableheader.= ''; + } + $tableheader.= "\n"; + # + my $num_output = 0; + foreach my $student (@Students) { + if ($num_output++ % 50 == 0) { + $r->print("
$header{'student'}$header{'username'}$header{'domain'}$header{'section'}$header{'status'} 
\n".$tableheader); + } + my $link = ''; + $student->{'section'} = 'none' if ($student->{'section'} eq '-1'); + $r->print(''. + ''.$num_output.''. + ''.$link.$student->{'fullname'}.''. + ''.$link.$student->{'username'}.''. + ''.$student->{'domain'} .''. + ''.$student->{'section'} .''. + ''.$student->{'status'} .''); + if ($show_expire_link) { + $r->print(''. + 'Expire Record'.$/); + } + $r->print("\n"); + } + $r->print("

\n"); + return; +} + sub compute { my $self = shift; my ($r) = @_;