--- loncom/interface/Attic/lonspreadsheet.pm 2001/03/20 21:34:34 1.48 +++ loncom/interface/Attic/lonspreadsheet.pm 2001/04/09 17:59:04 1.54 @@ -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,04/09 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; } } @@ -1799,6 +1811,18 @@ ENDSCRIPT $r->rflush(); +# ---------------------------------------------------------------- Full recalc? + + + if ($ENV{'form.forcerecalc'}) { + $r->print('<h4>Completely Recalculating Sheet ...</h4>'); + undef %spreadsheets; + undef %courserdatas; + undef %userrdatas; + undef %defaultsheets; + undef %updatedata; + } + # ---------------------------------------- Read new sheet or modified worksheet $r->uri=~/\/(\w+)$/; @@ -1841,6 +1865,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 +1898,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