--- loncom/interface/Attic/lonspreadsheet.pm 2002/11/12 20:14:51 1.138 +++ loncom/interface/Attic/lonspreadsheet.pm 2002/11/12 22:44:28 1.139 @@ -1,5 +1,5 @@ # -# $Id: lonspreadsheet.pm,v 1.138 2002/11/12 20:14:51 matthew Exp $ +# $Id: lonspreadsheet.pm,v 1.139 2002/11/12 22:44:28 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1086,6 +1086,44 @@ sub geterrorlog { return ${$sheet->{'safe'}->varglob('errorlog')}; } +sub gettitle { + my $sheet = shift; + if ($sheet->{'sheettype'} eq 'classcalc') { + return $sheet->{'coursedesc'}; + } elsif ($sheet->{'sheettype'} eq 'studentcalc') { + return 'Grades for '.$sheet->{'uname'}.'@'.$sheet->{'udom'}; + } elsif ($sheet->{'sheettype'} eq 'assesscalc') { + if (($sheet->{'usymb'} eq '_feedback') || + ($sheet->{'usymb'} eq '_evaluation') || + ($sheet->{'usymb'} eq '_discussion') || + ($sheet->{'usymb'} eq '_tutoring')) { + my $title = $sheet->{'usymb'}; + $title =~ s/^_//; + $title = ucfirst($title); + return $title; + } + return if (! defined($sheet->{'mapid'}) || + $sheet->{'mapid'} !~ /^\d+$/); + my $mapid = $sheet->{'mapid'}; + return if (! defined($sheet->{'resid'}) || + $sheet->{'resid'} !~ /^\d+$/); + my $resid = $sheet->{'resid'}; + my %course_db; + tie(%course_db,'GDBM_File',$sheet->{'coursefilename'}.'.db', + &GDBM_READER(),0640); + return if (! tied(%course_db)); + my $key = 'title_'.$mapid.'.'.$resid; + my $title = ''; + if (exists($course_db{$key})) { + $title = $course_db{$key}; + } else { + $title = $sheet->{'usymb'}; + } + untie (%course_db); + return $title; + } +} + # ----------------------------------------------------- Get value of $f{'A'.$n} sub getfa { my $sheet = shift; @@ -1153,6 +1191,7 @@ sub sort_indicies { # my @sortby=(); my @sortidx=(); + # Skip row 0 for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { push (@sortby, $sheet->{'safe'}->reval('$f{"A'.$row.'"}')); push (@sortidx, $row); @@ -1268,7 +1307,6 @@ END # Print out summary/export row #################################### my ($rowlabel,@rowdata) = &get_row($sheet,'0'); - my $rowcount = 0; $row_html = ''.&format_html_rowlabel($rowlabel).''; $num_cols_output = 0; foreach my $cell (@rowdata) { @@ -1543,25 +1581,46 @@ sub create_excel_spreadsheet { sub export_sheet_as_excel { my $sheet = shift; my $worksheet = shift; + # + my $rows_output = 0; + my $cols_output = 0; + #################################### + # Write an identifying row # + #################################### + my @Headerinfo = ($sheet->{'coursedesc'}); + my $title = &gettitle($sheet); + $cols_output = 0; + if (defined($title)) { + $worksheet->write($rows_output++,$cols_output++,$title); + } + #################################### + # Write the summary/export row # + #################################### + my ($rowlabel,@rowdata) = &get_row($sheet,'0'); + my $label = &format_excel_rowlabel($rowlabel); + $cols_output = 0; + $worksheet->write($rows_output,$cols_output++,$label); + foreach my $cell (@rowdata) { + $worksheet->write($rows_output,$cols_output++,$cell->{'value'}); + } + $rows_output+= 2; # Skip a row, just for fun #################################### # Prepare to output rows #################################### my @Rows = &sort_indicies($sheet); # # Loop through the rows and output them one at a time - my $rows_output=0; foreach my $rownum (@Rows) { my ($rowlabel,@rowdata) = &get_row($sheet,$rownum); next if ($rowlabel =~ /^\s*$/); - my $cols_output = 0; + $cols_output = 0; my $label = &format_excel_rowlabel($rowlabel); $worksheet->write($rows_output,$cols_output++,$label); if (ref($label)) { $cols_output = (scalar(@$label)); } foreach my $cell (@rowdata) { - $worksheet->write($rows_output,$cols_output++, - $cell->{'value'}); + $worksheet->write($rows_output,$cols_output++,$cell->{'value'}); } $rows_output++; } @@ -1730,6 +1789,8 @@ sub makenewsheet { $sheet->{'udom'} = $udom; $sheet->{'sheettype'} = $stype; $sheet->{'usymb'} = $usymb; + $sheet->{'mapid'} = $ENV{'form.mapid'}; + $sheet->{'resid'} = $ENV{'form.resid'}; $sheet->{'cid'} = $ENV{'request.course.id'}; $sheet->{'csec'} = $Section{$uname.':'.$udom}; $sheet->{'coursefilename'} = $ENV{'request.course.fn'}; @@ -1737,7 +1798,7 @@ sub makenewsheet { $sheet->{'cdom'} = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}; $sheet->{'chome'} = $ENV{'course.'.$ENV{'request.course.id'}.'.home'}; $sheet->{'coursedesc'} = $ENV{'course.'.$ENV{'request.course.id'}. - 'description'}; + '.description'}; $sheet->{'uhome'} = &Apache::lonnet::homeserver($uname,$udom); # # @@ -1943,10 +2004,11 @@ sub format_html_rowlabel { my ($type,$labeldata) = split(':',$rowlabel,2); my $result = ''; if ($type eq 'symb') { - my ($symb,$uname,$udom,$title) = split(':',$labeldata); + my ($symb,$uname,$udom,$mapid,$resid,$title) = split(':',$labeldata); $symb = &Apache::lonnet::unescape($symb); $result = ''.$title.''; + '&uname='.$uname.'&udom='.$udom. + '&mapid='.$mapid.'&resid='.$resid.'">'.$title.''; } elsif ($type eq 'student') { my ($sname,$sdom,$fullname,$section,$id) = split(':',$labeldata); $result ='

'); if ($sheet->{'sheettype'} eq 'assesscalc') { $r->print('

'. ''. - 'Level up: Student Sheet

'); + 'Level up: Student Sheet

'); } if (($sheet->{'sheettype'} eq 'studentcalc') && (&Apache::lonnet::allowed('vgr',$sheet->{'cid'}))) { $r->print ('

'. - 'Level up: Course Sheet

'); + 'Level up: Course Sheet

'); } + # Recalc button + $r->print('
'. + '

'); # Save dialog if (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'})) { my $fname=$ENV{'form.ufn'}; @@ -3037,12 +3105,12 @@ ENDSCRIPT } # # Write the modified worksheet - $r->print('Current sheet: '.$sheet->{'filename'}.'

'); + $r->print('Current sheet: '.$sheet->{'filename'}.'

'); &tmpwrite($sheet); if ($sheet->{'sheettype'} eq 'studentcalc') { - $r->print('
Show rows with empty A column: '); + $r->print('

Show rows with empty A column: '); } else { - $r->print('
Show empty rows: '); + $r->print('

>Show empty rows: '); } # $r->print(&hiddenfield('userselhidden','true').