--- loncom/interface/Attic/lonspreadsheet.pm 2003/02/13 21:57:48 1.169
+++ loncom/interface/Attic/lonspreadsheet.pm 2003/03/10 20:21:45 1.176
@@ -1,5 +1,5 @@
#
-# $Id: lonspreadsheet.pm,v 1.169 2003/02/13 21:57:48 matthew Exp $
+# $Id: lonspreadsheet.pm,v 1.176 2003/03/10 20:21:45 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -183,10 +183,7 @@ sub handler {
# Header....
#
$r->print('
LON-CAPA Spreadsheet');
- my $nothing = "''";
- if ($ENV{'browser.type'} eq 'explorer') {
- $nothing = "'javascript:void(0);'";
- }
+ my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
if ($ENV{'request.role'} !~ /^st\./) {
$r->print(<includedir($r->dir_config('lonIncludes'));
- $sheet->tmpdir($r->dir_config('lonDaemons').'/tmp/');
#
# Check user permissions
if (($sheet->{'type'} eq 'classcalc' ) ||
@@ -524,18 +520,12 @@ my %numbertimes;
# Directories
#
my $includedir;
-my $tmpdir;
sub includedir {
my $self = shift;
$includedir = shift;
}
-sub tmpdir {
- my $self = shift;
- $tmpdir = shift;
-}
-
my %spreadsheets;
#my %loadedcaches;
my %courserdatas;
@@ -729,8 +719,27 @@ sub parmval {
# second, check map parms
my $thisparm = $parmhash{$symbparm};
return $thisparm if (defined($thisparm));
+
# first, check default
- return &Apache::lonnet::metadata($fn,$rwhat.'.default');
+ $thisparm = &Apache::lonnet::metadata($fn,$rwhat.'.default');
+ return $thisparm if (defined($thisparm));
+
+ #Cascade Up
+ my $space=$what;
+ $space=~s/\.\w+$//;
+ if ($space ne '0') {
+ my @parts=split(/_/,$space);
+ my $id=pop(@parts);
+ my $part=join('_',@parts);
+ if ($part eq '') { $part='0'; }
+ my $newwhat=$rwhat;
+ $newwhat=~s/\Q$space\E/$part/;
+ my $partgeneral=&parmval($newwhat,$symb,$uname,$udom,$csec);
+ if (defined($partgeneral)) { return $partgeneral; }
+ }
+
+ #nothing defined
+ return '';
}
#
@@ -1514,7 +1523,7 @@ sub expandnamed {
foreach my $varname ( @vars ) {
if ($varname=~/\D/) {
$formula=~s/$varname/'$c{\''.$varname.'\'}'/ge;
- $varname=~s/$var/\(\\w\+\)/g;
+ $varname=~s/$var/\([\\w:- ]\+\)/g;
foreach (keys(%{$self->{'constants'}})) {
if ($_=~/$varname/) {
$values{$1}=1;
@@ -1893,6 +1902,22 @@ sub dump_values_to_log {
}
$self->logthis("--------------------------------------------------------");}
+##
+## Yet another debugging function
+##
+sub dump_hash_to_log {
+ my $self= shift();
+ my %tmp = @_;
+ if (@_<2) {
+ %tmp = %{$_[0]};
+ }
+ $self->logthis('---------------------------- (entries end with ":"');
+ while (my ($key,$val) = each (%tmp)) {
+ $self->logthis($key.' = '.$val.':');
+ }
+ $self->logthis('---------------------------- (entries end with ":"');
+}
+
################################
## Helper functions ##
################################
@@ -2778,7 +2803,7 @@ sub tmpwrite {
$ENV{'user.domain'}.'_spreadsheet_'.$self->{'usymb'}.'_'.
$self->{'filename'};
$fn=~s/\W/\_/g;
- $fn=$tmpdir.$fn.'.tmp';
+ $fn=$Apache::lonnet::tmpdir.$fn.'.tmp';
my $fh;
if ($fh=Apache::File->new('>'.$fn)) {
my %f = $self->formulas();
@@ -2797,7 +2822,7 @@ sub tmpread {
$ENV{'user.domain'}.'_spreadsheet_'.$self->{'usymb'}.'_'.
$self->{'filename'};
$fn=~s/\W/\_/g;
- $fn=$tmpdir.$fn.'.tmp';
+ $fn=$Apache::lonnet::tmpdir.$fn.'.tmp';
my $fh;
my %fo=();
my $countrows=0;
@@ -3133,14 +3158,17 @@ sub loadstudent{
my %formulas = $self->formulas();
$cachedassess = $self->{'uname'}.':'.$self->{'udom'};
# Get ALL the student preformance data
- my @tmp = &Apache::lonnet::currentdump($self->{'cid'},
- $self->{'udom'},
- $self->{'uname'});
+ my @tmp = &Apache::loncoursedata::get_current_state($self->{'uname'},
+ $self->{'udom'},
+ undef,
+ $self->{'cid'});
if ((scalar @tmp > 0) && ($tmp[0] !~ /^error:/)) {
%cachedstores = @tmp;
}
undef @tmp;
- #
+ # debugging code
+ # $self->dump_hash_to_log(\%cachedstores);
+ #
my @assessdata=();
foreach my $row ($self->rows()) {
my $cell = 'A'.$row;
@@ -3173,7 +3201,7 @@ sub loadstudent{
$self->constants(\%constants);
}
-# --------------------------------------------------- Load data for one student
+# --------------------------------------------------- Load Course Sheet
#
sub loadcourse {
my $self = shift;
@@ -3186,20 +3214,12 @@ sub loadcourse {
foreach ($self->rows()) {
$total++ if ($formulas{'A'.$_} !~ /^[!~-]/);
}
- my $now=0;
- my $since=time;
- $r->print(<
- popwin=open('','popwin','width=400,height=100');
- popwin.document.writeln(''+
- 'Spreadsheet Calculation Progress
'+
- ''+
- '');
- popwin.document.close();
-
-ENDPOP
- $r->rflush();
+
+ my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,
+ 'Spreadsheet Status','Spreadsheet Calculation Progress', $total);
+ &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,
+ 'Processing Course Assessment Data');
+
# It would be nice to load in the classlist and assessment info at this
# point, before attacking the student spreadsheets.
foreach my $row ($self->rows()) {
@@ -3213,12 +3233,8 @@ ENDPOP
my @studentdata=$self->exportsheet($sname,$sdom,'studentcalc',
undef,undef,$r);
undef %userrdatas;
- $now++;
- $r->print('');
- $r->rflush();
- #
+ &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
+ 'last student');
my $index=0;
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') {
@@ -3238,8 +3254,7 @@ ENDPOP
}
$self->formulas(\%formulas);
$self->constants(\%constants);
- $r->print('');
- $r->rflush();
+ &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
}
# ------------------------------------------------ Load data for one assessment