--- loncom/interface/Attic/lonspreadsheet.pm 2003/02/17 16:29:51 1.172 +++ loncom/interface/Attic/lonspreadsheet.pm 2003/03/20 19:10:27 1.178 @@ -1,5 +1,5 @@ # -# $Id: lonspreadsheet.pm,v 1.172 2003/02/17 16:29:51 matthew Exp $ +# $Id: lonspreadsheet.pm,v 1.178 2003/03/20 19:10:27 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -152,9 +152,9 @@ sub handler { $ENV{'form.ufn'} eq 'default')) { $ENV{'form.ufn'}='default_'.$1; } - if (!$ENV{'form.ufn'} || $ENV{'form.ufn'} eq 'default') { - $ENV{'form.ufn'}='course_default_'.$sheettype; - } +# if (!$ENV{'form.ufn'} || $ENV{'form.ufn'} eq 'default') { +# $ENV{'form.ufn'}='course_default_'.$sheettype; +# } # # Interactive loading of specific sheet? # @@ -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(<{'cid'}) { undef %oldsheets; undef %loadedcaches; + &Apache::lonspreadsheet::Spreadsheet::clear_package_variables(); } $oldsheets{'course'} = $sheet->{'cid'}; # @@ -537,6 +535,25 @@ my %defaultsheets; my %rowlabel_cache; #my %oldsheets; +sub clear_package_variables { + undef %courseopt; + undef %useropt; + undef %parmhash; + undef %Section; + undef %expiredates; + undef $cachedassess; + undef %cachedstores; + undef %starttimes; + undef %usedtimes; + undef %numbertimes; + undef $includedir; + undef %spreadsheets; + undef %courserdatas; + undef %userrdatas; + undef %defaultsheets; + undef %rowlabel_cache; +} + sub complete_recalc { my $self = shift; undef %spreadsheets; @@ -722,8 +739,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 ''; } # @@ -735,6 +771,15 @@ sub new { # my ($uname,$udom,$stype,$usymb)=@_; # + if (! exists($Section{$uname.':'.$udom})) { + my $classlist = &Apache::loncoursedata::get_classlist(); + # + foreach my $student (keys(%$classlist)) { + my ($studentDomain,$studentName,undef,undef,undef,$studentSection, + undef,undef) = @{$classlist->{$student}}; + $Section{$studentName.':'.$studentDomain} = $studentSection; + } + } my $self = { uname => $uname, udom => $udom, @@ -1507,7 +1552,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; @@ -3198,20 +3243,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()) { @@ -3225,13 +3262,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') { @@ -3251,8 +3283,7 @@ ENDPOP } $self->formulas(\%formulas); $self->constants(\%constants); - $r->print(''); - $r->rflush(); + &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); } # ------------------------------------------------ Load data for one assessment