Diff for /loncom/interface/spreadsheet/assesscalc.pm between versions 1.52 and 1.57

version 1.52, 2006/04/06 20:24:13 version 1.57, 2006/12/21 02:54:19
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='';
     #      #
     # 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 325  sub parmval { Line 331  sub parmval {
     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 $seclevelm = $courseprefix.'.['.$csec.'].'.$mapparm;      my $seclevelm = $courseprefix.'.['.$csec.'].'.$mapparm;
Line 346  sub parmval { Line 348  sub parmval {
         return $useropt{$ucourselevelm} if (defined($useropt{$ucourselevelm}));          return $useropt{$ucourselevelm} if (defined($useropt{$ucourselevelm}));
         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,$what) {
         return $courseopt{$grplevel}  if (defined($courseopt{$grplevel}));                  my $item = $courseprefix.'.['.$group.'].'.$level;
                   if (defined($courseopt{$item})) {
                       return $courseopt{$item};
                   }
               }
           }
     }      }
     # check section      # check section
     if (defined($csec)) {      if (defined($csec)) {
Line 382  sub parmval { Line 389  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 540  sub assess_html_row { Line 547  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 650  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);

Removed from v.1.52  
changed lines
  Added in v.1.57


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>