--- loncom/interface/Attic/lonspreadsheet.pm	2003/02/13 22:52:48	1.171
+++ loncom/interface/Attic/lonspreadsheet.pm	2003/03/07 04:20:20	1.174
@@ -1,5 +1,5 @@
 #
-# $Id: lonspreadsheet.pm,v 1.171 2003/02/13 22:52:48 matthew Exp $
+# $Id: lonspreadsheet.pm,v 1.174 2003/03/07 04:20:20 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -722,8 +722,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 '';
 }
 
 #
@@ -1507,7 +1526,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;
@@ -3185,7 +3204,7 @@ sub loadstudent{
     $self->constants(\%constants);
 }
 
-# --------------------------------------------------- Load data for one student
+# --------------------------------------------------- Load Course Sheet
 #
 sub loadcourse {
     my $self = shift;
@@ -3198,20 +3217,12 @@ sub loadcourse {
     foreach ($self->rows()) {
         $total++ if ($formulas{'A'.$_} !~ /^[!~-]/);
     }
-    my $now=0;
-    my $since=time;
-    $r->print(<<ENDPOP);
-<script>
-    popwin=open('','popwin','width=400,height=100');
-    popwin.document.writeln('<html><body bgcolor="#FFFFFF">'+
-      '<h3>Spreadsheet Calculation Progress</h3>'+
-      '<form name=popremain>'+
-      '<input type=text size=45 name=remaining value=Starting></form>'+
-      '</body></html>');
-    popwin.document.close();
-</script>
-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,12 +3236,8 @@ ENDPOP
         my @studentdata=$self->exportsheet($sname,$sdom,'studentcalc',
                                      undef,undef,$r);
         undef %userrdatas;
-        $now++;
-        $r->print('<script>popwin.document.popremain.remaining.value="'.
-                  $now.'/'.$total.': '.int((time-$since)/$now*($total-$now)).
-                  ' secs remaining '.(time-$started).' last";</script>');
-        $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') {
@@ -3250,8 +3257,7 @@ ENDPOP
     }
     $self->formulas(\%formulas);
     $self->constants(\%constants);
-    $r->print('<script>popwin.close()</script>');
-    $r->rflush(); 
+    &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
 }
 
 # ------------------------------------------------ Load data for one assessment