--- loncom/interface/Attic/lonspreadsheet.pm	2001/03/20 21:34:34	1.48
+++ loncom/interface/Attic/lonspreadsheet.pm	2001/04/05 21:35:02	1.53
@@ -5,7 +5,7 @@
 # 12/08,12/09,12/11,12/12,12/15,12/16,12/18,12/19,12/30,
 # 01/01/01,02/01,03/01,19/01,20/01,22/01,
 # 03/05,03/08,03/10,03/12,03/13,03/15,03/17,
-# 03/19,03/20 Gerd Kortemeyer
+# 03/19,03/20,03/21,03/27,04/05 Gerd Kortemeyer
 
 package Apache::lonspreadsheet;
             
@@ -1093,9 +1093,17 @@ sub updatestudentassesssheet {
                        &GDBM_READER,0640)) {
 # --------------------------------------------------------- Get all assessments
 
-	my %allkeys=();
+	my %allkeys=('timestamp' => 
+                     'Timestamp of Last Transaction<br>timestamp');
         my %allassess=();
 
+        my $adduserstr='';
+        if ((&getuname($safeeval) ne $ENV{'user.name'}) ||
+            (&getudom($safeeval) ne $ENV{'user.domain'})) {
+            $adduserstr='&uname='.&getuname($safeeval).
+		'&udom='.&getudom($safeeval);
+        }
+
         map {
 	    if ($_=~/^src\_(\d+)\.(\d+)$/) {
 	       my $mapid=$1;
@@ -1108,7 +1116,8 @@ sub updatestudentassesssheet {
 			    '___'.$resid.'___'.
 			    &Apache::lonnet::declutter($srcf);
 		 $allassess{$symb}=
-    '<a href="/adm/assesscalc?usymb='.$symb.'">'.$bighash{'title_'.$id}.'</a>';
+	            '<a href="/adm/assesscalc?usymb='.$symb.$adduserstr.'">'.
+                     $bighash{'title_'.$id}.'</a>';
                  if ($stype eq 'assesscalc') {
                    map {
                        if (($_=~/^stores\_(.*)/) || ($_=~/^parameter\_(.*)/)) {
@@ -1260,7 +1269,7 @@ sub loadcourse {
 <script>
     popwin=open('','popwin','width=400,height=100');
     popwin.document.writeln('<html><body bgcolor="#FFFFFF">'+
-      '<h1>Spreadsheet Calculation Progress</h1>'+
+      '<h3>Spreadsheet Calculation Progress</h3>'+
       '<form name=popremain>'+
       '<input type=text size=35 name=remaining value=Starting></form>'+
       '</body></html>');
@@ -1498,18 +1507,21 @@ sub forcedrecalc {
     my ($uname,$udom,$stype,$usymb)=@_;
     my $key=$uname.':'.$udom.':'.$stype.':'.$usymb;
     my $time=$oldsheets{$key.'.time'};
+    if ($ENV{'form.forcerecalc'}) { return 1; }
     unless ($time) { return 1; }
     if ($stype eq 'assesscalc') {
         my $map=(split(/\_\_\_/,$usymb))[0];
         if (&checkthis('::assesscalc:',$time) ||
             &checkthis('::assesscalc:'.$map,$time) ||
             &checkthis('::assesscalc:'.$usymb,$time) ||
-            &checkthis($uname.':'.$udom.':assesscalc:',$time)) {
+            &checkthis($uname.':'.$udom.':assesscalc:',$time) ||
+            &checkthis($uname.':'.$udom.':assesscalc:'.$map,$time) ||
+            &checkthis($uname.':'.$udom.':assesscalc:'.$usymb,$time)) {
             return 1;
         } 
     } else {
         if (&checkthis('::studentcalc:',$time) || 
-            &checkthis($uname.':'.$udom.':studencalc:',$time)) {
+            &checkthis($uname.':'.$udom.':studentcalc:',$time)) {
 	    return 1;
         }
     }
@@ -1841,6 +1853,17 @@ ENDSCRIPT
     $r->print('<h1>'.
             $ENV{'course.'.$ENV{'request.course.id'}.'.description'}.'</h1>');
 
+# ---------------------------------------------------- See if user can see this
+
+    if ((&gettype($asheet) eq 'classcalc') || 
+        (&getuname($asheet) ne $ENV{'user.name'}) ||
+        (&getudom($asheet) ne $ENV{'user.domain'})) {
+        unless (&Apache::lonnet::allowed('vgr',&getcid($asheet))) {
+	    $r->print(
+           '<h1>Access Permission Denied</h1></form></body></html>');
+            return OK;
+        }
+    }
 
 # ---------------------------------------------------- See if something to save
 
@@ -1863,6 +1886,26 @@ ENDSCRIPT
 
    &tmpwrite($asheet);
 
+# ---------------------------------------------------------- Additional options
+
+    $r->print(
+ '<input type=submit name=forcerecalc value="Completely Recalculate Sheet"><p>'
+		 );
+    if (&gettype($asheet) eq 'assesscalc') {
+       $r->print ('<p><font size=+2><a href="/adm/studentcalc?uname='.
+                                               &getuname($asheet).
+                                               '&udom='.&getudom($asheet).
+                  '">Level up: Student Sheet</a></font><p>');
+    }
+    
+    if ((&gettype($asheet) eq 'studentcalc') && 
+        (&Apache::lonnet::allowed('vgr',&getcid($asheet)))) {
+       $r->print (
+                   '<p><font size=+2><a href="/adm/classcalc">'.
+                   'Level up: Course Sheet</a></font><p>');
+    }
+    
+
 # ----------------------------------------------------------------- Save dialog