Data not available: '.
@@ -1768,7 +1659,7 @@ sub updateclasssheet {
}
if ($changed) { &setformulas($safeeval,%f); }
#
- &setmaxrow($safeeval,$maxrow);
+ $sheetdata->{'maxrow'} = $maxrow;
&setrowlabels($safeeval,%currentlist);
}
@@ -1889,7 +1780,7 @@ sub updatestudentassesssheet {
}
}
if ($changed) { &setformulas($safeeval,%f); }
- &setmaxrow($safeeval,$maxrow);
+ $sheetdata->{'maxrow'} = $maxrow;
&setrowlabels($safeeval,%current);
#
undef %current;
@@ -2054,10 +1945,9 @@ sub loadassessment {
# This is dumb. It is also necessary :(
my @oldkeys=keys %returnhash;
#
- foreach (@oldkeys) {
- my $name=$_;
- my $value=$returnhash{$_};
- delete $returnhash{$_};
+ foreach my $name (@oldkeys) {
+ my $value=$returnhash{$name};
+ delete $returnhash{$name};
$name=~s/\_/\./g;
$returnhash{$name}=$value;
}
@@ -2066,35 +1956,28 @@ sub loadassessment {
undef %useropt;
my $userprefix=$uname.'_'.$udom.'_';
-
+
unless ($uhome eq 'no_host') {
# Get coursedata
unless ((time-$courserdatas{$cid.'.last_cache'})<240) {
- my $reply=&Apache::lonnet::reply('dump:'.$cdom.':'.$cnum.
- ':resourcedata',$chome);
- if ($reply!~/^error\:/) {
- $courserdatas{$cid}=$reply;
- $courserdatas{$cid.'.last_cache'}=time;
- }
+ my %Tmp = &Apache::lonnet::dump('resourcedata',$cdom,$cnum);
+ $courserdatas{$cid}=\%Tmp;
+ $courserdatas{$cid.'.last_cache'}=time;
}
- foreach (split(/\&/,$courserdatas{$cid})) {
- my ($name,$value)=split(/\=/,$_);
- $courseopt{$userprefix.&Apache::lonnet::unescape($name)}=
- &Apache::lonnet::unescape($value);
+ while (my ($name,$value) = each(%{$courserdatas{$cid}})) {
+ $courseopt{$userprefix.$name}=$value;
}
# Get userdata (if present)
- unless ((time-$userrdatas{$uname.'___'.$udom.'.last_cache'})<240) {
- my $reply=
- &Apache::lonnet::reply('dump:'.$udom.':'.$uname.':resourcedata',$uhome);
- if ($reply!~/^error\:/) {
- $userrdatas{$uname.'___'.$udom}=$reply;
- $userrdatas{$uname.'___'.$udom.'.last_cache'}=time;
- }
+ unless ((time-$userrdatas{$uname.'@'.$udom.'.last_cache'})<240) {
+ my %Tmp = &Apache::lonnet::dump('resourcedata',$udom,$uname);
+ $userrdatas{$cid} = \%Tmp;
+ # Most of the time the user does not have a 'resourcedata.db'
+ # file. We need to cache that we got nothing instead of bothering
+ # with requesting it every time.
+ $userrdatas{$uname.'@'.$udom.'.last_cache'}=time;
}
- foreach (split(/\&/,$userrdatas{$uname.'___'.$udom})) {
- my ($name,$value)=split(/\=/,$_);
- $useropt{$userprefix.&Apache::lonnet::unescape($name)}=
- &Apache::lonnet::unescape($value);
+ while (my ($name,$value) = each(%{$userrdatas{$cid}})) {
+ $useropt{$userprefix.$name}=$value;
}
}
# now courseopt, useropt initialized for this user and course
@@ -2112,7 +1995,7 @@ sub loadassessment {
#
my %c=();
if (tie(%parmhash,'GDBM_File',
- &getcoursefilename($safeeval).'_parms.db',&GDBM_READER(),0640)) {
+ $sheetdata->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) {
my %f=&getformulas($safeeval);
foreach (keys(%f)) {
next if ($_!~/^A/);
@@ -2281,8 +2164,8 @@ sub exportsheet {
&readsheet($thissheet,$sheetdata,$fn);
&updatesheet($thissheet,$sheetdata);
&loadrows($thissheet,$sheetdata);
- &calcsheet($thissheet,$sheetdata);
- @exportarr=&exportdata($thissheet,$sheetdata);
+ &calcsheet($thissheet);
+ @exportarr=&exportdata($thissheet);
#
# Store now
#
@@ -2421,12 +2304,14 @@ sub cachedssheets {
sub handler {
my $r=shift;
+ # Check this server
my $loaderror=&Apache::lonnet::overloaderror($r);
if ($loaderror) { return $loaderror; }
+ # Check the course homeserver
$loaderror= &Apache::lonnet::overloaderror($r,
$ENV{'course.'.$ENV{'request.course.id'}.'.home'});
if ($loaderror) { return $loaderror; }
-
+
if ($r->header_only) {
$r->content_type('text/html');
$r->send_http_header;
@@ -2523,7 +2408,7 @@ ENDSCRIPT
}
# Read new sheet or modified worksheet
$r->uri=~/\/(\w+)$/;
- my ($asheet,$asheetdata)=&makenewsheet($aname,$adom,$1,$ENV{'form.usymb'});
+ my ($sheet,$sheetdata)=&makenewsheet($aname,$adom,$1,$ENV{'form.usymb'});
#
# If a new formula had been entered, go from work copy
if ($ENV{'form.unewfield'}) {
@@ -2531,24 +2416,20 @@ ENDSCRIPT
$ENV{'form.unewformula'}=~s/\'/\"/g;
$r->print('New formula: '.$ENV{'form.unewfield'}.'='.
$ENV{'form.unewformula'}.'
');
- &setfilename($asheet,$ENV{'form.ufn'});
- &tmpread($asheet,$ENV{'form.unewfield'},$ENV{'form.unewformula'});
+ $sheetdata->{'filename'} = $ENV{'form.ufn'};
+ &tmpread($sheet,$sheetdata,
+ $ENV{'form.unewfield'},$ENV{'form.unewformula'});
} elsif ($ENV{'form.saveas'}) {
- &setfilename($asheet,$ENV{'form.ufn'});
- &tmpread($asheet);
+ $sheetdata->{'filename'} = $ENV{'form.ufn'};
+ &tmpread($sheet,$sheetdata);
} else {
- &readsheet($asheet,$asheetdata,$ENV{'form.ufn'});
+ &readsheet($sheet,$sheetdata,$ENV{'form.ufn'});
}
# Print out user information
- unless ($asheetdata->{'sheettype'} eq 'classcalc') {
- $r->print('
User: '.$asheetdata->{'uname'}.
- '
Domain: '.$asheetdata->{'udom'});
-# if (&getcsec($asheet) eq '-1') {
-# $r->print('
'.
-# 'Not a student in this course
');
-# } else {
- $r->print('
Section/Group: '.$asheetdata->{'csec'});
-# }
+ unless ($sheetdata->{'sheettype'} eq 'classcalc') {
+ $r->print('User: '.$sheetdata->{'uname'}.
+ '
Domain: '.$sheetdata->{'udom'});
+ $r->print('
Section/Group: '.$sheetdata->{'csec'});
if ($ENV{'form.usymb'}) {
$r->print('
Assessment: '.
$ENV{'form.usymb'}.'');
@@ -2556,10 +2437,10 @@ ENDSCRIPT
}
#
# Check user permissions
- if (($asheetdata->{'sheettype'} eq 'classcalc' ) ||
- ($asheetdata->{'uname'} ne $ENV{'user.name'} ) ||
- ($asheetdata->{'udom'} ne $ENV{'user.domain'})) {
- unless (&Apache::lonnet::allowed('vgr',$asheetdata->{'cid'})) {
+ if (($sheetdata->{'sheettype'} eq 'classcalc' ) ||
+ ($sheetdata->{'uname'} ne $ENV{'user.name'} ) ||
+ ($sheetdata->{'udom'} ne $ENV{'user.domain'})) {
+ unless (&Apache::lonnet::allowed('vgr',$sheetdata->{'cid'})) {
$r->print('
Access Permission Denied
'.
'