--- loncom/interface/spreadsheet/Spreadsheet.pm 2004/01/14 16:47:39 1.33
+++ loncom/interface/spreadsheet/Spreadsheet.pm 2005/03/03 17:52:36 1.39
@@ -1,5 +1,5 @@
#
-# $Id: Spreadsheet.pm,v 1.33 2004/01/14 16:47:39 matthew Exp $
+# $Id: Spreadsheet.pm,v 1.39 2005/03/03 17:52:36 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -86,6 +86,15 @@ sub new {
my ($stype) = ($class =~ /Apache::(.*)$/);
#
my ($name,$domain,$filename,$usymb)=@_;
+ if (defined($usymb) && ref($usymb)) {
+ $usymb = $usymb->symb;
+ }
+ if (! defined($name) || $name eq '') {
+ $name = $ENV{'user.name'};
+ }
+ if (! defined($domain) || $domain eq '') {
+ $domain = $ENV{'user.domain'};
+ }
#
my $self = {
name => $name,
@@ -307,6 +316,9 @@ Returns the safe space required by a Spr
sub initialize_safe_space {
my $self = shift;
+ my $usection = &Apache::lonnet::getsection($self->{'domain'},
+ $self->{'name'},
+ $ENV{'request.course.id'});
if (! defined($safeeval)) {
$safeeval = new Safe(shift);
my $safehole = new Safe::Hole;
@@ -314,7 +326,7 @@ sub initialize_safe_space {
$safeeval->permit(":base_math");
$safeeval->permit("sort");
$safeeval->deny(":base_io");
- $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT');
+ $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&Apache::lonnet::EXT');
$safehole->wrap(\&mask,$safeeval,'&mask');
$safeeval->share('$@');
my $code=<<'ENDDEFS';
@@ -373,6 +385,25 @@ $errormsg = '';
=pod
+=item EXT(parameter)
+
+Calls the system EXT function to determine the value of the given parameter.
+
+=cut
+
+#-------------------------------------------------------
+sub EXT {
+ my ($parameter) = @_;
+ return '' if (! defined($parameter) || $parameter eq '');
+ $parameter =~ s/^parameter\./resource\./;
+ my $value = &Apache::lonnet::EXT($parameter,$symb,$domain,$name,$usection);
+ return $value;
+}
+
+#-------------------------------------------------------
+
+=pod
+
=item NUM(range)
returns the number of items in the range.
@@ -615,7 +646,6 @@ parametername should be a string such as
sub MINPARM {
my ($expression) = @_;
my $min = undef;
- study($expression);
foreach $parameter (keys(%c)) {
next if ($parameter !~ /$expression/);
if ((! defined($min)) || ($min > $c{$parameter})) {
@@ -640,7 +670,6 @@ parametername should be a string such as
sub MAXPARM {
my ($expression) = @_;
my $max = undef;
- study($expression);
foreach $parameter (keys(%c)) {
next if ($parameter !~ /$expression/);
if ((! defined($min)) || ($max < $c{$parameter})) {
@@ -692,10 +721,11 @@ ENDDEFS
# Place some of the %$self items into the safe space except the safe space
# itself
my $initstring = '';
- foreach (qw/name domain type usymb cid csec coursefilename
+ foreach (qw/name domain type symb cid csec coursefilename
cnum cdom chome uhome/) {
$initstring.= qq{\$$_="$self->{$_}";};
}
+ $initstring.=qq{\$usection="$usection";};
$self->{'safe'}->reval($initstring);
return $self;
}
@@ -846,7 +876,6 @@ sub expandnamed {
my @matches = ();
my @values = ();
$#matches = -1;
- study $expression;
while (my($parameter,$value) = each(%{$self->{'constants'}})) {
next if ($parameter !~ /$expression/);
push(@matches,$parameter);
@@ -1291,7 +1320,7 @@ sub html_editable_cell {
} elsif ($value =~ /^\s*$/ ) {
$value = '#';
} else {
- $value = &HTML::Entities::encode($value) if ($value !~/ /);
+ $value = &HTML::Entities::encode($value,'<>&"') if ($value !~/ /);
}
return $value if (! $allowed);
#
@@ -1314,7 +1343,7 @@ sub html_editable_cell {
sub html_uneditable_cell {
my ($cell,$bgcolor) = @_;
my $value = (defined($cell) ? $cell->{'value'} : '');
- $value = &HTML::Entities::encode($value) if ($value !~/ /);
+ $value = &HTML::Entities::encode($value,'<>&"') if ($value !~/ /);
return ' '.$value.' ';
}
@@ -1557,7 +1586,7 @@ sub outsheet_xml {
## But not on this day
my $Str = '
\n\n\n".$Str."\n\n\n"); + $r->print("
\n\n\n".$Str."\n\n\n"); return $Str; } @@ -1597,8 +1626,7 @@ sub parse_sheet { $formulas{$cell} = $formula; $sources{$cell} = $source if (defined($source)); $parser->get_text('/field'); - } - if ($token->[1] eq 'template') { + } elsif ($token->[1] eq 'template') { $formulas{'template_'.$token->[2]->{'col'}}= $parser->get_text('/template'); }