--- loncom/interface/Attic/lonspreadsheet.pm 2002/11/21 19:05:18 1.146 +++ loncom/interface/Attic/lonspreadsheet.pm 2002/11/26 14:58:41 1.150 @@ -1,5 +1,5 @@ # -# $Id: lonspreadsheet.pm,v 1.146 2002/11/21 19:05:18 matthew Exp $ +# $Id: lonspreadsheet.pm,v 1.150 2002/11/26 14:58:41 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1317,7 +1317,7 @@ END # Print out template row #################################### my ($rowlabel,@rowdata) = &get_row($sheet,'-'); - my $row_html = ''.&format_html_rowlabel($rowlabel).''; + my $row_html = ''.&format_html_rowlabel($sheet,$rowlabel).''; my $num_cols_output = 0; foreach my $cell (@rowdata) { if ($num_cols_output++ < $num_uneditable) { @@ -1335,7 +1335,7 @@ END # Print out summary/export row #################################### my ($rowlabel,@rowdata) = &get_row($sheet,'0'); - $row_html = ''.&format_html_rowlabel($rowlabel).''; + $row_html = ''.&format_html_rowlabel($sheet,$rowlabel).''; $num_cols_output = 0; foreach my $cell (@rowdata) { if ($num_cols_output++ < 26) { @@ -1381,11 +1381,11 @@ END ''; # if ($sheet->{'sheettype'} eq 'classcalc') { - $row_html.=''.&format_html_rowlabel($rowlabel).''; + $row_html.=''.&format_html_rowlabel($sheet,$rowlabel).''; # Output links for each student? # Nope, that is already done for us in format_html_rowlabel (for now) } elsif ($sheet->{'sheettype'} eq 'studentcalc') { - $row_html.=''.&format_html_rowlabel($rowlabel); + $row_html.=''.&format_html_rowlabel($sheet,$rowlabel); $row_html.= '
'. ''; } elsif ($sheet->{'sheettype'} eq 'assesscalc') { - $row_html.=''.&format_html_rowlabel($rowlabel).''; + $row_html.=''.&format_html_rowlabel($sheet,$rowlabel).''; } # my $shown_cells = 0; @@ -1469,7 +1469,7 @@ sub outsheet_csv { foreach my $rownum (@Rows) { my ($rowlabel,@rowdata) = &get_row($sheet,$rownum); next if ($rowlabel =~ /^\s*$/); - push (@Values,&format_csv_rowlabel($rowlabel)); + push (@Values,&format_csv_rowlabel($sheet,$rowlabel)); foreach my $cell (@rowdata) { push (@Values,'"'.$cell->{'value'}.'"'); } @@ -1638,7 +1638,7 @@ sub export_sheet_as_excel { # Write the summary/export row # #################################### my ($rowlabel,@rowdata) = &get_row($sheet,'0'); - my $label = &format_excel_rowlabel($rowlabel); + my $label = &format_excel_rowlabel($sheet,$rowlabel); $cols_output = 0; $worksheet->write($rows_output,$cols_output++,$label); foreach my $cell (@rowdata) { @@ -1655,7 +1655,7 @@ sub export_sheet_as_excel { my ($rowlabel,@rowdata) = &get_row($sheet,$rownum); next if ($rowlabel =~ /^[\s]*$/); $cols_output = 0; - my $label = &format_excel_rowlabel($rowlabel); + my $label = &format_excel_rowlabel($sheet,$rowlabel); if ( ! $ENV{'form.showall'} && $sheet->{'sheettype'} =~ /^(studentcalc|classcalc)$/) { my $row_is_empty = 1; @@ -2052,18 +2052,22 @@ sub parmval { ## Row label formatting routines ## ################################################################## sub format_html_rowlabel { + my $sheet = shift; my $rowlabel = shift; return '' if ($rowlabel eq ''); my ($type,$labeldata) = split(':',$rowlabel,2); my $result = ''; if ($type eq 'symb') { - my ($symb,$uname,$udom,$mapid,$resid,$title) = split(':',$labeldata); + my ($symb,$mapid,$resid,$title) = split(':',$labeldata); $symb = &Apache::lonnet::unescape($symb); $result = ''.$title.''; } elsif ($type eq 'student') { my ($sname,$sdom,$fullname,$section,$id) = split(':',$labeldata); + if ($fullname =~ /^\s*$/) { + $fullname = $sname.'@'.$sdom; + } $result =''; $result.=$section.' '.$id." ".$fullname.''; @@ -2076,12 +2080,13 @@ sub format_html_rowlabel { } sub format_csv_rowlabel { + my $sheet = shift; my $rowlabel = shift; return '' if ($rowlabel eq ''); my ($type,$labeldata) = split(':',$rowlabel,2); my $result = ''; if ($type eq 'symb') { - my ($symb,$uname,$udom,$mapid,$resid,$title) = split(':',$labeldata); + my ($symb,$mapid,$resid,$title) = split(':',$labeldata); $symb = &Apache::lonnet::unescape($symb); $result = $title; } elsif ($type eq 'student') { @@ -2097,12 +2102,13 @@ sub format_csv_rowlabel { } sub format_excel_rowlabel { + my $sheet = shift; my $rowlabel = shift; return '' if ($rowlabel eq ''); my ($type,$labeldata) = split(':',$rowlabel,2); my $result = ''; if ($type eq 'symb') { - my ($symb,$uname,$udom,$mapid,$resid,$title) = split(':',$labeldata); + my ($symb,$mapid,$resid,$title) = split(':',$labeldata); $symb = &Apache::lonnet::unescape($symb); $result = $title; } elsif ($type eq 'student') { @@ -2214,7 +2220,7 @@ sub get_student_rowlabels { my %assesslist; foreach ('Feedback','Evaluation','Tutoring','Discussion') { my $symb = '_'.lc($_); - $assesslist{$symb} = join(':',('symb',$symb,$uname,$udom,0,0,$_)); + $assesslist{$symb} = join(':',('symb',$symb,0,0,$_)); } # while (my ($key,$srcf) = each(%course_db)) { @@ -2227,8 +2233,7 @@ sub get_student_rowlabels { &Apache::lonnet::declutter($course_db{'map_id_'.$mapid}). '___'.$resid.'___'.&Apache::lonnet::declutter($srcf); $assesslist{$symb}='symb:'.&Apache::lonnet::escape($symb).':' - .$uname.':'.$udom.':'.$mapid.':'.$resid.':'. - $course_db{'title_'.$id}; + .$mapid.':'.$resid.':'.$course_db{'title_'.$id}; } } untie(%course_db); @@ -2316,7 +2321,8 @@ sub updatestudentassesssheet { $sheet->{'maxrow'} = 0; my %existing=(); # Now obsolete rows - while (my ($cell, $formula) = each (%f)) { + foreach my $cell (keys(%f)) { + my $formula = $f{$cell}; next if ($cell !~ /^A(\d+)/); $sheet->{'maxrow'} = $1 if ($1 > $sheet->{'maxrow'}); my ($usy,$ufn)=split(/__&&&\__/,$formula); @@ -3215,13 +3221,18 @@ ENDSCRIPT } $r->print('>'.$mode.''."\n"); } - if ($sheet->{'sheettype'} eq 'classcalc') { - $r->print('\n"); - } +# +# Mulit-sheet excel takes too long and does not work at all for large +# classes. Future inclusion of this option may be possible with the +# Spreadsheet::WriteExcel::Big and speed improvements. +# +# if ($sheet->{'sheettype'} eq 'classcalc') { +# $r->print('\n"); +# } $r->print("\n"); # if ($sheet->{'sheettype'} eq 'classcalc') {