--- loncom/interface/spreadsheet/Spreadsheet.pm 2003/09/15 20:31:01 1.26
+++ loncom/interface/spreadsheet/Spreadsheet.pm 2003/11/17 19:55:41 1.30
@@ -1,5 +1,5 @@
#
-# $Id: Spreadsheet.pm,v 1.26 2003/09/15 20:31:01 matthew Exp $
+# $Id: Spreadsheet.pm,v 1.30 2003/11/17 19:55:41 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -59,6 +59,7 @@ use HTML::Entities();
use HTML::TokeParser;
use Spreadsheet::WriteExcel;
use Time::HiRes;
+use Apache::lonlocal;
##
## Package Variables
@@ -677,7 +678,7 @@ sub calc {
return $lastcalc.': Maximum calculation depth exceeded';
}
}
- return '';
+ return 'okay';
}
# ------------------------------------------- End of "Inside of the safe space"
@@ -749,6 +750,11 @@ sub mask {
if (($la eq '*') || ($ua eq '*')) {
$alpha='[A-z]';
} else {
+ if ($la gt $ua) {
+ my $tmp = $ua;
+ $ua = $la;
+ $la = $ua;
+ }
$alpha=qq/[$la-$ua]/;
}
if ($ld ne '*' && $ud ne '*') {
@@ -1133,9 +1139,49 @@ sub calcsheet {
# $self->logthis($self->get_errorlog());
%{$self->{'values'}} = %{$self->{'safe'}->varglob('sheet_values')};
# $self->logthis($self->get_errorlog());
+ if ($result ne 'okay') {
+ $self->set_calcerror($result);
+ }
return $result;
}
+sub set_badcalc {
+ my $self = shift();
+ $self->{'badcalc'} =1;
+ return;
+}
+
+sub badcalc {
+ my $self = shift;
+ if (exists($self->{'badcalc'}) && $self->{'badcalc'}) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+sub set_calcerror {
+ my $self = shift;
+ if (@_) {
+ $self->set_badcalc();
+ if (exists($self->{'calcerror'})) {
+ $self->{'calcerror'}.="\n".$_[0];
+ } else {
+ $self->{'calcerror'}.=$_[0];
+ }
+ }
+}
+
+sub calcerror {
+ my $self = shift;
+ if ($self->badcalc()) {
+ if (exists($self->{'calcerror'})) {
+ return $self->{'calcerror'};
+ }
+ }
+ return;
+}
+
###########################################################
##
## Output Helpers
@@ -1163,6 +1209,18 @@ sub display {
############################################
## HTML output routines ##
############################################
+sub html_report_error {
+ my $self = shift();
+ my $Str = '';
+ if ($self->badcalc()) {
+ $Str = '
'.
+ &mt('An error occurred while calculating this spreadsheet').
+ "
\n".
+ ''.$self->calcerror()."
\n";
+ }
+ return $Str;
+}
+
sub html_export_row {
my $self = shift();
my ($color) = @_;
@@ -1277,7 +1335,7 @@ sub html_header {
my $self = shift;
return '' if (! $ENV{'request.role.adv'});
return "\n".
- 'Output Format |
---|
'."\n".
+ '
'.&mt('Output Format').' |
'."\n".
''.&output_selector()." |
\n".
"
\n";
}
@@ -1292,13 +1350,13 @@ sub output_selector {
}
foreach (['html','HTML'],
['excel','Excel'],
- ['csv','Comma Seperated Values']) {
+ ['csv','Comma Separated Values']) {
my ($name,$description) = @{$_};
$output_selector.=qq{