version 1.52, 2006/04/06 20:24:13
|
version 1.61, 2016/03/02 14:14:21
|
Line 156 sub initialize {
|
Line 156 sub initialize {
|
if (! defined($navmap)) { |
if (! defined($navmap)) { |
$navmap = Apache::lonnavmaps::navmap->new(); |
$navmap = Apache::lonnavmaps::navmap->new(); |
} |
} |
if (!defined($navmap)) { |
if ((!defined($navmap)) || (!ref($navmap))) { |
&Apache::lonnet::logthis('assesscalc:Can not open Coursemap'); |
&Apache::lonnet::logthis('assesscalc:Can not open Coursemap'); |
} |
} |
&Apache::loncoursedata::clear_internal_caches(); |
&Apache::loncoursedata::clear_internal_caches(); |
Line 174 sub initialize {
|
Line 174 sub initialize {
|
######################################################## |
######################################################## |
######################################################## |
######################################################## |
sub initialize_package { |
sub initialize_package { |
my ($sname,$sdomain,$in_navmap) = @_; |
my ($sname,$sdomain,$in_navmap,$calling_sheet) = @_; |
$current_name = $sname; |
$current_name = $sname; |
$current_domain = $sdomain; |
$current_domain = $sdomain; |
$navmap = $in_navmap; |
$navmap = $in_navmap; |
Line 185 sub initialize_package {
|
Line 185 sub initialize_package {
|
undef(%courseopt); |
undef(%courseopt); |
} |
} |
&load_cached_export_rows(); |
&load_cached_export_rows(); |
&load_parameter_caches(); |
&load_parameter_caches($calling_sheet); |
&Apache::loncoursedata::clear_internal_caches(); |
&Apache::loncoursedata::clear_internal_caches(); |
} |
} |
|
|
Line 202 sub initialize_package {
|
Line 202 sub initialize_package {
|
######################################################## |
######################################################## |
######################################################## |
######################################################## |
sub load_parameter_caches { |
sub load_parameter_caches { |
|
my ($calling_sheet) = @_; |
my $userprefix = $current_name.':'.$current_domain.'_'; |
my $userprefix = $current_name.':'.$current_domain.'_'; |
$userprefix =~ s/:/_/g; |
$userprefix =~ s/:/_/g; |
# |
# |
Line 234 sub load_parameter_caches {
|
Line 235 sub load_parameter_caches {
|
if (! %userdata) { |
if (! %userdata) { |
%userdata = &Apache::loncoursedata::get_current_state($current_name, |
%userdata = &Apache::loncoursedata::get_current_state($current_name, |
$current_domain); |
$current_domain); |
|
my ($tmp) = %userdata; |
|
if ($tmp =~ /^error:(.*)/) { |
|
$calling_sheet->set_calcerror($1); |
|
} |
$userdata{'loadtime'} = time; |
$userdata{'loadtime'} = time; |
} |
} |
return; |
return; |
Line 272 sub ensure_current_caches {
|
Line 277 sub ensure_current_caches {
|
undef(%useropt); |
undef(%useropt); |
undef(%userdata); |
undef(%userdata); |
} |
} |
&load_parameter_caches(); |
&load_parameter_caches($self); |
} |
} |
|
|
################################################## |
################################################## |
Line 302 this user and course.
|
Line 307 this user and course.
|
################################################## |
################################################## |
sub parmval { |
sub parmval { |
my $self = shift; |
my $self = shift; |
my ($what,$symb,$uname,$udom,$csec,$recurse,$mapname,$id,$fn,$cgroup)=@_; |
my ($what,$symb,$uname,$udom,$csec,$recurse,$mapname,$id,$fn,$groups)=@_; |
$uname = $self->{'name'} if (! defined($uname)); |
$uname = $self->{'name'} if (! defined($uname)); |
$udom = $self->{'domain'} if (! defined($udom)); |
$udom = $self->{'domain'} if (! defined($udom)); |
$csec = $self->{'section'} if (! defined($csec)); |
$csec = $self->{'section'} if (! defined($csec)); |
$cgroup = $self->{'group'} if (! defined($cgroup)); |
$groups = $self->{'groups'} if (! defined($groups)); |
$symb = $self->{'symb'} if (! defined($symb)); |
$symb = $self->{'symb'} if (! defined($symb)); |
# |
# |
my $result=''; |
my $result=''; |
|
my @recurseup; |
# |
# |
# This should be a |
# This should be a |
if (!defined($mapname) || !defined($id) || !defined($fn)) { |
if (!defined($mapname) || !defined($id) || !defined($fn)) { |
($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb); |
($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb); |
|
$mapname = &Apache::lonnet::deversion($mapname); |
} |
} |
# Cascading lookup scheme |
# Cascading lookup scheme |
my $rwhat=$what; |
my $rwhat=$what; |
Line 321 sub parmval {
|
Line 328 sub parmval {
|
$what =~ s/\_([^\_]+)$/\.$1/; |
$what =~ s/\_([^\_]+)$/\.$1/; |
# |
# |
my $symbparm = $symb.'.'.$what; |
my $symbparm = $symb.'.'.$what; |
|
my $recurseparm=$mapname.'___(rec).'.$what; |
my $mapparm = $mapname.'___(all).'.$what; |
my $mapparm = $mapname.'___(all).'.$what; |
my $courseprefix = $self->{'cid'}; |
my $courseprefix = $self->{'cid'}; |
my $usercourseprefix = $uname.'_'.$udom.'_'.$self->{'cid'}; |
my $usercourseprefix = $uname.'_'.$udom.'_'.$self->{'cid'}; |
# |
# |
my $grplevel=$courseprefix.'.['.$cgroup.'].'.$what; |
|
my $grplevelr=$courseprefix.'.['.$cgroup.'].'.$symbparm; |
|
my $grplevelm=$courseprefix.'.['.$cgroup.'].'.$mapparm; |
|
# |
|
my $seclevel = $courseprefix.'.['.$csec.'].'.$what; |
my $seclevel = $courseprefix.'.['.$csec.'].'.$what; |
my $seclevelr = $courseprefix.'.['.$csec.'].'.$symbparm; |
my $seclevelr = $courseprefix.'.['.$csec.'].'.$symbparm; |
|
my $secleveli = $courseprefix.'.['.$csec.'].'.$recurseparm; |
my $seclevelm = $courseprefix.'.['.$csec.'].'.$mapparm; |
my $seclevelm = $courseprefix.'.['.$csec.'].'.$mapparm; |
# |
# |
my $courselevel = $courseprefix.'.'.$what; |
my $courselevel = $courseprefix.'.'.$what; |
my $courselevelr = $courseprefix.'.'.$symbparm; |
my $courselevelr = $courseprefix.'.'.$symbparm; |
|
my $courseleveli = $courseprefix.'.'.$recurseparm; |
my $courselevelm = $courseprefix.'.'.$mapparm; |
my $courselevelm = $courseprefix.'.'.$mapparm; |
# |
# |
my $ucourselevel = $usercourseprefix.'.'.$what; |
my $ucourselevel = $usercourseprefix.'.'.$what; |
my $ucourselevelr = $usercourseprefix.'.'.$symbparm; |
my $ucourselevelr = $usercourseprefix.'.'.$symbparm; |
|
my $ucourseleveli = $usercourseprefix.'.'.$recurseparm; |
my $ucourselevelm = $usercourseprefix.'.'.$mapparm; |
my $ucourselevelm = $usercourseprefix.'.'.$mapparm; |
# check user |
# check user |
if (defined($uname)) { |
if (defined($uname)) { |
return $useropt{$ucourselevelr} if (defined($useropt{$ucourselevelr})); |
return $useropt{$ucourselevelr} if (defined($useropt{$ucourselevelr})); |
return $useropt{$ucourselevelm} if (defined($useropt{$ucourselevelm})); |
return $useropt{$ucourselevelm} if (defined($useropt{$ucourselevelm})); |
|
return $useropt{$ucourseleveli} if (defined($useropt{$ucourseleveli})); |
|
unless (@recurseup > 0) { |
|
@recurseup = &Apache::lonnet::get_map_hierarchy($mapname); |
|
} |
|
foreach my $item (@recurseup) { |
|
my $norecursechk=$usercourseprefix.'.'.$item.'___(all).'.$what; |
|
last if (defined($useropt{$norecursechk})); |
|
my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what; |
|
return $useropt{$recursechk} if (defined($useropt{$recursechk})); |
|
} |
return $useropt{$ucourselevel} if (defined($useropt{$ucourselevel})); |
return $useropt{$ucourselevel} if (defined($useropt{$ucourselevel})); |
} |
} |
# check group |
# check groups |
if (defined($cgroup)) { |
if (defined($groups) && ref($groups) eq 'ARRAY') { |
return $courseopt{$grplevelr} if (defined($courseopt{$grplevelr})); |
foreach my $group (@{$groups}) { |
return $courseopt{$grplevelm} if (defined($courseopt{$grplevelm})); |
foreach my $level ($symbparm,$mapparm,$recurseparm,$what) { |
return $courseopt{$grplevel} if (defined($courseopt{$grplevel})); |
my $item = $courseprefix.'.['.$group.'].'.$level; |
|
if ($level eq $what) { |
|
unless (@recurseup > 0) { |
|
@recurseup = &Apache::lonnet::get_map_hierarchy($mapname); |
|
} |
|
foreach my $item (@recurseup) { |
|
my $norecursechk=$courseprefix.'.['.$group.'].'.$item.'___(all).'.$what; |
|
last if (defined($courseopt{$norecursechk})); |
|
my $recursechk=$courseprefix.'.['.$group.'].'.$item.'___(rec).'.$what; |
|
return $courseopt{$recursechk} if (defined($courseopt{$recursechk})); |
|
} |
|
} |
|
if (defined($courseopt{$item})) { |
|
return $courseopt{$item}; |
|
} |
|
} |
|
} |
} |
} |
# check section |
# check section |
if (defined($csec)) { |
if (defined($csec)) { |
return $courseopt{$seclevelr} if (defined($courseopt{$seclevelr})); |
return $courseopt{$seclevelr} if (defined($courseopt{$seclevelr})); |
return $courseopt{$seclevelm} if (defined($courseopt{$seclevelm})); |
return $courseopt{$seclevelm} if (defined($courseopt{$seclevelm})); |
|
return $courseopt{$secleveli} if (defined($courseopt{$secleveli})); |
|
unless (@recurseup > 0) { |
|
@recurseup = &Apache::lonnet::get_map_hierarchy($mapname); |
|
} |
|
foreach my $item (@recurseup) { |
|
my $norecursechk=$courseprefix.'.['.$csec.'].'.$item.'___(all).'.$what; |
|
last if (defined($courseopt{$norecursechk})); |
|
my $recursechk=$courseprefix.'.['.$csec.'].'.$item.'___(rec).'.$what; |
|
return $courseopt{$recursechk} if (defined($courseopt{$secleveli})); |
|
} |
return $courseopt{$seclevel} if (defined($courseopt{$seclevel})); |
return $courseopt{$seclevel} if (defined($courseopt{$seclevel})); |
} |
} |
# |
# |
Line 369 sub parmval {
|
Line 412 sub parmval {
|
return $thisparm if (defined($thisparm)); |
return $thisparm if (defined($thisparm)); |
# check more course |
# check more course |
return $courseopt{$courselevelm} if (defined($courseopt{$courselevelm})); |
return $courseopt{$courselevelm} if (defined($courseopt{$courselevelm})); |
|
return $courseopt{$courseleveli} if (defined($courseopt{$courseleveli})); |
|
unless (@recurseup > 0) { |
|
@recurseup = &Apache::lonnet::get_map_hierarchy($mapname); |
|
} |
|
foreach my $item (@recurseup) { |
|
my $norecursechk=$courseprefix.'.'.$item.'___(all).'.$what; |
|
last if (defined($courseopt{$norecursechk})); |
|
my $recursechk=$courseprefix.'.'.$item.'___(rec).'.$what; |
|
return $courseopt{$recursechk} if (defined($courseopt{$recursechk})); |
|
} |
return $courseopt{$courselevel} if (defined($courseopt{$courselevel})); |
return $courseopt{$courselevel} if (defined($courseopt{$courselevel})); |
|
|
# Cascade Up |
# Cascade Up |
Line 382 sub parmval {
|
Line 435 sub parmval {
|
my $newwhat=$rwhat; |
my $newwhat=$rwhat; |
$newwhat=~s/\Q$space\E/$part/; |
$newwhat=~s/\Q$space\E/$part/; |
my $partgeneral=$self->parmval($newwhat,$symb,$uname,$udom,$csec,1, |
my $partgeneral=$self->parmval($newwhat,$symb,$uname,$udom,$csec,1, |
$mapname,$id,$fn); |
$mapname,$id,$fn,$groups); |
if (defined($partgeneral)) { return $partgeneral; } |
if (defined($partgeneral)) { return $partgeneral; } |
} |
} |
if ($recurse) { return undef; } |
if ($recurse) { return undef; } |
Line 481 END
|
Line 534 END
|
$r->print($tableheader); |
$r->print($tableheader); |
# |
# |
# Print out template row |
# Print out template row |
$r->print('<tr><td>Template</td><td> </td>'. |
$r->print('<tr><td>'.&mt('Template').'</td><td> </td>'. |
$self->html_template_row($num_uneditable,$importcolor). |
$self->html_template_row($num_uneditable,$importcolor). |
"</tr>\n"); |
"</tr>\n"); |
# |
# |
# Print out summary/export row |
# Print out summary/export row |
$r->print('<tr><td>Export</td><td>0</td>'. |
$r->print('<tr><td>'.&mt('Export').'</td><td>0</td>'. |
$self->html_export_row($exportcolor)."</tr>\n"); |
$self->html_export_row($exportcolor)."</tr>\n"); |
# |
# |
# Prepare to output rows |
# Prepare to output rows |
$tableheader =<<"END"; |
$tableheader = |
<table border="2"> |
'<table border="2">'. |
<tr><th>row</th><th>Item</th> |
'<tr><th>'.&mt('Row').'</th>'. |
END |
'<th>'.&mt('Item').'</th>'; |
foreach (split(//,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')){ |
foreach (split(//,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')){ |
if ($label_num<$num_uneditable) { |
if ($label_num<$num_uneditable) { |
$tableheader.='<th bgcolor="'.$importcolor.'">'; |
$tableheader.='<th bgcolor="'.$importcolor.'">'; |
Line 540 sub assess_html_row {
|
Line 593 sub assess_html_row {
|
$row_html .= &Apache::Spreadsheet::html_uneditable_cell($cell, |
$row_html .= &Apache::Spreadsheet::html_uneditable_cell($cell, |
'#FFDDDD'); |
'#FFDDDD'); |
} else { |
} else { |
$row_html .= '<td bgcolor="#EOFFDD">'; |
$row_html .= '<td bgcolor="#E0FFDD">'; |
$row_html .= &Apache::Spreadsheet::html_editable_cell($cell, |
$row_html .= &Apache::Spreadsheet::html_editable_cell($cell, |
'#E0FFDD',1); |
'#E0FFDD',1); |
} |
} |
Line 643 sub get_parameter_values {
|
Line 696 sub get_parameter_values {
|
if (tie(%parmhash,'GDBM_File', |
if (tie(%parmhash,'GDBM_File', |
$self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) { |
$self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) { |
my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($self->{'symb'}); |
my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($self->{'symb'}); |
|
$mapname = &Apache::lonnet::deversion($mapname); |
foreach my $parmname (@Parameters) { |
foreach my $parmname (@Parameters) { |
my $value = $self->parmval($parmname,$self->{'symb'}, |
my $value = $self->parmval($parmname,$self->{'symb'}, |
$self->{'name'},$self->{'domain'}, |
$self->{'name'},$self->{'domain'}, |
$self->{'section'},undef, |
$self->{'section'},undef, |
$mapname,$id,$fn); |
$mapname,$id,$fn,$self->{'groups'}); |
$parameters{$parmname} =$value; |
$parameters{$parmname} =$value; |
} |
} |
untie(%parmhash); |
untie(%parmhash); |
Line 844 sub sett {
|
Line 898 sub sett {
|
# Replace 'A0' with the value from 'A0' |
# Replace 'A0' with the value from 'A0' |
$t{$cell}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$sheet_values\{\'$2\'\}/g; |
$t{$cell}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$sheet_values\{\'$2\'\}/g; |
# Replace parameters |
# Replace parameters |
$t{$cell}=~s/(^|[^\"\'])\[([^\]]+)\]/$1.$self->expandnamed($2)/ge; |
$t{$cell}=~s/(^|[^\"\'])\[([^\]]+)\]/$1.$self->expandnamed($2)/sge; |
} |
} |
} |
} |
# |
# |
Line 863 sub sett {
|
Line 917 sub sett {
|
$t{$cell}=$formula; |
$t{$cell}=$formula; |
$t{$cell}=~s/\.\.+/\,/g; |
$t{$cell}=~s/\.\.+/\,/g; |
$t{$cell}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$sheet_values\{\'$2\'\}/g; |
$t{$cell}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$sheet_values\{\'$2\'\}/g; |
$t{$cell}=~s/(^|[^\"\'])\[([^\]]+)\]/$1.$self->expandnamed($2)/ge; |
$t{$cell}=~s/(^|[^\"\'])\[([^\]]+)\]/$1.$self->expandnamed($2)/sge; |
} |
} |
} |
} |
# Put %t into the safe space |
# Put %t into the safe space |