--- loncom/interface/Attic/lonspreadsheet.pm 2002/10/29 16:04:13 1.130 +++ loncom/interface/Attic/lonspreadsheet.pm 2002/10/30 15:07:20 1.131 @@ -1,5 +1,5 @@ # -# $Id: lonspreadsheet.pm,v 1.130 2002/10/29 16:04:13 matthew Exp $ +# $Id: lonspreadsheet.pm,v 1.131 2002/10/30 15:07:20 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1077,6 +1077,7 @@ sub calcsheet { } # ---------------------------------------------------------------- Get formulas +# Return a copy of the formulas sub getformulas { my $sheet = shift; return %{$sheet->{'safe'}->varglob('f')}; @@ -1454,31 +1455,19 @@ sub writesheet { # Cache new sheet $spreadsheets{$cnum.'_'.$cdom.'_'.$stype.'_'.$fn}=join('___;___',%f); # Write sheet - my $sheetdata=''; foreach (keys(%f)) { - unless ($f{$_} eq 'import') { - $sheetdata.=&Apache::lonnet::escape($_).'='. - &Apache::lonnet::escape($f{$_}).'&'; - } + delete($f{$_}) if ($f{$_} eq 'import'); } - $sheetdata=~s/\&$//; - my $reply=&Apache::lonnet::reply('put:'.$cdom.':'.$cnum.':'.$fn.':'. - $sheetdata,$chome); + my $reply = &Apache::lonnet::put($fn,\%f,$cdom,$cnum); if ($reply eq 'ok') { - $reply=&Apache::lonnet::reply('put:'.$cdom.':'.$cnum.':'. - $stype.'_spreadsheets:'. - &Apache::lonnet::escape($fn). - '='.$ENV{'user.name'}.'@'. - $ENV{'user.domain'}, - $chome); + $reply = &Apache::lonnet::put($stype.'_spreadsheets', + {$fn => $ENV{'user.name'}.'@'.$ENV{'user.domain'}}, + $cdom,$cnum); if ($reply eq 'ok') { if ($makedef) { - return &Apache::lonnet::reply('put:'.$cdom.':'.$cnum. - ':environment:'. - 'spreadsheet_default_'. - $stype.'='. - &Apache::lonnet::escape($fn), - $chome); + return &Apache::lonnet::put('environment', + {'spreadsheet_default_'.$stype => $fn }, + $cdom,$cnum); } return $reply; } @@ -2234,45 +2223,49 @@ sub exportsheet { &loadrows($newsheet); &calcsheet($newsheet); @exportarr=&exportdata($newsheet); + ## + ## Store now + ## # - # Store now + # load in the old value # - my $cid=$newsheet->{'cid'}; - my $current=''; - if ($stype eq 'studentcalc') { - $current=&Apache::lonnet::reply('get:'.$sheet->{'cdom'}.':'. - $sheet->{'cnum'}. - ':nohist_calculatedsheets:'. - &Apache::lonnet::escape($key), - $sheet->{'chome'}); - } else { - $current=&Apache::lonnet::reply('get:'.$sheet->{'udom'}.':'. - $sheet->{'uname'}. - ':nohist_calculatedsheets_'. - $sheet->{'cid'}.':'. - &Apache::lonnet::escape($key), - $sheet->{'uhome'}); - } my %currentlystored=(); - unless ($current=~/^error\:/) { - foreach (split(/___&\___/,&Apache::lonnet::unescape($current))) { - my ($name,$value)=split(/___=___/,$_); - $currentlystored{$name}=$value; + if ($stype eq 'studentcalc') { + my @tmp = &Apache::lonnet::get('nohist_calculatedsheets', + [$key], + $sheet->{'cdom'},$sheet->{'cnum'}); + if ($tmp[0]!~/^error/) { + %currentlystored = @tmp; + } + } else { + my @tmp = &Apache::lonnet::get('nohist_calculatedsheets_'. + $sheet->{'cid'},[$key], + $sheet->{'udom'},$sheet->{'uname'}); + if ($tmp[0]!~/^error/) { + %currentlystored = @tmp; } } + # + # Add the new line + # $currentlystored{$fn}=join('___;___',@exportarr); # + # Stick everything back together + # my $newstore=''; foreach (keys(%currentlystored)) { if ($newstore) { $newstore.='___&___'; } $newstore.=$_.'___=___'.$currentlystored{$_}; } my $now=time; + # + # Store away the new value + # if ($stype eq 'studentcalc') { &Apache::lonnet::put('nohist_calculatedsheets', { $key => $newstore, $key.time => $now }, - $sheet->{'cid'},$sheet->{'cnum'}); + $sheet->{'cdom'},$sheet->{'cnum'}); } else { &Apache::lonnet::put('nohist_calculatedsheets_'.$sheet->{'cid'}, { $key => $newstore,