version 1.110, 2002/09/16 20:09:45
|
version 1.114, 2002/09/30 18:47:43
|
Line 62 use GDBM_File;
|
Line 62 use GDBM_File;
|
use HTML::TokeParser; |
use HTML::TokeParser; |
use Apache::lonhtmlcommon; |
use Apache::lonhtmlcommon; |
# |
# |
|
# Caches for coursewide information |
|
# |
|
my %Section; |
|
|
|
# |
# Caches for previously calculated spreadsheets |
# Caches for previously calculated spreadsheets |
# |
# |
|
|
Line 852 sub sett {
|
Line 857 sub sett {
|
} |
} |
# Deal with the normal cells |
# Deal with the normal cells |
foreach (keys(%f)) { |
foreach (keys(%f)) { |
if (($f{$_}) && ($_!~/template\_/)) { |
if (exists($f{$_}) && ($_!~/template\_/)) { |
my $matches=($_=~/^$pattern(\d+)/); |
my $matches=($_=~/^$pattern(\d+)/); |
if (($matches) && ($1)) { |
if (($matches) && ($1)) { |
unless ($f{$_}=~/^\!/) { |
unless ($f{$_}=~/^\!/) { |
Line 1226 sub rown {
|
Line 1231 sub rown {
|
if ($vl eq '') { |
if ($vl eq '') { |
$vl='<font size=+2 color='.$bgcolor.'>#</font>'; |
$vl='<font size=+2 color='.$bgcolor.'>#</font>'; |
} |
} |
$rowdata.='<td bgcolor='.$bgcolor.'>'. |
$rowdata.='<td bgcolor='.$bgcolor.'>'; |
'<a href="javascript:celledit('.$fm.');">'.$vl.'</a></td>'; |
if ($ENV{'request.role'} =~ /^st\./) { |
|
$rowdata.=$vl; |
|
} else { |
|
$rowdata.='<a href="javascript:celledit('.$fm.');">'. |
|
$vl.'</a>'; |
|
} |
|
$rowdata.='</td>'; |
} else { |
} else { |
$rowdata.='<td bgcolor='.$bgcolor.'> '.$vl.' </td>'; |
$rowdata.='<td bgcolor='.$bgcolor.'> '.$vl.' </td>'; |
} |
} |
Line 1299 sub outsheet {
|
Line 1310 sub outsheet {
|
push (@sortby, $safeeval->reval('$f{"A'.$row.'"}')); |
push (@sortby, $safeeval->reval('$f{"A'.$row.'"}')); |
push (@sortidx, $row-1); |
push (@sortidx, $row-1); |
} |
} |
@sortidx=sort { $sortby[$a] cmp $sortby[$b]; } @sortidx; |
@sortidx=sort { lc($sortby[$a]) cmp lc($sortby[$b]); } @sortidx; |
# |
# |
# Determine the type of child spreadsheets |
# Determine the type of child spreadsheets |
my $what='Student'; |
my $what='Student'; |
Line 1461 sub makenewsheet {
|
Line 1472 sub makenewsheet {
|
$sheetdata{'sheettype'} = $stype; |
$sheetdata{'sheettype'} = $stype; |
$sheetdata{'usymb'} = $usymb; |
$sheetdata{'usymb'} = $usymb; |
$sheetdata{'cid'} = $ENV{'request.course.id'}; |
$sheetdata{'cid'} = $ENV{'request.course.id'}; |
$sheetdata{'csec'} = &Apache::lonnet::usection |
$sheetdata{'csec'} = $Section{$uname.':'.$udom}; |
($udom,$uname,$ENV{'request.course.id'}); |
|
$sheetdata{'coursefilename'} = $ENV{'request.course.fn'}; |
$sheetdata{'coursefilename'} = $ENV{'request.course.fn'}; |
$sheetdata{'cnum'} = $ENV{'course.'.$ENV{'request.course.id'}.'.num'}; |
$sheetdata{'cnum'} = $ENV{'course.'.$ENV{'request.course.id'}.'.num'}; |
$sheetdata{'cdom'} = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}; |
$sheetdata{'cdom'} = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}; |
Line 1670 sub updateclasssheet {
|
Line 1680 sub updateclasssheet {
|
my $cid =$sheetdata->{'cid'}; |
my $cid =$sheetdata->{'cid'}; |
my $chome =$sheetdata->{'chome'}; |
my $chome =$sheetdata->{'chome'}; |
# |
# |
|
%Section = (); |
|
|
|
# |
# Read class list and row labels |
# Read class list and row labels |
my %classlist; |
my %classlist; |
my @tmp = &Apache::lonnet::dump('classlist',$cdom,$cnum); |
my @tmp = &Apache::lonnet::dump('classlist',$cdom,$cnum); |
Line 1693 sub updateclasssheet {
|
Line 1706 sub updateclasssheet {
|
my ($studentName,$studentDomain)=split(/\:/,$student); |
my ($studentName,$studentDomain)=split(/\:/,$student); |
my $studentSection=&Apache::lonnet::usection($studentDomain, |
my $studentSection=&Apache::lonnet::usection($studentDomain, |
$studentName,$cid); |
$studentName,$cid); |
|
$Section{$studentName.':'.$studentDomain} = $studentSection; |
# if ($studentSection==-1) { |
# if ($studentSection==-1) { |
# unless ($ENV{'form.showcsv'}) { |
# unless ($ENV{'form.showcsv'}) { |
# $rowlabel='<font color=red>Data not available: '. |
# $rowlabel='<font color=red>Data not available: '. |
Line 2082 sub loadassessment {
|
Line 2096 sub loadassessment {
|
&Apache::lonnet::reply('dump:'.$udom.':'.$uname.':resourcedata',$uhome); |
&Apache::lonnet::reply('dump:'.$udom.':'.$uname.':resourcedata',$uhome); |
if ($reply!~/^error\:/) { |
if ($reply!~/^error\:/) { |
$userrdatas{$uname.'___'.$udom}=$reply; |
$userrdatas{$uname.'___'.$udom}=$reply; |
$userrdatas{$uname.'___'.$udom.'.last_cache'}=time; |
|
} |
} |
|
# 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})) { |
foreach (split(/\&/,$userrdatas{$uname.'___'.$udom})) { |
my ($name,$value)=split(/\=/,$_); |
my ($name,$value)=split(/\=/,$_); |
Line 2412 sub cachedssheets {
|
Line 2429 sub cachedssheets {
|
# Interactive call to screen |
# Interactive call to screen |
# |
# |
# |
# |
|
|
|
|
sub handler { |
sub handler { |
my $r=shift; |
my $r=shift; |
|
|
my $loaderror=&Apache::lonnet::overloaderror($r); |
my $loaderror=&Apache::lonnet::overloaderror($r); |
if ($loaderror) { return $loaderror; } |
if ($loaderror) { return $loaderror; } |
$loaderror= |
$loaderror= &Apache::lonnet::overloaderror($r, |
&Apache::lonnet::overloaderror($r, |
$ENV{'course.'.$ENV{'request.course.id'}.'.home'}); |
$ENV{'course.'.$ENV{'request.course.id'}.'.home'}); |
if ($loaderror) { return $loaderror; } |
if ($loaderror) { return $loaderror; } |
|
|
|
if ($r->header_only) { |
if ($r->header_only) { |
$r->content_type('text/html'); |
$r->content_type('text/html'); |
Line 2442 sub handler {
|
Line 2456 sub handler {
|
# Get query string for limited number of parameters |
# Get query string for limited number of parameters |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['uname','udom','usymb','ufn']); |
['uname','udom','usymb','ufn']); |
|
if ($ENV{'request.role'} =~ /^st\./) { |
|
delete $ENV{'form.unewfield'} if (exists($ENV{'form.unewfield'})); |
|
delete $ENV{'form.unewformula'} if (exists($ENV{'form.unewformula'})); |
|
} |
if (($ENV{'form.usymb'}=~/^\_(\w+)/) && (!$ENV{'form.ufn'})) { |
if (($ENV{'form.usymb'}=~/^\_(\w+)/) && (!$ENV{'form.ufn'})) { |
$ENV{'form.ufn'}='default_'.$1; |
$ENV{'form.ufn'}='default_'.$1; |
} |
} |
Line 2468 sub handler {
|
Line 2486 sub handler {
|
$r->send_http_header; |
$r->send_http_header; |
# Screen output |
# Screen output |
$r->print('<html><head><title>LON-CAPA Spreadsheet</title>'); |
$r->print('<html><head><title>LON-CAPA Spreadsheet</title>'); |
$r->print(<<ENDSCRIPT); |
if ($ENV{'request.role'} !~ /^st\./) { |
|
$r->print(<<ENDSCRIPT); |
<script language="JavaScript"> |
<script language="JavaScript"> |
|
|
function celledit(cn,cf) { |
function celledit(cn,cf) { |
Line 2494 sub handler {
|
Line 2513 sub handler {
|
|
|
</script> |
</script> |
ENDSCRIPT |
ENDSCRIPT |
|
} |
$r->print('</head>'.&Apache::loncommon::bodytag('Grades Spreadsheet'). |
$r->print('</head>'.&Apache::loncommon::bodytag('Grades Spreadsheet'). |
'<form action="'.$r->uri.'" name=sheet method=post>'); |
'<form action="'.$r->uri.'" name=sheet method=post>'); |
$r->print(&hiddenfield('uname',$ENV{'form.uname'}). |
$r->print(&hiddenfield('uname',$ENV{'form.uname'}). |