version 1.26, 2003/10/14 18:36:54
|
version 1.31, 2004/02/03 22:19:47
|
Line 368 sub parmval {
|
Line 368 sub parmval {
|
|
|
sub get_html_title { |
sub get_html_title { |
my $self = shift; |
my $self = shift; |
my ($assess_title,$name,$time) = $self->get_title(); |
my ($assess_title,$name,$time) = $self->get_full_title(); |
my $title = '<h1>'.$assess_title.'</h1>'. |
my $title = '<h1>'.$assess_title.'</h1>'. |
'<h2>'.$name.', '. |
'<h2>'.$name.', '. |
&Apache::loncommon::aboutmewrapper |
&Apache::loncommon::aboutmewrapper |
Line 380 sub get_html_title {
|
Line 380 sub get_html_title {
|
|
|
sub get_title { |
sub get_title { |
my $self = shift; |
my $self = shift; |
my @title = (); |
|
if (($self->{'symb'} eq '_feedback') || |
if (($self->{'symb'} eq '_feedback') || |
($self->{'symb'} eq '_evaluation') || |
($self->{'symb'} eq '_evaluation') || |
($self->{'symb'} eq '_discussion') || |
($self->{'symb'} eq '_discussion') || |
($self->{'symb'} eq '_tutoring')) { |
($self->{'symb'} eq '_tutoring')) { |
my $assess_title = ucfirst($self->{'symb'}); |
my $assess_title = ucfirst($self->{'symb'}); |
$assess_title =~ s/^_//; |
$assess_title =~ s/^_//; |
push(@title,$assess_title); |
return $assess_title; |
} else { |
} else { |
push(@title,&Apache::lonnet::gettitle($self->{'symb'})); |
return &Apache::lonnet::gettitle($self->{'symb'}); |
} |
} |
|
} |
|
|
|
sub get_full_title { |
|
my $self = shift; |
|
my @title = ($self->get_title()); |
# Look up the users identifying information |
# Look up the users identifying information |
# Get the users information |
# Get the users information |
my %userenv = &Apache::loncoursedata::GetUserName($self->{'name'}, |
my %userenv = &Apache::loncoursedata::GetUserName($self->{'name'}, |
Line 415 sub parent_link {
|
Line 419 sub parent_link {
|
sub outsheet_html { |
sub outsheet_html { |
my $self = shift; |
my $self = shift; |
my ($r) = @_; |
my ($r) = @_; |
|
#################################### |
|
# Report any calculation errors # |
|
#################################### |
|
$r->print($self->html_report_error()); |
################################### |
################################### |
# Determine table structure |
# Determine table structure |
################################### |
################################### |
Line 474 END
|
Line 482 END
|
# |
# |
my $num_output = 0; |
my $num_output = 0; |
foreach my $rownum (sort {$a <=> $b} ($self->rows())) { |
foreach my $rownum (sort {$a <=> $b} ($self->rows())) { |
|
if (! $self->parameter_part_is_valid( |
|
$self->{'formulas'}->{'A'.$rownum} |
|
)) { |
|
next; |
|
} |
if ($num_output++ % 50 == 0) { |
if ($num_output++ % 50 == 0) { |
$r->print("</table>\n".$tableheader); |
$r->print("</table>\n".$tableheader); |
} |
} |
Line 518 sub csv_rows {
|
Line 531 sub csv_rows {
|
# writes the meat of the spreadsheet to an excel worksheet. Called |
# writes the meat of the spreadsheet to an excel worksheet. Called |
# by Spreadsheet::outsheet_excel; |
# by Spreadsheet::outsheet_excel; |
my $self = shift; |
my $self = shift; |
my ($filehandle) = @_; |
my ($connection,$filehandle) = @_; |
# |
# |
# Write a header row |
# Write a header row |
$self->csv_output_row($filehandle,undef, |
$self->csv_output_row($filehandle,undef, |
Line 541 sub excel_rows {
|
Line 554 sub excel_rows {
|
# writes the meat of the spreadsheet to an excel worksheet. Called |
# writes the meat of the spreadsheet to an excel worksheet. Called |
# by Spreadsheet::outsheet_excel; |
# by Spreadsheet::outsheet_excel; |
my $self = shift; |
my $self = shift; |
my ($worksheet,$cols_output,$rows_output) = @_; |
my ($connection,$worksheet,$cols_output,$rows_output) = @_; |
|
return if (! ref($worksheet)); |
# |
# |
# Write a header row |
# Write a header row |
$cols_output = 0; |
$cols_output = 0; |
foreach my $value ('Parameter','Description','Value') { |
foreach my $value ('Parameter','Description','Value') { |
$worksheet->write($rows_output,$cols_output++,&mt($value)); |
$worksheet->write($rows_output,$cols_output++,$value); |
} |
} |
$rows_output++; |
$rows_output++; |
# |
# |
Line 637 sub get_problem_state {
|
Line 651 sub get_problem_state {
|
return %student_parameters; |
return %student_parameters; |
} |
} |
|
|
|
sub determine_parts { |
|
my $self = shift; |
|
if (exists($self->{'Parts'}) && ref($self->{'Parts'}) eq 'HASH') { |
|
return; |
|
} |
|
my (undef,undef,$url) = &Apache::lonnet::decode_symb($self->{'symb'}); |
|
my $src = &Apache::lonnet::clutter($url); |
|
return if (! defined($src)); |
|
my %Parts; |
|
my $metadata = &Apache::lonnet::metadata($src,'packages'); |
|
foreach (split(',',$metadata)) { |
|
my ($part) = (/^part_(.*)$/); |
|
if (defined($part) && |
|
! &Apache::loncommon::check_if_partid_hidden |
|
($part,$self->{'symb'},$self->{'name'},$self->{'domain'}) |
|
) { |
|
$Parts{$part}++; |
|
} |
|
} |
|
# Make sure part 0 is defined. |
|
$Parts{'0'}++; |
|
$self->{'Parts'} = \%Parts; |
|
return; |
|
} |
|
|
|
sub parameter_part_is_valid { |
|
my $self = shift; |
|
my ($parameter) = @_; |
|
return 1 if ($parameter eq 'timestamp'); |
|
if (! defined($self->{'Parts'}) || |
|
! ref ($self->{'Parts'}) || |
|
ref($self->{'Parts'}) ne 'HASH') { |
|
return 1; |
|
} |
|
# |
|
my (undef,$part) = |
|
($parameter =~ m/^(resource|stores|parameter)_([^_]+)_.*/); |
|
if (exists($self->{'Parts'}) && |
|
exists($self->{'Parts'}->{$part}) && |
|
$self->{'Parts'}->{$part} ) { |
|
return 1; |
|
} else { |
|
return 0; |
|
} |
|
} |
|
|
sub compute { |
sub compute { |
my $self = shift; |
my $self = shift; |
my ($r) = @_; |
my ($r) = @_; |
Line 688 sub compute {
|
Line 748 sub compute {
|
$parameters{$parm} = $value; |
$parameters{$parm} = $value; |
} |
} |
# |
# |
|
# Clean out any bad parameters |
|
$self->determine_parts(); |
|
foreach my $param (keys(%parameters)) { |
|
if (! $self->parameter_part_is_valid($param)) { |
|
delete ($parameters{$param}); |
|
} |
|
} |
|
# |
# Set up the formulas and parameter values |
# Set up the formulas and parameter values |
my %f=$self->formulas(); |
my %f=$self->formulas(); |
my %c; |
my %c; |
Line 710 sub compute {
|
Line 778 sub compute {
|
if ($connection->aborted()) { $self->cleanup(); return; } |
if ($connection->aborted()) { $self->cleanup(); return; } |
# |
# |
# Move the parameters into the spreadsheet |
# Move the parameters into the spreadsheet |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
while (my ($parm,$value) = each(%parameters)) { |
while (my ($parm,$value) = each(%parameters)) { |
my $cell = 'A'.$self->get_row_number_from_key($parm); |
my $cell = 'A'.$self->get_row_number_from_key($parm); |
$f{$cell} = $parm; |
$f{$cell} = $parm; |
$value = '"'.$value.'"' if ($value =~/[^0-9.]/); |
if ($parm =~ /_submission$/ && $value =~ /(\{|\})/) { |
|
$value = 'witheld'; |
|
} |
|
$value = 'q{'.$value.'}' if ($value !~/^\s*\d+(\.\d+)?\s*$/); |
$c{$parm} = $value; |
$c{$parm} = $value; |
} |
} |
$self->formulas(\%f); |
$self->formulas(\%f); |
Line 849 sub export_data {
|
Line 919 sub export_data {
|
$self->compute($r); |
$self->compute($r); |
} |
} |
if ($connection->aborted()) { $self->cleanup(); return; } |
if ($connection->aborted()) { $self->cleanup(); return; } |
my @Data = @{$Exportrows{$symb}->{$self->{'filename'}}}; |
my @Data; |
if ($Data[0] =~ /^(.*)___=___/) { |
if ($self->badcalc()) { |
$self->{'sheetname'} = $1; |
@Data = (); |
$Data[0] =~ s/^(.*)___=___//; |
} else { |
} |
@Data = @{$Exportrows{$symb}->{$self->{'filename'}}}; |
for (my $i=0;$i<$#Data;$i++) { |
if ($Data[0] =~ /^(.*)___=___/) { |
$Data[$i]="'".$Data[$i]."'" if ($Data[$i]=~/\D/ && defined($Data[$i])); |
$self->{'sheetname'} = $1; |
|
$Data[0] =~ s/^(.*)___=___//; |
|
} |
|
for (my $i=0;$i<$#Data;$i++) { |
|
if ($Data[$i]=~/\D/ && defined($Data[$i])) { |
|
$Data[$i]="'".$Data[$i]."'"; |
|
} |
|
} |
} |
} |
return @Data; |
return @Data; |
} |
} |
Line 878 sub save_export_data {
|
Line 955 sub save_export_data {
|
return if ($self->temporary()); |
return if ($self->temporary()); |
my $student = $self->{'name'}.':'.$self->{'domain'}; |
my $student = $self->{'name'}.':'.$self->{'domain'}; |
my $symb = $self->{'symb'}; |
my $symb = $self->{'symb'}; |
|
if ($self->badcalc()){ |
|
# do not save data away when calculations have not been done properly. |
|
delete($Exportrows{$symb}); |
|
return; |
|
} |
if (! exists($Exportrows{$symb}) || |
if (! exists($Exportrows{$symb}) || |
! exists($Exportrows{$symb}->{$self->{'filename'}})) { |
! exists($Exportrows{$symb}->{$self->{'filename'}})) { |
return; |
return; |