--- loncom/interface/Attic/lonspreadsheet.pm 2000/12/04 22:09:39 1.4 +++ loncom/interface/Attic/lonspreadsheet.pm 2000/12/05 15:09:22 1.5 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Spreadsheet/Grades Display Handler # -# 11/11,11/15,11/27,12/04 Gerd Kortemeyer +# 11/11,11/15,11/27,12/04,12/05 Gerd Kortemeyer package Apache::lonspreadsheet; @@ -13,7 +13,8 @@ use Apache::lonnet; use Apache::Constants qw(:common); use HTML::TokeParser; - +# ============================================================================= +# ===================================== Implements an instance of a spreadsheet sub initsheet { my $safeeval = new Safe; @@ -35,6 +36,8 @@ sub initsheet { %v=(); %t=(); %f=(); +$sheettype=''; +$filename=''; sub mask { my ($lower,$upper)=@_; @@ -293,10 +296,46 @@ sub getformulas { return $safeeval->reval('%f'); } -# ------------------------------------------------------------ Read spreadsheet +# -------------------------------------------------------------------- Set type -sub readf { - my $fn=shift; +sub settype { + my ($safeeval,$type)=@_; + $safeeval->reval('$sheettype='.$type.';'); +} + +# -------------------------------------------------------------------- Get type + +sub gettype { + my $safeeval=shift; + return $safeeval->reval('$sheettype'); +} + +# -------------------------------------------------------------------- Set type + +sub setfilename { + my ($safeeval,$fn)=@_; + $safeeval->reval('$filename='.$fn.';'); +} + +# -------------------------------------------------------------------- Get type + +sub getfilename { + my $safeeval=shift; + return $safeeval->reval('$filename'); +} + +# ========================================================== End of Spreadsheet +# ============================================================================= + + + +# --------------------------------------- Read spreadsheet formulas from a file + +sub readsheet { + my ($safeeval,$fn)=shift; + &setfilename($safeeval,$fn); + $fn=~/\.(\w+)/; + &settype($safeeval,$1); my %f=(); my $content; { @@ -315,6 +354,7 @@ sub readf { } } } + &setformulas($safeeval,%f); } # --------------------------------------------------------------- Read metadata @@ -344,6 +384,72 @@ sub readmeta { return %returnhash; } +# ----------------------------------------------------------------- Update rows + +sub updaterows { + my $safeeval=shift; + my %bighash; +# -------------------------------------------------------------------- Tie hash + if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db', + &GDBM_READER,0640)) { +# --------------------------------------------------------- Get all assessments + + my %allkeys=(); + my %allassess=(); + + my $stype=&gettype($safeeval); + + map { + if ($_=~/^src\_(\d+)\.(\d+)$/) { + my $mapid=$1; + my $resid=$2; + my $id=$mapid.'.'.$resid; + my $srcf=$bighash{$_}; + if ($srcf=~/\.(problem|exam|quiz|assess|survey|form)$/) { + my $symb= + &Apache::lonnet::declutter($bighash{'map_id_'.$mapid}). + '___'.$resid.'___'. + &Apache::lonnet::declutter($srcf); + $allassess{$symb}=$bighash{'title_'.$id}; + if ($stype eq 'assesssheet') { + map { + if ($_=~/^stores\_(.*)/) { + my $key=$_; + my $display= + &Apache::lonnet::metadata($srcf,$key.'.display'); + unless ($display) { + $display= + &Apache::lonnet::metadata($srcf,$key.'.name'); + } + $allkeys{$key}=$display; + } + } split(/\,/,&Apache::lonnet::metadata($srcf,'keys')); + } + } + } + } keys %bighash; + untie(%bighash); + +# +# %allkeys has a list of storage displays by unikey +# %allassess has a list of all resource displays by symb +# +# -------------------- Find discrepancies between the course row table and this +# + my %f=&getformulas($safeeval); + map { + if ($_=~/^A/) { + if ($stype eq 'assesssheet') { + } elsif ($stype eq 'coursesheet') { + } + } + } keys %f; +# ------------------------------------------------ Find new and obsolete values + + } else { + return 'Could not access course data'; + } +} # -----------------------------------------------------------------------------