version 1.1, 2003/05/16 20:55:11
|
version 1.5, 2003/05/22 21:16:35
|
Line 46 package Apache::assesscalc;
|
Line 46 package Apache::assesscalc;
|
use strict; |
use strict; |
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
use Apache::lonnet; |
use Apache::lonnet; |
|
use Apache::loncommon; |
use Apache::Spreadsheet; |
use Apache::Spreadsheet; |
use HTML::Entities(); |
use HTML::Entities(); |
use Spreadsheet::WriteExcel; |
use Spreadsheet::WriteExcel; |
Line 171 sub load_parameter_caches {
|
Line 172 sub load_parameter_caches {
|
my $id = $ENV{'course.'.$ENV{'request.course.id'}.'.num'}; |
my $id = $ENV{'course.'.$ENV{'request.course.id'}.'.num'}; |
my %Tmp = &Apache::lonnet::dump('resourcedata',$dom,$id); |
my %Tmp = &Apache::lonnet::dump('resourcedata',$dom,$id); |
while (my ($name,$value) = each(%Tmp)) { |
while (my ($name,$value) = each(%Tmp)) { |
$courseopt{$userprefix.$name}=$value; |
$courseopt{$name}=$value; |
} |
} |
} |
} |
if (! %useropt) { |
if (! %useropt) { |
Line 198 sub load_parameter_caches {
|
Line 199 sub load_parameter_caches {
|
|
|
######################################################## |
######################################################## |
######################################################## |
######################################################## |
|
|
sub ensure_current_parameter_caches { |
sub ensure_current_parameter_caches { |
my $self = shift; |
my $self = shift; |
if (! defined($current_course) || |
if (! defined($current_course) || |
Line 258 sub parmval {
|
Line 258 sub parmval {
|
# |
# |
my $symbparm = $symb.'.'.$what; |
my $symbparm = $symb.'.'.$what; |
my $mapparm = $mapname.'___(all).'.$what; |
my $mapparm = $mapname.'___(all).'.$what; |
|
my $courseprefix = $self->{'cid'}; |
my $usercourseprefix = $uname.'_'.$udom.'_'.$self->{'cid'}; |
my $usercourseprefix = $uname.'_'.$udom.'_'.$self->{'cid'}; |
# |
# |
my $seclevel = $usercourseprefix.'.['.$csec.'].'.$what; |
my $seclevel = $courseprefix.'.['.$csec.'].'.$what; |
my $seclevelr = $usercourseprefix.'.['.$csec.'].'.$symbparm; |
my $seclevelr = $courseprefix.'.['.$csec.'].'.$symbparm; |
my $seclevelm = $usercourseprefix.'.['.$csec.'].'.$mapparm; |
my $seclevelm = $courseprefix.'.['.$csec.'].'.$mapparm; |
# |
# |
my $courselevel = $usercourseprefix.'.'.$what; |
my $courselevel = $courseprefix.'.'.$what; |
my $courselevelr = $usercourseprefix.'.'.$symbparm; |
my $courselevelr = $courseprefix.'.'.$symbparm; |
my $courselevelm = $usercourseprefix.'.'.$mapparm; |
my $courselevelm = $courseprefix.'.'.$mapparm; |
|
# |
|
my $ucourselevel = $usercourseprefix.'.'.$what; |
|
my $ucourselevelr = $usercourseprefix.'.'.$symbparm; |
|
my $ucourselevelm = $usercourseprefix.'.'.$mapparm; |
# check user |
# check user |
if (defined($uname)) { |
if (defined($uname)) { |
return $useropt{$courselevelr} if (defined($useropt{$courselevelr})); |
return $useropt{$ucourselevelr} if (defined($useropt{$ucourselevelr})); |
return $useropt{$courselevelm} if (defined($useropt{$courselevelm})); |
return $useropt{$ucourselevelm} if (defined($useropt{$ucourselevelm})); |
return $useropt{$courselevel} if (defined($useropt{$courselevel})); |
return $useropt{$ucourselevel} if (defined($useropt{$ucourselevel})); |
} |
} |
# check section |
# check section |
if (defined($csec)) { |
if (defined($csec)) { |
Line 321 sub get_title {
|
Line 326 sub get_title {
|
} else { |
} else { |
$title = '<h1>'.&Apache::lonnet::gettitle($self->{'symb'})."</h1>\n"; |
$title = '<h1>'.&Apache::lonnet::gettitle($self->{'symb'})."</h1>\n"; |
} |
} |
$title .= '<h2>'.$self->{'name'}.'@'.$self->{'domain'}."</h2>\n"; |
# Look up the users identifying information |
|
# Get the users information |
|
my %userenv = &Apache::loncoursedata::GetUserName($self->{'name'}, |
|
$self->{'domain'}); |
|
my $name = |
|
join(' ',@userenv{'firstname','middlename','lastname','generation'}); |
|
$name =~ s/\s+$//; |
|
$title .= '<h2>'.$name.', '. |
|
&Apache::loncommon::aboutmewrapper($self->{'name'}.'@'.$self->{'domain'}, |
|
$self->{'name'},$self->{'domain'}). |
|
"</h2>\n"; |
$title .= '<h3>'.localtime(time).'</h3>'; |
$title .= '<h3>'.localtime(time).'</h3>'; |
# |
# |
return $title; |
return $title; |
Line 479 sub compute {
|
Line 494 sub compute {
|
if (tie(%parmhash,'GDBM_File', |
if (tie(%parmhash,'GDBM_File', |
$self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) { |
$self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) { |
foreach my $parmname (keys(%parameters)) { |
foreach my $parmname (keys(%parameters)) { |
my $value = $self->parmval($parmname); |
my $value = $self->parmval($parmname); |
$parameters{$parmname} =$value; |
$parameters{$parmname} =$value; |
} |
} |
untie(%parmhash); |
untie(%parmhash); |
Line 508 sub compute {
|
Line 523 sub compute {
|
my %f=$self->formulas(); |
my %f=$self->formulas(); |
my %c; |
my %c; |
# |
# |
|
# Check for blackout requirements |
|
if ((!exists($ENV{'request.role.adv'}) || !$ENV{'request.role.adv'})) { |
|
while (my ($parm,$value) = each(%parameters)) { |
|
last if ($self->blackout()); |
|
next if ($parm !~ /^(parameter_.*)_problemstatus$/); |
|
next if ($parameters{$1.'_answerdate'}<time); |
|
if (lc($value) eq 'no') { |
|
# We must blackout this sheet |
|
$self->blackout(1); |
|
} |
|
} |
|
} |
|
# |
|
# Move the parameters into the spreadsheet |
while (my ($parm,$value) = each(%parameters)) { |
while (my ($parm,$value) = each(%parameters)) { |
my $cell = 'A'.$self->get_row_number_from_key($parm); |
my $cell = 'A'.$self->get_row_number_from_key($parm); |
$f{$cell} = $parm; |
$f{$cell} = $parm; |
$c{$parm} = $value; |
$c{$parm} = ''; |
|
if ($value ne '') { |
|
$c{$parm} = '"'.$value.'"'; |
|
} |
} |
} |
$self->formulas(%f); |
$self->formulas(%f); |
$self->constants(%c); |
$self->constants(%c); |
Line 593 These rows are saved in the students dir
|
Line 625 These rows are saved in the students dir
|
######################################################## |
######################################################## |
sub load_cached_export_rows { |
sub load_cached_export_rows { |
%Exportrows = undef; |
%Exportrows = undef; |
&Apache::lonnet::logthis("loading cached assess sheets for $current_name $current_domain"); |
|
my @tmp = &Apache::lonnet::dump('nohist_calculatedsheets_'. |
my @tmp = &Apache::lonnet::dump('nohist_calculatedsheets_'. |
$ENV{'request.course.id'}, |
$ENV{'request.course.id'}, |
$current_domain,$current_name,undef); |
$current_domain,$current_name,undef); |
Line 635 spreadsheet only if necessary.
|
Line 666 spreadsheet only if necessary.
|
sub export_data { |
sub export_data { |
my $self = shift; |
my $self = shift; |
my $symb = $self->{'symb'}; |
my $symb = $self->{'symb'}; |
if (! exists($Exportrows{$symb}) || ! defined($Exportrows{$symb}) || |
if (! exists($ENV{'request.role.adv'}) || ! $ENV{'request.role.adv'} || |
|
! exists($Exportrows{$symb}) || ! defined($Exportrows{$symb}) || |
! $self->check_expiration_time($Exportrows{$symb}->{'time'}) || |
! $self->check_expiration_time($Exportrows{$symb}->{'time'}) || |
! exists($Exportrows{$symb}->{$self->{'filename'}}) || |
! exists($Exportrows{$symb}->{$self->{'filename'}}) || |
! defined($Exportrows{$symb}->{$self->{'filename'}})) { |
! defined($Exportrows{$symb}->{$self->{'filename'}})) { |