--- loncom/interface/Attic/lonspreadsheet.pm 2002/10/22 13:13:15 1.121
+++ loncom/interface/Attic/lonspreadsheet.pm 2002/10/22 18:54:53 1.123
@@ -1,5 +1,5 @@
#
-# $Id: lonspreadsheet.pm,v 1.121 2002/10/22 13:13:15 matthew Exp $
+# $Id: lonspreadsheet.pm,v 1.123 2002/10/22 18:54:53 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -208,7 +208,6 @@ sub initsheet {
$safeeval->deny(":base_io");
$safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT');
$safehole->wrap(\&Apache::lonspreadsheet::mask,$safeeval,'&mask');
- $safehole->wrap(\&Apache::lonspreadsheet::templaterow,$safeeval,'&templaterow');
$safeeval->share('$@');
my $code=<<'ENDDEFS';
# ---------------------------------------------------- Inside of the safe space
@@ -755,7 +754,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})) {
@@ -778,7 +776,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})) {
@@ -830,7 +827,6 @@ sub expandnamed {
my $returnvalue = '';
my @matches = ();
$#matches = -1;
- study $expression;
foreach $parameter (keys(%c)) {
push @matches,$parameter if ($parameter =~ /$expression/);
}
@@ -919,45 +915,42 @@ sub sett {
$t{'A0'}=~s/(^|[^\"\'])\[([^\]]+)\]/$1.&expandnamed($2)/ge;
}
-sub calc {
- undef %sheet_values;
- &sett();
- my $notfinished=1;
- my $lastcalc='';
- my $depth=0;
- while ($notfinished) {
- $notfinished=0;
- foreach (keys(%t)) {
- my $old=$sheet_values{$_};
- $sheet_values{$_}=eval $t{$_};
- if ($@) {
- undef %sheet_values;
- return $_.': '.$@;
- }
- if ($sheet_values{$_} ne $old) { $notfinished=1; $lastcalc=$_; }
- }
- $depth++;
- if ($depth>100) {
- undef %sheet_values;
- return $lastcalc.': Maximum calculation depth exceeded';
- }
- }
- return '';
+# ------------------------------------------- End of "Inside of the safe space"
+ENDDEFS
+ $safeeval->reval($code);
+ return $safeeval;
}
#
# This is actually used for the student spreadsheet, not the assessment sheet
# Do not be fooled by the name!
#
+sub templaterow {
+ my $sheet = shift;
+ my @cols=();
+ $cols[0]='Template';
+ foreach ('A','B','C','D','E','F','G','H','I','J','K','L','M',
+ 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
+ 'a','b','c','d','e','f','g','h','i','j','k','l','m',
+ 'n','o','p','q','r','s','t','u','v','w','x','y','z') {
+ my $fm=$sheet->{'f'}->{'template_'.$_};
+ $fm=~s/[\'\"]/\&\#34;/g;
+ push(@cols,"'template_$_','$fm'".'___eq___'.$fm);
+ }
+ return @cols;
+}
+
+
sub outrowassess {
# $n is the current row number
+ my $sheet = shift;
my $n=shift;
- my $csv = shift;
+ my $csv = $ENV{'form.showcsv'};
my @cols=();
if ($n) {
- my ($usy,$ufn)=split(/__&&&\__/,$f{'A'.$n});
- if ($rowlabel{$usy}) {
- $cols[0]=$rowlabel{$usy};
+ my ($usy,$ufn)=split(/__&&&\__/,$sheet->{'f'}->{'A'.$n});
+ if ($sheet->{'rowlabel'}->{$usy}) {
+ $cols[0]=$sheet->{'rowlabel'}->{$usy};
if (! $csv) {
$cols[0].=' '.
'